lecture4 software design 2

lecture4 software design 2 - Software Design II Some...

Info iconThis preview shows pages 1–8. Sign up to view the full content.

View Full Document Right Arrow Icon
Software Design II Some Enabling Techniques
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Identify the Software Architecture Decompose System into Modules Module is a single executable file that is only a part of the application Decomposing and modularizing large software into a number of smaller independent ones, usually with the goal of placing different functionalities or responsibilities in different components Modules are abstractions that should be independent have well-specified interfaces have high cohesion and low coupling
Background image of page 2
Coupling and cohesion Coupling is defined as the strength of the relationships between modules Cohesion is defined by how the elements making up a module are related As described above, we should maximize internal cohesion and minimize external coupling of modules during the decomposition of a system
Background image of page 3

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Determine Relations Between Modules Identify module dependencies Determine the form of inter-module communication global variables parameterized function calls shared memory RPC or message passing Specify Module Interfaces Interfaces should be well-defined Describe Module Functionality Informally (comments or documentation) Formally (via module interface specification languages)
Background image of page 4
Modularity A module interface consists of several sections Imports Services requested from other modules Exports Services provided to other modules Access Control Heuristics for determining interface specification define one specification that allows multiple implementations anticipate change e.g., use structures and classes for parameters
Background image of page 5

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Criteria for Evaluating Modular Designs  (1/2) Modular Decomposability Does the method aid decomposing a new problem into several separate sub-problems? (e.g., top-down functional design) Modular Composability Does the method aid constructing new systems from existing software components? (e.g., bottom-up design) Modular Understandability Are modules separately understandable by a human reader, e.g., how tightly coupled are they?
Background image of page 6
(2/2) Modular Continuity Do small changes to the specification affect a localized and limited number of modules? Modular Protection
Background image of page 7

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Image of page 8
This is the end of the preview. Sign up to access the rest of the document.

Page1 / 23

lecture4 software design 2 - Software Design II Some...

This preview shows document pages 1 - 8. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online