Lecture 2 Flashcards
Software Development Life Cycle (SDLC)
A process for planning, creating, testing, and deploying an information system (or product).
[SDLC] Waterfall (SDLC Waterfall)
A sequential design process in which progress is seen as flowing steadily downwards.
[SDLC Waterfall] Phases <5 phases>
(1) Requirements/Analysis
(2) Design
(3) Construction/Coding
(4) Testing
(5) Maintenance
[SDLC Waterfall] Features <4>
- Prev. phase completed before next phase begins
- Gate at end of each phase, determines if project moves forward
- Change Control Board (CCB) must approve major changes
- Product only ‘finished’ after last phase
[SDLC Waterfall] Pros <4>
- easy to understand/use
- easy to manage due to model’s rigidity (each phase has specific deliverables and a review process)
- phases processed 1 at a time, no phase overlap
- works well for smaller projects where requirements are well understood
[SDLC Waterfall] Cons <5>
- Once in testing stage, it’s difficult to go back and change something
- No working software produced until late during life cycle
- High risk/uncertainty
- Not good for complex and object oriented projects, or for long/ongoing projects
- Not suitable for projects with risk of change
[SDLC] Prototyping (SDLC Prototyping)
Emphasis on developing prototypes early, allows early feedback and analysis, supportive of development process.
[SDLC Prototyping] Pros
- users are actively involved in development
- users have a better idea of the system being developed
- earlier detection of errors
- quicker user feedback is available, leading to better solutions
- missing functionality easily identified
- confusing/difficult functions can be identified
[SDLC Prototyping] Cons
- leads to an “implement THEN repair” method of systems building
- may increase complexity of the system as the scope of the system expands beyond original plans
- incomplete application may lead to application not being used as the full system was designed
[SDLC] Agile (SDLC Agile)
Umbrella term for the iterative, incremental development process. Small teams (5-7 people) deliver SMALL INCREMENTS OF WORKING SOFTWARE in great frequency, while working in close collaboration with customers, and adapting to changing requirements.
[SDLC Agile] Pros
- rapid, continuous delivery of useful software leads to customer satisfaction
- emphasis on people and interactions over process and tools
- communication by face to face conversations between business people and developers, etc
- continuous attention to technical excellence and good design
[SDLC Agile] Cons
- difficult to assess required effort at the beginning of the SDLC (especially for larger projects)
- lack of emphasis on necessary designing and documentation
- easy for project to lose track if customer is not clear on desired outcome
[SDLC Agile] Manifesto
- Individuals and Interactions over processes and tools
- Working Software over comprehensive documentation
- Customer Collaboration over contract negotiation
- Responding to Change over following a plan
[SDLC Agile] Principles <12>
- Satisfy customer with early and continuous delivery
- Welcome changing requirements (even late in dev)
- Deliver working software frequently
- Biz & devs work together daily
- Build projects around motivated individuals
- Convey info via face to face conversation
- Working software = the primary measure of progress
- Indefinite maintenence of a constant pace
- Give continuous attention to technical excellence
- Simplify: maximize the amount of work NOT done
- Teams self-organize
- Teams retrospect and tune behavior
[SDLC Agile] Frameworks
- Scrum
- Lean
- Crystal
- Extreme Programming (XP)
- Kanban
- DSDM
- RUP
- FDD