Software Engineering
- It is an systematic approach for developing software, also the methods and techniques to develop and maintain quality software to solve problems.
- According to Boehm,1976 it is a "Practical application of scientific knowledge in the design and construction of computer programs and the associated documentation required to develop, operate, and maintain them. "
Objectives
- To improve quality of software products
- To develop systems and software that are maintable and easily changed.
- Provide an understandable process for software development.
- To allow the process of creating computing - based systems to be repeatable and manageable.
Differences between S/W and traditional Engineering
- Software is intangible. It has no mass, no volume, no
color, no odor--- no physical properties. Source code is
merely a static image of computer program, and while
the effects produced by a program are often observable,the program itself not.
- Software doesn’t degrade with time as hardware does.Software failures are caused by design and implementation error, not by degradation over time.
- In classical engineering disciplines, the engineer
is equipped with tools and the mathematical
maturity to specify the properties of the product
separately from those of design. The typical
software engineering relies much more on
experience and judgment rather than
mathematical formula.
The role of software engineer
The evolution of software engineering field has defined the role the software engineer. A software engineer should have the following qualities:
• Should be a good programmer, be well-versed in data structures and algorithms, and be fluent in one or more programming languages.
• Should be familiar with several design approaches,be able to translate vague requirement
and desires into precise specifications and be able to converse with the use of a system in terms of applications.
- Needs the ability to move among several levels of abstraction at different stages of the project, from specific application procedures and requirements, to abstraction for software systems, to a specific design for system and finally to the detailed coding level.