Sei sulla pagina 1di 4

9/22/13

CAPE Computer Science Unit 2 - LiveBinder

Software engineering (SE) is a term indicating the profession concerned with the creation and maintenance of software by the use of relevant computer science (CS), project management, and other technologies and practices.

Software engineering attempts to bring the lessons learned from engineering disciplines (E.g. mechanical, electrical, chemical etc.) to bear on the software development process.

In the past many software projects have failed due to poor standards, bad programming and inadequate project management practices. SE techniques can improve the quality of the finished software product as well as the productivity and quality of program developers. It has been estimated that there are in excess of 2 million persons worldwide that can be considered to be involved in various SE efforts.

Software Engineering vs. Computer Science

Unlike computer science which deals with the underlying theory of programs, SE is concerned with the approaches taken to computer programming, insisting that it be treated in a highly structured manner similar to a mainstream engineering profession rather than as an art or a craft. Diverse views exist in the SE community as to the extent to which the development of software mirrors a typical engineering process. Nevertheless there have been several successful SE projects including the popular Linux OS software, space shuttle software and banking software.

Qualifications for Software Engineers

Upward of 50% of software engineers have earned a computer science degree. There is also a trend towards the earning of specialized undergraduate and graduate degrees in the field of

9/22/13

CAPE Computer Science Unit 2 - LiveBinder

software engineering (as opposed to CS). In addition persons often specialize in other fields such as computer engineering, medical informatics or biology as some systems require highly specialized and detailed knowledge outside of traditional CS or mathematics areas. E.g. DNA computer system may require detailed knowledge from the fields of biology or medicine.

Waterfall Model

A major aim of SE is to bring order out of the seemingly chaotic task of writing computer programs. To achieve this end a commonly cited approach is the use of the so-called waterfall model. Under this model progress is made by systematically proceeding from one phase of development to another. Imagine water cascading down a series of waterfalls along a river.

Basic Waterfall Stages –

Step 1 – Analysis : The problem(s) thoroughly investigated and defined Analysis: The problem(s) thoroughly investigated and defined

Step 2 –Specification : the problem written out in a clear and precise manner; a list of Specification: the problem written out in a clear and precise manner; a list of all the things required produced

Step 3 – Design : A particular approach decided upon and a detailed plan of that plan produced Design: A particular approach decided upon and a detailed plan of that plan produced

Step 4 –Implementation : The plan put into action as design turned into program code (coding) Implementation: The plan put into action as design turned into program code (coding)

Step 5 – Testing : The code produced in the implementation section scrutinized by conducting series of tests Testing: The code produced in the implementation section scrutinized by conducting series of tests

Step 6 –Maintenance : The project is finished but there is acknowledgement that changes will have to Maintenance: The project is finished but there is acknowledgement that changes will have to be made throughout the lifetime of the software

Typically the first five steps are short-term (i.e. may last a few days,

9/22/13

CAPE Computer Science Unit 2 - LiveBinder

weeks, months or years). The last step (Maintenance) is long term (several years).

Other Models

The waterfall model is far from ideal as persons often lack the experience to adequately finish one stage of the process before continuing to the next. It must be noted that oftentimes errors which are produced at one stage are not discovered until later stages, a situation which is difficult and expensive to correct. Other models such as the evolutionary models have been developed which are more complex but allow greater flexibility.

SE Debates

Due to the diverse fields which encompass SE such as computer science, engineering and mathematics, vigorous debates have occurred over the years as to the essential characteristics of SE.

SE has characteristics belonging to maths, science, engineering and even art.

Mathematical properties: - It is clear that all programs have properties that can be mathematically handled because they are produced from algorithms which themselves have mathematical properties. Some have argued that SE is another branch of mathematics.

Scientific properties: - Science is characterized by the ability to theorize, experiment and measure. Programs have properties that can be measured and subjected to scientific approaches.

Artistic properties: - The fact that software must be pleasing to those who use it means that some degree of art must be applied to maximize

9/22/13

CAPE Computer Science Unit 2 - LiveBinder

the utility of the software. Defining programming as an art would suggest that no formal rules or strategies are sufficient to develop software but that it must involve individual subjective tastes.

The role of Project Management: - There is also the fact that large programs are built by teams of persons working on successive projects. The project management requirements of such an effort, as well as the strict engineering discipline approach, become more important as the size of the software product (i.e. various related programs) increases.

The debates will continue well into the future as software developers continue to require multiple approaches from the diverse fields mentioned such as mathematics, science and art.