The Software Development Process
After selecting a Process Model for your business it is necessary to utilize it. This first means to define the overall Product Life Cycle with its engineering disciplines and phases. The next step would be to define detailed activities within each of the phases. The documents and other work products that shall be an outcome of the activities have to be defined in the next step.
In many cases, it is necessary to define several development processes that interact, rather than a single one. Depending on the product that has to be developed development processes for mechanical engineering, electronic engineering and software engineering are required. Only the projects that have the task to develop software for a given system environment can do with a simple Software Development Process.
If you have to develop a complete system you usually need the following interacting Process Models:
- An overall Product Life Cycle that constitutes the framework for the following individual process models:
- A System Development Process to describe the activities that have to be performed in System Engineering. This engineering discipline is responsible for the overall design of the system. Eventually this discipline has to decide what shall be done in hardware and what in software, distribution of the computing power over several computer boards or components, their interfaces etc. This discipline will be also responsible for the overall project planning, system integration and system validation.
- A Hardware Development Process to describe the activities that have to be performed in Hardware Engineering. This engineering discipline will design computing hardware as for example in projects that use any kind of controller boards. If hardware is bought of the shelf this discipline should be responsible for their selection and acceptance testing.
- A Software Development Process that defines in detail all activities that have to be performed to establish and test the software.
- A Mechanical Development Process that defines the activities that have to be performed by the mechanics engineering discipline. This is of course only in case the product needs some own mechanical design such as a housing or a base frame.
- Other processes like procurement, sales, manufacturing etc. may need to be defined to run a big project successfully and to suffice the needs of larger organizations.
As you can see, it is in many cases not as easy as just selecting a process model for software development. Usually there is complete process landscape that has to be carefully designed. The involved disciplines have different needs. For example mechanical engineering should rather use a traditional approach similar to the waterfall model, whereas it may be wise to select a more agile approach for software engineering. There are only a hand full of basic process models and hundreds of variations of these models. You may need to define your own variation to have an optimized process matching your products. By selecting the best process model for your product's engineering disciplines and phases in the Product Life Cycle you can influence:
- Product quality and safety
- Documentation effort
- Development speed
- Administrative overhead
- Project risks
- Interaction with customer and suppliers
After you selected appropriate process models you should define the activities in detail, including the roles responsible to carry out the activities and the expected work products of each activity. This is the work of a professional process engineer. To give you an idea about such a process description you can look at the following Document
. Besides an editable version of this document there is also a complete set of templates available on our training site