2. What is Software?
The product that software professionals build and then
support over the long term.
Software encompasses: (1) instructions (computer
programs) that when executed provide desired features,
function, and performance; (2) data structures that
enable the programs to adequately store and manipulate
information and (3) documentation that describes the
operation and use of the programs.
3. Software products
Generic products
Stand-alone systems that are marketed and sold to any
customer who wishes to buy them.
Examples – PC software such as editing
Customized products
Software that is commissioned by a specific customer to
meet their own needs.
Examples – embedded control systems, air traffic control
software, traffic monitoring systems.
4. Why Software is Important?
The economies of ALL developed nations are dependent
on software.
More and more systems are software controlled (
transportation, medical, telecommunications, military,
industrial, entertainment,)
Software engineering is concerned with theories,
methods and tools for professional software
development.
Expenditure on software represents a
significant fraction of GNP in all developed countries.
6. Engineering
Engineering is …
The application of scientific principles and methods to the
construction of useful structures & machines
Examples
Mechanical engineering
Computer engineering
Civil engineering
Chemical engineering
Electrical engineering
Nuclear engineering
Aeronautical engineering
7. Software Engineering
• Software Engineering is the science and art of
building significant software systems that are:
1) on time
2) on budget
3) with acceptable performance
4) with correct operation.
8. Software Costs
Software costs often dominate system costs. The costs of
software on a PC are often greater than the hardware
cost.
Software costs more to maintain than it does to develop.
Software engineering is concerned with cost-effective
software development.
10. The Software Process
Structured set of activities required to develop a
software system
Specification
Design
Validation
Evolution
Activities vary depending on the organization
and the type of system being developed.
Must be explicitly modeled if it is to be
managed.
11. Engineering Process Model
Specification: Set out the requirements and
constraints on the system.
Design: Produce a model of the system.
Manufacture: Build the system.
Test: Check the system meets the required
specifications.
Install: Deliver the system to the customer and
ensure it is operational.
Maintain: Repair faults in the system as they
are discovered.
12. Software Engineering is Different
Normally, specifications are incomplete.
Very blurred distinction between specification,
design and manufacture.
No physical realization of the system for testing.
Software does not wear out - maintenance
does not mean component replacement.
13. Generic Software Process Models
Waterfall
Separate and distinct phases of specification and
development
Evolutionary
Specification and development are interleaved
16. Hybrid Process Models
Large systems are usually made up of several
sub-systems.
The same process model need not be used for
all subsystems.
Prototyping for high-risk specifications.
Waterfall model for well-understood
developments.
17. Process Model Problems
Waterfall
High risk for new systems because of specification and
design problems.
Low risk for well-understood developments using familiar
technology.
evolutionary
Low risk for new applications because specification and
program stay in step.
High risk because of lack of process visibility.
hybird
High risk because of need for advanced technology and
staff skills.
18. Process Visibility
Software systems are intangible so managers need
documents to assess progress.
Waterfall model is still the most widely used model.
20. Software Development Stages
Requirements Analysis & Specification
Implementation/Coding
System Testing/Validation
System Delivery/Deployment
Maintenance
21. Component-based software engineering
Based on systematic reuse where systems are integrated
from existing components or COTS (Commercial-off-
the-shelf) systems.
Process stages
Component analysis;
Requirements modification;
System design with reuse;
Development and integration.
This approach is becoming increasingly used as
component standards have emerged.
22. Software evolution
Software is inherently flexible and can change.
As requirements change through changing business
circumstances, the software that supports the business
must also evolve and change.
Although there has been a demarcation between
development and evolution (maintenance) this is
increasingly irrelevant as fewer and fewer systems are
completely new.
23. Computer-aided software engineering
Computer-aided software engineering (CASE) is
software to support software development and
evolution processes.
Activity automation
Graphical editors for system model development;
Data dictionary to manage design entities;
Graphical UI builder for user interface construction;
Debuggers to support program fault finding;
Automated translators to generate new versions of a
program.
24. conclusion
Software processes are the activities involved in
producing and evolving a software system.
General activities are specification, design and
implementation, validation and evolution.
Software process models are abstract representations of
these processes.