Você está na página 1de 20

Objectives

 To introduce software engineering and to explain its


Software Engineering importance
 To set out the answers to key questions about software
engineering
 To introduce ethical and professional issues and to
explain why they are of concern to software engineers

CH1.1 CH1.2

Outlines Of the Lectures:


FAQs about software engineering
™ Introduction
™Software Evolution  What is software?
™ Software Life Cycles
™ Requirement Specification and Analysis  What is software engineering?
™ Software Design Issues : DFD , UML  What is the difference between software
™ Coding Introduction
g & Testingg engineering and computer science?
™ Project Planning, Risk Management and
Estimation Technique
 What is a software process?
™ Software Quality Management  What is a software process model?
™Discussions & Quiz/Examinations

CH1.3 CH1.4

1
FAQs about software engineering What is software?

 What are the costs of software engineering?  Computer programs and associated documentation
 What are software engineering methods?  Software products may be developed for a particular
customer or may be developed for a general market
 What is CASE (Computer-Aided Software
g g)
Engineering)  Software products may be
‰ Generic
G i - developed
d l d to be b soldld to a range off
 What are the attributes of good software?
different customers
 What are the key challenges facing software
‰ Custom - developed for a single customer
engineering? according to their specification

CH1.5 CH1.6

What is Software Characteristics of Softwares


 SW is developed or engineered, it
is not manufactured in classical
Manuals and Operating Procedures sense
Programs  Software does not wear out
Design Documentation  Most SW is custom built, rather
Models of Operating Environments than being assembled from
eexisting
st g components
co po e ts
Reliability
R li bilit Information
I f ti
 Typically errors are high when
Performance Evaluations software is built or changed and
the error rates comes down
 The cost of correction / change
increases exponentially when we
move ahead in the life cycle of a
SW project

CH1.7 CH1.8

2
What is Software Engineering What is Software Engineering - Contd.
Software Engineering is the application of science and
mathematics to make computers useful to people via Software Engineering is the technological and
software. What does Engineering means: managerial discipline concerned with systematic
‰ Builds real systems production and maintenance of software products
‰ Seeks to meet the needs of customers that aree developed
p andd modified
f on time andd within
‰ Faces cost and schedule limits cost estimates.
‰ Uses systematic methods
‰ Exploits standard designs Software Engineering is needed most for large
complex systems.

CH1.9 CH1.10

What is software engineering? Software Engineering


 Software engineering is the
 Software engineering is an engineering discipline application of a systematic,
disciplined, quantifiable approach to
which is concerned with all aspects of software the development, operation and
production maintenance of software, i.e. the
application of engineering to
 Software engineers should adopt a systematic and software (IEEE)
organised approach to their work and use appropriate  Software engineering is the
tools and techniques depending on the problem to be establishment and use of sound
solved, the development constraints and the resources engineering principles in order to
obtain economically software that is
available reliable and works efficiently on real
machines (Software Engineering by
Pressman)

12
CH1.11 CH1.12

3
What is the difference between software What is a software process?
engineering and computer science?  A set of activities whose goal is the development or
evolution of software
 Generic activities in all software processes are:
 Computer science is concerned with theory and
‰ Specification - what the system should do and its
fundamentals; software engineering is concerned with
development constraints
the practicalities of developing and delivering useful
‰ Development - production of the software system
software
‰ Validation - checking that the software is what the
 Computer science theories are currently insufficient to
act as a complete underpinning for software customer wants
engineering ‰ Evolution - changing the software in response to
changing demands

CH1.13 CH1.14

What is a software process model? Software Costs


 A simplified representation of a software process,  Software costs often dominate
presented from a specific perspective system costs. The costs of
 Examples of process perspectives are software on a PC are often
greater than the hardware cost
‰ Workflow perspective - sequence of activities
‰ Data-flow perspective - information flow  Software costs more to maintain
than it does to develop. For
‰ Role/action
R l / ti perspectiveti - whoh does
d what
h t systems with a long life,
 Generic process models maintenance costs may be
‰ Waterfall several times development costs
‰ Evolutionary development  Software engineering is
‰ Formal transformation concerned with cost-effective
software development
‰ Integration from reusable components

16
CH1.15 CH1.16

4
Cost of Correction What are the costs of software engineering?

Cost  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
Project Phase
model that is used

CH1.17 CH1.18

What are software engineering methods? What is CASE


(Computer-Aided Software Engineering)
 Structured approaches to software development
which include system models, notations, rules,  Software systems which are intended to provide
design advice and process guidance automated support for software process activities.
 Model descriptions CASE systems are often used for method support
‰ Descriptions of graphical models which should be produced
 Upper-CASE
Uppe C S
 Rules ‰ Tools to support the early process activities of
‰ Constraints applied to system models
requirements and design
 Recommendations
‰ Advice on good design practice  Lower-CASE
 Process guidance ‰ Tools to support later activities such as
‰ What activities to follow programming, debugging and testing

CH1.19 CH1.20

5
What are the attributes of good software? What are the key challenges facing software
engineering?
 The software should deliver the required functionality and
performance to the user and should be maintainable,
dependable and usable  Coping with legacy systems, coping with increasing diversity
 Maintainability and coping with demands for reduced delivery times
‰ Software must evolve to meet changing needs  Legacy systems
 Dependability ‰ Old,
Old valuable systems must be maintained and updated
‰ Software must be trustworthy  Heterogeneity
 Efficiency ‰ Systems are distributed and include a mix of hardware and
‰ Software should not make wasteful use of system resources software
 Usability  Delivery
‰ Software must be usable by the users for which it was designed
‰ There is increasing pressure for faster delivery of software

CH1.21 CH1.22

Issues of professional responsibility


Professional and ethical responsibility

 Confidentiality
‰ Engineers should normally respect the
 Software engineering involves wider responsibilities confidentiality of their employers or clients
than simply the application of technical skills irrespective of whether or not a formal
 Software
So twa e eengineers
g ee s must
ust be
behave
ave in aan honest
o est aand
d confidentiality agreement has been signed.
signed
ethically responsible way if they are to be respected as  Competence
professionals ‰ Engineers should not misrepresent their level of
 Ethical behaviour is more than simply upholding the competence. They should not knowingly accept
law. work which is outside their competence.

CH1.23 CH1.24

6
Issues of professional responsibility Outlines Of the Lectures:

 Intellectual property rights ™ Introduction


‰ Engineers should be aware of local laws governing
™Software Evolution
the use of intellectual property such as patents, ™ Software Life Cycles
copyright, etc. They should be careful to ensure ™ Requirement Specification and Analysis
that the intellectual property of employers and ™ Software Design Issues : DFD , UML
clients is protected. Software Evaluation
™ Codingg & Testingg
™ Project Planning, Risk Management and
 Computer misuse
Estimation Technique
‰ Software engineers should not use their technical
™ Software Quality Management
skills to misuse other people’s computers. ™Discussions & Quiz/Examinations
Computer misuse ranges from relatively trivial
(game playing on an employer’s machine, say) to
extremely serious (dissemination of viruses).

CH1.25 CH1.26

Software Evolution - Present View Software Evolution - Traditional View

Software evolution includes management of Software evolution consists of activities


all dynamic structures and activities required
q to keepp a software system
y
involved in software development. operational and responsive after it is
accepted and placed into production.

CH1.27 CH1.28

7
Evolution of Computer Systems Evolution of Operating Systems
Vacuum-tube based
Batch processing
Transistor based
Time sharing
IC based
Multiprogramming
VLSI based
Multi-tasking
Non-Von Neuman Computing Systems
Multi-processing

CH1.29 CH1.30

Reasons for changes in Software Tasks involved in changing a Software


Systems System
9Requirements for additional functionality, Understand the problem with the current version of the
improved performance, or new configurations. system.

Define the requirements for the change and the intended


9Modifications to existing requirements new behavior.

9Errors in the existing design or Locate the parts of the system documents affected by the
implementation change.

Design and implement the new version of the system.


9Excessive complexity in the design and
implementation. Check all changes and test the new version of the system.

CH1.31 CH1.32

8
Importance of Software Evolution Areas of Concern in Software
Development
Despite 50 years of progress, the software •Self discipline is a badly-needed trait.
industry remains years - perhaps decades - •Software problems became orders of magnitude
short of the mature engineering discipline larger.
•Range of applications widened greatly.
needed to meet the demands of an
•The size of resulting programs is greatly inflated.
information-age society.
•Great willingness to make changes in specifications.
•Programmers are seldom restrained in changing
-Scientific American, September 1994 issue programs.
“Software Chronic Crisis” by W. Gibbs •Can the software be “engineered” indeed?
-- R.W. Hamming in his Foreword in the Journal of Systms Integration, Volume 6, Numbers 1/2, March 1996.

CH1.33 CH1.34

Software Developers/Engineers What is the difference between software


engineering and computer science?
Programmer is an individual who is concerned with the
details of implementing, packaging and modifying
algorithms and data structures written in particular  Computer science is concerned with theory and
programming languages
languages. fundamentals; software engineering is concerned
with the practicalities of developing and
delivering useful software
Software Engineers are additionally concerned with the  Computer science theories are currently
issues of analysis, design, verification, documentation, insufficient to act as a complete underpinning for
software maintenance and project management. software engineering

CH1.35 CH1.36

9
Evolution is not just another name for Software evolution occurs throughout
maintenance the life cycle
It includes :
•Software evolution includes : specification-based development
incremental/phased development
•responses to requirements changes requirements prototyping
improvements to performance or clarity
•improvements version and configuration control
•repairs of bugs on-line documentation
testing code generation etc.
•and the overall organization of the
development process It captures dynamic aspects of software
development

CH1.37 CH1.38

Issues in Software Evolution Prototyping


Management issues - which parts of the system to be
built •Prototypes provide inexpensive demonstration of the
Configuration issues - tracking many versions of the essential aspects of the proposed new system behavior.
system This approach is based on the realistic assumption that
Testing issues - which test cases could be influenced many iterative changes to proposed system behavior
by a given change are necessary to formulate an acceptable version of
Requirements issues - when the assumptions requirements.
underlying a system specification are no longer valid.
Code restructuring issues •Prototypes are constructed prior to production version
Performance improvement issues etc. to -Gain information that guides analysis and design,
and Support generation of the production version.

CH1.39 CH1.40

10
Prototyping - Contd. Prototyping - Contd.
Initial Goals
Problems
Analysis The purpose of a computer-aided prototyping
Requirements systems are to :
Prototype
Performance •Aid the designer in constructing and evaluating a
New Prototyping Demo User
pprototype.
yp
G l
Goals
Modularization •Provide an execution, debugging and monitoring
Validated Requirements capability.
Implementation

System •Support the transformation of a prototype into the


corresponding production version of the system.
Operation

CH1.41 CH1.42

Outlines Of the Lectures: Waterfall Process Model


Requirements
™ Introduction Analysis and What is Major Disadvantage?
Specification
™Software Evolution
™ Software Life Cycles Design and
™ Requirement Specification and Analysis Specification 50 %
™ Software Design Issues : DFD , UML
Software Life Cycle
™ Coding y
g & Testingg Codingg and
™ Project Planning, Risk Management and Module Testing
Estimation Technique
™ Software Quality Management Integration and
System Testing
™Discussions & Quiz/Examinations
50 %

Delivery and
Maintenance

CH1.43 CH1.44

11
Software Lifecycle of Waterfall Model Software Lifecycle of Waterfall Model
 Requirements Analysis and Specification  Coding and Module Testing
‰ What is the Problem to Solve? ‰ Writing Code to Meet Component/Module Design
‰ What Does Customer Need/Want? Specifications
‰ Interactions Between SE and Customer ‰ Individual Test Modules in Isolation

‰ Identify and Document System Requirements ‰ Drivers and Stubs to Simulate Behavior

‰ Generate User Manuals and Test Plans  Integration and System Testing
 Design and Specification ‰ Integration
i off Components/Modules
C / d l intoi Subsystems
S b
‰ How is the Problem to be Solved? ‰ Integration of Subsystems into Final Program

‰ High-Level Design  Delivery and Maintenance


‰ Determine Components/Modules ‰ System Delivered to Customer/Market

‰ Transition to Detailed Design ‰ Bug Fixes and Version Releases Over Time

‰ Detail Functionality of Components/Modules

CH1.45 CH1.46

Waterfall Model - Contd. Waterfall Model - Contd.


Concerns :
Concerns :Software development may proceed linearly •Difficulty in accurate estimation of resources with only
from analysis down to coding. limited information.
• The results of each phase are frozen before •The user often does not know the exact requirements.
proceedingg to the next pphase.
p
• Consequence - requirements and design specifications 9 The waterfall model does not stress the need for
may be frozen at an early stage of development. anticipating changes
9The model enforces standards that are heavily based on
The entire planning is oriented to a single delivery date. the production of certain documents at certain specific
times.

CH1.47 CH1.48

12
CH1.49 CH1.50

Evolutionary Model

It is a model whose stages consist of expanding


increments of an operational software product - with the
direction of evolution being determined by operational
experience
experience.

The need for flexible and non-monolithic approaches


is recognized and implemented in the evolution
model.

CH1.51 CH1.52

13
Evolutionary Model - Contd. Evolutionary Model - Contd.
Deliver something to the real user
The development begins by analyzing an increment at
Measure the added value to the user in all critical the requirements level. Each increment is then
dimensions. designed, coded and tested, integrated and delivered.

Adjust both the design and the objectives based on the A prototype serves the purpose of a starting point.
observed realities.
The overall process is thus a sequence of mini-
Disciple must be retained throughout the evolution waterfall processes.
process

CH1.53 CH1.54

Evolutionary Model - Contd. Spiral Model

As users actually use the delivered parts, they start to


understand better what they actually need. This leads to This model provides a view of the production process
changes in the requirements for further increments and that supports risk management.
revision of the original plan.
It may be considered as a meta-model - since it can
From the perspective of the developer - accommodate any process development model.
since each increment is simpler than the whole system, it
is easier to predict the resources needed to accomplish Generally, it works with evolutionary model.
the development task within acceptable accuracy bounds.

CH1.55 CH1.56

14
CH1.57 CH1.58

Spiral Model - Contd. Spiral Model - Contd.

Risks are potentially adverse circumstances that may The spiral model is cyclic in nature.
impair the development process and the quality of
products. Each cycle of the spiral consists of four stages - and
each stage
g is represented
p by
y one qquadrant of the
Risk management is a discipline whose objectives Cartesian diagram.
are to identify, address and eliminate software risk
items before they become either threats to successful The radius of the spiral represents the cost
software operation or a major source of expensive accumulated so far in the process and the angular
software rework. dimension represents the progress in the process.

CH1.59 CH1.60

15
Spiral Model - Contd. Spiral Model - Contd.

Stage-1 identifies the objectives of the portion of the Stage-3 consists of developing and verifying the next
product under consideration - in terms of qualities to level in product development process. In less
achieve. It also identifies alternatives - whether to buy, understood end-user applications, this step may again
design or reuse any software - and the constraints on the be evolutionaryy in nature.
application of the alternatives.
Stage-4 consists of reviewing the results of the stages
Stage-2 evaluates the alternatives - identifies the traversed so far and planning for the next iteration of
potential risk areas and deals with them. Risk the spiral, if any.
assessment may require prototyping and/or simulation.

CH1.61 CH1.62

Spiral Model - Contd. Spiral Model - Contd.


Cumulative
cost
Determine objectives, Evaluate alternatives,
alternatives, constraints identify, resolve risks The spiral model emphasizes the issue of robustness
Life cycle - 1 : Requirements plan together with correctness.
Life cycle - 2 : Development plan
Lif cycle
Life l - 3 : Integration
I t ti andd test
t t After one cycle
Af l off the
h spiral,
i l unstatedd requirements
i are
plan,… checked as part of the robustness of the application - and
and
Plan nextsophases
on Develop, verify they become part of the specification in the next cycle.
next level product

CH1.63 CH1.64

16
CH1.65 CH1.66

CH1.67 CH1.68

17
CH1.69 CH1.70

Software Development Process Models


- Conclusion
It is impossible to reconcile all the conflicting
requirements of the software development process in a
new universal blanket process model.

The first step of any software process should always


consist of selecting or designing the model to be followed
in the succeeding steps.

Evolutionary model, in some form or other, is likely to be


the mostly used model at least in near future.

CH1.71 CH1.72

18
Jackson’s System Development
JSD suggests a technique that represents a mixture of
descriptive approaches based on object-oriented design
and functional decomposition.

JSD addresses all aspects of software development - from


analysis to implementation.

In JSD, software development proceeds through a


sequence of three stages - the modeling stage, the
network stage, and the implementation stage.

CH1.73 CH1.74

Jackson’s System Development - Contd. Jackson’s System Development - Contd.


In the modeling stage, the real world is analyzed and represented in
terms of actions (or events) that may affect the entities, which model
objects in the real world. A H X
For example, the entity FORM may be composed of the actions GET X
( get a form),
(to f ) FILL_IN
FILL IN (to
( fill in
i the
h necessary data
d into
i the
h form),
f ) O
B C D LO M Y
and CHECK_IN (to return the filled in form).
Sequence Selection Iteration
All actions that characterize an entity are ordered in time - this
ordering provides a process view of the entity, described by a Process A : FORM B : GET O stands for X stands for
selection iteration
Structure Diagram (PSD). C : FILL_IN D : CHECK_IN

CH1.75 CH1.76

19
Jackson’s System Development - Contd. Jackson’s System Development - Contd.

In the network stage, the entire system is a network of In the implementation stage, the network of processes is
interconnected and communicating processes - described transformed into an implementation.
by a system specification network (SSN)
The concurrent network of processes may have to be
transformed into a sequential system, if the implementation
P A Q P’
A’
Q’ platform is sequential.

JSD covers the entire life cycle from requirements analysis


Connection by data stream Connection by state vector to programming.

CH1.77 CH1.78

Outlines Of the Lectures:

™ Introduction
™Software Evolution
™ Software Life Cycles
™ Requirement Specification and Analysis
™ Software Design Issues : DFD , UML
Requirement
q™ Coding Specification
p
g & Testingg
™ Project Planning, Risk Management and
&
Estimation Technique
™ Software Quality Management
Analysis
™Discussions & Quiz/Examinations

CH1.79 CH1.80

20

Você também pode gostar