Any view of a system that refers to the current implementation: (as hardware, software, or by people) is said to be a Physical View. A view that is expressed in terms of abstractions is a Logical View. For example: a model specifying a mainframe and cards is a physical model. But a model in terms of abstract ideas: entities, processes, and stores is a Logical Model. The distinction is important because the physical details change quicker than the logic. For example registration at this university discarded punched cards years ago and moved to: terminals, then to PCs, then to Telephones, then onto the Web, then to CMS/MyCoyote..., But the abstract (logical) processes of adding and dropping classes has not changed much in all this time.
The classic form of Systems Analysis and Design consists of a
series of procedures leading to particular models:
What the above sequence does not show, is that there are certain disciplines that are on going from the start of the life cycle to its end. They form a set of parallel activities. The mixture of disciplines tends to change but the following are always present:
The above is OK in theory -- indeed was the process that has been advocated for decades. However it fails in practice. First, implementing the new system often fails because the fact finding failed to get complete or correct requirements. Secondly, when we work on a big change there is a long time between fact finding and implementation and it is likely that the facts have changed.
One programmer and system developer writes [ 001313.html ] "Version 1 Sucks, But Ship It Anyway". Please follow this link and study this blog entry. It argues strongly for repeating the above steps iteratively -- each time getting closer to a better system. A later entry from the same blog [ listen-to-your-community-but-dont-let-them-tell-you-what-to-do.html ] describes how the same system was improved, iteratively, by analysing and discussing postings by users of the system. The articale is well worth reading. Notice the word meta for when we set up a subsystem for the purpose of talking about the system. In this case a blog about the design of Stack Overflow. Also note the importance of listening to stakeholders -- in this case the users.
You might think that that the next iteration could start with out the fact finding and abstraction because the Proposed Physical System is the one that is the new current one. But this is not so. Implementation can uncover things that lead to a different physical system and it is rare for the documentation to record this. Then during operation the system undergoes Maintenance and more undocumented changes are made that don't get mapped back into the Proposed Physical System. So the next cycle has to start with Fact finding to see what was actually implemented and what has happened to it since.
Indeed large systems are not what they are supposed to be. For example: [ http://www.datacenterknowledge.com/archives/2010/10/13/feds-discover-1000-more-data-centers/ ] ( Feds Discover 1,000 More Data Centers, October 2010).
There have been two challenges to the above process for changing a system. In the 1980s some pundits proposed going directly to a Logical Model (they called it an Essential Model) and starting from there. In the late 1990's a strong movement proposed that documentation needed to be reduced and the cycle shortened. These Agile processes typically incorporate the model into executable code as tests, prototypes, Betas, etc. This works well when the solution is a program but does not help to determine if a program is the right solution.
Here [ a_better_project_model_than_the_waterfall.html ] is a short article from the Harvard Business Review defining the Waterfall Process (where information flows down, like a series of waterfalls from analysis, to design, and so to implementation and testing). explaining why it often fails, and proposing an alternative. You should read it. The discussion that follows is optional. The actual term Waterfall process dates back to a paper by Winston Royce in 1970 [Royce70] which condems it as having never worked on a large software project.
Research at NASA forty years ago showed that errors were made early in this kind of cycle and fixed late in the cycle -- when the cost of fixing them would be a thousands more than fixing the error when it was made. The catch is spotting that your analysis is incomplete or erroneous without testing it by investing time and money in writing code.
Maintenance must follow the same sequence as the whole cycle: fact finding; abstraction; redesign; select change; implement; .... In other words, even using the waterfall life cycle a system will go thru a series of improvements -- after it has been "finished".
However the disciplines listed -- analysis, design, implement, test -- remain even if we analyse a bit, design a bit, implement and test a bit; and then repeat with another feature. We still have to found things out -- but we also accept that we discover the need fro more "fact finding" after we have some code running. We still have to test and document code -- but we don't expect this to be last step -- we may start design by writing a set of automated tests. Similary after a brief anaysis we can spot a technical probel that may be difficult or expensive to solve -- and do a quick bit of programming to find out how feasible our architecture is.
Here is another definition from "Computer Based Systems" by John Race, Teach Yourself books 1977:
We tend use various diagrams that show pictures, boxes, or icons connected by various kinds of arrows. Here are some examples I found using Google: [ sarsat-system-peb.jpg ] [ 2_Overview_System_Architecture.2.1.1.jpg ] [ systemComponents.gif ] , please follow these links to see the examples.
Notice that because the above are informal diagrams it is not clear what they mean. Mathematically they are directed graphs showing arcs, edges, or arrows connecting nodes. [ Directed_graph ] Using the terminology of graph theory [ Glossary_of_graph_theory ] we can discover important properties -- for example cycles lead to feedback loops. And feedback loops are key to understanding complex systems.
Here is the mathematical view of one of the three systems linked above... can you figure out which?
To reason more precisely we need to know what the nodes and arrows mean. To be able to share ideas with other people we need a standard meaning. Later in this class you will meet diagrams that have quite rigorous meanings. As a result we can use them to analyze and design systems. We will tighten up the notation as the course proceeds. On the other hand -- informal diagrams are nice in presentations and documents for managers! In systems analysis and design we use diagrams to make our ideas precise. You will have to demonstrate that you know the rules for drawing and interpreting these diagrams to get a good grade. I want to be sure you know what you are doing...
The original way to analyze systems (1940s) was in terms of inputs and outputs. Both for the whole system for each individual part or subsystem. Thus the system was seen as a collection of communicating components, or interacting parts, .... The whole was divided into parts that communicate and these in turn are made of smaller parts. This creates a hierarchy.
* Always notice the boundaries!
* Things to notice
When I got home I looked for an app in the app store that did what I wanted... they exist but not cheap.
Then I realized I should have used Google -- and 3 minutes found 2 pages of links to free statistics calculators.
Systems Pentangle -- People Rules Software Data Hardware
This class is about understanding and changing the above types of components. Notice that computer science is largely limited to studying hardware, data, and software. People and procedures(Rules), however, are where the wheel hits the road and where innovations can be very effective. People can also ruin a new system -- in very creative ways. Especially when a new rule is imposed from outside without consultation.
| Type | Development | Implementation | Operation |
|---|---|---|---|
| People | Involve | Train | Support |
| Data | Analyse | Convert | Backup |
| Hardware | Document | Instal | Protect and Maintain |
| Software | Study & Redesign | Acquire and/or Program | Maintain |
| Rules | Review | Training | Monitor |
A more recent way of analyzing a system is in terms of the dependencies between the parts: changing part A means you must also change B and C. For example: changing the software platform (operating system, etc) means that you have to change the application software.And changing the software, usually means retraining the users. In the Unified Modeling Language -- (UML) a dependency is shown as a dashed arrow that points from the dependent part to the part it depends on. However, the UML dependency notation is mostly used for dependencies inside software. This is covered in CSE375.
Logically, if changing a component has an effect on other components, then the failure of that component can easily subvert the dependent components. So, if hardware fails then people may have to find a work around until it is fixed. For example, see [ http://www.wired.com/wiredenterprise/2012/08/chip_errors/ ] (Your PC Just Crashed? Don't Blame Microsoft | Wired Enterprise | Wired.com). But it can get a lot mor complex than this suggests. I remember a systems that crashed every night... because the cleaners unplugged it to put in a polisher...
One of the techniques computer professionals have developed is to reduce dependencies between parts of a system by defining an interface between them. For example people use a system through a User Interface. Programmersuse a framework or subsystem by an "Application Programer Interface" or "API". Similarly if we change a piece of hardware for a new piece that provides the same functions in response to the same instructions (another interface) you will find that the software still works. In the UML we show these interfaces using a lollipop symbol: o----. So the "pentangle" becomes:
For example take a little time to study these examples [ stupid-user-tricks-6-it-idiocy-loves-company-184491?page=0,5 ] of the stupid things people do with computer technology.
ALso look at [ http://www.skorks.com/2008/08/3-things-they-should-have-taught-in-my-computer-science-degree/ ] (Skorks) and notice the third topic/skill that is often omitted in Comp Sci.
You should use your search engine to find out more. We will be discussing the scandal as an example of a system that does not work as planned for psychological reasons. This kind of failure is the reason why we study the next topic.
On top of individual psychology you need to worry about the culture of the organization. This will define norms -- patterns of behavior that are acceptable.
. . . . . . . . . ( end of section People in Systems) <<Contents | End>>
Feed-forward -- simple chain. Example: When the weather forecast is for a hot day, I open the windows in the early morning to get cool air into the house. This is anticipatory control or feed forward for controlling the temperature in my house. Plans are another example of this kind of control mechanism. Anticipatory controls are common and necessary.
Feedback -- an information loop. The controller uses the output of the controlled system to determine input to that system. When I set my thermostat in my house I rely on it sampling the temperature and running the chiller or the heater to give me temperature I want. This is a feedback controller for the temperature in my house.
Note that feedback automatically compensates for things that are not planned for. If I run the clothes dryer it generates a lot of heat in the house. The house gets hotter. The temperature goes up. The thermostat detects the increased temperature and turns of the heat. One the other hand, if I leave a door open and ice-cold winter air gets it, the temperature falls and the thermostat turns on the heat.
Feedback doesn't guarantee the optimum solution. But it can handle the unexpected.
Feedback loops in systems determine the long term behavior of a system. Positive feedback increases the size of the signals each time round the loop and can lead to a run-away system. Negative feedback does the reverse and damps down the system's behavior. A very common pattern. A mixture of positive and negative feedback leads to complex behaviors and even chaos. This may not be a bad thing.
An effective/surviving/viable system always has a mixture of anticipatory feed-forward and feedback controls. Thus I plan my trip to work using feed-forward, but my eyes are open as I drive to avoid accidents. Planning and anticipation tends to save money, but only feed back forces a system to produce acceptable outputs in a changing environment.
However a complex network of feedback of two or more loops can produce unexpected patterns of behavior. To help people understand these complexities. Prof. Jay Forrester developed Systems Dynamics along with tools to model systems and display how they evolve. You should look at [ System_Dynamics ] to get an idea of how systems behave. How ever, I have experimented a lot with various methods of modeling systems. They do help you to understand the counter-intuitive patterns that are often found in real systems. They do not predict the future very well.
Exercise: Do you know of a software company that plans its software but relies on customer feedback on early versions to make a better product?
A system (by definition) has many parts or components. Inside a component you find a system. And so on! This is also a pattern in software design and the basis of the fractals found in nature.
. . . . . . . . . ( end of section The Composite Pattern) <<Contents | End>>
A collection of even simple non-linear systems will exhibit complex behaviors including chaos.
Joke: The
Generalized Uncertainty Principle of General Systemantics
-- -- --(GUP)
is that all complex systems exhibit
unpredicted behaviors or "antics". For more see
Problem: there are many ways to divide up a system into parts. In CSE557 we will typically divide a system by the movement of things and data. Most parts in systems can be modeled as processes and stores. Processes change material goods, or information, or money... Stores keep the material, money, or information ... We can model the environment as a set of external entities. We can classify these as sources and sinks of the material, money, information we are studying. Later we will look at pictures and models of flows later.
Here is a simple view of a systems life cycle:
The above formulas do not show the disciplines that must be present in parallel with the above SDLC:
This list shows how the above SDLC maps into our curriculum:
Notice, the same acronym(SDLC) is also used for the "Software Development Life Cycle". Software Development focusses on the Implementation and Testing of software. It assumes that the problem to be solved has been determined correctly, and must be solved by writing a program. Neither of these assumption hold up in reality. The discipline of the Personal Software Process (PSP) as developed by Watts Humphrey at CMU SEI is a highly codified way to improve your programming skills. This also has a life cycle. Here is an example [ psp3proc.jpg ] from John Frankovich's thesis at the University of Calgary. You can find out more on this, if you are interested at
You can find out more about the various life cycles at the Wikipedia [ Development_cycle ] but bear in mind that the topic is subject to a lot of debate. Also see the International Standard "Software Lifecycle Processes":
Because it let me improve the second sandwich.
Here we have two sandwich development life cycles. One is batch and the other iterative. Similarly in changing systems we have many software development processes. Choosing the right one is important.
This [Mountain10] proposes a different Game Development Process which has three phases: Pre-production, Production, and post-production. It argues for a creative exploration first and finishes with a beta buf-ficnding test. It does not cope woth what happens to a game after that!
. . . . . . . . . ( end of section Life Cycles) <<Contents | End>>
Once you have a "sunny day" design -- assuming everything works perfectly -- use the power of negative thinking to generate worst case scenarios and then work out plans to recover. For example: CSUSB student data used to be copied and shipped out to a different state. Note: in field trips find out what backup systems are in place here.
. . . . . . . . . ( end of section Backup) <<Contents | End>>
Here is an interesting article [ 5_annoying_help_desk_calls_and_how_to_banish_them ] form "Computer World" on the design of Support in Information Technology. Find out the 5 questions that waste the trouble shooters tiem and what real organization have done about them.
. . . . . . . . . ( end of section Support) <<Contents | End>>
Here is a list of the different types: corrective_maintenance, adaptive_maintenance, perfective_maintenance, preventive_maintenance, and periodic_maintenance. Memorise these!
See the definitions below.
One part of bug tracking is to spot the same issue appearing from more than one user. These need to be merged to provide a more complete picture of the problem and its scope.
As the issues are reported they need to be classified. Here is a typical list of
types of issue
that users have with software:
Bugs need to be assigned to a particular person in the maintenance team who is responsible for fixing it. Since in a large organization many people will all be maintaining the software, there is a need for Configuration Management and Revision Control Systems. THese make sure that only one person can change part of the software at a time and also keep track of the many versions that appear as software evolves.
. . . . . . . . . ( end of section Maintenance) <<Contents | End>>
. . . . . . . . . ( end of section Operation, Support, and Maintenance) <<Contents | End>>
Notice: the bigger the change the more expense and risk is involved. Just about every attempt to follow a sequence of steps like the above with no feedback on a large project has lead to cost over-runs and (often) failure. Also notice that small, incremental improvements tend to work -- and are called maintenance. In other words: Maintenance uses same cycle but faster and with smaller steps. It typically does not involve getting new hardware but may end up chaqnging every other type of component. However, once a system enters obsolescence, maintenance ceases to be an option.
Each iteration looks at a few small changes and aims to have a working subsystem or partial implementation at the its end. These are typically given a fixed length of time but with flexible goals. One agile process has single 40-hour week as one cycle(eXtreme Programming/XP). Scrum tends to use 1 month cycles. Adaptive Software Development(ASD) would let the team select the length of a cycle.
For more see [ http://www.agilealliance.com/ ] (The Agile Alliance).
Notice that Agile Methods are very suitable for software development and research projects -- when we can not be sure of the right direction.
. . . . . . . . . ( end of section Life Cycles) <<Contents | End>>
A variety of this is -- Give away the razor but sell the razor blades.
Again with Free/Open Source Software you should look for hidden costs in implementing and supporting it.
The only reason for a new system is the people it will serve.
See [ http://www.msnbc.msn.com/id/6174622/ ]
The following recent article starts by describing the value of the stakeholders (people who depend on the system) to a system: [Simonsen07]
People also have the information that we need to make a system that is worth producing. The people define the problems and opportunities. People have wants and needs that have to be met if the systems is to have any positive value.
A Systems analyst has the challenging job of bridging between the people and the technology. They need to be able to work with people, talk (and listen) to people, as well as handle enumerable technical details.
However we can not lose sight of the other types of component: data, hardware, software, and processes(procedures/rules). These are also important sources of information for the analyst and designer. They also constrain the possible solutions. They are also less likely to react badly when you investigate them. I have known people to lie to sabotage computer projects. They commonly tend to clam up if you are not careful.
So although people are vital, the other components are also important. The job of the computer professional is to not miss any of them out.
For more on people -- study psychology. Here are some key words to search for: Maslow, Douglas McGregor, B F Skinner, Dale Carnegie, ...
To learn about people in organizations try: C Northcote Parkinson [ parkinson_review.htm ] , ...
. . . . . . . . . ( end of section Questions) <<Contents | End>>
. . . . . . . . . ( end of section Systems) <<Contents | End>>
On the field trips try to find out what is challenging the enterprise that we visit.
How does computer technology hinder and/or help the enterprise meet the challenges?
One year he involved the whole faculty by asking us to act various people involved in running a restaurant -- manager, cook, waiter, head waiter, ... The students had to interview us and then propose a new system. Not one students realized that the head waiter had a gigantic stake in choosing the table to which parties were taken... and was lying when he said that a computer would never work.
Better fact finding and a better understanding of the organization might have lead to a more efficient company and a better working environment for Todd and the young programmer.
Errors -- when a system fails to produce the correct results then there is probably something wrong inside it. But what?
Unchecked User Input -- User input tends to be error prone and untrustworthy. A system must validate input before using it. Further there must be checks and balances between the parts of a system. You should look for cases where someone can supply data that is never auditted.
Thinking -- Creativity is good but inefficient. Could a computer help or is it causing thought?
Secrets -- when the system is not open about what it is doing or people seem to be hiding something then it worth looking in more detail.
Sabotage -- do the people working in a system interfere with its function (throw their shoes in the works)?
Fatigue -- People get tired but a machine does not...
Unhappiness -- systems will work better if they do not make people unhappy.
Paperwork -- check out every piece of paper work, what is its value?
Movement (of data and materials) -- is it really necessary, is it efficiently done.
Oscilation -- a system that alternates shortages and over production has a faulty communication pattern that is introducing delays and/or positive feedback (see above).
Noise -- how much of the information flying around a system is actualy of value and how much is a distraction?
Politics -- when ever there is a shortage of resources you get organizational politics (Mumford's Law), however: power is always in short supply!
Boredom -- machines don't get bored and are usually cheaper. Boring processes are perfect targets for automation.
(feelings): Bad feelings are a powerful "smell". So are hopes and fears.
Use them to guide your choice of problems to solve.
. . . . . . . . . ( end of section Interviews) <<Contents | End>>
| Problem or Need | Cause | Consequence | Solution |
|---|---|---|---|
| Students can't find their classes on the first day | They don't know the geography of the campus. | They miss part or whole of a class. They attend the wrong class. They may drop out. | Provide an on-line map with their schedule highlighted on the web and/or to a cell phone. |
. . . . . . . . . ( end of section Hints for taking notes) <<Contents | End>>
Term ::= meaning.
. . . . . . . . . ( end of section Fact Finding) <<Contents | End>>
. . . . . . . . . ( end of section Review Questions) <<Contents | End>>
Choose the right media for any communication [ 001302.html ] (includes a list of better media).
[ http://tihomir.org/crazy-questions-at-google-job-interview/ ]
Question: Define delta, commit, fork, merge, RCS, CVS, SCCS, ...
A Concept Maps is a more organized than a Buzan MindMap but is similar. See [ http://cmap.ihmc.us/ ] ( CmapTools - Home Page Cmap.html). This is targetted at helping students master topic areas. But analysing systems is a learning process and so these may help -- they also look a lot tidier than Tony Buzan's Mind Maps (above). On the other hand they will be lousy for taking notes in lectures/seminars/interviews.
. . . . . . . . . ( end of section Enrichment) <<Contents | End>>
. . . . . . . . . ( end of section Systems and Fact Finding) <<Contents | End>>
Notes -- Analysis [ a1.html ] [ a2.html ] [ a3.html ] [ a4.html ] [ a5.html ] -- Choices [ c1.html ] [ c2.html ] [ c3.html ] -- Data [ d1.html ] [ d2.html ] [ d3.html ] [ d4.html ] -- Rules [ r1.html ] [ r2.html ] [ r3.html ]
Projects [ project0.html ] [ project1.html ] [ project2.html ] [ project3.html ] [ project4.html ] [ project5.html ] [ projects.html ]
Field Trips [ F1.html ] [ F2.html ] [ F3.html ]
Metadata [ about.html ] [ index.html ] [ schedule.html ] [ syllabus.html ] [ readings.html ] [ review.html ] [ glossary.html ] [ contact.html ] [ grading/ ]