FAMOOSProject

PublicReengineering Wiki

FAMOOS Project , http://www.iam.unibe.ch/~famoos/.

The FAMOOS project (Framework-based approach for mastering OO software evolution) is an ESPRIT project (Sept 96-Aust 99) which intends to improve existing OO software by making it more flexible, using OO technologies.

The technology users are Nokia and Daimler-Benz, academics are Uni of Bern and the Software Composition Group of FZI and the technology suppliers are SEMA Group and TakeFive? Software. They reckon the indiscriminate use of OO are leading to a new generation of legacies. They intend to develop methods and tools to analyse and detect design problems with respect to the of existing OO systems. They wish to transform such systems into frameworks based on flexible architectures. The 2 industrial sponsors have provided 5 case studies. These have a variety of motivations for reengineering including: decoupling function to allow components to be marketed separately; improving performance; use of alternative UIs; extracting the original design; exploiting new technology. The have identified high-level problems: insufficient documentation; lack of modularity; duplicated functionality; improper layering (eg UI and logic mixed up together.) Lower level problems: misuse of inheritance; missing inheritance; misplaced operations; violation of encapsulation; and missing encapsulation. TakeFive? provide SNIFF+ to provide graphical views of the source code. They have done work in producing metric based on the source code, to detect problems in the systems. However, problems exist with these metrics in that they are not all normalised, so thresholds have to be changed for different languages and even projects and interpretation is subject to the context in which a class is used. This means that each alarm from the tool has to be manually checked for relevance. The patterns work has identified some patterns: one for code duplication detection using tool support; architecture extraction using a prototype; a means of detecting the extensible parts of an OO program; and eliminating type checking in provider classes (and client classes) by using polymorphism.


Related pages: Bibliography
This page last edited on 19 October 1999
 
 
  • Search for: