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
[SDLC Agile Terms] Backlog
An ever-evolving, customer prioritized list of product requirements, that tell an Agile team which features to implement first.
[SDLC Agile Terms] Burn Down Chart
Y-axis: Units of work that remain
X-axis: Time
[SDLC Agile Terms] Done
A Team’s universally agreed-upon criteria for what makes a unit of work “potentially shippable”.
[SDLC Agile Terms] Iteration/Sprint
- The uninterrupted period of time during which an Angile team performs work.
- 1 week - 1 month in length
- At the end, Team delivers “potentially shippable” product
[SDLC Agile Terms] Product Owner
Non-coding real customer or end user (or stand-in) on the Agile Team, who has a complete grasp of the requirements and business value of the product.
Is responsible for Team’s work prioritization.
[SDLC Agile Terms] Persona
Fictional character with individual needs, goals and habits, created by Agile Team as a representative user, to serve as a reference-point for usability during product development.
[SDLC Agile Terms] Retrospective
A time boxed meeting held at the end of an iteration/sprint, or at the end of a release, in which the team examines its processes to determine what succeeded and what could be improved.
[SDLC Agile Terms] Scrum Master
NOT a product manager. Sits between project and customer. SUPPORTS the product owner, COACHES the team, and ensures Scrum processes are adhered to.
[SDLC Agile Terms] Sprint Review/Demo
Meeting held at the end of an iteration, at which the development team demonstrates working software and solicits feedback from the product owner, the customer, management, other development teams, and other project stakeholders.