ICS 125 Lessons to Remember

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


  • 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 = 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
sample use cases templateexample software testing plan templateProject plan template