Introduction to Software Engineering Muhammad Nasir Design Concepts (2) m.nasir@iiu.edu.pk
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 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
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
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.

Lecture 17 design concepts (2)

  • 1.
    Introduction to SoftwareEngineering Muhammad Nasir Design Concepts (2) m.nasir@iiu.edu.pk
  • 2.
    Agenda  SoftwareQuality  Software Requirement  Software Quality Types  Design Concepts  Abstraction  Architecture  Design Pattern
  • 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  Atthe 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).
  • 12.
  • 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.)
  • 14.
  • 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.