Skip to content

Ptidej Team

Sections
Personal tools
You are here: Home » Research » DECOR » grammar » FunctionalDecomposition.htm
« February 2012 »
Su Mo Tu We Th Fr Sa
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      
 
Views
  • State: visible

FunctionalDecomposition.htm

Document Actions

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>&nbsp;</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
 

Powered by Plone