Professional Documents
Culture Documents
CHAPTER 2
Software
A virtue of software: relatively easy to change
◦ Otherwise it might as well be hardware
Nevertheless, the more complex a software system gets, the harder it is to
change--why?
◦ Larger software systems are harder to understand
◦ The more changes get introduced into a system, the more it tends toward entropy
◦ I.e., its internal order breaks down
Software Process, Methodology and
Development
A software process defines the phases of activities or what need to
be performed to construct a software system.
A software methodology details the steps or how to perform the
activities of a software process. A methodology is an implementation
of a process.
Software development needs a software process and a
methodology.
Challenges of System Development
System Reality 1. Many systems need to satisfy numerous requirements and constraints.
System Challenge 1. How do we develop systems to ensure that the requirements and
constraints are met?
System Reality 2. Requirements and constraints may change from time to time.
System Challenge 2. How do we design the processes and the products to cope with change?
System Reality 3. A system may consist of hardware, software and third-party components using
different programming languages and run-on multiple platforms and machines located at
different places.
System Challenge 3. How do we design the system to hide these differences?
Planning for change
How can good comments facilitate and reduce the
cost of software maintenance?
◦Hint: think about invariants, things that don’t change.
◦Comments describe meaning of code
◦ Assuming programmers maintain comments
when they change the code!
Software Design
Acceptance Testing
Maintenance
Why would corporate manager like the waterfall life
cycle model?
Minimizes change, maximizes predictability System Engineering
17
How do traditional stages iterate?
Elaboration
Core architecture implementation, high risk resolution
Construction
Implementation of remaining elements