Description:

  • Essence of software engineering practice:
    1. Understand the problem (communication and analysis).
    2. Plan a solution (modeling and software design).
    3. Carry out the plan (code generation).
    4. Examine result for accuracy (testing & quality assurance)

Software Design Pattern

Engineering design process:

  • Overview:
    • Feasibility & planning:
      • Define scope
      • Catalog benefits, risks
      • Evaluate technical feasibility
      • Select Software development methodology
      • Estimate cost, schedule, resources availability
      • Decide: go/no-go
    • Requirements:
      • User story
        • Independet
        • Negotiable
        • Valuable
        • Estimatable
        • Small
        • Testable
      • Define function of system from client’s viewpoint (Functional Requirement)
      • Establish constraints (Non-functional requirement)
      • Elicit from consultation with client, customer, users
        • Self-contained study or incremental
    • System & interface design
      • Select an architecture that supports requirements
      • User interfaces must be iteratively evaluated with users
      • Architectural integrity is key to maintainable systems
    • Program development
      • May start with documenting program design (class & function definitions)
      • Coding!
      • May incorporate testing
    • Acceptance and release
      • Product is verified against requirements by the client
        • Ideally with selected customers & users
      • Complete system (with documentation) delivered to client
        • Deployed in production, marketed to customers
    • Operations and maintenance
      • System is kept running smoothly
      • Bugs discovered and fixed in production
      • New features proposed and integrated (requirements change)
      • May eventually be phased out

Hooker’s general principles:

  1. The Reason It All Exists – provide value to users.
  2. K I S S (Keep It Simple, Stupid!) – design simple as it can be.
  3. Maintain the Vision – clear vision is essential.
  4. What You Produce, Others Will Consume.
  5. Be Open to the Future - do not design yourself into a corner.
  6. Plan Ahead for Reuse – reduces cost and increases value.
  7. Think! – placing thought before action produce results.

Minimizing risk

Software development methodology

Critical path analysis

Testing

SLA

Project plan