SE Updated
SE Updated
ENGINEERING
1
Objectives
To introduce software engineering and to
explain its importance.
To set out the answers to key questions about
software engineering.
To introduce professional issues and to explain
why they are concern to software engineers.
2
3
Roles of people in software
people involved in software production
customer / client: wants software
often doesn't know what he/she wants
4
Problems with software
today
Example: Space shuttle software
5
Software engineering
The economies of ALL developed nations are
dependent on software.
More and more systems are software controlled.
Software engineering is concerned with theories, methods
and tools for professional software development.
Software engineering expenditure represents a
significant fraction in all developed countries.
6
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. For a long life, maintenance costs may
be several times development costs
Software engineering is concerned with cost-
effective software development
7
FAQs about software
engineering
Scope and necessity of software engineering?
Causes of and solutions for software crisis?
What is software?
What is software engineering?
What is the difference between software
engineering and system engineering?
What is a software process?
What is a software process model?
8
FAQs about software
engineering
What are the costs of software?
What are software engineering methods?
What is CASE (Computer-Aided Software
Engineering)
What are the attributes of good software?
What are the key challenges facing software
engineering?
9
Scope and necessity of software
engineering
Software engineering is an engineering approach for software
development. We can alternatively view it as a systematic collection of
past experience.
The experience is arranged in the form of methodologies and guidelines.
A small program can be written without using software engineering
principles. But if one wants to develop a large software product, then
software engineering principles are essential to achieve a good quality
software cost effectively.
Example(1): Suppose you have a friend who asked you to build a small
wall as shown in fig. 1.1. You would be able to do that using your common
sense. You will get building materials like bricks; cement etc. and you will
then build the wall.
10
But what would happen if the same friend asked you to build a large
multistoried building as shown in fig. 1.2?
11
If you don't have a very good idea about building such a
huge complex. Even if you tried to build a large building, it
would collapse because you would not have the requisite
knowledge about the strength of materials, testing,
planning, architectural design, etc.
12
Example(2):
Without using software engineering principles it would be difficult to
develop large programs. In industry it is usually needed to develop large
programs to accommodate multiple functions. A problem with developing
such large commercial programs is that the complexity and difficulty levels
of the programs increase exponentially with their sizes as shown in fig. 1.3.
13
For example, a program of size 1,000 lines of code has
some complexity. But a program with 10,000 LOC is not
just 10 times more difficult to develop, but may as well
turn out to be 100 times more difficult unless software
engineering principles are used.
14
Important Techniques to Reduce
Problem Complexity:
15
Decomposition:
16
Causes of and solutions for
software crisis
Causes of software crisis: software products are difficult to
alter, debug, and enhance; use resources non optimally; often
fail to meet the user requirements; are far from being reliable;
frequently crash; and are often delivered late. Among these, the
trend of increasing software costs is probably the most
important symptom of the present software crisis.
solutions for software crisis:
17
What is software?
Computer programs and associated documentation
Software products may be developed for a particular
customer or may be developed for a general market
Software products may be
Generic - developed to be sold to a range of different
customers
Custom - developed for a single customer according to
their specification
18
What is software engineering?
Software engineering: the profession, practiced by
developers, concerned with creating and maintaining
software applications by applying technologies and practices
from computer science, project management, and other
fields.
development constraints
Development - production of the software system
customer wants
Evolution - changing the software in response to
changing demands
20
What is a software process model?
Evolutionary development
Formal transformation
21
What are the costs of software?
Roughly 60% of costs are development costs, 40%
are testing costs. For custom software, evolution costs
often exceed development costs.
22
What are software engineering
methods?
Structured approaches to software development which include
system models, notations, rules, design advice and process guidance
Model descriptions
Descriptions of graphical models which should be produced
Rules
Constraints applied to system models
Recommendations
Advice on good design practice
Process guidance
What activities to follow
23
What is CASE (Computer-Aided
Software Engineering)
Software systems which are intended to provide automated
support for software process activities. CASE systems are
often used for method support.
Upper-CASE
Tools to support the early process activities of
24
What are the attributes of good
software?
The software should deliver the required functionality and
performance to the user and should be maintainable and
usable.
Maintainability
Software must evolve to meet changing needs.
Efficiency
Software should not make wasteful use of system
resources.
Usability
Software must be usable by the users for which it was
designed.
25
What are the key challenges facing
software engineering?
Coping with legacy systems, coping with increasing diversity
and coping with demands for reduced delivery times.
Legacy systems
Old, valuable systems must be maintained and updated.
Heterogeneity
Systems are distributed and include a mix of hardware and
software.
Delivery
There is increasing pressure for faster delivery of software.
26
Professional Responsibility
Software engineering involves wider responsibilities than
simply the application of technical skills.
27
Issues Of Professional Responsibility
Confidentiality
Engineers should normally respect the
confidentiality of their employers or clients
irrespective of whether or not a formal
confidentiality agreement has been signed.
Competence
Engineers should not misrepresent their level of
competence. They should not intentionally accept
work which is outside their competence.
28
Issues of professional responsibility
Intellectual property rights
Engineers should be aware of local laws governing the
use of intellectual property such as patents, copyright,
etc. They should be careful to ensure that the
intellectual property of employers and clients is
protected.
Computer misuse
Software engineers should not use their technical skills
29
Key Points
Software engineering is an engineering discipline which is
concerned with all aspects of software production.
Software products consist of developed programs and
associated documentation. Essential product attributes are
maintainability, efficiency and usability.
The software process consists of activities which are involved
in developing software products. Basic activities are software
specification, development, validation and evolution.
Methods are organised ways of producing software. They
include suggestions for the process to be followed, the
notations to be used, rules governing the system descriptions
which are produced and design guidelines.
30
Key points
CASE tools are software systems which are designed to
support routine activities in the software process such as
editing design diagrams, checking diagram consistency and
keeping track of program tests which have been run.
Software engineers have responsibilities to the engineering
profession and society. They should not simply be
concerned with technical issues.
31