Applying object-oriented analysis and design

ional analysis and design techniques imply constant paradigm shifts, since manipulate different concepts at each different phase of software develop-t. The object-oriented technique offers a seamless process that helps viewing the software architecture in terms of problem space elements. • • • • • • • • • This article presents an analysis and design technique relying on a set of notations and guidelines. It promotes a descriptive method that addresses both analysis and design issues. Key criteria have guided the definition of the technique: scalability, reverse engineering support , documentation aid, structur-ing mechanisms, systematic design support and component management support. A case study shows how the technique works and fosters the production of reusable components. Industrial-quality software production of today has become extremely demanding. Applications tend to be much larger and more complex and thus more difficult to develop. Their functionality is shifting from processing to system simulation and integration; from centralized to distributed computing; from text-based to graphics and multimedia-based systems [23]. Highly volatile requirements and strong competition call for even shorter development times. This conflict causes many software products to become delayed, or worse, released without adequate production quality. The importance of application portability among a large number of rapidly changing hardware platforms and the need to be easy to learn and understand by end users with different backgrounds, make things even more difficult. Therefore, there is no longer any time to waste on reinvention or inefficient implementation of well-known algorithms and user interface techniques. In the long run, object-oriented software is aimed at helping to simplify the way we view the real world as it is (or as it should be) and translate our view into software systems. Object-oriented techniques exist to help manage the complexity according to some key points: * Object-oriented architectures are decentralized; • Classification is part of the system structure; • The same ideas and concepts are manipulated from the requirements phase down to the implementation phase. The object life cycle shown in Figure 1 and inspired by [9, 16, 18], conveniently reflects a development scheme in which a knowledge base represented by libraries of reusable and pluggable components impact the different production phases. The class reuse and generalization process is an iterative process influencing both analysis (reuse of frameworks [6]) and design (reuse of classifications [ 10]). Compared to traditional techniques , object-oriented development is a seamless process: there is no …