se updated
TRANSCRIPT
-
8/8/2019 SE Updated
1/31
1
SOFTWAREENGINEERING
-
8/8/2019 SE Updated
2/31
2
Objectives To introduce software engineering and to
explain its importance.
To set out the answers to key questions aboutsoftware engineering.
To introduce professional issues and to explain
why they are concern to software engineers.
-
8/8/2019 SE Updated
3/31
3
-
8/8/2019 SE Updated
4/31
4
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 theproduct
-
8/8/2019 SE Updated
5/31
5
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 .
-
8/8/2019 SE Updated
6/31
6
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.
Software engineering
-
8/8/2019 SE Updated
7/31
7
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
Software costs
-
8/8/2019 SE Updated
8/31
8
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 softwareengineering and system engineering?
What is a software process?
What is a software process model?
-
8/8/2019 SE Updated
9/31
9
FAQs about software
engineering What are the costs of software?
What are software engineering methods?
What is CASE (Computer-Aided SoftwareEngineering)
What are the attributes of good software?
What are the key challenges facing softwareengineering?
-
8/8/2019 SE Updated
10/31
10
Scope and necessity ofsoftware
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 andguidelines.
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.
-
8/8/2019 SE Updated
11/31
11
But what would happen if the same friend asked you to build a large
multistoried building as shown in fig. 1.2?
-
8/8/2019 SE Updated
12/31
12
If you don't have a very good idea about building such ahuge complex. Even if you tried to build a large building, itwould collapse because you would not have the requisiteknowledge about the strength of materials, testing,
planning, architectural design, etc.
Building a small wall and building a large building areentirely different ball games.
So building a large building requires knowledge of civil,architectural and other engineering principles.
-
8/8/2019 SE Updated
13/31
13
Example(2): Without using software engineering principles it would be difficult to
develop large programs. In industry it is usually needed to develop largeprograms to accommodate multiple functions. A problem with developingsuch large commercial programs is that the complexity and difficulty levelsof the programs increase exponentially with their sizes as shown in fig. 1.3.
-
8/8/2019 SE Updated
14/31
14
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 softwareengineering principles are used.
-
8/8/2019 SE Updated
15/31
15
Important Techniques to ReduceProblem 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 andsuppress other aspects that are
not relevant for the given
purpose.
-
8/8/2019 SE Updated
16/31
16
Decomposition:
In this technique, a complexproblem is divided into severalsmaller problems and then thesmaller problems are solved
one by one. However, in this technique any
random decomposition of aproblem into smaller parts willnot help.
The problem has to be
decomposed such that eachcomponent of the decomposedproblem can be solvedindependently and then thesolution of the differentcomponents can be combined
to get the full solution.
-
8/8/2019 SE Updated
17/31
17
Causes ofand solutions forsoftware crisis
Causes of software crisis: software products are difficultto alter, debug, and enhance; use resources non optimally;often fail to meet the user requirements; are far from beingreliable; frequently crash; and are often delivered late.Among these, the trend of increasing software costs is
probably the most important symptom of the presentsoftware crisis.
solutions for software crisis:
It is believed that the only satisfactory solution to thepresent software crisis can possibly come from a spread ofsoftware engineering practices among the engineers,coupled with further advancements to the software
engineering discipline itself.
-
8/8/2019 SE Updated
18/31
18
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
-
8/8/2019 SE Updated
19/31
19
What is software engineering? Software engineering: the profession, practiced by
developers, concerned with creating and maintainingsoftware applications by applying technologies and
practices from computer science, project management, andother fields.
Software engineering is an engineering discipline which isconcerned with all aspects of software production.
Software engineers should adopt a systematic andorganised approach to their work and use appropriate toolsand techniques depending on the problem to be solved.
-
8/8/2019 SE Updated
20/31
20
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
-
8/8/2019 SE Updated
21/31
21
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
-
8/8/2019 SE Updated
22/31
22
What are the costs ofsoftware? Roughly 60% of costs are development costs, 40%
are testing costs. For custom software, evolution costsoften exceed development costs.
Costs vary depending on the type of system beingdeveloped and the requirements of system attributessuch as performance and system reliability.
Distribution of costs depends on the developmentmodel that is used.
-
8/8/2019 SE Updated
23/31
23
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
-
8/8/2019 SE Updated
24/31
24
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.
-
8/8/2019 SE Updated
25/31
25
What are the attributes ofgood
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.
-
8/8/2019 SE Updated
26/31
26
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.
-
8/8/2019 SE Updated
27/31
27
P
rofessional 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.
-
8/8/2019 SE Updated
28/31
28
Issues OfProfessional 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 ofcompetence. They should not intentionally accept
work which is outside their competence.
-
8/8/2019 SE Updated
29/31
29
Issues ofprofessional 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 theintellectual property of employers and clients is
protected.
Computer misuse
Software engineers should not use their technical skillsto misuse other peoples computers.
-
8/8/2019 SE Updated
30/31
30
Key Points Software engineering is an engineering discipline which is
concerned with all aspects of software production.
Software products consist of developed programs andassociated documentation. Essential product attributes aremaintainability, efficiency and usability.
The software process consists of activities which areinvolved in developing software products. Basic activitiesare software specification, development, validation andevolution.
Methods are organised ways of producing software. Theyinclude suggestions for the process to be followed, thenotations to be used, rules governing the systemdescriptions which are produced and design guidelines.
-
8/8/2019 SE Updated
31/31
31
Key points CASE tools are software systems which are designed to
support routine activities in the software process such asediting design diagrams, checking diagram consistency andkeeping track of program tests which have been run.
Software engineers have responsibilities to the engineeringprofession and society. They should not simply beconcerned with technical issues.