Most Important Points
- Real software projects need dozens of roles
- Systematic mechanisms for teamwork are needed
- Set goals; form plans; evaluate plans WRT goals
- Templates prompt your thought and save effort
- Keep project artifacts accessible and up-to-date
- Quality must be built-in, not tested-in
- Use formal notations where they fit well
Teamwork and Planning
- Good teamwork comes from experienced members
- Make sure expectations are managed
- Good process can make conflicts less personal
- Align team goals with your honest personal goals
- Plan time for: learning technologies, integration
- Plan to ship on time; slip features if needed
- Formalize the final steps of the development process
Development Infrastructure
- Securely involve all project stakeholders
- Place all code and documents under version control
- Track all defects, enhancements, and tasks
- Archive project emails and meeting minutes
- Empower developers to work on tasks independently
|
Requirements
- 1st, User needs: stakeholders, user stories
- 2nd, SRS: use cases, feature specs, mockups
- Search for existing products and standards
- Prioritize requirements in each release
- Validate requirements before proceeding
Design
- Design = synthesis + analysis
- Design concerns: usability, scalability,
security, persistence, functionality, etc.
- Validate design feasibility before proceeding
Implementation and Testing
- Practice task-oriented development
- Integrate components and changes continuously
- QA = asserts + standards + reviews + analysis + tests
- Writing unit tests helps clarify requirements
- Plan time to fix found defects. Estimate future defects
Release Management
- Automate daily builds and unit tests
- Tightly manage risk in changes to release branches
|