Software Engineering
- Tags
- comp-sci
[see page 14, Software engineering] is the establishment and use of sound engineering principles in order to obtain economically sound software that is reliable and works efficiently on real machines.
The [see page 25, tasks] of software engineering are:
- Getting requirements. What does the customer want?
- High level design. What type of system are we going to build.
- Low level design. How is the system going to be built?
- Development. Make the damn thing.
- Testing. Is the system working correctly?
- Deployment. Ship it and install it.
- Maintenance. Fix bugs as they get reported by the users.
- Wrap-up. Prepare for the next project.
The cost of [see page 39, poor design] is that adding new features or making changes to the existing code-base takes longer as the project goes on.
The [see page 35, goals] of software design are:
- Decomposing the system into usable components.
- Determine the relationship between components.
- Determine the mechanisms used to communicate between components.
- Specify component interfaces.
[see page 15, Programmer vs. Software Engineer]
Programmers write complete programs. Software engineers write software components that must be integrated into a system written by other software engineers. Software engineering is inherently collaborative, whereas programming is personal. Programming is simply one aspect of software development but large systems require other engineering practices.