Typical technical activities for the development of software
There are many and varied methods used to develop software. However each one typically includes activities that can be roughly classified as follows:
- Domain modelling. Understanding the environment in which a system may be introduced – the business processes and rules. This is typically an activity that precedes a decision to develop a software system.
- Requirements (also known as requirements engineering). A set of steps including requirements elicitation, where you identify the problem, and requirements analysis, where you categorise, prioritise and model requirements. This defines what the system is to do.
- Design. Determining how you will solve the problem.
- Implementation. Acting upon the decisions made at the design stage.
- Testing. Testing what you have done so that you can determine whether or not you have solved the problem.
Different methods may subdivide the above activities or use different terminology. A specific approach, the Unified Process (UP), will be introduced in Section 3. By themselves, however, these activities are not enough to develop a good software system. Other activities are needed to a greater or lesser extent depending on the context, as you will see in this section.
You are likely to break up most problems into smaller, more manageable chunks, and deal with each one separately. It will then be necessary to bring the chunks together into a unified whole. This process is known as integration and is sometimes identified as a separate activity. Sometimes delivery of the software system is also identified separately, especially when there are contractual implications such as payment.
A software system is likely to change during its operational lifetime. This is the maintenance activity, which allows a software system to evolve in order to:
- correct errors
- adapt to a changing environment
- introduce enhancements required by the customer
- improve the software in anticipation of future changes.
The four activities of analysis (analysis is often used as a generic term for the activities that precede design), design, implementation, and testing are the ones you will see most often in diagrams depicting the process model of software development.
It is important to recognise that they are not the only activities involved in the process of developing a good software system. Project management and quality management are the two additional activities that hold the process of development together – the all-important glue for software engineering activities. Maintenance will inevitably involve the activities of requirements, design, implementation and testing, and will itself need to be managed, as illustrated in Figure 5.