In order to build software engineering a layered technology that is ready to meet the challenges of the twenty first century, you must recognize a few simple realities.
- Problem should be understood before software solution is developed
- Design is a pivotal Software Engineering activity
- Software should exhibit high quality
- Software should be maintainable
These simple realities lead to one conclusion. Software in all of its forms and across all of its application domains should be engineered.
Fritz Bauer defined as: Software engineering is the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines.
IEEE has developed a more comprehensive definition as :
- Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software.
- The study approaches as in (1)
Software Engineering is a layered technology. Software Engineering encompasses a Process, Methods for managing and engineering software and tools. The following Figure represents Software engineering Layers.
Software engineering is a layered technology. Referring to above Figure, any engineering approach must rest on an organizational commitment to quality.
- The bedrock that supports software engineering is a quality focus.
- The foundation for software engineering is the process layer. The software engineering process is the glue that holds the technology layers together and enables rational and timely development of computer software. Process defines a framework that must be established for effective delivery of software engineering technology.
Software engineering methods provide the technical how to’s for building software. Methods encompass a broad array of tasks that include communication, requirements analysis, design modeling, program construction, testing, and support.
Software engineering tools provide automated or semi automated support for the process and the methods. When tools are integrated so that information created by one tool can be used by another, a system for the support of software development, called computer aided software engineering, is established.
The Software Process
- A process is a collection of activities, actions, and tasks that are performed when some work product is to be created.
- An activity strives to achieve a broad objective (communication with stakeholders) and is applied regardless of the application domain, size of the project, complexity of the effort, or degree of rigor with which software engineering is to be applied.
- An action encompasses a set of tasks that produce a major work product (an architectural design model).
- A task focuses on a small, but well-defined objective (conducting a unit test) that produces a tangible outcome.
- A process framework establishes the foundation for a complete software engineering process by identifying a small number of framework activities that are applicable to all software projects, regardless of their size or complexity. In addition, the process framework encompasses a set of umbrella activities that are applicable across the entire software process.
A generic process framework for software engineering encompasses five activities:
- Communication. Before any technical work can commence, it is critically important to communicate and collaborate with the customer. The intent is to understand stakeholders objectives for the project and to gather requirements that help define software features and functions.
- Planning. Any complicated journey can be simplified if a map exists. A software project is a complicated journey, and the planning activity creates a “map” that helps guide the team as it makes the journey. The map called a software project plan defines the software engineering work by describing the technical tasks to be conducted, the risks that are likely, the resources that will be required, the work products to be produced, and a work schedule.
- Modeling. Creation of models to help developers and customers understand the requires and software design.
- Construction. This activity combines code generation and the testing that is required to uncover errors in the code.
- Deployment. The software is delivered to the customer who evaluates the delivered product and provides feedback based on the evaluation.
These five generic framework activities can be used during the development of small, simple programs, the creation of large Web applications, and for the engineering of large, complex computer based systems.
Software engineering process framework activities are complemented by a number of Umbrella Activities. In general, umbrella activities are applied throughout a software project and help a software team manage and control progress, quality, change, and risk. Typical umbrella activities include:
- Software project tracking and control allows the software team to assess progress against the project plan and take any necessary action to maintain the schedule.
- Risk management assesses risks that may affect the outcome of the project or the quality of the product.
- Software quality assurance defines and conducts the activities required to ensure software quality.
- Technical reviews – assesses software engineering work products in an effort to uncover and remove errors before they are propagated to the next activity.
- Measurement – defines and collects process, project, and product measures that assist the team in delivering software that meets stakeholders needs; can be used in conjunction with all other framework and umbrella activities.
- Software configuration management – manages the effects of change throughout the software process.
- Reusability management – defines criteria for work product reuse and establishes mechanisms to achieve reusable components.
- Work product preparation and production – encompasses the activities required to create work products such as models, documents, logs, forms, and lists.
Attributes for Comparing Process Models
Overall flow and level of interdependencies among tasks
Degree to which work tasks are defined within each framework activity
Degree to which work products are identified and required
Manner in which quality assurance activities are applied
Manner in which project tracking and control activities are applied
Overall degree of detail and rigor of process description
Degree to which stakeholders are involved in the project
Level of autonomy given to project team
Degree to which team organization and roles are prescribed.