Basics of Software Engineering

Most software people consider themselves either developers or perhaps programmers. I try to be an engineer. Some basic engineering principles are:

  1. Each project should have a set of defined goals as it’s purpose. Ultimately, the success of the project is tied to how well it matches these goals.
  2. Software should be replicatible and trackable. Source code control systems allow tracking of changes and regeneration of older versions.
  3. Testing should be able to match the project’s features with the project’s goals or requirements.
  4. A project should not use any more computing time and space resources than necessary to achieve those goals.
  5. Projects should be documented at a architectural level and at a detailed level so that future software engineers will be able to takeover the project.

Practical realities of time, budget, and managerial pressures pull us away from on or more of these principles. I don’t live in a dream-world of engineering.  I’m in the same real world everyone else is with funding issues, project changes in midstream, and schedule overruns. But that shouldn’t keep us from remembering what the process is actually supposed to be and to work toward that process.

Leave a Reply