1 / 20

Software Design: Architecture, Modules, and Metrics for Quality

This article discusses software design principles, architecture examples, module characterization, coupling and cohesion metrics, and object-oriented analysis and design. Learn how to design high-quality software using effective architectural patterns, modularization techniques, and measurement metrics.

catrinaj
Download Presentation

Software Design: Architecture, Modules, and Metrics for Quality

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Contents • Introduction • Requirements Engineering • Project Management • Software Design • Detailed Design and Coding • Quality Assurance • Maintenance

  2. Software Design • Design activities • Architecture examples • Modularisation and Metrics

  3. Design Activities Transform the logical model ( RE) into a physical model, in sufficient detail to permit its physical realization. • Architectural design • Identify the systems components • Structure the system components • Assign functionality to components • Assign data to components • Plan for future changes • Define the structure of the implementation • Detailed design • Refine the (architectural) components • Choose specific data structures • Choose specific algorithms • Define the logic of the implementation

  4. Architecture Example: Pipes and filters

  5. Architecture Example: Layering

  6. Architecture Example: Repository

  7. Client-server architecture Film and picture library

  8. Design Principles • Abstraction • Encapsulation • Information Hiding • Structuring • Modularisation

  9. Characterisation of Modules • Logic entities which fulfil certain tasks • Simple entities, i.e. their tasks can be described clearly and briefly • Units containing data and/or operations • Provide resources usable by other modules • Their realisation is encapsulated • May use resources from other modules

  10. Classical metrics: LOC Cyclomatic number (McCabe) Control variable complexity (McClure) Software science (Halstead) “Wrong” understanding of module Late applicability More useful: Coupling Cohesion Fan-in/fan-out Graph-oriented metrics Weighted methods per class Depth/width of inheritance trees ... Measuring Module Quality Reliable and early data with significant impact on quality.

  11. Coupling • Measures the degree of independence between different modules • Content coupling • Common coupling • (External coupling) • Control coupling • Stamp coupling • Data coupling • Each module should communicate with as few as possible other module • Communicating modules should exchange as few as possible data • All communication must be explicit bad good

  12. How to Uncouple Modules • Data coupling • Exchange only necessary information • Do not pass data through several modules • Stamp coupling • Do not encapsulate unrelated data • Control coupling • Limit control information in interfaces • Common/External coupling • Pass data explicitly as parameters • Divide complex data into independent parts that can be exclusively used of different modules • Hide data • Content coupling USCH

  13. Cohesion • Measures “relatedness” of the resources encapsulated in one module • Coincidental cohesion • Logical cohesion • Temporal cohesion • Procedural cohesion • Communicational cohesion • Sequential cohesion • Functional/informational cohesion • Each element in a module should be a necessary and essential part of one and only task bad good

  14. Coupling / Cohesion Summary • The modules of a system should be highly cohesive and loosely coupled • Good modularisation

  15. M17 M19 M18 M11 M12 M13 M10 M15 M16 M14 M6 M8 M9 M2 M3 M1 M5 M7 M4 Fan-in vs Fan-out Depth Width M9: Fan-in = 2, fan-out = 4

  16. Fan-in vs Fan-out Rules • Minimise structures with high fan-out • Strive for fan-in as depth increases

  17. Object Oriented Analysis and Design Analysis Rectangle height width getArea resize • Each entity in the system is an object. • A method or operation is an action that can be performed directly by the object or can happen to the object. • Encapsulation: the methods form a protective boundary around an object. • Class hierarchies of objects encourage inheritance. • Polymorphism: same method for different objects, each with different behaviour. Design Rectangle {author = Joe} height: int width: int getArea(): int resize (int,int)

  18. Object Model

  19. Object Oriented Design Metrics • Weighted Methods Per Class (WMC) • Depth of Inheritance Tree (DIT) • Number of Children (NOC) • Coupling between Object Classes (CBO) • Response for a Class (RFC) • Lack of Cohesion in Methods (LCOM)

  20. Traceability Matrix • Relates requirements to design artefacts • Shows dependencies • Supports change management • Useful for other traceability purposes

More Related