You are on page 1of 45

KAIST SE lab

Chapter 2 Software Qualities

KAIST SE lab

S/W Development
Process

Technology

Resources

Quality/Productivity

Product

KAIST SE lab

Software Qualities
Definitions

DoD, 1985, ``The degree to which the attributes of the software enable it to perform its intended end use.'' ISO, 1986, ``The totality of features and characteristics of a product The or service that bear on its ability to satisfy specified or implied needs.'' Kitchenham, 1986, Fitness Kitchenham 1986 ``Fitness for needs '' needs.
Conformance to its specification: Is it a good solution? Fitness for its intended purpose: Does it address the right problem?

KAIST SE lab

Software Characteristics
The characteristic that perhaps sets software apart from other engineering products the most is that software is malleable. The malleability of software is often misused. Softwares malleability sometimes leads people to think that it can be changed easily. ( Even without extra cost!) A change in software must be viewed as a change in the ______ rather than i th _____. th th in the

KAIST SE lab

Software Characteristics
Its creation is human intensive: It requires mostly engineering rather than manufacturing. th th f t i Q: How is engineering different from manufacturing? In traditional engineering disciplines, the engineer has tools for g g p , g describing the qualities of the product distinctly from the design of the product. In SE, it is not so clear. The qualities of the software product are often intermixed in specifications with the qualities of the design. Q: What does it mean by the underlined above?

KAIST SE lab

Why software quality is different yp q y from other types of quality?


Software has no physical existence. The lack f knowledge of client needs at th start. Th l k of k l d f li t d t the t t The change of client needs over time. The rapid rate of change in both h/w and s/w s/w. The high expectation of customers, particularly w.r.t. adaptability.

KAIST SE lab

Some Insights about Quality


Quality Quality Quality Quality Q li Quality is not absolute is multidimensional is subject to constraints (people, money, time, tool) i about acceptable compromises is b bl i criteria are not independent

KAIST SE lab

Quality Factors

User

Sponsor S

Maintainer

KAIST SE lab

Internal and External Quality


Distinction is not sharp External Quality: Visible to the users of the system Internal Q li I l Quality: Concerns the developers of the system

KAIST SE lab

Product and Process Qualities


Closely related: use a process to produce the s/w product. Product quality:

Functionality Usability Efficiency Reliability, etc Effectiveness of methods, tools Use of standards Management, etc

Process quality

10

KAIST SE lab

Representative Qualities
Correctness, Reliability and Robustness Performance User Friendliness Verifiability V ifi bili Maintainability Reusability Portability Understandability Interoperability Productivity Timeliness Ti li Visibility

11

KAIST SE lab

Correctness, Reliability and Robustness


Open used interchangeably, meaning that the degree of the p g y, g g application's performing its functions as expected.

Correctness
Correct if the program behaves according to the specification of the functions. p Assumption :
4 A specification of th system is available. ifi ti f the t i il bl 4 It is possible to determine unambiguously if a program

meets the specification.

12

KAIST SE lab

Reliability
= dependability: reliable if the user can depend on it. A measure of the frequency and criticality of product failure Failure: An unacceptable effect or behavior under permissible operating conditions conditions. Can define in terms of statistical behavior: MTTF, MTBF Relative, (Q: What about correctness?) , (Q )

13

KAIST SE lab

Robustness
Robust if it behaves reasonably, even in circumstances that were not anticipated in the requirements specification. A function of a number of factors such as

The range of operating conditions conditions. The possibility of unacceptable results with valid input. The acceptability of effects when the product is given invalid input.

Q: Relation to correctness Q: Relation to reliability

14

KAIST SE lab

Performance
Equates performance with efficiency(space, time). Affects the usability of the system. Evaluation

Measurement ( M t (monitoring) it i ) Analysis Simulation

Q: When do we need to estimate performance? Application of performance to process --> Productivity

15

KAIST SE lab

User Friendliness
Ease to use Ease with which the system can be configured and adapted to the hardware environment.

Verifiability
Verifiable if its properties can be verified safely. Performed either by formal analysis methods or through testing.

16

KAIST SE lab

Maintainability
Maintenance

Corrective Adaptive Perfective

Software evolution ( instead of maintenance) Repairability and Evolvability

17

KAIST SE lab

Maintainability(Cont.)
Repairability

Repairable if a software system allows the correction of defects with a limited amount of work. Q Q: How many hours needed to fix an error in the maintenance phase? Right modularization promotes repairability. Q: Why? Improved through the use of proper tools: HL PL CASE etc PL, CASE, etc. Modified over time
To provide new functions. To change existing functions.

Achieved by modularization Decreased with each release of a new version Q: Thus, what we may need?

18

KAIST SE lab

Reusability
Use existing components to build a new product. Examples: Scientific libraries, X window, Motif, etc Reuse levels

People P l Requirements Design Code

Object-oriented technology: best buy Application to A li ti t process


Software methodology Life cycle model

19

KAIST SE lab

Portability
Portable if it can run in different environments

hardware platforms software platforms

Understandability

An internal product quality. Object-oriented paradigm claims ease to understand. j p g

20

KAIST SE lab

Interoperability
Ability of a system to coexist and cooperate with other systems Open system concept

Productivity

A quality of th software production process lit f the ft d ti Difficult to measure: simple metric: SLOC

21

KAIST SE lab

Timeliness
Ability to deliver a product on time. Requires

careful scheduling, accurate work estimation and clearly specified milestones.

Visibility

Visible if all of its steps and its current status are documented. Allows to weigh the impact of their actions and thus guides them in making decisions.

22

KAIST SE lab

Quality Requirements in S Q lit R i t i Specific ifi Application Areas


Information Systems Real-time Systems Distributed Systems Embedded Systems E b dd d S t

23

KAIST SE lab

Information Systems
Storage and retrieval of data Examples: banking systems, library-cataloging systems, etc. Qualities

Data integrity D t i t it Security Data availability Transaction performance

24

KAIST SE lab

Real-time Systems
Respond within a predefined and strict time periods Examples: factory-monitoring systems, missile guidance systems, mouse-handling software Control-oriented Control oriented Scheduling

Deadline Priority

Hard and soft real-times Quality Q lit

Respond time requirements (correctness criterion)

25

KAIST SE lab

Distributed Systems
The degree of distribution

Data Control Hardware

Examples: middleware in client/server systems, groupware, etc. Qualities

System availability

26

KAIST SE lab

Embedded Systems
Software is one of many components. Has no interface to end-user. Examples: Airplanes, robots, microwave ovens, dishwashers, automobiles,etc. automobiles etc

27

KAIST SE lab

Discussions
Discuss the relationship between testing and quality? What is 6Sigma? Even though 6 Sigma is widely used in manufacturing industry why is the reason why 6 Sigma is not industry, easy to apply in software industry?

28

KAIST SE lab

References
Reference: ISO9126 Software Quality Page http://swquality.com

29

KAIST SE lab

Q&A

30

KAIST SE lab

Chapter 3 Software Engineering Principles

31

KAIST SE lab

Software Engineering Principles

Tools Methodologies Methods & Techniques Principles

Relationship between principles techniques, methodologies and tool principles,

32

KAIST SE lab

Software Engineering Principles


Rigor and formality Separation of concerns Modularity Abstraction Anticipation of changes Generality Incrementality

33

KAIST SE lab

Rigor and Formality


Rigor is a necessary complement to creativity. Enhances creativity. Q: How? The highest degree is formality Q: Relationship between rigor and formality formality. Q: What is the advantage of formality over rigor? Q: Traditionally, what is only one phase of s/w development Q: where a formal approach has been used? Application of p pp process

Example: Rigorous documentation of s/w process Improves reusability, maintainability, etc.

34

KAIST SE lab

Separation of Concerns
A way to deal with inherent complexity Various ways in which concerns may be separated

In time

Example :

In terms of qualities

Example :

In different views of the software

Example :

In terms of size

Example : E l

In terms of responsibility

35

Example : Q: May we miss some global optimization due to the separation of concerns?

KAIST SE lab

Modularity
Divided into simpler pieces, called modules Top-down and bottom-up Three goals

Decomposability
Divide and conquer

Composability
Starting bottom up from elementary components

Capability of understanding
Each part of a system separately Related to maintenance

To achieve these goals


36

High cohesion and low coupling High cohesion: The degree of relatedness to other modules Low coupling: The degree of the relatedness among internal elements of the module.

KAIST SE lab

Abstraction
A process whereby we identify the important aspects of a phenomenon and ignore its details. Special case of separation of concerns History y

Mnemonic Macro functions Functions and procedures Loops, selection Abstract data types Objects Design patterns Object frameworks

Helps us concentrate on the problem to solve rather than the way to instruct the machine on how to solve it.

37

KAIST SE lab

Software Engineering Paradigm Evolution


Assembly programming Procedureoriented programming Objectoriented programming

Componentbased SE Service-oriented Service oriented programming

SE R&D progress
Program Design Analysis Testing Maintenance

38

Goal of Evolutions Improve productivity & quality!

KAIST SE lab

Anticipation of Change
Software undergoes changes constantly. Likely changes should be isolated in specific portions. Affects maintainability, evolvability, reusability.

39

KAIST SE lab

Generality
Not necessarily more complex to solve a generalized problem. Have more potential to be reused. Already provided by some off-the-shelf packages. More costly in terms of

Speed of execution Memory requirements Development time

40

KAIST SE lab

Incrementality
A process that proceeds in a stepwise fashion. Evolutionary process Incremental system testing (thread testing)

41

KAIST SE lab

Case Study in Compiler Construction(1/2)


Rigor and formality problems are related to the semantic aspects of the language, which are usually defined ______., rather than the syntactic aspects, aspects which are usually defined by BNF BNF.

42

KAIST SE lab

Case Study in Compiler Constrcution(2/2)


Modularity Consists of three phases: - Lexical analysis -S Syntax analysis l i - Code generation Abstraction A major part of the compiler construction abstracts away from the peculiarities of the particular processor that must run the object code. I J bj t d In Java, JVM!

43

KAIST SE lab

Case Study in System Engineering


What does the design of an elevator system have to do with software engineering? Rigor and formality Separation of concerns Modularity Abstraction Others, anticipation of change, generality, and incrementality

44

KAIST SE lab

Discussions
How are SE principles being pursued in SE research?

45

You might also like