Object-oriented methods are known for their capabilities to encapsulate and manage core concerns of complex software systems. However, they are inadequate in discerning and separating a variety of other cross-cutting concerns. In particular, for distributed systems, a number of important concerns such as synchronization, logging, and security, should be sufficiently treated in the design phase of the software lifecycle in order to ensure high system quality. Oftentimes these concerns tend to be overlooked at the design level and consequently scattered across multiple system modules during implementation. Consequently it becomes difficult to connect the set of requirements with the system structure, thus system traceability is reduced.
This paper proposes an extension to the Function-Class Decomposition (FCD) method, that is a hybrid method of structured analysis and OO approach, by integrating the concepts of "aspect". "Aspect" is an abstraction mechanism that emerged in recent years from the aspect-oriented programming (AOP) community. This extended method supports separation of functional and non-functional concerns by maintaining two primary views (Function-class view and Aspect view) at the design stage, and demonstrates the iterative process by applying it to the development of an example system called M-Net that is an Internet-based real-time distributed conferencing system.