Software Development Processes - What is Software Engineering?

Authors Avatar

Software Development Processes

What is Software Engineering?(6)

There are a number of proposed definitions of software engineering:

“The establishment and use of sound engineering principles (methods) in order to obtain economically, software that is reliable and works on real machines.”  (1)

A more comprehensive definition proposed by the IEEE [IEEE 93]:

Software engineering; (1) “The application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1)”

It is essentially a hybrid of standard engineering practices and computers science. Computer science is concerned with the theories and method that underlie computers and software systems. Engineering is the analysis, design, construction, verification and management of technical or social entities. Regardless of the entity that is to be engineered, there are a number of questions that need to be answered: (6)

  • What is the problem to be solved?
  • What are the characteristics of the entity that is used to solve the problem?
  • How will the entity (and solution) be realised?
  • How will the entity be constructed?
  • What approach will be used to uncover errors that were made in the design and construction of the entity?

Software engineering involves the application of the various theories and methods derived from computer science to make high quality software systems or to make improvements to existing software systems.  In the same way that some knowledge of physics is essential to electrical engineers, some knowledge of computer science is essential for software engineers.  All of software engineering should ideally be under pinned by theories of computer science, but in reality, this is not the case. Software engineers must often make use of ad hoc approaches to software development.

The set of activities and associated results, which produce a software product, is known as the software process and it is software engineers who mainly conduct such activities. It is essentially the set of activities needed to transform a user’s requirements into a software system. (Figure 1)

Figure 1.  The Software development process

There are four fundamental process activities common to all software processes: (6)

  • Software specification: This encompasses all activities concerned with defining the functionality of the software and the constraints on its operations.
  • Software development: Activities associated with producing the software to meet the desired specification.
  • Software validation: Activities associated with testing and validating the software to ensure that it does exactly what the customer wants.
  • Software Evolution: The software must evolve to meet changing customer needs.

These activities are organised in different ways in different software processes. The timing and result of each activity is not fixed and different organisations may use different processes to produce the same type of product. Some processes, are however more suitable than others for certain types of application. If an inappropriate process is used there will be a reduction in the quality or the usefulness of the software product to be developed.

Software process models are used to present a simplified description of a software process from a particular perspective.  It is an abstraction of the actual process being described and may include activities, which are part of the software process, software products and the roles of the people involved in the software engineering. Some examples of the types of software process model, which may be produced, include:

  • Workflow models: Showing the sequence of activities in the process together with their inputs, outputs and dependencies. The activities in this model represent human actions.
  • Dataflow/ activity models: Showing the process as a set of activities, which bring about some data transformation. It shows how the input to the process such as how a specification is transformed to an output, such as a design. These transformations may be carried out by people or by computers.
  • Role/ action models: This shows the various roles of the people involved in the software processes and the activities for which they are responsible.

There are a number of different general models or paradigms of software development including; the Waterfall Model, Evolutionary Development Model, Formal Transformation Model & System Assembly from Reusable Components.

Although we will look at the Waterfall Model of software development in more detail this paper is primarily concerned with those software development processes based upon the principles of object-oriented analysis and design, which too, will be defined during the course of this paper.  In particular, this paper deals with the Unified Software Development Process (UP) and UML and comparisons will be made between these object-oriented approaches and the more structured approaches such as the Waterfall Model.

Join now!

The Waterfall  Model (6,10)

The Waterfall Model was the first published model of the software development process and it was derived from other engineering processes. (Royce, 1970)

Figure 2. The 5 stages of the Waterfall Model

The name of this model is derived from the characteristic cascade from one phase to another. As we can see from the diagram, there are 5 distinct stages in the Waterfall Model.  On completion of each ...

This is a preview of the whole essay