by Tiago Stein D'Agostini
This is a pseudo-domain analysis project. It intends to be a tutorial of how to apply AOSD. The tutorial will be composed of an analysis of a domain, not only a system. A set of families, family members, configurable features and aspects will result from this tutorial, so that they could be used in any system on this domain. In order to restrain the size of this tutorial a single family of the domain will be factorized and studied to the very end.
It is important to remember that is not the only correct possible analysis on this domain.
The domain that will be analyzed on this tutorial is the "Road Transportation System". The selection of a domain that is not directly mapped to computational implementation is intentional, in order to preserve the concept of AOSD from corruption proceeding from previous implementation and analysis techniques used by the student.
The domain of the Road Transportation System has many families. In order to identify these families we must look for the similarities among its components. Things that have much in common form up families. In the target domain there are many components, including roads, streets, cars, trucks, road signals, gas stations and many others.
For obvious reasons a School Bus is not from the same family as a 4-way high speed road. A brief analysis of the domain can give us the following families:
Inside each of these families there are several members, each one representing the differences among each kind of automobile, roadway of signal. In order to explore this idea we will continue our domain analysis in the family that looks to be the richest in concepts one, the Automobile family.
In the previous section we identified the Automobile family based on the idea of grouping concepts that presents high similarities. Now is time to continue analyzing this family in order to focus on the differences among its members.
Its quite obvious that a 8 people Van is not exactly the same as a Ferrari F-40. These two concepts have different purposes , very different capabilities and restrictions. So in the first degree of our factorization we can divide the Automobile Family in three main members:
As previously stated, the members should encapsulate the differences among members of this family. The Sport member encapsulates differences such as focus on performance in detriment of economy and other features. A Family Automobile, even having many similarities with the Sport Car (such as 4 wheels) that make both members of the same family, it present important differences. Some of these differences can be summarized in the focus on comfort and/or economy, usability and very different standards on performance. The Utility Automobile member is probably the most obviously different one, since members of this family include the concept of transporting loads, and have focus on the efficient delivery of this service. Also as will be further discussed, specific members of a family may be the only valid targets for configurable features.
Our current level of factorization already encapsulate the main differences on Automobile Family's members, specially concerning the purpose and focus of each member. However this factorization is not enough to identify the more subtle differences among all kinds of automobiles. A Van is a member of the Utility family, but also does a Pick-up, even these vehicles being obviously different. In order to better encapsulate those differences we can continue our factorization, until we reach a level of granularity that is adequate to our analysis. The level this factorization is to be extended is a commitment between the capacity of clearly encapsulating the differences and an excessive number of family members being created.
Continuing our factorization we can find the following new members:
The reasons on why these members have been further factored should now be quite obvious. A competition vehicle has severe restrictions on where it can operate, type of the components that can be used on them and special performance standards. The Family Automobile member was represented a too broad scope of cars, so that we separated the Low-End automobiles that focus on economy and size from the Sedan Automobiles that require minimum size and luxury standards as well as different class of machinery. The differences on the Van and Pick-up members is in the kind of cargo that is transported, as well the off-road capability that is inherent to all pick-up vehicles.
The following pictures illustrate how our family is divided up to now:
During the family factorization we didn't looked for all kinds of differences that can be present among automobiles. Imagine that we want to represent the differences of automobiles equipped with safety systems and the unequipped ones. This is a special kind of difference since safety is not a concept that can be represented by a single member or component. If we tried to introduce this concept in the family factorization we would have to create to initial members Safe Automobile and Unsafe Automobile and have a Safe and an Unsafe version of each of the members that we identified in our family. This is a poor analysis and representation of the family, and happens because safety is a concept that cross cuts the family. Its a concept that may be present at every member of a family and affects several points on each member. This kind of cross-cutting concept are called aspects.
Other example of aspects concerning the Automobile Family are:
Each one of these concepts cannot be constrained in to a single abstraction of our family. Low-Pollution for example affect pollution standards of several components of the vehicle and also insert new components such as air filters. The Silence aspects is another good example since almost all moving parts of the vehicle are affected by this aspect, so that this responsibility cannot be assigned to a single component. The already mentioned Safety aspect incorporates new equipments at the vehicle such as air-bags and set standards for many other components of the vehicle, such as a high deformable car body.
Aside from the aspects there are other differences between cars that are not used to justify a new family member. These are optional features on each family member. These features can be present or not (turned on or turned off). For instance a given car can be produced in two versions, one with automatic gear and other with manual gear, in fact when you order your car these feature can be selected.
The main difference between aspects and configurable features is that while the first ones are transparent to the abstraction's users and cross cut the family, the configurable features do not cross-cut families and may even be restricted to a single member of the family. An exemplification is the configurable feature "4x4 Transmission", this is a feature that can be present or not in a car, but only at the member pick-up. Restrictions on the application of configurable features also can exist, as is the case of the afore mentioned automatic gear feature that cannot be present in a competition car due to specific characteristics of the competition vehicle.
Summarizing, our identified configurable features are:
The result of the above stated analysis is summarized in the following picture: