1.1.
3 Software Engineering: A Layered Technology
Software engineering is a layered technology. The foundation for software engineering is the process layer.
The process holds the technology layers together and enables rational and timely software development.
It defines a framework necessary for effective software delivery.
Software Process:
It forms the basis for project control and provides context for technical methods, work products, milestones, and quality
assurance.
Software Engineering Methods:
Provide technical how-to's for software development including modeling and descriptive techniques.
Software Engineering Tools:
Provide automated/semi-automated support for process and methods. Integrated tools form CASE (Computer-Aided
Software Engineering).
1.1.4 The Software Process
A process is a set of activities, actions, and tasks to create a work product.
Activities are broad objectives; actions (e.g., architectural design) produce major products; tasks are smaller objectives.
Framework Activities:
a) Communication - understanding stakeholder requirements.
b) Planning - defining tasks, risks, resources, schedules.
c) Modeling - understanding and designing solutions.
d) Construction - code generation and testing.
e) Deployment - delivering the product.
Umbrella Activities:
- Project tracking and control
- Risk management
- Software quality assurance
- Technical reviews
- Measurement
- Configuration management
- Reusability management
- Work product preparation and production
1.1.5 Software Engineering Practice
1. Understand the problem
2. Plan a solution
3. Carry out the plan
4. Examine the result
1.1.6 Software Myths
Management Myths:
- Having standards doesn't mean they're used.
- New computers != good tools.
- Adding people late delays more.
- Outsourcing doesn't mean no management needed.
Customer Myths:
- General objectives aren't enough.
- Change is not always easy or cheap.
Practitioner's Myths:
- Getting a program running != job done.
- Quality can be assessed early via reviews.
- Code is not the only deliverable.
1.1.7 Software Engineering Paradigm
A process model is an abstract representation of a software development process.
Software Lifecycle Phases:
- Requirements
- Specification (analysis)
- Design (preliminary & detailed)
- Implementation (components, integration, documentation)
- Testing (unit, integration, system)
- Maintenance & Retirement
Verification: Are we building the product right?
Validation: Are we building the right product?
1.2 Software Process: A Generic Process Model
Each activity is part of a framework organized by sequence and time.
Process Flows:
a) Linear - sequential from communication to deployment.
b) Iterative - repeats activities.
c) Evolutionary - circular, leading to better versions.
d) Parallel - simultaneous execution of different activities.
Task Set:
Defines actual work for achieving objectives (e.g., requirements elicitation).
Process Pattern:
Describes recurring problems and suggests solutions.