Chapter 2 - Software Process Flashcards
What is Software Process?
Software process is a set of activities, methods, practices, and transformations that people use to develop and maintain software and associated artifacts.
It encompasses all the activities involved in software development, from conception to delivery and maintenance.
The process might be different depending upon the nature of the company.
Of all software process, they all must include in some forms, the four fundamental software engineering activities.
Software specification, development, validation, evolution/ maintenance.
What is Software Process Models?
An abstract representation of a process.
Description of a process from some particular perspective.
The order in which the activities of software development will be undertaken.
Process Models
1 Waterfall Model
2 Incremental Model
3 Integration and Configuration model
Waterfall model
The waterfall model is a traditional software development process model that consists of a linear and sequential approach to software development. It is also known as the “linear sequential model” or the “traditional software life cycle.”
The resource explains that the waterfall model consists of the following phases:
Requirements gathering and analysis
System design
Implementation
Testing
Deployment
Maintenance
Each phase is completed before the next phase can begin, and the output of each phase is reviewed and approved before the project proceeds to the next phase.
Waterfall Model - Application
Every software developed is different and requires a suitable SDLC approach to be followed based on the internal and external factors. Some situations where the use of Waterfall model is most appropriate are −
Requirements are very well documented, clear and fixed.
Product definition is stable.
Technology is understood and is not dynamic.
There are no ambiguous requirements.
Ample resources with required expertise are available to support the product.
The project is short.
Waterfall Model - Advantages
departmentalization and control
schedule can be set with deadlines for each stage of development and a product can proceed through the development process model phases one by one
Some of the major advantages of the Waterfall Model are as follows −
Simple and easy to understand and use
Easy to manage due to the rigidity of the model. Each phase has specific deliverables and a review process.
Phases are processed and completed one at a time.
Works well for smaller projects where requirements are very well understood.
Clearly defined stages.
Well understood milestones.
Easy to arrange tasks.
Process and results are well documented.
Waterfall Model - Disadvantages
does not allow much reflection or revision.
Once an application is in the testing stage, it is very difficult to go back and change something that was not well-documented or thought upon in the concept stage.
The major disadvantages of the Waterfall Model are as follows −
No working software is produced until late during the life cycle.
High amounts of risk and uncertainty.
Not a good model for complex and object-oriented projects.
Poor model for long and ongoing projects.
Not suitable for the projects where requirements are at a moderate to high risk of changing. So, risk and uncertainty is high with this process model.
It is difficult to measure progress within stages.
Cannot accommodate changing requirements.
Adjusting scope during the life cycle can end a project.
Integration is done as a “big-bang. at the very end, which doesn’t allow identifying any technological or business bottleneck or challenges early.
INCREMENTAL MODEL/ Successive version model / Iterative
The incremental model is an iterative software development process model that emphasizes building a system through a series of smaller, more manageable increments.
In each increment, a small part of the system is designed, implemented, and tested, with additional functionality added in subsequent increments until the complete system is built.
The incremental model involves a series of iterative steps, each of which consists of requirements analysis, design, implementation, and testing.
Each increment builds on the previous one, and each increment is delivered to the customer for review and feedback.
The incremental model is often used in situations where the requirements are not fully understood or are likely to change, as it allows for greater flexibility and adaptability.
The incremental model provides early and frequent feedback to the customer, which can help ensure that the system meets their needs.
However, the incremental model can also have some disadvantages, such as an increased risk of integration issues and a potential for incomplete system functionality until all increments are completed.
Therefore, it is important to carefully plan and manage each increment to ensure that the overall system is cohesive and functions correctly.
When to use incremental model
When to use this:
- Funding Schedule, Risk, Program Complexity, or need for early realization of benefits.
- When Requirements are known up-front.
- When Projects have lengthy development schedules.
- Projects with new Technology.
- Requires good planning and design.
- The total cost is not lower.
- Well-defined module interfaces are required.
Error Reduction (core modules are used by the customer from the beginning of the phase and then these are tested thoroughly)
Uses divide and conquer for a breakdown of tasks.
Lowers initial delivery cost.
Incremental Resource Deployment.
Advantages of INCREMENTATL MODEL
Advantages of INCREMENTATL MODEL
PREPARES THE SOFTWARE FAST.
CLIENTS HAVE A CLEAR IDEA OF THE PROJECT.
CHANGES ARE EASY TO IMPLEMENT.
PROVIDES RISK HANDLING SUPPORT, BECAUSE OF ITS ITERATIONS.
Disadvantages OF INCREMENTAL MODEL
A good team and proper planned execution are required.
Because of its continuous iterations the cost increases.
INTEGRATION AND CONFIGURATION MODEL /
Reuse-oriented development model
The process of combining different software components or subsystems into a larger system.
Integration can be a complex process, as it involves ensuring that the different components work together correctly and that any interfaces between components are well-defined and consistent.
Fig: Reuse Oriented Model
Requirements Specification
Component Analysis
Requirements Modification
System Design with Reuse
Development and Integration
System Validation
Coping with change:
Only thing that is certain is change.
Change might be due to
Business needs Competition in the market Management change
With the change it adds up
operating costs maintenance costs re-work costs
How to cope with the change
Prototyping
Evolutionary Prototyping
Throw-away prototyping
Incremental Delivery