Why SOA is different?


The idea of reusing a functionality embedded in software modules (or components) is not new. Even considering only the last decade, the technology of remote reusable services has been well established. Both Microsoft DCOM and CORBA attempted at a distributed service model. Both models failed in some way. I have found an interesting discussion about…

How testable is a software architecture?


Testability is not testing. A (software) system is testable when there is an effective test strategy that can be used to verify the conformance of a particular implementation with respect to its specifications. Vice-versa, a system is tested when a specific test suite has been executed, verifying that such implementation really conforms to its specifications.…

Physical design vs. logical design (part II)


In the first instalment of this post, I introduced the notions of physical and logical designs. Then, I introduced three new stereotyped UML dependencies needed to express the relations between classes in terms of both interfaces and implementations. In this post I discuss how to transform a logical design  into a physical architecture that can be exploited…

Design for testability and UML models


There are several books available either in the market or in the Web addressing the fundamentals of object-oriented design using UML. More or less, almost all of them provide to the reader important concepts and principles on software design, a basic notation for learning the most used part of UML, some examples, and perhaps some…

About cardinalities and multiplicities in UML associations


According to The Unified Modeling Language Reference Manual (2/E), the cardinality is a specific number, representing the number of elements in a collection. Many authors misuses the term, meaning instead the range specification of allowable cardinality values (i.e. the size) assumed by a collection during its life-cycle, which is properly called multiplicity. Apart from this…

The benefit of modeling in software projects


Why should be convenient to exploit models in a software project? Are there some tangible economic advantages in using them, especially considering the effort needed to create and maintain them in the long-term? Software models can enhance the quality of both the delivered system and the development environment, but only if they are built since…