So I will expect you to be able to create models that show that you understand
existing systems as part of the process of planning improvements.
Physical vs Logical Models
The systems community distinguishes two ways to look at a system:
The Logical view is also called the Essential view.
The classic form of Systems Analysis and Design consists of a
series of procedures leading to particular models:
You might think that that the next cycle 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.
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 and executable tests for the code. This works well when the solution is a program but does not help to determine if a program is the right solution at all.
Systems = Boxes and Arrows
* A system is a collection of interacting subsystems.
Here is another definition from "Computer Based Systems" by John Race, Teach Yourself books 1977:
We tend use various diagrams that show boxes (or icons) connected by various kinds of arrows. Here are four examples I found on Google: [ sarsat-system-peb.jpg ] [ 2_Overview_System_Architecture.2.1.1.jpg ] [ systemComponents.gif ] [ system_analysis_2.gif ] -- note I can't copy these on to this page without risking breaching copyright. Please follow these links to see the examples.
Notice that because the above are informal diagrams it is not clear what they mean. 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
By the way, 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, this notation is mostly used in practice for dependencies inside software.
The Five Types of Component in Systems
This class is about understanding and changing the above types of components. Notice that computer science is largely limited to changing hardware, data, and software. People and procedures, 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 procedure is imposed from outside without consultation.
Exercise: how can you change each of the above types of component?
People in Systems
People are the most critical type of component in any system. They have the
intelligence and creativity that lets them work around problems or
to make a stupid system fail. You can not program people. You can not,
cheaply, give a person a CPU or RAM upgrade.
You need some
psychology
to design systems that people won't
sabotage. It is more than making a system look good or be user friendly.
It is all about designing systems that help people achieve their goals. The
catch is that a person's goals usually include:
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.
Systems Patterns -- Cybernetics
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 expressions of this kind of control mechanism.
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.
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?
The Composite Pattern
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.
Good design means that you can change the inside of a part/component without the whole system breaking down.
Levels and meta-systems
Some parts can program and/or monitor other parts. We sometimes
say that the source of the program(rules), control, and monitoring
is a meta-system for the system it programs.
Systems Theory Glossary
The following provides some of the underlying theory for this course:
We avoid an infinite regress by pretending that there is a top level with "The System" connected to "The Environment".
The interconnection of the parts means that you can not predict what happens to a part without studying the whole system.
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 CSci372 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.
For more try the Wikipedia entry
Notice, the same acronym(SDLC) is also used for the "Software Development Life Cycle", but is focused on the Implementation and Testing of software. It assumes that the problem to be solved has been determined correctly, and (subtly) must be solved by writing a program. 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.
There will more on Life Cycles below: SDLC2.
. . . . . . . . . ( end of section Support) <<Contents | End>>
Maintenance
Maintenance is a vital part of all operating systems
but it is an ignored and despised part of software work.
Here is a list of the different types:
corrective_maintenance, adaptive_maintenance, perfective_maintenance, preventive_maintenance, and periodic_maintenance. See the definitions below.
Pattern -- Cost of Maintenance in Commercial Software
After the first version is released the costs of updates often exceeds the
cost of making the first version -- indeed often the amount of code
changed in each release is equal to the size of the first release!
Software engineering and architecture
is about making it cheap to make
changes to software.
. . . . . . . . . ( end of section Operation, Support, and Maintenance) <<Contents | End>>
Rigid Life Cycle Standards
Some texts, some organizations, and most teachers have rigid standards that
you will be expected to follow. For example,
here
[ ../SRS/ ]
is a description of the key artifact in developing graduate projects
here in the CSci dept CSUSB. Or here
[ CSCI_482_Senior_Interdisciplinary_Project#Steps_for_Completing_CSCI_482 ]
is the procedures and forms for developing a CSci482 Senior Project.
Note: you don't have to memorize these for this class. But you
may very well be forced to follow such templates in this and many other classes
and jobs.
The Systems Development Life Cycle: Analysis, Design, Implementation, ...
Here is an expanded view of the Systems Development Life Cycle:
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.
However, once a system enters obsolescence maintenance ceases to be an option.
Agile Life Cycles.
Agile life cycles rely on feedback rather than feed-forward.
They assume that it is best to eat an elephant one bite at a time.
They tend to have many small iterations of
the same phases but without discarding the running system -- the cycle repeats
for ever.
Another difference is that agile processes tend to stress early testing
and live code rather than diagrams and documentation.
The final difference is the use of
refactoring
to maintain the quality of the code base after a small set of changes. Refactorings
are a set of systematic changes in software that are guaranteed to preserve
its correctness while improving its quality.
Each iteration looks at a few small changes:
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>>
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 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, ...
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.
Story -- Find out about the system you are replacing
Once upon a time, I lived next door to a stock control clerk
called Todd. He worked for a company that was putting a new computer.
Because he was expecting to lose his job he told the programmer
many lies about how the company did its work. The resulting software
worked very badly -- and the programmer lost her job.
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.
Story -- Legacy systems -- COBOL is not dead
The following 2006 article in "Computer Weekly" reports on the continuing
usage of COBOL in business.
[ article.do?command=viewArticleBasic&articleId=266156 ]
Questions:
. . . . . . . . . ( end of section Advice when Fact Finding) <<Contents | End>>
Tool -- Look to the future
Goal -- List of Problems and Opportunities
Problems and Stakeholders
A problem always involves people and one task is to make a
list of those most dependent on the solving the problem.
We call them
stakeholders.
They include the direct users,
the people who think they will be hurt by a new system,
the manager who will look bad, the people who work the system, the
developers of the solution, ...
The wise person involves the stakeholders in the analysis and design of
solutions.
(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>>
Note taking
| 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 to a cell phone. |
. . . . . . . . . ( end of section Hints for taking notes) <<Contents | End>>
Stories are a simple form of note
A story is a short paragraph that describes how something happens.
Ideally it should fit on a 3><5 card. They can describe what exists
or what is wanted. Stories must be simple. The need a name.
Definitions and Terminology must be noted
Build up a glossary for the system you are studying -- a alphabetic
list of terms and there meanings. Again 3><5 cards are very helpful.
I tend to use a notation
based on the Bachus-Naur Form:
Term ::= meaning.
. . . . . . . . . ( end of section Fact Finding) <<Contents | End>>
Review Questions on Fact Finding and Systems Thinking and Development
. . . . . . . . . ( end of section Review Questions) <<Contents | End>>
Enrichment
Choose the right media for any communication [ 001302.html ] (includes a list of better media).
What happens if you apply for a job with Google?
[ http://tihomir.org/crazy-questions-at-google-job-interview/ ]
. . . . . . . . . ( end of section Enrichment) <<Contents | End>>
. . . . . . . . . ( end of section Systems and Fact Finding) <<Contents | End>>
Abbreviations
Also see
[ glossary.html ]
for more special abbreviations and phrases.
End