*Hi, feel free to share your ideas and knowledge related to the software processes 🙂
1)What is a process?
- A series of actions or steps taken in order to achieve a particular end.
2)What is a software process?
- A structured set of activities required to develop a software system.
3)Why we need a software process?
- Because it helps the developers to understand better about what they are doing and also it helps managers to make more accurate predictions about how long a project will take and planning the resources allocation.
4)What are the activities involved in software development?
- Requirement Understanding
- Gap Analysis
- Feasibility Analysis
- Database modelling
- software structuring
- Interface Design
- Unit Testing
- Build Installation
- System Testing
- Bug Fixing
- Regression Testing
- Testing Reports
- Roll Out
- Post-Deployment Testing
- Change request
- Impact Analysis
*In both requirement and deployment phase client input and review .
5)What is a software process model?
- A description of the sequence of activities carried out in the entire lifetime of a product.
6)Need of a software process model?
- To determine what should happen from very beginning to very end of software development process.
- To determine the order of each activities.
- To determine the transition criteria of those activities.
7)Types of software process models
- Waterfall Model
- Spiral Model
- Evolutionary Prototyping
- Throwaway Prototyping
- Agile Software Process
8)Waterfall Model-First Process Model
- This model shows software development process in a linear sequential flow.
- Each phase must be completed before the nest phase can begin and no overlapping in the phases.
- For Domain is well known and the technologies known projects.Also this is logical.
- Works well with the software products which has awell define,stable product definition.
9)Pros & Cons
|*Simple and Easy to understand and use||*No working software is produced until late during the life cycle|
|*Clearly defined stages||*Difficult to measure progress within stages|
|*Phases are processed and completed one at a time||*Not a good model for complex and object oriented projects|
|*East to arrange||*Cannot accommodate changing requirements and adjusting the scope can be end a project.|
10)What happens if we change an ongoing waterfall model project??
- Change leads to rework so the cost of change include both rework and implementation of new functionality.
- Software quality degrade with changes.
- After some point change becomes risky and business change accordingly.
- Testing is done at the last stage so delaying can create more and more defects.
11)Coping with change
- Change is inevitable(unavoidable) in large software projects because,
Business change,leads to new and changed system requirements.
New technologies open up, new possibilities for improving implementation. Changing platforms require application changes.
- Change anticipation—>where the software process includes activities that can anticipate possible changes before significant rework is required.
- Change tolerance—>where the process is designed so that changes can be accommodated at relatively low cost.
- Prototyping is where a version of the system or part of the system is developed quickly to check the customer’s requirements and the feasibility of design decisions.This supports change anticipation.
- A prototype—>is an initial version of a system used to demonstrate concepts and try out design options.
13)Prototype can be used in,
- Requirement process–>To help with requirement elicitation and validation.
- The design process–>To explore options and develop an UI design.
- The testing process–>To run back-to-back tests.
14)Benefits of Prototyping
- Improve system usability.
- A closer match to user’s real needs
- Improve design quality
- Improve maintainability
- Reduce rework effort
15)Evolutionary Prototyping Model
- This is based on building actual functional prototypes with minimal functionality in the beginning.
- Only well understood requirements are included and requirements are added as when they are understood.
- Developers start developing the part,instead of working on the whole system,partial system shown to the customer and his feedback included.
- immediate feedback is given here
16)Advantages of evolutionary prototyping model
- The delivery of the system speed up.
- The user engages with the system.
- The system is more likely to meet the user requirements.
17)Disadvantages of evolutionary prototyping model
- Difficult to plan the duration.
- Code and fix kind of approach which leads less quality products.
18)Throwaway prototyping Model
- This model uses very little effort with minimum requirement analysis to build a prototype.Once the actual requirements are understood,the prototype is discarded and the actual system is developed with a much clear uderstnding of user requirement.
19)Advantages of throwaway prototyping
- Allows early detection of issues
- Transition from one step to the the next will be smoother
- Since it is thoroughly tested through the use of prototypes,it can be assured the end result is something that will certainly work for us as well as the customers.
20)Disadvantages of Throwaway prototyping Model
- Done in rapid speed. Therefore,unable to have sufficient time to think of better solutions,end of product may not always be the best.
- Differentiating the prototype from the real one can become a challenge.
21)Incremental Development Model
- This model combines the elements of waterfall model in an interactive manner.
- Rather than deliver the system as a single delivery,the development and delivery is broken down into increments with each increment delivering part of the required functionality.
- User requirements are prioritized and the highest priority requirements are included in early requirements.
- Once the development of an increment is started the requirements are frozen though the requirements for later increments can continue to evolve.
22)What is incremental development and incremental delivery means?
- Incremental development —>
*Develop the system in increments and evaluate each increment before proceeding to the development of the next increment.
*Normal approach used in Agile methods.
*Evaluation done by user/customer proxy.
- Incremental delivery—>
*Deploy an increment for use by end users.
*More realistic evaluation about practical use of software.
*Difficult to implement for replacement systems as increments have less functionality that the system being replaced.
[If the example I written on the above picture is not clear]
eg:-If we are to develop a word processing software,we can implement it by increment wise.
- 1st increment – basic file management, editing, and document production functions.
- 2nd increment-More sophisticated editing and document production capabilities
- 3rd increment-Spelling and grammar checking
- 4th increment-Advanced page layout capability
23)Advantages and Disadvantages
|*Initial product delivery is faster.||*Requires good analysis|
|*Lower initial delivery cost.||*Resulting cost may exceed the cost of the organization|
|*Work Load is less|
- This model is an incremental model with more emphasis placed on risk analysis.
- Has 4 types—>
25)Advantages and disadvantages
|*Functionality can be added later||*costly|
|*Software produced early.||*need expertise|
26)Agile Process Model
- This model is a combination of Iterative and Incremental process models.
[what it means by iterative -Don’t try to get it all right from the beginning , Incremental-Don’t build at once]
- This focus on process adaptability and customer satisfaction by rapid delivery of working software product.[Agility]
27)Why we choose Agile?
- Agile is based on the adaptive software development methods so,this may not be the strongest and the most intelligent but this is the most responsive to change.
- Agile Manifesto is a formal declaration of 4 key values and 12 principles to guide an iterative and people centric approach to software development.
- Individuals and interactions over process and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
1) Individuals and interactions over process and tools
- Work done by people ,process may help
- People are the most important factor
- Team should focus on individuals and interactions
- Promote self management and shared ownership
- People initiate projects,projects are delivered to people,requirements are negotiated,problems and issues are solved and acceptance criteria is defined by people.
- Train people and promote good interactions
2)Working software over comprehensive documentation
- Focusing on delivering working software
- Progress is tracked based on working software
- Documentation is necessary but documentation without good software is valueless.
- Do not let documentation to distract your attention from creating good software
3)Customer collaboration over contract negotiation
- Business requirements are changing.
- Software is intangible,invisible and different to reference
- Putting everything on the contact at the beginning ts not practical.
- Be flexible and accommodate change,join hands with customer to achieve a shared goal.
- Builds trust and use flexible contracts.
4)Responding to change over following a plan
- Requirements are changing.
- Concrete plans will not work
- Start with initial high level plans developed with little knowledge about the product and change them when you learn more during the project.
- Get everyone involved in planning.
29)The basic approach of Agile
- Make a list of what you need to do-(Backlog)
- Prioritize the list according to the value and size
- Work from the top of the list until you run out of time
- Repeat the process
Referring to the words in the above diagram,
Envision? (In simple term–>Imagine as a future possibility)
- Determine the product vision and project scope, the project community and how the team will work together.
Speculate?(In simple term–> Guess without any evidence)
- Develop a feature based release ,milestone and iteration plan to deliver the vision.
- Speculating is not reckless risk taking;it is to conjecture something based on incomplete facts of information.
- Deliver tested features in a short timeframe,constantly seeking to reduce the risk and uncertainty of the project.
- Review the delivered results,the current situation,and the team’s performance and adapt as necessary.
- This is not control and correction,,they imply one of two things.
- Initial plans were wrong and they need to be corrected OR
- Initial plans were correct but execution was wrong and that needs to be corrected.
- Adapt implies modifications or changes to cope with uncertainties that are inherent innovation.
30)Drivers for adopting Agile Process Model
- Continuous innovations
- Product changes fast
- Reduced time of response
- People and process adaptability
- Need to reduce the cost.
- Changing technology
- High level of risk
- Guaranteed Results
- Empowering and delegating organizational cultures
31)How to choose the right SDLC?
- Learn about software development Life cycle models
- Access the needs of stakeholders
- Define the criteria
*feel free to share your ideas and knowledge related to the software processes 🙂