1/19
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced | Call with Kai |
|---|
No analytics yet
Send a link to your students to track their progress
Software Development Life Cycle (SDLC)
Specification - Define functionality we must support
Development - Create software that delivers functionality
Validation - Verify software does what it is supposed to
Evolution - Evolve to software to meet customer needs
Waterfall Method
A sequential (non-iterative) design process, flows steadily downward
Waterfall Model Phases
Requirements - collect and analyze what system should do. Outcome: requirements specification document
Design - Create system architecture and detailed design. Outcome: design specifications for developers
Implementation - Develops write code. Outcome: working software components
Verification - Test the system against requirements. Outcome: verified product, ready for delivery
Maintenance - After transfer to user; updates, bug fixes, and improvements. Outcome: long-term system support

Waterfall Method Key Characteristics
Popular with traditional engineering
PLAN/ DOCUMENTATION HEAVY
Good for need to get right the first time, cost of failure is high, have complete and stable requirements
Inflexible, late discovery of issues, bad for evolving requirements
V(Verification/Validation) Model
address the main limitation of the Waterfall model—late testing. By having test that corresponding with every test.
Testing is planned in parallel and performed in reverse order after coding.
Step 1 → Step 2 → Step 3 → Step 4 → Coding → Step 4 Test → Step 3 Test → Step 2 Test → Step 1 Test

Boehm’s Spiral Model
risk-driven software development process (identify and reduce risk early)
Iterative. In loops

Boehm’s Spiral Model Loop Phases
Define objectives & constraints
Risk assessment & reduction
Development & testing
Planning next iteration
Boehm’s Spiral Model Key Characteristics
Customer feedback at each iteration
Lots of RISK ANALYSIS
Good when: large/complex project, unclear/evolving requirements, high-risk, frequent user feedback needed
Iterative Model
system is built incrementally through repeated cycles (iterations).
Delivers partial working system early
Each iteration includes design, build, test
Requirements are mostly known but can evolve
User feedback after each iteration
Best when: requirements are not complete upfront, early protypes are helpful, change is expected
Key: early issue detection = risk reduction
Agile Methods Key Points
Flexible and iterative w/ rapid delivery & continuous improvement.
Sprint cycles
Faster to market
Adaptable, customer involvement, continuous testing and delivery
Use when: big upfront planning is not practical, need to reduce risk, visibility with customers

Agile Sprint Phases
Plan - Define sprint goals
Design - High-level or detailed design decision made. Design is kept lightweight and adaptive
Build - Write code (small tasks)
Test - tested continuously. unit, integration, and acceptance testing
Review - demonstrate features to stakeholders. Feedback collected
Launch - working product (or increment) is launched/deployed.
Repeat and improve
Big Bang/ Chaos Method
Little to no planning, figure out as you go
Very small projects or start ups
Traditional SDLC v. Agile SDLC

Rational Unified Process (RUP)
an iterative and incremental software development framework that guides life cycle of software development focused on
Clear structure
Risk mitigation
Continuous user involvement
Iterative refinement
RUP Best Practices
Develop software iteratively
to complex & risky to go one pass. allow customer involvement
Manage Requirements
Use cases and scenarios help to identify requirements
Use component-based architecture
Robust architecture prior to full-scale development to aid reusable, component-based software
Visually model software
UML diagram
Verify software quality
Verification and Validation is not an afterthought
Control changes to software
Control, track, and monitor changes
RUP Phases
Inception - define project scope, goals, business case, and high-level risks
Elaboration - refine requirements, build architecture, resolve high-level risk
Construction - Build the software in increments
Transition - prepare for an perform deployment
RUP Disciplines
Business Modeling - create & maintain traceability between business and software modules
Requirements - describe what system should do
Analysis and Design - show how system will be realized in implementation phase
Implementation - system is realized through implementation of reusable components
Test - find defects as early as possible
Deployment - produce product release and deliver to users
Configuration and Change Management - manage access to project work
Project Management - manage risks, direct people, coordinate with other stake holders
Environment - ensure that the process, guidance and tools are available
Boehm’s Risk Exposure: Safety Critical Profile
For normal projects (blue curve), the sweet spot is reached with moderate planning.
For large, safety-critical projects (green curve), the sweet spot is shifted towards more extensive planning to reduce risks of large system rework or failures.

Boehm’s Risk Exposure: Agile Profile
ow size of loss S(L) because rework is easy and frequent (short iterations, continuous feedback).
accept a higher probability of small losses but keep losses small.
The sweet spot is towards lower planning effort—agile minimizes upfront planning.

Extreme Programming (XP) - 12 Practices
The Planning Game - Once per iteration. Decide scope, priory, release dates, estimate effort, technical consequences, scheduling
Whole team - customer is member of team
Pair Programming - all code written by two people at one machine. Driver(implementation) & navigator(viability of approach, new tests, simpler ways)
Testing - Continuous tests, must pass test for development to continue
Continuous Integration - integrate & test every few hours. Easy to see what broke code
Small Release - frequent feedback & tracking
Refactoring - restructure system without changing its behavior to remove duplication, improve communication, simplify, or add flexibility
Simple Design - easy to understand what is going on
Coding Standard - clear, unambiguous code
Collective Ownership - Everyone knows something about every part to mitigate loss if someone leaves
System Metaphor - Detailed enough to drive architecture, avoid buzz words & jargon
Sustainable Pace - Don’t burn out