Chapter 3 Flashcards
(39 cards)
Predictive software development
has big advantages
encourages up-front design
Preditctive software development nicknames
BDUF (Big Design Up Front)
Because that’s what it encourages
Iterative model
You build the final application incrementally
Start with minimally viable product and then add pieces to it.
Software engineering goals at its most fundamental
producing useful applications
Iterative software development modesl
Unified Process and iterated waterfall
Second goal of software engineering
producing software quickly
Rapid Application Development (RAD)
These models incorporate some of the best features of the modesl described in preceding lessons plus new features that get results to the end user quickly
Pushed devs to generate as much high-qulaity code as possible and as quicly as possibly
Agile method
allow a projects goals to change over time to track changing customer needs
Extreme programming
uses pair programming to ensure that every piece of code goes through a kind of code review
Test driven development model
forces programmers to write tests for their code
Commit to the development method
Unless everyone commits, you’ll have trouble getting success from the model
predictive development model
Predict in advance what needs to be done and then you go out and do it
– use requirements to design the system and
—- > use the system design to write the code
- test and deploy
Problems with predictive model
Its hard to predict exactly wht a softwarae application needs to do and how you should build it ahead of time
– customer needs change
– if you need to learn programing technique on the fly could lengthen timeframe
Adaptive development model
Allows you to change projects goals during development
You can periodically reevaluate and change your direction
Adaptive model analogy
With each new development in the project you reevaluate where you are and decide if you want to keep going the same direction
Predictive model works well when
the project is small
Predictive project Success and failure indicators
User involvment - if the users help define the requirmeents, they’re more likelyi to be correct
Clear Vision - if the customers and developers have the same clear vision about the project’s goals, development will stay on track
Limited size - a small size helps the customers and team members see the whole picture all at once. Requirements won’t have time to change
Experienced team – experienced team members are less likely to design something they can’t build. They also won’t wander off writing code that doesn’t work out.
Realistic - if the suers ask for a telepathic user interface they’ll be disappointed
Established technology - if you stick to technology that you’ve used before you’ll udnerstand how to use it correctly
Incomplete requirements - in a predictive porject, if the requirements don’t say you should do sokmething, it won’t get done
Unclear requirements - if the customers and developers don’t all have the same vision of what the application should do, you’ll have trouble satisfying everyone.
Chaging requirmeents - the requirements are like railroad tracks: After they’re set, changing course is difficult
No resources - even if you have clear requirements and a perfect design, a single programmer can’t write a 10,000 line program in one week.
Predictive model Advantages
Predictability - if everything
Stability
Cost-savings
Detailed design
less refactoring
Fix bugs early
Better documentation
Easy maintenance
Predictive model Disadvantages
Inflexible – requirements can’t change, so if they need to… you’re in trouble
Later release - you can’t release anything until the project is finished (unlike an adaptive model where incremental releases can occur
Big Design Up Front - you need to defined everything up front, so you can’t start developing until you know everything you’re going to need to do.
Pure predictive models
Assume each stage of development is finished completely and correctly before the next stage begins
Predictive model / BDUF
one of the
Waterfall model
Predictive
The plain vanilla of the predictive model world
You finsih each step completely and thoroughly before you move on to the next step
Waterfall analogy
Predictive
Each step is a bucket
When one bucket is full the information floods to the next bucket (task) to complete
Waterfall model can work well if these assumptions are satisified
Predictive
The requirements are precisely known in advance
the requirements include no unresolved high-risk items
The requirements won’t change much during development
The team has previous experience with similar projects
There’s enough time to do everything sequentially