0% found this document useful (0 votes)
63 views31 pages

SE Updated

Uploaded by

desireharsha
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
63 views31 pages

SE Updated

Uploaded by

desireharsha
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 31

SOFTWARE

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

 managers / designers: plan software


 difficult to predict all problems and issues in advance

 developers: write code to implement software


 it is hard to write complex code for large systems

 testers: perform quality assurance (QA)


 it is impossible to test every combination of actions

 users: purchase and use software product


 users can be inconsistent and can misunderstand the
product

4
Problems with software
today
 Example: Space shuttle software

 cost: $10 Billion, millions of dollars.


 time: 3 years
 quality: first launch of space shuttle was cancelled
because of a synchronization problem .

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.

 Building a small wall and building a large building are


entirely different ball games.

 So building a large building requires knowledge of civil,


architectural and other engineering principles.

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:

 Abstraction: The principle of


abstraction (in fig.1.4) implies
that a problem can be
simplified by omitting
irrelevant details.
 In other words, the main
purpose of abstraction is to
consider only those aspects of
the problem that are relevant
for certain purpose and
suppress other aspects that are
not relevant for the given
purpose.

15
Decomposition:

 In this technique, a complex


problem is divided into several
smaller problems and then the
smaller problems are solved one by
one.
 However, in this technique any
random decomposition of a
problem into smaller parts will not
help.
 The problem has to be decomposed
such that each component of the
decomposed problem can be solved
independently and then the solution
of the different components can be
combined to get the full solution.

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:

It is believed that the only satisfactory solution to the present


software crisis can possibly come from a spread of software
engineering practices among the engineers, coupled with further
advancements to the software engineering discipline itself.

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.

 Software engineering is an engineering discipline which is


concerned with all aspects of software production.

 Software engineers should adopt a systematic and organised


approach to their work and use appropriate tools and
techniques depending on the problem to be solved.
19
What is a software process?
 A set of activities whose goal is the development or
evolution of software.
 Generic activities in all software processes are:
 Specification - what the system should do and its

development constraints
 Development - production of the software system

 Validation - checking that the software is what the

customer wants
 Evolution - changing the software in response to

changing demands

20
What is a software process model?

 A simplified representation of a software process,


presented from a specific perspective.
 Generic process models
 Waterfall

 Evolutionary development

 Formal transformation

 Integration from reusable components

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.

 Costs vary depending on the type of system being


developed and the requirements of system attributes
such as performance and system reliability.

 Distribution of costs depends on the development


model that is used.

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

requirements and design.


 Lower-CASE
 Tools to support later activities such as programming,

debugging and testing.

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.

 Software engineers must behave in an honest and


responsible way if they are to be respected as professionals.

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

to misuse other people’s computers.

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

You might also like