Domain 8: Software Development Methodologies
Extreme Programming (XP)
A development methodology that takes code reviews to the extreme by having them take place continuously. Uses pair programming to constantly examine the code as it is being typed. Relies on test-driven development
Waterfall Methodology
A linear-sequential life-cycle approach. Each phase must be completed it its entirety before the next phase can begin. At the end of each phase, a review takes place to make sure the project is on the correct path and should continue
Reuse Methodology
A methodology that approaches software development by using progressively developed code. Reusable programs are evolved by gradually modifying the pre-existing prototypes to customer specifications. Since the reuse methodology does not require programs to be built from scratch, it drastically reduces both development cost and time
Joint Application Development (JAD)
A methodology that uses a team approach in application development in a workshop-oriented environment. This methodology is distinguished by its inclusion of members other than coders in the team. It is common to find executive sponsors, subject matter experts, and end users spending hours or days in collaborative development workshops
Integrated Product Team (IPT)
A multidisciplinary development team with representatives from many or all stakeholder populations Not a development methodology, but a management technique
Agile - user story
A sentence that describes what a user wants to do and why. Keeps the user's focus and the right system is better realized
Disadvantages of the Waterfall Methodology
All requirements are gathered in the initial phase and there is no formal way to integrate changes as more information becomes available or requirements change
advantages of spiral methodology
Allows new requires to be addressed as they are uncovered, each prototype allows for testing to take place early in the development project, and feedback based upon these tests is integrated into the following iteration of steps Good for complex projects that have fluid requirements
Cleanroom Methodology
An approach that attempts to prevent errors or mistakes by following structured and formal methods of developing and testing. This approach is used for high-quality and mission-critical applications that will be put through strict certification process
Agile Methodology
An umbrella term for several development methodologies. Focuses not on rigid, stepwise processes, but instead on incremental and iterative development methods that promote cross-functional teamwork and continuous feedback mechanisms
evolutionary prototyping
Built with the goal of incremental improvement. Instead of being discarded after being developed, the prototype in this model is continually improved upon until it reaches the final product stage
operational prototyping
Designed to be implemented within a production environment as it is being tweaked. Updated as customer feedback is gathered, and the changes to the software happen within the working site
Five Maturity Levels of CMMI
Initial - Development process is ad hoc or even chaotic. The company does not use effective management procedures and plans. There is no assurance of consistency, and quality is unpredictable. Success is usually the result of individual heroics Repeatable - A formal management structure, change control, and quality assurance are in place. The company can properly repeat processes throughout each project. The company does not have formal process models defined. Define - Formal procedures are in place that outline and define processes carried out in each project. The organization has a way to allow for quantitative process improvement Managed - The company has formal processes in place to collect and analyze quantitative data, and metrics are defined and fed into process improvement program Optimizing - The company has budgeted and integrated plans for continuous process improvement
Spiral Methodology
Iterative approach to software development and places emphasis on risk analysis. Four phases: Determine objectives, risk analysis, development and test, and plan the next iteration
Difference between rapid, evolutionary, and operational prototyping
Rapid prototyping is developed to give quick understanding of the suggested solution Evolutionary prototype is created and improved upon within a lab environment Operational prototype is developed and improved upon with a production environment
Rapid Application development (RAD)
Relies more on the use of rapid prototyping than on extensive upfront planning. The planning of how to improve the software is interleaved with the processes of developing the software, which allows for software to be developed quickly
Kanban Methodology
Stresses visual tracking of all tasks so that the team knows what to prioritize at what point in time in order to deliver the right features right on time
DevOps
The practice of incorporating development, IT, and quality assurance (QA) staff into software development projects to align their incentives and enable frequent, efficient, and reliable releases of software products
V-shaped Methodology
This methodology emphasizes the verification and validation of the product at each phase and provides a formal method of developing testing plans as each coding phase is executed
The Joint Application Development (JAD)
Users join developers during extensive workshops, works well with the IPT approach
scrum methodology
Uses small teams to produce small pieces of deliverable software using sprints, or 30-day intervals, to achieve an appointed goal
Disadvantages of the V-shaped Methodology
Very rigid and does not allow for flexibility. Adapting to changes is more difficult and expensive Does not allow for handling of events concurrently, does not integrate iterations of phases, and it does not contain risk analysis activities as later methodologies do
Scrum - sprint
a fixed-duration development interval that is usually (but not always) two weeks in length and promises delivery of a very specific set of features
prototype
a sample of software code or a model that can be developed to explore a specific approach to a problem before investing expensive time and resources
rapid prototyping
an approach that allows for the development team to quickly create a prototype to test the validity of the current understanding of the project requirements "quick and dirty" Not developed to be built upon, but to be discarded after serving its purposes
Incremental Methology
carries out multiple development cycles on a piece of software throughout its development stages "multi-waterfall" Each incremental phase results in a deliverable that is an operational product. Improved after each of its subsequent iterations
Exploratory methodology
used in instances where clearly defined project objectives have not been presented. Instead of focusing on explicit tasks, the exploratory methodology relies on covering a set of specifications likely to affect the final product's functionality. Testing is an important part of exploratory development, as it ascertains that the current phase of the project is compliant with likely implementation scenarios
Capability Maturity Model Integration (CMMI)
A comprehensive, integrated set of guidelines for developing products and software. It addresses the different phases of a software development life cycle, including concept definition, requirements analysis, design, development, inegreation, installation, operations, and maintenance, and what should happen in each phase