Design Concepts  «Prev  Next»
Lesson 8

Key Analysis and Design Concepts Conclusion

Abstraction in Aircraft Systems Design:

In the intricate realm of aircraft systems design, abstraction is the process of simplifying complex realities by focusing on the higher-level structure and behavior, while ignoring the finer details unless they're absolutely necessary. Abstraction allows object modelers, like yourself, to conceptualize and design aircraft systems by understanding and representing only the necessary details at any given level of the design.

Cohesion and Coupling: Evaluative Metrics

Two foundational metrics for assessing object quality in system design are cohesion and coupling:
  1. Cohesion deals with how closely the responsibilities of a particular module or component are related to each other.
  2. Coupling pertains to the degree of direct knowledge or dependency that one module has over another.

Abstraction's Role in Assessing Object Quality:

1. Ensuring High Cohesion through Abstraction:

Abstraction helps in defining clear boundaries around components by focusing on their core responsibilities. In aircraft systems:
  1. At a high level, you might abstract systems like "Navigation," "Propulsion," or "Communication."
  2. When delving deeper into the "Navigation" system, you might have sub-components like "GPS Module," "Altimeter," and "Auto-pilot Controller."
Each of these components and sub-components should have a clearly defined and singular purpose, ensuring high cohesion. A well-abstracted "GPS Module," for instance, should solely focus on tasks related to GPS, such as fetching coordinates, and not mix concerns like communication or propulsion.

2. Minimizing Coupling through Abstraction:

Abstraction allows object modelers to define interfaces or service contracts between components. This ensures that components communicate or interact only through well-defined pathways, reducing the chances of unintended dependencies.
  1. For instance, the "Auto-pilot Controller" might need data from the "GPS Module." Through abstraction, you can ensure that the controller accesses only what's necessary (like the current coordinates) and remains oblivious to the inner workings of the GPS Module, thus minimizing coupling.
  2. This is particularly vital in aircraft systems, where changes in one module (say, an upgrade to the GPS hardware) shouldn't necessitate changes in another module (like the "Auto-pilot Controller"), ensuring system safety and reliability.

3. Layered Abstractions for Object Quality Assessment:

Abstraction can often be multi-layered, especially in complex domains like aircraft systems. At the top-most layer, you might be dealing with entire systems, at the next, sub-systems, and further down, specific modules or classes.
  • By ensuring high cohesion and low coupling at every layer of abstraction, you can establish a cascading effect of quality. It ensures that the system as a whole, and in its individual parts, is robust, maintainable, and adaptable to changes.

In the challenging and critical domain of aircraft systems design, abstraction plays a pivotal role in shaping the quality of object design. By fostering high cohesion within components and minimizing coupling between them, abstraction not only ensures that each component is optimal in its function but also guarantees that the overarching system remains modular and maintainable. The combined use of cohesion and coupling metrics, within the framework of abstraction, is instrumental in crafting aircraft systems that are both robust in function and resilient to change.
This module discussed
  1. Creating objects requires abstraction
  2. An abstraction is a representation of a real object in a useful manner for a specific problem.
  3. The content of an abstraction is affected by
    1. The context in which the abstraction will be used
    2. The level of detail required to support the problem
    3. The time frame that the abstraction has to support
  4. Cohesion is a measure of the degree to which all parts of an object support the same purpose. The goal of high cohesion is one well-defined purpose per object.
  5. Coupling is a measure of the dependency between objects. Loose coupling means that objects are able to operate independently with verylittle help or communication with other objects.
  6. Aggregation and composition provide a means to represent objects made up of other objects. Aggregation is used when the life-span of the part objects may be longer than their participation in the assembly. Composition (also referred to as strong aggregation) is used when the part objects exist only as long as the assembly is intact.
  7. Generalization and specialization provide the means to organize shared and unique properties among similar objects. Generalization combines shared properties into a single definition. Specialization identifies the distinguishing properties in a set of objects.

Demand for Cost Effective and High Quality Systems

A particular strength of modeling is that it reveals our assumptions. Without reading thousands of lines of code, we can
  1. measure communication traffic,
  2. evaluate quality by assessing coupling and cohesion, and
  3. test our models before we write faulty code.
Modeling accomplishes these objectives by raising the level of abstraction. Back in the 1980's and 1990's we wrote Assembler code, just one level above machine language. Then we moved to third-generation languages such as COBOL and PL/I (Programming Language One) The assembly programmers of the time thought COBOL just couldn't do what Assembler could do and would eventually go away. They insisted that to write applications, you had to know how the machine really works. How many of you (other than game programmers) write any Assembler today, let alone develop systems with it?
Compare that with the hundreds of millions of lines of COBOL code are in production today and the problems it caused prior to Y2K.
The Assembler programmers were missing an essential fact in their machine code. That is, the only reason to write code is to solve a problem. The machine and the languages are tools to solve a problem, not the end itself. Still today, when our focus is forced onto the technology (Java versus C++, JSP versus ASP, NodeJS versus C#) and away from the problem, we risk losing sight of our real purpose and the factors that define true success, and that is not whether the code is finished, but does the application do what we need it to do and can it survive the inevitable changes?
UML is an attempt to express in precise, familiar, and consistent language everything needed to generate complete, stable, maintainable systems. UML is a level of abstraction above the current programming languages, just as PL/I was a level above Assembler.

Glossary Terms

  1. Aggregation: An aggregation is an association that represents a part-whole relationship. It is shown by a hollow-diamond adornment on the end of the path attached to the aggregate class.
  2. Abstraction: Abstraction in object modeling is the process of hiding the internal details of a class and exposing only its essential features. This allows us to focus on how the class works, without having to worry about how it is implemented.
  3. Cohesion:Cohesion in object modeling is a measure of the degree to which the elements of a class are related to each other. A class with high cohesion is one in which all of the elements work together to achieve a single well-defined purpose. A class with low cohesion is one in which the elements are not closely related and may serve multiple purposes.
  4. Composition: A composition is a stronger form of association in which the composite has sole responsibility for managing its parts, such as their allocation and deallocation. It is shown by a filled-diamond adornment on the composite end.
  5. Coupling: Coupling in object modeling is the degree of interdependence between two or more objects. In other words, it is a measure of how much knowledge one object has about another object.
  6. Generalization: Generalization in object modeling is the process of identifying common characteristics of two or more classes and extracting them into a more general class. The general class is called the superclass, and the more specific classes are called subclasses. Subclasses inherit the attributes and methods of their superclass, and may also add their own attributes and methods.
  7. Specialization:To produce a more specific description of a model element by adding features, relationships, constraints, and other items to an original model element. The opposite relationship is generalization, which is also used as the name of the relationship between the more specific element and the more general element, as there is no good term for the relationship that is undirected. A child element is the specialization of a parent element. Conversely, the parent is the generalization of the child.

UML Relationships - Quiz

Click the Quiz link below to take a short multiple-choice quiz on the material covered in this module.
UML Relationships - Quiz