CMP 2101: Software Engineering
CMP 2101: Software Engineering
The notion of software engineering was proposed in the late 1960s at a conference held to discuss
what was then called the ‘software crisis’.
Software development was in crisis because the methods used were not good enough:
Major projects were sometimes years late and cost much more than originally predicted(over
budget),
Techniques applicable to small systems could not be scaled up to use on larger complex systems.
This resulted directly from the introduction of third-generation computer hardware which
compared with software systems developed for the second-generation computers, had the
following features:
• model parts of the real world;
• large and complex;
• abstract;
• highly dependable;
• better maintainable: as the real world changes, so too must the software to meet the changing
requirements;
• user friendly, (and thus the user interface in a software system is an important part.)
Software developed was not responsive to the user and/or customer requirements, difficult to
use, maintain, and enhance.
Originally defined in terms of productivity, the software crisis evolved to emphasize quality. Some
used the term software crisis to refer to their inability to hire enough qualified programmers.
Software Engineering involves project planning, project management, systematic analysis, design,
verification and validation, user training and support and maintenance activities.
The primary goal of software engineering is to provide the quality of software with low cost.
1
CMP 2101: Software Engineering
1.3 Software
Software is
• A collection of instructions (computer programs) and associated documentation and
configuration data needed to make these programs operate.
• A collection of computer programs, rules, procedures, associated documentation and data.
[IEEE]
Software engineers are concerned with developing software products, i.e., software which can be
sold to a customer. There are two fundamental types of software products:
1. Generic products: These are stand-alone systems that are developed and sold on the open market
to any customer who is able to buy them. Examples of this type of product include software for
PCs such as databases, word processors, drawing packages and project management tools.
2. Custom (or bespoke) products: These are systems which are commissioned by a particular
customer and the software contractor develops the software especially for that customer.
Examples of this type of software include control systems for electronic devices, systems written
to support a particular business process and air traffic control systems.
The difference between the above mentioned software products is that for generic products, the
development company controls the specifications while for the custom products, the customer does
that.
Software has a wide range of applications e.g. E-commerce, Business, Hospitals, Schools, Defence,
communication…where else??
4
CMP 2101: Software Engineering
1.13 Professional and Ethical Responsibility
Software engineering involves wider responsibilities than simply the application of technical skills.
Software engineers must behave in an honest and ethically responsible way if they are to be
respected as professionals. Ethical behaviour is more than simply upholding the law.