|
Nov 22, 2009 - 09:48 AM
|
||||||
![]() |
||||||
![]() |
||||||
Search |
"Weak generics" problem
Generic design solutions have to do with both reusability and maintainability, the two economically desirable - but also difficult to achieve software engineering goals. However, in many cases, generic design is difficult to achieve in the frame of conventional techniques. We call this a "weak generics" problem. The design of generic solutions to avoid repetition, at analysis, architecture, design and code levels, is the heart of and prerequisite to systematic reuse. We believe "weak generics" problem is responsible for difficulties in implementing many reuse strategies, and also contributes to high maintenance costs. Common sense suggests that for simplicity and productivity reasons, developers should be able to express their design and code without unwanted repetitions, whenever they wish to do so. However, it's not an easy thing to do in most of the software paradigms known to us. OO and component-based development (e.g., with .NET™ or J2EE™) provide many useful reuse mechanisms, but in many instances fail to achieve genericity. Architectural approaches aid in designing generic, adaptable systems, but genericty is required at all abstraction levels - from requirements, to architecture, to detailed design and down to the implementation. The "weak generics" problem is evidenced by high presence of similarity patterns that can be found within programs and across programs. Similarity patterns show as simple clones (e.g., similar class methods) and structural clones (e.g., groups of similar classes involved in the same collaboration pattern). Structural clones are most interesting, as they represent large-granularity program structures, sometimes at the level of architecture. Their recurrence in many similar forms, in many places in a program magnifies program complexity and hinders maintenance most. At the same time, unification of such structural clones has a great potential for program simplification, exploiting reuse potentials, easing maintenance, and boosting programmer's productivity. Unfortunately, many of the similarity patterns are difficult to unify with suitable generic solutions using conventional methods, without compromising other design goals. Access statistic |
| Technology for Reuse based on Bassett's frames |