Education is the key to unlock
the golden door of freedom
--- George Washington Carver
Software Engineering is an engineering discipline
which is concerned with all aspects of software
production from the early stages of system specification
through to maintaining the system after it has gone
into use.This term refers to a movement, methods
and techniques aimed at making software development
more systematic. Software methodologies, like the
OMG's UML, and software tools (See CASE tools) that
help developers model application designs and then
generate code are all closely associated with software
engineering.
Software engineering is concerned with large and
complex software systems built by teams of developers
and programmers. It uses engineering principles
in the development, creation and maintenance of
software and contains both technical and non-technical
aspects. The principal discipline involved is computer
science, but knowledge from fields such as mathematics,
psychology, ergonomics and management science must
also be incorporated into its methodologies and
theory.
Software is not just computer programs. Software
also includes all the documentation which is necessary
to develop, install, use and maintain a complete
software system. The challenge for software engineers
is to produce high quality software using a finite
number of resources and within a predictable amount
of time. Because of the complexity and range of
the tasks to be automated, a software engineer must
be able to assess and apply existing computing knowledge,
derived from more fundamental subjects, in a cost-effective
and functional way.