lecture 17 design concepts (2)

16
Introduction to Software Engineering Muhammad Nasir Design Concepts (2) [email protected]

Upload: sakhawat-jameel-tanoli

Post on 18-Jun-2015

46 views

Category:

Software


2 download

DESCRIPTION

Introduction to Software Engineering 1

TRANSCRIPT

Page 1: Lecture 17   design concepts (2)

Introduction to Software Engineering

Muhammad Nasir

Design Concepts (2)

[email protected]

Page 2: Lecture 17   design concepts (2)

Agenda Software Quality Software Requirement Software Quality Types Design Concepts

Abstraction Architecture Design Pattern

Page 3: Lecture 17   design concepts (2)

Software Quality

The degree to which a software system satisfy its stated requirements, is its quality.

Software Quality has difference attributes An attribute is always present!

Performance (high/low) Maintainability Security etc.

Page 4: Lecture 17   design concepts (2)

Software Quality

A requirement puts a constraint on an attribute:

“The system should be able to handle at least 50 concurrent connections.”

A quality requirement describes not what the system will do, but how it will do it.

Page 5: Lecture 17   design concepts (2)

Operational Quality Attribute

Concerned with Usage of the system… Performance

The response time, utilization, and throughput behavior of the system. Security

A measure of system’s ability to resist unauthorized attempts at usage or behaviormodification, while still providing service to legitimate users.

Availability (Reliability quality attributes falls under this category)The measure of time that the system is up and running correctly; the length of timebetween failures and the length of time needed to resume operation after a failure.

UsabilityThe ease of use and of training the end users of the system. Sub qualities:

learnability,efficiency, affect, helpfulness, control.

InteroperabilityThe ability of two or more systems to cooperate at runtime

Page 6: Lecture 17   design concepts (2)

Development Quality Attributes

Concerned with Software Development… Modifiability

The ease with which a software system can accommodate changes to its software

PortabilityThe ability of a system to run under different computing environments. The environment types can be either hardware or software, but is usually a combination of the two.

ReusabilityThe degree to which existing applications can be reused in new applications.

IntegrabilityThe ability to make the separately developed components of the system work correctly together.

TestabilityThe ease with which software can be made to demonstrate its faults

Page 7: Lecture 17   design concepts (2)

Design Concepts Abstraction—data, procedure, control! Architecture—the overall structure of the

software! Patterns—”conveys the essence” of a

proven design solution! Separation of concerns—any complex

problem can be more easily handled if it is subdivided into pieces

Page 8: Lecture 17   design concepts (2)

Design Concepts Modularity—compartmentalization of data

and function! Hiding—controlled interfaces! Functional independence—single-minded

function and low coupling! Refinement—elaboration of detail for all

abstractions! Aspects—a mechanism for understanding

how global requirements affect design!

Page 9: Lecture 17   design concepts (2)

Design Concepts

Refactoring—a reorganization technique that simplifies the design!

OO design concepts—object oriented design concepts!

Design Classes—provide design detail that will enable analysis classes to be implemented!

Page 10: Lecture 17   design concepts (2)

Abstraction

At the highest level of abstraction – a solution is stated in broad terms

At lower level of abstraction – a more detailed description of the solution is provided.

Two types of abstraction: Procedural Abstraction Data Abstraction

Page 11: Lecture 17   design concepts (2)

Procedural Abstraction

Procedural abstraction: Sequence of instructions that have a specific and limited function. Eg. Open a door open implies long

sequence of activities (e.g. walk to the door, grasp knob, turn knob and pull the door, etc).

Page 12: Lecture 17   design concepts (2)

Procedural Abstraction

Page 13: Lecture 17   design concepts (2)

Data Abstraction Data abstraction: collection of data

that describes a data object. Data abstraction for door would

encompass a set of attributes that describe the door. (E.g. door type, swing direction, Lock type, etc.)

Page 14: Lecture 17   design concepts (2)

Data Abstraction

Page 15: Lecture 17   design concepts (2)

Software Architecture ”The software architecture of a program or

computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them.” (Bass, Clements,

Kazman)

For more (much more), http://www.sei.cmu.edu/architecture/definitions.html

Page 16: Lecture 17   design concepts (2)

The End

Thanks for listening Questions would be appreciated.