Software Engineering
PGSS Computer Science Core Slides
asks, ``How can we develop solutions to industrial-size problems to
be
- quickly produced,
- cheaply produced,
- safer,
- better?''
The Software Life Cycle
First we try to understand how software development proceeds.
A typical software system passes through five stages of
life, called the software life cycle.
/----------------\
| conception |
\----------------/
|
|
v
/----------------\
| development |
\----------------/
|
|
v
/----------------\
| deployment |
\----------------/
|
|
v
/----------------\
| modification |
\----------------/
|
|
v
/----------------\
| retirement |
\----------------/
This normally lasts a few decades.
Conception
- Concept: Alice thinks of a useful capability the
computer system does not provide.
- Communication: Alice tells Bob, a developer whose
job it will be to implement the idea.
- Requirements analysis: Bob asks questions to find
what Alice really wants and needs.
Development
Alice waits while Bob's team develops the system.
- Design: Bob, Spot, and Carrie discuss how to build
the system.
- features to include
- user interface
- system organization
- task division
- project schedule
- Implementation: Each developer builds (and tests!)
piece individually.
- Prototype: In the middle they show a prototype to
get Alice's thoughts and directions.
- Alpha-testing: The developers try to find anything
wrong.
- Documentation: Carrie writes documents describing
interface (for users) and design (for developers).
Deployment
- Beta-testing: Eve, somebody not involved with the
design, tries to discover errors in the system.
- Delivery: Bob gives the completed system to Alice.
She may request changes.
- Distribution: Alice gives/sells system to
potential users.
Modification
- Error discovery: Alice finds how the system can be
improved.
- Error report: She tells Bob about it.
- Error fix: If significant, Bob and Spot find where
the error is and fix it.
- Redistribution: Bob eventually gives Alice a fixed
system.
- Repeat.
Retirement
- Decision: Alice or Bob decide the system is better
replaced than modified, because
- better technology is available,
- the need for the system is gone,
- the system has grown impossible to maintain.
- Suspension: Modification ceases except for most
critical problems. An alternative is developed.
- Destruction: Once alternative is viable, Alice
destroys the outdated system.
Why Homework is Not the Real World
- Scale
- Teamwork
- Professionalism
- Small piece of system
- Complexities (especially interface)
- Long-term
- Ill specifications
- Correctness criticality
- Money
Task Division
Large projects are typically split into tasks, each for a team of
four to five.
example:
________________________
/ \
| spreadsheet |
\________________________/
/ / | \ \
interface / calculation \ graphs
/ \
files communication
A prominent company uses the following teams for a product.
- Planning team
- Development teams
- Testing teams
- Design teams
- Documentation team
Issues for Software Engineering
- How to represent design clearly?
- What are good programming practices?
- What errors should be identified automatically?
- What other development tools are useful?
- How can we verify correctness?
- How can we reuse already-written code?