Chapter 2 - Software Process Flashcards
(33 cards)
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
- Prototyping
Only outline of system are passed to the developers on basis of which, prototype is created which contains only small portion of the system.
Prototype being created are refined and extended iteratively until the final specifications are met.
This approach is used when requirements are not clear or well-understood.
In this model client satisfaction is guaranteed
Evolutionary Prototyping
Evolutionary prototyping : features are aggregated to the prototype to build the final product.
Evolutionary prototyping consists of building a prototype which is then refined based on the regular feedback from the stakeholders or potential users.
Maintainability of the code, style, design patterns or testing count from the beginning, which makes it possible to evolve the prototype into a fully featured, enterprise-grade product.
The earlier steps of the prototype contain only the core part of the future product, and then, features are added progressively.
Evolutionary prototyping is closer to Agile: often, you will be able to obtain early a working product with limited features and extend it until stakeholder have money.
Throw-away prototyping
Throw-away prototyping is about creating, as fast as possible, a part of the future application to either ensure a feature is technically feasible or to show the feature to stakeholders or potential users in order to gather feedback from them.
The source code of this prototype is not reused later when developing the application itself, it makes it a throw-away prototype. Knowing that it’s a throw-away code helps focusing on the actual feature, while leaving aside aspects such as maintainability of the code, style, design patterns or testing. This makes it possible to finish the prototype very fast, without affecting negatively the technical debt of the final product.
Throw-away prototyping is different from sketching. Sketching is more graphical and oriented towards user interfaces and user experience, and doesn’t consist of writing programming code. Throw-away prototyping is usually used when sketching is not enough (for example when you need to show how a feature will perform on different smartphones or when you need to show the actual performance and responsiveness).
Throw-away prototyping and sketching : prototypes help gathering early feedback before starting developing the actual feature.
- Incremental prototyping
Incremental prototyping consists of building several prototypes, each one representing a part of the future system, and then combine them.
Incremental prototyping, is better suited for large projects with many contributing teams, each team working on a separate prototype.
Advantages of the prototyping model
Advantages of the prototyping model
Greater involvement of users in the product even before its implementation.
As a working prototype model is shown, users gain a better understanding of the software being developed.
Reduce time and costs since defects can be detected much earlier.
There are faster comments from users that lead to better solutions.
Missing features can be easily identified.
It is possible to identify confusing or difficult functions.
Disadvantages of the prototype model
Risk of analysis of insufficient requirements due to too much dependence on the prototype.
Users can be confused with real prototypes and systems.
Practically, this methodology can increase the complexity of the system since the scope of the system can expand beyond the original plans.
Developers can try to reuse existing prototypes to build the real system, even when it is not technically feasible.
The effort invested in prototyping may be too much if it is not properly controlled.
Process Improvement
Understanding existing underlying process
Addressing need of process change for
Increasing the product quality
Reduce Cost
Decrease the development time
Different approaches to process improvement
- Process Maturity Approach
Improving project management approach Introducing good software engineering practice Measuring the level of process maturity Both on technical and managerial side improvement
- Agile Approach :
Iterative development and the reduction of overheads in the software development process.
Rapid development, rapid delivery of functionality and responsiveness to changing customer requirements.
V-Shape Model
The V-model is an SDLC model where execution of processes happens in a sequential manner in a V-shape.
It is also known as Verification and Validation model.
The V-Model is an extension of the waterfall model and is based on the association of a testing phase for each corresponding development stage.
Testing of the product is planned in parallel with a corresponding phase of development.