software lifecycle Flashcards
Important takeaways
Denver International Airport
- time management is important
- need time for extensive testing + operations
- technitcians and software engineers had minimal communication amongst each other
- software testing is vital
International Denver Airport problems
- too much traffic - normal network load 95%
- poor management due to poor planning during original design
basic info and steps
Code and fix model:
- 1950-
- not an entirely sustainable model
- was used when computers were much more expensive
- build first version -> modify until client is satisfied <-> operate -> retirement
Code and Fix model issues
- no process steps - no specs, docs, tests
- no separation of concerns - no teamwork
- no way to deal with complexity
main steps
Software Engineering Tasks
- getting requirements
- high-level design
- low level design
- development
- testing
- deployement
- maintenance
- wrap up
low-level vs high-level design
high level design ->
- what type of system are we going to build?
- what is it going to do and not do
- how is hardware going to implemented, ie how many processes, servers or PCs?
low level design ->
- how is this system going to be built?
- how are teams on different modules going to communicate
Testing steps
- is the system working correctly?
- purpose is to destroy the software
- important to point out areas of improvement
- testing as a whole, in different scenarios and similar hardware
- performance testing - simulating multiple users
Waterfall model
- expectation is you do it one step at a time
- in reality requirements need to be revised at times
Waterfall Method issues
- real projects rarely follow a sequential flow
- hard to state all requirements explicitly
- requirements may change
- customer must have patience
- any blunder can be disastrous
- important to be unambigious when it comes to establishing requirements early on
Waterfall with feedback
- more communication among teams
- harder to organise large amount of people working
Sashimi waterfall
- overlap of teams working in different sectors
Incremental waterfall
- customer can give feedback
- by the time you’re finished with first project you can develop a new one with improvements in mind
V-model
- integration testing to see different components working together
- system test involves running scenarios from end to end
- unit, integration and system testing - verification -> tells you that you built what you intended to build
- acceptance testing - validation -> check from customer if you built what customer had envisioned, customer tests your software and see if it fits their needs, need to make sure project is useful and is fit for the need
why are they used vs predictive models
Iterative models
- predictive models don’t handle change well
- predictive models don’t handle fuzzy requirements well
- iterative models build programs incrementally
- iterations are shorter, allowing for change
- requirements can be refined after iterations
Prototyping
Communication -> Quick plan -> quick design -> prototype construction -> deployment and feedback -> repeat
- build smaller systems to more effectively list requirements from customer
- simpler to revise