3. 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.
4. 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.
5. 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 behavior
modification, 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 time
between failures and the length of time needed to resume operation after a failure.
Usability
The ease of use and of training the end users of the system. Sub qualities:
learnability,
efficiency, affect, helpfulness, control.
Interoperability
The ability of two or more systems to cooperate at runtime
6. Development Quality Attributes
Concerned with Software Development…
Modifiability
The ease with which a software system can accommodate changes
to its software
Portability
The 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.
Reusability
The degree to which existing applications can be reused in new
applications.
Integrability
The ability to make the separately developed components of the
system work correctly together.
Testability
The ease with which software can be made to demonstrate its faults
7. 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
8. 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!
9. 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!
10. 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
11. 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).
13. 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.)
15. 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
16. The End
Thanks for listening
Questions would be appreciated.