To briefly summarize the software development
challenges:
- The
software problems are expensive.
- Software is
hard to develop and cannot be developed in the classical sense.
- Software
problems are complex.
- Software is
intangible.
Software engineering has emerged as a discipline in the last 40-50
years. With the development of powerful computers length of the program codes
written and the complexity of them increased. Experience proved that
engineering in the sense of organizing, applying, managing knowledge using the
tools of science, math and logic along with knowledge, experience and artifacts
derived from previous engineering efforts to effect economical, risk averse,
maintainable, failure tolerant design with a predictable result was also
required for the software too. So software engineering emerged. The principles
of SE:
- Rigor and
Formality: Requires formal analysis of the program correctness, systematic
testing of the software artifacts, systematic measurement of the project
and product matrix.
- Separation of
Concerns: This principle allows one to deal with different aspects of a
problem and concentrate on each aspect separately.
- Modularity: Allows
a complex system to be broken into easily understood meaningful units with
low interactions.
- Information
Hiding: Keeps all implementation details of a module inaccessible by other
modules in the system.
- Abstraction:
Allows one to concentrate on the essential properties while omitting
inessential details.
- Anticipation of
Changes: Software changes. Anticipation of change may affect how systems
are broken down into modules.
- Incrementality:
Software development should be proceeds in stepwise fashion.
These principles show us ways to manage and build large scale software
projects with a higher success rate. They also help us decrease software
expenses by detecting the problems in the early stages of the software
lifecycle.
Hiç yorum yok:
Yorum Gönder