What is Software Engineering?
Software Engineering is the management of the entire process of development of computer software.
Software Engineering includes:
- Project feasibility analysis
- Software specification and planning
- Software design and implementation
- Software test and validation
- Software evolution
Various Models for Software Development
- Waterfall Model
- Spiral Model
- V – Model
- Iterative and Incremental development Model
- Software Prototyping Model
The Waterfall Model follows a sequential design process.
- Sometimes referred to as a Linear sequential life cycle model.
Progress is seen as flowing steadily downwards (like a waterfall) through various phases:
Thus, the waterfall model maintains that one should move to a phase only when it’s preceding phase is completed and perfected.
- The Spiral Model combines elements of both design and prototyping-in-stages in order to provide advantages of both top down and bottom-up concepts.
- This model of development combines the features of the prototyping model and the waterfall model.
- The spiral model is intended for large, expensive and complicated projects.
- Start by developing a small prototype.
- Followed by a mini-waterfall process, primarily to gather requirements.
- Then the first prototype is reviewed.
- In subsequent loops, the project team performs further requirements, design, implementation and review.
The V-Model may be considered as an extension of the waterfall model.
- Instead of moving down in a linear way, the process steps are bent upwards after the coding phase, to form the typical V shape.
- The V-Model demonstrates the relationships between each phase of the development life cycle and its associated phase of testing.
- The testing procedures are developed early in the life cycle before any coding is done.
- Testing is emphasized in this model more than the waterfall model.
Iterative and Incremental Development Model
Iterative and Incremental Development is at the heart of a cyclic software development process.
- It was developed in response to the weaknesses of the waterfall model.
- It starts with an initial planning phase and ends with deployment (with the cyclic interactions in between).
- Incremental development slices the system functionality into increments.
- In each increment, a slice of functionality is delivered through cross-discipline work, from the requirements to the deployment.
Software Prototyping Model
Software Prototyping refers to the activity of creating prototypes of software applications.
That is, incomplete versions of the software program being developed.
The process of prototyping involves the following steps:
- Identify basic requirements:
- Determine basic requirements such as input and output desired.
- Details such as security can be ignored.
- Develop Initial Prototype:
- This includes only user interfaces.
- The customers, including end-users, examine the prototype and provide feedback on additions or changes.
- Revise and Enhance the Prototype:
- Using the feedback, both the specifications and the prototype can be improved.
Project Management involves the methods and disciplines used to:
- Define goals.
- Plan and monitor tasks and resources.
- Identify and resolve issues.
- Control costs and budgets for a specific project.
- Projects are oriented towards goals.
- Projects have a finite duration.
- Projects require the coordination of interrelated activities.