MIS 495 -- Dr. Reithel

Chapter 13


In the highest level of abstraction, a solution is stated in broad terms using the language of the problem environment. At lower levels of abstraction, a more procedural orientation is taken. Finally, at the lowest level of abstraction, the solution is stated in a manner that can be directly implemented. Each step in the software engineering process is a refinement in the level of abstraction of the software solution.

Stepwise Refinement

Stepwise refinement is a top-down design strategy. The architecture of a program is developed by successively refining levels of procedural detail. Refinement is actually a process of elaboration. The beginning statement describes function or information conceptually, but provides no information about the internal workings of the function or the internal structure of the information. Refinement causes the designer to elaborate on the original statement, providing more and more detail.


The concept of modularity states that software is divided into separately named and addressable components, called modules, that are integrated to satisfy problem requirements. This is done because it is easier to solve a complex problem when you break it into manageable pieces.

Software Architecture

Software architecture alludes to the overall structure of the software and the ways in which that structure provides conceptual integrity for a system. In its simplest form, architecture is the hierarchical structure of program components, the manner in which these components interact, and the structure of the data that are used by the components.


Cohesion is the natural extension of the information hiding concept. A cohesive module performs a single task within a software procedure, requiring little interaction with procedures being performed in other parts of a program. Stated simply, a cohesive module should ideally do just one thing.

Cohesion Spectrum
Coincidental cohesion Logical cohesion Temporal cohesion Procedural cohesion Communicational cohesion Sequential cohesion Functional cohesion
Low ...... ....... ........ ........ ........ High


Coupling is a measure of interconnection among modules in a program structure. Coupling depends on the interface complexity between modules, the point at which entry or reference is made to a module, and what data pass across the interface. Software design strives for the lowest possible coupling. Below is a measure of the interdependence among software modules.

Coupling Spectrum
No direct coupling Data coupling Stamp coupling Control coupling External coupling Common coupling Content coupling
Loose ...... ....... ........ ........ ........ Tight

Design Specification Outline

I. Scope

II. Data Design

III. Architectural Design

IV. Interface Design

V. Procedural Design

VI. Requirements Cross-reference

VII. Test Provisions

VIII. Special Notes

IX. Appendices

Last Modified: Wednesday, 13-Jan-99 9:10:00 CDT
Copyright © 1999 University of Mississippi. All rights reserved.

Comments: reithel@bus.olemiss.edu