Modulaarsuse mõõtmine tarkvara analüüsifaasis

Date

2012

Journal Title

Journal ISSN

Volume Title

Publisher

Tartu Ülikool

Abstract

Antud töös uuriti modulaarsusega seotud aspekte süsteemi analüüsifaasis, et avastada struktuurseid vigu võimalikult varakult. Tutvustati modulaarsusega seotud põhimõisteid ja printsiipe ning selgitati, kuidas modulaarsust hinnata. Ehkki ka analüütiku valikuid mõjutavad arhitektuuriotsused ja kasutatav tehnoloogia, saab analüütik süsteemi kirjeldada ja komponentidesse jaotada väga erinevalt, millest aga sõltub ka see, kas modulaarsus on saavutatav. Loogiline ja selge komponentide jaotus ning ilmsed seosed lihtsustavad edaspidist süsteemi arendust ja hooldust. Töö raames arendati välja modulaarsuse mõõtmise raamistik, kasutades eesmärk-küsimus-meetrika lähenemisviisi. Selle käigus konkretiseeriti arvutuslik mudel analüüsifaasis sidestuse, kohesiooni ja komplekssuse arvutamiseks. Mudelit rakendati reaalse projekti peal. Esmalt arendati sõltuvuste visualiseerimiseks välja eraldi programm, mis tagastab analüüsidokumentide põhjal komponentide vaheliste sõltuvuste disaini struktuuri maatriksi. Maatriksi peal rakendati erinevaid meetrikaid analüüsitulemite sidestuse ja komplekssuse mõõtmiseks ning eraldi mõõdeti komponentide suurust. Mõõtmise tulemused võimaldavad analüüsi artefakte modulaarsuse seisukohalt võrrelda, hinnata ning identifitseerida kõrge veariskiga komponendid, mida tuleks modulaarsuse ja parema kvaliteedi saavutamiseks restruktureerida. Analüütik saab mudelit rakendada enne komponentide realiseerimisse suunamist ja nii avastada analüüsivead palju efektiivsemalt.
Modularity is a general set of design principles for managing the complexity of large systems. It involves breaking down the system into separate, independent components that communicate with each other through standardized interfaces or rules and specifications. Modularity creates options and makes development and maintenance process much easier to handle. The topic of modularity is more often the focal point when designing the software architectures. However, the aim of this work is to investigate aspects related to modularity in the system analysis phase that precedes and dominates coding. Although the decisions of system analyst are influenced by software architecture and development environment, there are still many choices how to divide the system into components and how the components are connected. If the aspects of modularity are ignored by analysts, those decisions could have cascading negative effect on the system quality while logical and clear structure of components and dependencies will facilitate further development and maintenance process. In this thesis we investigate how modularity can be achieved on a system analysis phase. To assess design modularity quantitatively and objectively, we propose a framework to measure the modularity properties in a software analysis phase. A goal-question-metric approach is used to derive the different metrics in this framework. More specifically, we define measures to quantify coupling, cohesion, complexity and size of components based on the artifacts of system analysis. In order to validate the framework, a case study is conducted. Firstly, dependency analysis tool was developed that represents components dependencies in a dependency structure matrix form. The input of this tool is documentation. Secondly, the matrix is processed according to the coupling and complexity metrics defined before. Size of the component is measured separately. The measurement results can then be used to compare different artifacts of system analysis in terms of their modularity and identify high-risk components that might require redesign. System analyst can apply the method early before coding in order to indicate the possible problem areas of analysis more efficiently.

Description

Keywords

Citation