Software Design Principles
Classes 1/15, 1/16
Software engineering deals with ways to make developing computer programs easier.
Why does it need to be easier? Because it is hard.
We’ll focus on the entire process, going from a problem statement to a correctly written
program that solves a problem.
Software-Development Life Cycle
The real goal is to create a program that meets the speciﬁcation while minimizing
cost over all phases of the software life cycle.
We prere that code beeasier to create, debug and maintain. We are usually less
concerned with low fast code runs.
-Try to use algorithms that are easier to understand
Request - The client perceives a need for a software system to solve a problem. Can
include a vague description.
Analysis - Convert a vague request into a detailed description of the program’s
-I.e. inputs, outputs, assumptions, limitations
-This is the functional speciﬁcation (spec)
-Helps communication between group members and between clients/engineers
Program Design - Process of transforming the speciﬁcations into a set of modules that
will implement the solution.
- A module is a somewhat self-contained set of code that is used to solve a
problem. In C++, classes are modules
- We w