A Historical View on Software Engineering and its Environment
9 Dec 1997 Ute Twisselmann
IBM Scientific Centre
Dept 3899 69115-55
twiggi@DE.IBM.COM
A Historical View on Software
Engineering and its Environment
Let us have a look on how software is developed today. I will
try to compare two extreme positions: university and industry.
The statements below can be called behaviour patterns. Of course
in real life you might find examples of univerity projects
doing software development as described below for industry and v.v..
Real life projects ly normally somewhere in the middle between
the patterns described below.
This sort of software can be called one-way-software. Only the developer
will use herself except some people working closely together with her.
Often this sort of software will be thrown away if the developer
leaves the place. This is a very typical scheme for universities
or internal tools.
- Specification (functionality and quality) are defined by the
developer.
- Only the developer or persons very close to him use the program.
- Maintenance consists of fixing bugs.
- Communication with others is minimal.
The environment is simple and closed. Nobody has to bother about
teamwork or communication. The 'product' is a running program often
with very limited documentation. The developer does not work
in a process. He/she uses technology.
Here you have a product with a lifecycle.
- Specification is done together with the customer(s).
- The product will be used by users not knowing the internals and
the design. Very often they have few data processing knowledge.
- The product will be used for long time.
- Maintenance will include fixing ,extension and porting. It has
to be done by several people. Often the maintenance responsibility will
be tranfered to different groups/persons over time.
Here the product contains much more than only a running program.
Communication pathes and development process (not only the technical
strategy) are important.
So we come to the question what a software product really is
and what is necessary to develop such a product.
Here a product specifies everything delivered to one or more internal or external customers.
For offering and planning a new product or maintainting an old one the
following things have to be implemented or prepared:
- Pre sales activity
- marketing channels and material
- pricing and contract (business case)
- Development
- project management (staffing, tracking etc.)
- communication pathes
- development environment
- internal documentation
- Shipment and Service
- service and distribution structure (help desk etc.)
- Education
- ...
Therfore a lot of various people with different skills work on
such a product:
Even the range of number of people working on a software product
is quite high:
- operation systems or large applications
- 50 to several 100 people
- middle application
- 10 - 100 people
- customer specific solutions
- 1-10 people
- internal tool
- 1-10 people
Here we will focus on the following important areas in software development:
- the used software technology
- the process
- the communication behaviour of the team
I will not speak on
- pricing
- marketing material
- techniques in documentation development
- supply chain management (distribution structures etc.)
- test methods
Therefore we look on the historical development of these aspects.
Let us start with the technology which parallel led to new processes.
In the end there will be remarks on teamwork.
- (1) B Dahl, Hoare, Dijkstra: Structured Programming; Academic
Press
- (2) Dijkstra: GOTO Statement Considered Harmful; Comm. of the ACM
(11) March 1968
- (3) With: Program Development by stepwise Refinement; Comm. of the
ACM (14) April 1971
- (4) Dahl, Nygaard: Class and Subclass Declarations; in:
Simulation Programming Languages; Noth Holland 1968
- (5) Dahl, Nygaard: History of Simula; in: History of
Programming Languages; Academic Press 1981
- (6) Hoare C.A.R.: Prrof of Correctness of Data Representations;
in: Acta Informatica (1) 1972 pp 271-281
- (7) Goguen, Thatcher, Wagner: An Initial algebra Approach to
the Specifcation, Correctness and Implementation of
Abstract Datatypes; 1975
- (12) Gogolla, Martin : On Parametric Algebraic specifications
with clean Error Handling; in: TAPSOFT 1987; Springer
- (8) Bertrand Meyer: Object Oriented Software
Construction; Prentice Hall; 1988
- (9) Grady Booch: Object Oriented Design with
Applications; Benjamin/Cummings; 1991
- (10) Ruth Breu: Algebraic Specifications Techniques in Object
Oriented Programming Environments; Lecture Notes in Computer
Science 562; Springer; 1991
- (11) J.D. McGregor, T.Korson: Supporting dimensions of
classification in OOD in: Journal of OOP Vol.5 No.9 Feb. 1993
<
- (12) E.Gamma, R. Helm, R.Johnson, J. Vissides: Design Patterns -
Elements of Reusable OO Software
- (13) J. R. Katzenbach, D. K. Smith; The Wisdom of Teams; Harvard Business School Press