- Software specification(requirement and planning):
- most important and fundamental stage.
- risks, quality, feasibility
- Design and implementation
- follow the guidelines of company and customers
- Testing
- report and fix defects until reach the requirement
- Deployment in the market and maintenance
- release the product
- gather feedbacks and look for enhancement according to the market changes
SDLC Models (Software Development Process Models)
- Waterfall Model
- process divided into seperate phases, each phase is the input for the next phase.
- requirement -> system design -> implementation -> integration and testing -> deployment -> maintenance
- each phase will start only after the previous phase is done
- Advantages:
- simple and easy to understand, use, and manage
- good for smaller project
- process are well documented
- Disadvantages:
- No working software is produced until late stage
- High risk
- Not good for complex project
- difficult to measure the process
- Difficult to accommodate changes
- When to use?
- simpler project with less changes
- Iterative Model
- Develop an initial version and get user feedback, then enhance the current version until an acceptable version has been developed.
- Advantages:
- Working version at early stage
- Parallel development
- Easy to change
- Risk analysis is easier
- Disadvantages:
- Need more management
- No suitable for changing requirements
- Spiral Model
- Focus in
risk analysis - Used for medium and high risk project
- Customers not sure for their requests
- Need a lot of changes
- Advantages:
- Changing requirements can be added
- Allow extensive use of prototypes
- Users see the system early
- Disadvantages:
- Management is complex
- Process is complex
- Not suitable for small and low risk project
- End of the process might be not known at early stage
- Focus in
- Agile
- Combination of iterative and incremental process models.
- Break product into small incremental builds. These builds are provided in iterations. Each iteration lasts for about 1-3 weeks.
- Principles
- Individuals and interactions
- Working software: demo is the best tool for communication with customers
- Responding to change: focus on quick reponses and continuous development
- Advantages:
- Very limited planning is required to get started with the project. It helps the company in saving time and money.
- promotes teamwork
- suitable for both fixed and changing requirements
- easy to manage
- Concurrent development
- Advantages:
- Not suitable for complex dependencies
- more risk of sustainability, maintainability and extensibility
- heavily depends on communication with customers
- Agile vs Traditional SDLC Models
- Agile is based on the Adaptive software development methods, the traditional SDLC models are based on predictive approach.
Key Concepts:
- In Scrum, every event has a maximum duration.
- Sprint - the heart of Scrum
- Sprint is a time-box of potentially releasible product increment is created. A new Sprint starts immediately after the previous one.
- Sprint consists of:
- Sprint planning: the work to be performed
- Daily Scrum meeting: meeting for team to synchronize the activities and create new plan
- Sprint review: held at the end of Sprint to inspect the quality of the product
- Sprint retrospective: occur after the Sprint review and before the next Sprint planning. plan improvements
- Scrum team
- Scrum Master: making process run smoothly and organize
- Product Owner: maximize the value of the product and the work of the team. Key role to manage the backlog.
- Team: self-organizing and cross-functional. Consists of designer, developer, testers etc.
- Backlog: The Backlog is where you list out everything the project needs, ordered by importance. Keep in mind that the Backlog is never complete. As the project takes shape and new needs emerge, you will add to this. The Product Owner takes primarily responsible for this.
- Overall: In the SCRUM methodology a sprint is the basic unit of development. Each sprint starts with a planning meeting, where the tasks for the sprint are identified and an estimated commitment for the sprint goal is made. A Sprint ends with a review or retrospective meeting where the progress is reviewed and lessons for the next sprint are identified. During each sprint, the team creates finished portions of a product.