there was Waterfall. Waterfall was slow, clunky, and not able to cope with change since it focused on long, detailed specifications, strict, planning, and sticking to the plan.
PM isn’t providing key leadership. There are no actual rules, just prescribed methodologies. Testing integrated throughout lifecycle Meaning developers have to do extra work to complete a sprint. However, CI helps with this. Potentially low requirements There is a lack of architecture since Agile doesn’t support extensive documentation. Trying too hard in a sprint If a sprint has too much work being assigned to the developers, there will be technical debt.
cycle planning is conducted • adapting to the uncertain surrounding mix of changes caused by various factors • short iterations with design, build and testing
projects • supports fixed price constraints • teams can use techniques from other methodologies • requires documentation but is not strict about what that entails
need • Deliver on time • Collaborate • Never compromise quality • Build incrementally from firm foundations • Develop iteratively • Communicate continuously and clearly • Demonstrate control
best practices into a cohesive whole • practices are all driven from a client- valued functionality feature perspective • its main purpose is to deliver tangible, working software repeatedly in a timely manner
by splitting work into pieces and putting it in cards • limits work in progress by assigning time limits • measure the lead time (average time to complete one item)
only work on what we absolutely need to be doing • eliminating useless meetings, tasks, and documentation • emphasis on fast delivery • eliminate waste, build quality, defer commitment, respect people, optimize whole, deliver fast
Acceptance Tests ◦ Small Releases ◦ Continuous Integration ◦ Pair Programming • frequent "releases" in short development cycles • improves productivity and introduces checkpoints where new customer requirements can be introduced
date and content • responsible for ROI • prioritizes features based on market value • accepts/rejects work results • adjusts features/priorities every iteration, as needed
enacting scrum values and practices • removes impediments • ensures team is fully functional/productive • enables close cooperation across all roles/functions • shields team from external interferences
they can actually try to complete • sprint backlog is created ◦ tasks identified and each one is given a time estimate for 1 to 16 hours • high level design is considered
not for problem solving • helps avoid other unnecessary meetings afterwards • 3 key questions ◦ what did you do yesterday? ◦ what will you do today? ◦ is anything in your way?
in increments ◉ Concept is developed as the project is brought along ◉ Demonstrate the software to the client then continue to develop based on the feedback received
Early feedback on whether the final product will be accepted. Visible progress throughout the project. Evolutionary Prototyping Disadvantages Unrealistic schedules and budget expectations. Inefficient use of prototyping, poor design, unrealistic system performance expectations.
an extension of the waterfall method ◉ It is based on association of a testing phase for each corresponding development stage ◉ This model is highly disciplined and the next phase can only begin after completion of the previous phase.
Works well with smaller projects. Simple and easy to use. Easy to manage due to rigidity of the model. All phases have a review process and deliverables. V-Model Disadvantages High risk as well as uncertainty. Not a good model for complex and object oriented projects. Poor model for long and ongoing projects. Not suitable for projects where requirements have a higher risk of changing. Once in testing stage hard to go back. No working product till late in the lifecycle
product is designed, implemented, and tested a bit at a time until it is completed. ◉ It involves development and maintenance and is defined as finished when all requirements are satisfied. ◉ This model combines elements of the waterfall model with the iterative philosophy of prototyping.
which in turn causes elements that are malfunctioning to be identified simply because few changes are made with any single iteration. ◉ It is also generally easier to test and debug with this method of software development because smaller changes are made during each iteration as well. ◉ Customers can also respond to features and review the product for any changes that may be needed. ◉ Lower initial delivery costs.
of the corporation. ◉ Each phase of an iteration is rigid and do not overlap one another. ◉ As additional functionality is added to the software product, issues may arise that are related to system architecture that were not evident in the earlier product prototypes.
have autonomy over the development process. ◉ The autonomy includes the control of the project’s schedule, languages, algorithms, tools, frameworks and coding style.
of a group or part of a group of developers working with minimal process or discipline. It usually occurs when there is very little participation by business users or by management that controls non- development aspects of the project. Cowboy Coding Is commonly seen as a derogatory term by supporters of other software development methodologies.
can encourage experimentation, learning, and free distribution of the results. Design Resolutions Allows for developers to cross architectural and/or tiered boundaries to resolve design limitations and defects. Free Thinking Coding would be completed during the developer’s free time, which allows for a hobby project to come to fruition which otherwise may not.
planning can cause a project to be delayed. Uncertain Design Requirements Custom software applications can experience issues with the client’s requirements. Cowboy Coding can increase this problem by not scaling the requirements to a reasonable timeline, which can result in a rushed and bug filled product. Inexperienced Developers Common at the hobbyist or student level where developers may not be as familiar with the technologies. This can result in learning time to be underestimated, which can cause delays in development.
tailored to teaching individuals about their own unique programming styles and even help software engineers further develop their skills in writing quality software with few defects.” ◉ Provides engineers with a disciplined personal framework for doing software work ◉ The PSP process consists of a set of methods, forms, and scripts that show software engineers how to plan, measure, and manage their work.
Improve their estimating and planning skills. • Make commitments they can keep. • Manage the quality of their projects. • Reduce the number of defects in their work.
an appreciation of strengths and weaknesses ◉ Gain a Sense of Personal accomplishment ◉ Have total control over schedule and the commitments you make ◉ The Quality portion will help produce better products ◉ Builds team’s confidence in you
same way ◉ Strictly is aimed for the development of software and not the time spent negotiating with clients ◉ PSP doesn't force the user to timestamp disruptions
that is designed to help teams of managers and engineers organize projects and produce software products that range in size from small projects of several thousand lines of code (KLOC) to very large projects greater than half a million lines of code.” ◉ Guides Engineering Teams that are developing software- intensive products
◉ Reductions in cost and schedule variance to less than +/- 10% ◉ Testing costs and schedule reductions of up to 80% ◉ Helps Organizations make a mature and disciplined engineering proactive that makes reliable software
back in-depth coverage of content ◉ Teams may not retain as much information as they need for full participation ◉ Some training that is needed may not be provided
to be introduced in software development. ◉ Begins with customer specification of requirements and progresses through planning, modeling, construction, and deployment, culminating in ongoing support of the completed software. ◉ Each phase must be completed before the next phase can begin and there is no overlapping in the phases.
programs which are later integrated. Each unit is developed and tested for functionality. Requirements All possible requirements of the system to be developed are gathered and documented. System Design Helps specify hardware and system requirements along with defining the overall system architecture. Integration & Testing All of the units developed are integrated and after integration the entire system is tested. Maintenance Intended to enhance the product. Later versions and patches are released as issues arise in the client environment.
deliverables and a review process. ◉ Phases are completed one at a time. ◉ Works well for smaller projects where requirements are well understood. Waterfall Model Disadvantages ◉ Not ideal for long and ongoing projects as you can’t go back to a previous phase ◉ Difficult for customer to state all requirements. ◉ A working version of the product will not be available until late in the process.
that brings together the iterative aspect of prototyping and the controlled and systematic aspects of the waterfall model together. ◉ Provides the potential for rapid development of more complete versions of the software.
developed in a series of incremental releases. ◉ During early iterations, the release might be a prototype and during later iterations the product evolves into its complete form. ◉ There are four phases associated with the spiral model. A software project repeatedly passes through these phases in iterations called spirals.
baseline spiral. In the later spirals as the product matures, identification of system requirements, subsystem requirements, and unit requirements are all done in this phase. Spiral Model Phases Design Phase Starts with the conceptual design, logical design of modules, physical product design and final design in the later spirals.
proof of concept to gather customer feedback. In the later spirals with more clarity on requirements and design, a working model of the software is produced with a version number. Each build is sent to the customer for feedback. Spiral Model Phases Continued Evaluation and Risk Analysis Includes estimating, identifying, and monitoring technical feasibility and management risks, such as schedule slippage and cost overrun. After testing the build, at the end of the first iteration, the customer evaluates the software and provides feedback.
in as they become available. ◉ Assures there is no conflict with previous requirements and design. ◉ Users are allowed to see the system early. Spiral Model Disadvantages ◉ It takes strict management to complete products. ◉ The spiral can run in an indefinite loop. ◉ Intermediate stages requires a lot of documentation.
we would have clear and definite methodologies for doing everything. When a civil engineer has to design a bridge, he has a loading in mind, a safety margin, specific materials, and several design alternatives. He can evaluate those alternatives in a quantifiable way to determine which is optimal. Software engineering, on the other hand, has significant factors that are an art. Yes, obviously generating the code to get the right result is a function of basic programming, and that is certainly an engineering skill, but creating the architecture that will be optimal requires a certain level of insight and taste that is beyond anything that can be found in a formula. In other engineering disciplines, this is more clear. Was Ming Pei an engineer? How is an architect different from a mechanical engineer?