0% found this document useful (0 votes)
36 views41 pages

Software Engineering Revisited: Vu Thi Huong Giang

Software engineering aims to address the practical problems of developing complex software projects that are delivered on time and on budget. It involves technical processes for software development as well as tools, methods, and theories to support software production. Some key challenges in software engineering include dealing with changing requirements and heterogeneous environments. Software quality is also important, with attributes including correctness, reliability, usability, maintainability, and interoperability.

Uploaded by

PhạmQuangDuy
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
36 views41 pages

Software Engineering Revisited: Vu Thi Huong Giang

Software engineering aims to address the practical problems of developing complex software projects that are delivered on time and on budget. It involves technical processes for software development as well as tools, methods, and theories to support software production. Some key challenges in software engineering include dealing with changing requirements and heterogeneous environments. Software quality is also important, with attributes including correctness, reliability, usability, maintainability, and interoperability.

Uploaded by

PhạmQuangDuy
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 41

Software engineering

revisited
Vu Thi Huong Giang

@2012-2013

Covered topics
Software engineering
Software quality

I. SOFTWARE
ENGINEERING

1. FAQs
2. Deal with complexity & changes
3. Knowledge Area & Units
3

1.1. What is software?


Software = computer programs +
associated documentation (e.g. requirements,
design models and user manuals)
Software products may be
generic - developed to be sold on open market to
any customers

Software

customized - developed for a particular customer


according to their specification

New software can be created by


developing new programs

configuring generic software systems


reusing existing software

1.2. What is software engineering?

Software

Large / complex
Given budget
Given deadline
Built by teams
Changeable
High quality

Software
How ???
engineering

Software engineering is concerned with all aspect of software production:


technical processes of software development activities
development tools, methods, and theories to support software production
5

1.3. 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.

1.4. What is a software process model?


A simplified representation of a software process,
presented from a specific perspective
Examples of process perspectives:
Workflow perspective: sequence of activities
Data flow perspective: information flow
Role/action perspective: who does what

Generic process models:


Waterfall
Iterative development
Component-based software engineering

The waterfall software lifecycle


Requirements analy sis
and specif ication
Design and specif ication

Code and module


testing
Integration and
sy stem testing
Deliv ery and
maintenance
8

1.5. What is the difference between SE


and CS?
Software engineering

Computer science

SE is concerned with the


practical problems of
developing and delivering
useful software

CS is concerned with
theory and fundamentals

SE is about more than just


programming/coding

CS theories are still


insufficient to act as a
complete underpinning for
software engineering

The software engineer is


interested in only those
techniques that make
sound economic sense

The computer scientist


investigates a variety of
ways to produce software,
some good and some bad

1.6. 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
Activities to follow
10

1.7. What are the attributes of good


software?
The software should deliver the required
functionalities and performance to the user and
should be maintainable, dependable and acceptable.
Maintainability
Software must evolve to meet changing needs

Dependability
Software must be trustworthy

Efficiency
Software should not make wasteful use of system resources

Acceptability
Software must accepted by the users for which it was
designed: it must be understandable, usable and
compatible with other systems

11

1.8 . What are the key challenges


facing software engineering?
Heterogeneity
Developing techniques for building software that can
cope with heterogeneous platforms and execution
environments

Delivery
Developing techniques that lead to faster delivery of
software

Trust
Developing techniques that demonstrate that software
can be trusted by its users

12

I. SOFTWARE
ENGINEERING

1. FAQs
2. Deal with complexity & changes
3. Knowledge Area & Units
13

Approach
Consider the software engineering as a problem solving
activity
Analysis: Understand the nature of the problem and break the
problem into pieces
Synthesis: Put the pieces together into a large structure

For solving a problem we use


Techniques (methods): Formal procedures for producing results
using some well-defined notation
Example ?

Methodologies: Collection of techniques applied across software


development and unified by a philosophical approach
Example ?

Tools: Instrument or automated systems to accomplish a


technique
Example ?
14

2.1. Deal with complexity


The problem here is the complexity
Many sources of complexity, but size is the key
This problem can be solved by:

Modeling
Decomposition
Abstraction
Hierarchy
Use patterns

15

2.2. Deal with changes


Changes of project conditions: tailor the software
lifecycle
Changes of requirements or technology: use a
nonlinear software lifecycle
Changes of entities: provide the configuration
management

16

I. Software engineering
1.
2.
3.

FAQs
Deal with complexity & changes
Knowledge Area & Units

17

3. Knowledge Areas & Units


Computing Essentials
Mathematical &
Engineering
Fundamentals

Software Management

Software Quality

Software Engineering
Software Process

Professional Practice
Software Modeling
& Analysis

Software Evolution

Software Design
Software Verification & Validation

18

II. SOFTWARE QUALITY

1. Classifications of software qualities


2. Representative qualities
3. Quality measurement
19

Introduction
Software products are different from traditional
types of products
intangible
difficult to describe and evaluate

malleable
human intensive
involves only trivial manufacturing process

Good software products require good


programming, but ...
programming quality is the means to the end, not
the end itself.

20

1. Classification of software qualities


Internal vs. external
External visible to users
Internal concern developers
Internal qualities affect external qualities

Product vs. process


Our goal is to develop software products
The process is how we do it
Process quality affects product quality

21

2. Representative qualities
Common qualities: 11
Process-specific qualities: 3
Application-specific qualities

22

Correctness

Software is correct if it satisfies the functional


requirements specifications
assuming that specification exists!

If specifications are formal, since programs are


formal objects, correctness can be defined
formally
It can be proven as a theorem or disproved by counter
examples (testing)

Limits:
It is an absolute (yes/no) quality
there is no concept of degree of correctness
there is no concept of severity of deviation

What if specifications are wrong? (e.g., they derive


from incorrect requirements or errors in domain
knowledge)

23

Reliability

Informally, user can rely on it


Can be defined mathematically as probability of
absence of failures for a certain time period
If specifications are correct, all correct software
is reliable, but not vice-versa (in practice,
however, specs can be incorrect )
Idealized situation: requirements are correct

Reliability
Correctness

24

Robustness
Software behaves reasonably even in
unforeseen circumstances (e.g.,
incorrect input, hardware failure)

25

Performance
Efficient use of resources
memory, processing time, communication

Can be verified
complexity analysis
performance evaluation (on a model, via
simulation)

Performance can affect scalability


a solution that works on a small local
network may not work on a large intranet

26

Usability

Expected users find the system easy to use


Other term: user-friendliness
Rather subjective, difficult to evaluate
Affected mostly by user interface
e.g., visual vs. textual

Why is usability important?


Users are able to achieve their tasks easily and
efficiently, which has public relations benefits for
the organization thereby increasing uptake.
Systems having poor usability levels can result in
substantial organizational costs
People avoid using the application if they find it
difficult to use
27

Verifiability
How easy it is to verify properties
mostly an internal quality
can be external as well (e.g., security
critical application)

28

Maintainability
Maintainability: ease of
maintenance
Maintenance: changes
after release
Maintenance costs exceed
60% of total cost of
software
Three main categories of
maintenance

Maintenability can be
decomposed as
Repairability: ability to
correct defects in
reasonable time
Evolvability: ability to adapt
software to environment
changes and to improve it in
reasonable time

corrective: removing residual


errors (20%)
adaptive: adjusting to
environment changes (20%)
perfective: quality
improvements (>50%)

29

Reusability
Existing product (or components) used
(with minor modifications) to build
another product
(Similar to evolvability)

Also applies to process


Reuse of standard parts measure of
maturity of the field

30

Portability
Software can run on different
hardware platforms or software
environments
Remains relevant as new platforms
and environments are introduced
e.g. digital assistants

Relevant when downloading software


in a heterogeneous network
environment

31

Understandability
Ease of understanding software
Program modification requires
program understanding

32

Interoperability
Ability of a system to coexist and
cooperate with other systems
Capable of exchange information with other
systems
Capable of use the exchanged information

33

2.2. Typical process qualities


Productivity
denotes its efficiency and performance

Timeliness
ability to deliver a product on time

Visibility
all of its steps and current status are documented clearly

34

Timeliness
Often the development process does not follow
the evolution of user requirements
A mismatch occurs between user requirements
and status of the product

Function
User
needs
Actual
sy stem
capabilities

t0

t1

t2

t
3

t4

Time
35

2.3. Application-specific qualities


Information systems
Security
Data availability
..

Real-time systems
Scheduling priority
..

Distributed systems
Code mobility

36

3. Quality measurement
To measure the software quality indicators, we
use:
Metrics
Methods
Empirical
Model

Numerical
Model
Measurement

Understanding/
Refinement

Results
(Empirical)

Statistical/
Math
Analysis

Results
(Numerical)
Interpretation
37

Measurement Plan

Report

Metrics
Procedures

Goal Data
Collect

Media

Validate

name + description for


each unique metric
classification for each
metric
association point in
product development that
identifies when and how
data is to be collected
definitions of the data
collection forms
data reporting, collection,
and validation procedures
38

CONCLUSION

39

Key points: software engineering


Software engineering is an engineering discipline that is
concerned with all aspects of software production.
Software products consist of developed programs and
associated documentation. Essential product attributes are
maintainability, dependability, efficiency and usability.
Software process consists of activities that are involved in
developing software products. Basic activities are software
specification, development, validation and evolution.
Methods are organized 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.

40

Key points: software quality


Ensuring the mentioned qualities becomes the
goals in the practice of software engineering.
Many qualities are subjective to measure, but no
standard metrics defined for most qualities.

41

You might also like