====== 4.3.3.3 Analysability ===== [[dido:public:ra:1.4_req:2_nonfunc:20_maintainability| Return to Maintainability]] ===== About ===== [[dido:public:ra:xapend:xapend.a_glossary:a:analysability]] is defined by the [[https://ieeexplore.ieee.org/document/159342 | IEEE glossary of Software Engineering]] as “the ease with which a software system or component can be modified to correct faults, improve [[dido:public:ra:xapend:xapend.a_glossary:p:performance|performance]] or other attributes, or adapt to changes to the environment”. One way to understand the Analysability of a system or a program is to understand the size of the system or program. As a rule of thumb, as the size of system or program increases, it becomes increasingly harder to successfully modify the software to correct faults, improve performance, or to adapt to changes in the operating environment. This Analysability can be performed any time during the [[dido:public:ra:xapend:xapend.a_glossary:s:software_development_model]] (i.e., [[dido:public:ra:xapend:xapend.a_glossary:w:waterfall]] or the [[dido:public:ra:xapend:xapend.a_glossary:a:agile]], etc.) during the early stages of analysis and design. As projects mature and use a larger code base, the models can be based directly on either the [[dido:public:ra:xapend:xapend.a_glossary:s:sourcecode|source code]] or [[dido:public:ra:xapend:xapend.a_glossary:u:uml]] models created using reverse engineering. The metrics can also be used during both [[dido:public:ra:xapend:xapend.a_glossary:g:greenfield]] or [[dido:public:ra:xapend:xapend.a_glossary:b:brownfield]] deployments. Another way to examine Analysability could be to collect and use similar metrics on Distributed Computing systems where, instead of using classes (i.e., as in [[dido:public:ra:xapend:xapend.a_glossary:o:oop]]), the number of [[dido:public:ra:xapend:xapend.a_glossary:n:netnode | Nodes]], [[dido:public:ra:xapend:xapend.a_glossary:e:endpoint | Endpoints]] and message types could be used. To address **Structural Complexity**, the connections between processes can be used. ^ Type of Metrics ^ Metric definition ^ ^ Size Metrics ^^ ^ Number of Classes (NC) | The total number of classes | ^ Number of Attributes (NA) | The total number of attributes | ^ Number of Methods (NM) | The total number of methods | ^ Structural complexity Metrics ^^ ^ Number of Associations (NAssoc) | The total number of associations | ^ Number of Aggregations (NAgg) | The total number of aggregation relationships within a class diagram (each whole-part pair in an aggregation relationship) | ^ Number of Dependencies (NDep) | The total number of dependency relationships | ^ Number of Generalisations (NGen) | The total number of generalization relationships within a class diagram (each parent-child pair in a generalization relationship) | ^ Number of Generalization hierarchies (NGenH) | The total number of generalization hierarchies in a class diagram | ^ Maximum DIT (MaxDIT) | It is the maximum DIT value obtained for each class of the class diagram. The DIT value for a class within a generalization hierarchy is the longest path from the class to the root of the hierarchy | ^ Maximum HAgg (MaxHAgg) | It is the maximum HAgg value obtained for each class of the class diagram. The HAgg value for a class within an aggregation hierarchy is the longest path from the class to the leaves |
Metrics for [[dido:public:ra:xapend:xapend.a_glossary:c:class|Class]] complexity(( Marcela Genero, Mario Piattini and Ronda de Calatrava, __Empirical validation of measures for class diagram structural complexity through controlled experiments__, Accessed 4 August 2020, [[https://pdfs.semanticscholar.org/dd52/5d80c1f370258e56cd956bcb903706c216dc.pdf]] ))
===== DIDO Specifics ===== [[dido:public:ra:1.4_req:2_nonfunc:20_maintainability:analysability| Return to Top]] : To be added/expanded in future revisions of the DIDO RA /**=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- /* To add a discussion page to this page, comment out the line that says ~~DISCUSSION:off~~ */ ~~DISCUSSION:on|Outstanding Issues~~ ~~DISCUSSION:off~~