![]() |
Software engineering deals with all aspects of software development including all stages of software |
| development life cycles. |
![]() |
From the early stages of system specification through maintenance of the system after putting it into | |
| execution. |
![]() |
Software engineering field has evolved very rapidly in a very short period of time compared to classical |
| engineering fields including civil or electrical engineering. |
![]() |
In the early stages of software engineering, most of the programing was done by scientists trying to solve |
| specific, relatively small mathematical problems. |
![]() |
These programs were much smaller than current software applications and less demanding in regards | |
| to computing resources including memory space and processing speed. |
![]() |
Today we often build large software systems, in terms of size, complexity and computing resources. |
![]() |
In addition, software engineering is involved in a wide range of topics including scientific, engineering and |
| business. |
![]() |
About forty years ago, the term "software engineering" meant to establish and use of sound engineering |
| principles in order to efficiently and economically obtain software that is reliable and efficient when run by | |
| different computer platforms. |
![]() |
As an engineering discipline, software engineering is concerned with the analysis, design, production, and |
| quality-assurance processes involved in writing good software systems. |
![]() |
Software engineering aids in the production of software that is high in quality, designed, and produced in an |
| organized and logical way. |
![]() |
It is concerned with the entire software development process from initial design to long-term | |
| maintenance. |
![]() |
In addition, software engineering is concerned with management, quality, novelty, creativity, standards, | |
| individual skills, teamwork and professional practice. |
![]() |
Software engineering began to evolve as a well-defined and distinguished science which could be offered in |
| computer science and engineering departments in academic institutions. |
![]() |
Software engineering is relatively a young and new discipline, which was classified as an art and which |
| transited to the engineering discipline and is becoming a matured engineering discipline. |
![]() |
The dictionary definition of "engineering" is the "application of scientific and mathematical principles toward |
| practical ends". |
![]() |
Software engineering applies scientifically developed and mathematically defined algorithms, functional |
| design methods, quality-assurance methods, and other practices to develop software products and services. |
![]() |
As a discipline, software engineering is the engineering of software that builds on computer science and |
| mathematics. |
![]() |
The main steps of software development life cycle include: |
![]() |
Requirements engineering (requirements elicitation; requirements definition and specification) |
![]() |
Design (basic structure based on requirements to modules and choice of algorithms) |
![]() |
Construction (detailed design, coding, debugging, testing while programming, and performance | |
| optimization) |
![]() |
Testing (includes detecting defects and evaluating features) |
![]() |
Evolution and maintenance (software and all of its documentation) |
![]() |
Software engineering evolution was driven by the following motivations and challenges especially for large- |
| scale software applications: |
![]() |
Software engineering applies scientifically developed and mathematically defined algorithms, functional |
| design methods, quality-assurance methods, and other practices to develop software products and services. |
![]() |
As a discipline, software engineering is the engineering of software that builds on computer science and |
| mathematics. |
![]() |
Difficulty of software projects meeting delivery deadlines. |
![]() |
High cost of software after extensive testing. |
![]() |
Errors in delivered software after extensive testing. |
![]() |
High cost in time and effort in maintaining software. |
![]() |
Problems measuring progress during software development and maintenance. |
![]() |
Many definitions were given to software engineering which has evolved over time by different scholars, |
| authors and organizations. In the following, we present some of the popular and common ones: |
![]() |
IEEE defines software engineering as follows: "Software engineering is the application of a systematic | |
| disciplined quantifiable approach to the development, operation and maintenance of software; the | ||
| application of engineering to software". |
![]() |
Bauer, F. L. in Software Engineering. Information Processing 71., 1972. defines software engineering as | |
| follows: "The establishment and use of sound engineering principles (methods) in order to obtain | ||
| economically software that is reliable and works on real machines". |
![]() |
Fairley, R. Software Engineering Concepts. New York: McGraw-Hill, 1985 defines Software engineering | |
| as follows: "The technological and managerial discipline concerned with systematic production and | ||
| maintenance of software products that are developed and modified on time and within cost estimates". |
![]() |
WebReference Webopaedia defines software engineering as follows: "Software engineering is the | |
| computer science discipline concerned with developing large applications. Software engineering covers | ||
| not only the technical aspects of building software systems, but also management issues, such as | ||
| directing programming teams, scheduling, and budgeting". |
![]() |
SEI software engineering definition from 1990 SEI Report on Undergraduate Software Engineering | |
| Education (CMU/SEI-90-TR-003): "Engineering is the systematic application of scientific knowledge in | ||
| creating and building cost-effective solutions to practical problems in the service of mankind. Software... |
| ...engineering is that form of engineering that applies the principles of computer science and | ||
| mathematics to achieving cost-effective solutions to software problems". |
![]() |
It is very expensive and horrendous to design software systems that do not work or that include bugs, errors |
| and run wrongly. |
![]() |
The developing entity of such a software system could get bankrupt and loose business. |
![]() |
Such a software developer could be involved in legal cases in court that cost them a huge amount of | |
| money. |
![]() |
The profit that could be earned by the software developer depends on producing software efficiently with |
| minimal development cost and maintenance effort. |
![]() |
Software reuse which results from the modular design and object-oriented design techniques is an economic |
| necessity. |
![]() |
Selection of the correct lifecycle is therefore extremely important to the success of the overall software project |
| because it affects cost, time and effort required to design software products. |
![]() |
Software systems when installed and configured and become under operation must be maintained to keep |
| running and to minimize their breakdown. |
![]() |
However, as a result of constant software maintenance, a sense of disorder may arise in the system in | |
| question. |
![]() |
On the other hand, without proper maintenance and care, the software can become unmanageable and | |
| unusable. |
![]() |
When software systems are installed for the first time, they rarely work without problem. |
![]() |
They usually have bugs, vulnerabilities and problems. |
![]() |
Very few systems work correctly first time round. |
![]() |
In addition old software systems that used to run on old computer platform must be rebuilt or redesigned to be |
| usable on modern computer systems. |