Description:
- Essence of software engineering practice:
- Understand the problem (communication and analysis).
- Plan a solution (modeling and software design).
- Carry out the plan (code generation).
- Examine result for accuracy (testing & quality assurance)
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:
- The Reason It All Exists – provide value to users.
- K I S S (Keep It Simple, Stupid!) – design simple as it can be.
- Maintain the Vision – clear vision is essential.
- What You Produce, Others Will Consume.
- Be Open to the Future - do not design yourself into a corner.
- Plan Ahead for Reuse – reduces cost and increases value.
- Think! – placing thought before action produce results.
Minimizing risk
- Minimizing miscommunication and delivering “wrong software” with: