28 Kasım 2013 Perşembe

How can we lessen the software development challenges by adhering to software engineering principles?

To briefly summarize the software development challenges:
  1. The software problems are expensive.
  2. Software is hard to develop and cannot be developed in the classical sense.
  3. Software problems are complex.
  4. 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:

  1. Rigor and Formality: Requires formal analysis of the program correctness, systematic testing of the software artifacts, systematic measurement of the project and product matrix.
  2. Separation of Concerns: This principle allows one to deal with different aspects of a problem and concentrate on each aspect separately.
  3. Modularity: Allows a complex system to be broken into easily understood meaningful units with low interactions.
  4. Information Hiding: Keeps all implementation details of a module inaccessible by other modules in the system.
  5. Abstraction: Allows one to concentrate on the essential properties while omitting inessential details.
  6. Anticipation of Changes: Software changes. Anticipation of change may affect how systems are broken down into modules.
  7. 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