Brain Dump

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:

  1. Getting requirements. What does the customer want?
  2. High level design. What type of system are we going to build.
  3. Low level design. How is the system going to be built?
  4. Development. Make the damn thing.
  5. Testing. Is the system working correctly?
  6. Deployment. Ship it and install it.
  7. Maintenance. Fix bugs as they get reported by the users.
  8. 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.