A Historical View on Software Engineering and its Environment

18 Jan 1998

Ute Twisselmann

IBM Scientific Centre
Dept 3899 69115-55
twiggi@DE.IBM.COM


Table of Contents

A Historical View on Software Engineering and its Environment


An Historical way on Software and Environment


Table of Contents


What is Software today ?

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.

Software development in research (For-yourself-style)

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.

Main properties

  1. Specification (functionality and quality) is defined by the developer.
  2. Only the developer or persons very close to him use the program.
  3. Maintenance consists of fixing bugs.
  4. 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.

Software development on a product

Main properties

Here you have a product with a lifecycle.

  1. Specification is done together with the customer(s).
  2. The product will be used by users not knowing the internals and the design. Very often they have few data processing knowledge.
  3. The product will be used for long time.
  4. 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 paths and development process (not only the technical strategy) are important.

What is a software product

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 maintaining an old one the following things have to be implemented or prepared:

  1. Pre sales activity
  1. Development
  1. Shipment and Service

Therefore 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:

  1. the used software technology
  2. the process
  3. the communication behaviour of the team

I will not speak on

  1. pricing
  2. marketing material
  3. techniques in documentation development
  4. supply chain management (distribution structures etc.)
  5. 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.

The way to engineering

Three questions lead to changes in different areas of software development.

Technical solutions

The technical path was mainly influenced by the question: How can the correctness of programs be proofed ?

This question is important for research at universities. In the beginning the view was focused on implementation of mathematical algorithms. In praxis it is very seldom that programs are theoretically proofed to be correct. Exceptions exist in research in military area as the Apollo program. In industrial development processes test strategies and inspections are used to verify the programs.

Development processes

The processes used in industrial software development were mainly influenced by the question: How can I design/ implement maintainable/ reusable software?

In industry people not developing them must maintain the programs. So good documentation and clear structure of software saves a lot of money. A library of reusable parts saves a lot of resources when doing follow on projects. The quality of software must be measurable. Errors found by the customer are expensive to handle and to repair. Customer satisfaction is a critical point for any company. This is the main target to achieve with lowest costs as possible. A good implemented process with clear communication paths might help a lot in shipping software fitting the customers needs in an effective way.

Business processes

What even more important is, is to assure that the customer gets the software he/she really needs. Therefore software developers must be aware of the fact that they very often are designing not only software but also work flows for the end users. A software architect must have an understanding on how the end user is working with the application to be developed. Therefore he must examine the questions: What is the end user doing? Why is he doing this?

Teams

Industrial software is normally not designed, implemented and shipped by one person alone. How smooth a process can be followed depends partly on the project planning and organization. In a project plan responsibilities and tasks has to distributed and tracked. Good team behaviour helps to finish a project with the planned resources. So here the question is how does a project team work together?


Literature

 

_