lecture 17 design concepts (2)
DESCRIPTION
Introduction to Software Engineering 1TRANSCRIPT
Agenda Software Quality Software Requirement Software Quality Types Design Concepts
Abstraction Architecture Design Pattern
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.
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.
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
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
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
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!
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!
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
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).
Procedural Abstraction
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.)
Data Abstraction
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
The End
Thanks for listening Questions would be appreciated.