FunctionalDecomposition.htm
Click here to get the file
Size
2.3 kB
-
File type
text/html
File contents
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="description" content="">
<meta name="keywords" content="">
<meta name="author" content="Nikos Tsantalis">
<title>Detection
Rules of the Functional Decomposition</title></head>
<body>
<div id="toptabs">
<p> </p>
</div>
<div id="container">
<div id="logo">
<!--<h1>Design Defect Detection</h1>-->
</div>
<h3>Description</h3>
The Functional Decomposition antipattern may occur if experienced procedural developers with
little knowledge of object-orientation implement an object-oriented system. Brown describes this
antipattern as "a `main' routine that calls for numerous subroutines". The Functional Decomposition
design defect consists of a main class, i.e., a class with a procedural name, such as Compute
or Display, in which inheritance and polymorphism are scarcely used, that is associated with small
classes, which declare many private fields and implement only a few methods.</p>
<h3>Detection Rules</h3>
RULE_CARD : FunctionalDecomposition { <br><br>
<span class="marge">RULE : FunctionalDecomposition {ASSOC: associated FROM: mainClass ONE TO: aClass MANY };<br><br></span>
<span class="marge">RULE : mainClass {UNION NoInheritPoly FunctionClass};<br><br></span>
<span class="marge">RULE : NoInheritPoly {INTER NoInheritance NoPolymorphism};<br><br></span>
<span class="marge">RULE : NoInheritance {(METRIC: DIT, SUP_EQ, 1, 0) };<br><br></span>
<span class="marge">RULE : NoPolymorphism { (STRUCT: DIFFERENT_PARAMETER) };<br><br></span>
<span class="marge">RULE : FunctionClass {(SEMANTIC: CLASSNAME, {Make, Create, Creator, Execute, Exec, Compute, Display, Calculate}) } ; <br><br></span>
<span class="marge">RULE : aClass {INTER ClassOneMethod FieldPrivate};<br><br></span>
<span class="marge">RULE : ClassOneMethod {(STRUCT: ONE_METHOD)};<br><br></span>
<span class="marge">RULE : FieldPrivate {(STRUCT: PRIVATE_FIELD, 100) };<br><br></span>
};
</body>
<form method="post">
<p align="center"><input type="button" name="B1" value="Close" onClick="window.close()"></p>
</form>
</html>
Created by
mohanaou
Last modified
2010-02-19 12:33