21 research outputs found
Visualizing and Measuring Enterprise Application Architecture: An Exploratory Telecom Case
We test a method for visualizing and measuring enterprise application architectures. The method was designed and previously used to reveal the hidden internal architectural structure of software applications. The focus of this paper is to test if it can also uncover new facts about the applications and their relationships in an enterprise architecture, i.e., if the method can reveal the hidden external structure between software applications. Our test uses data from a large international telecom company. In total, we analyzed 103 applications and 243 dependencies. Results show that the enterprise application structure can be classified as a core-periphery architecture with a propagation cost of 25%, core size of 34%, and architecture flow through of 64%. These findings suggest that the method could be effective in uncovering the hidden structure of an enterprise application architecture
Measuring modularity in software analysis phase
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
Property-based Software Engineering Measurement
Little theory exists in the field of software system measurement.
Concepts such as complexity, coupling, cohesion or even size are very
often subject to interpretation and appear to have inconsistent
definitions in the literature. As a consequence, there is little guidance
provided to the analyst attempting to define proper measures for specific
problems. Many controversies in the literature are simply
misunderstandings and stem from the fact that some people talk about
different measurement concepts under the same label (complexity is the
most common case).
There is a need to define unambiguously the most important
measurement concepts used in the measurement of software products. One way
of doing so is to define precisely what mathematical properties characterize
these concepts, regardless of the specific software artifacts to which these
concepts are applied. Such a mathematical framework could generate a
consensus in the software engineering community and provide a means for
better communication among researchers, better guidelines for analysts, and
better evaluation methods for commercial static analyzers for practitioners.
In this paper, we propose a mathematical framework which is generic,
because it is not specific to any particular software artifact, and
rigorous, because it is based on precise mathematical concepts. This
framework defines several important measurement concepts (size, length,
complexity, cohesion, coupling). It does not intend to be complete or fully
objective; other frameworks could have been proposed and different choices
could have been made. However, we believe that the formalisms and properties
we introduce are convenient and intuitive. In addition, we have reviewed the
literature on this subject and compared it with our work. This framework
contributes constructively to a firmer theoretical ground of software
measurement.
(Also cross-referenced as UMIACS-TR-94-119
Assessing the Reuse Potential of Objects.
In this research, we investigate whether reusable classes can be characterized by object-oriented (OO) software metrics. Three class-level reuse measures for the OO paradigm are defined: inheritance-based reuse, inter-application reuse by extension, and inter-application reuse as a server. Using data from a software company, we collected metrics on Smalltalk classes. Among the 20 metrics collected are cyclomatic complexity, Lorenz complexity, lines of code, class coupling, reuse ratio, specialization ratio and number of direct subclasses. We used stepwise regression to derive prediction models incorporating the 20 metrics as the independent variables and the reuse measures, applied separately, as the dependent variable. Inheritance-based reuse and inter-application reuse by extension can be predicted using a subset of the 20 metrics. Two prediction models for inheritance-based reuse and inter-application reuse by extension were validated using a new set of 310 Smalltalk and VisualAge applications and subapplications. Validation results show that it is possible to predict whether a class from one application can be reused by extension in another application. We also conducted a t-test to test whether the mean metric values between reusable and non-reusable classes are the same. Results suggest that there exists significant differences in the mean metric values between the reusable and non-reusable classes
Robotin ajurijärjestelmän modularisointi liitännäisarkkitehtuurilla
Factory lines are nowadays filled with intelligent systems that can perform various tasks without human interaction. To reach the current level of intelligence and automation, The significance of software in industrial robotics has increased dramatically. That creates new challenges in software design for such environments, which are then tackled with new software platforms and frameworks.
This thesis takes an existing test automation platform and designs a new architecture based on plugins for it. The platform is used in functional testing of smartphones. The redesign aims to increase the modularity of the architecture, and thus allow for a more flexible deployment of the system in various hardware configurations.
To verify the successfulness of the new architecture, a modularity analysis is performed for both the old and the new architectures. The analysis focuses on cohesion and coupling of the classes and modules in the systems. Both the old and the new platforms are implemented in Python, so the research process will evaluate the feasibility of manual modularity analysis for a dynamically typed programming language, as these kind of analyses are usually performed on a statically typed languages utilizing static analysis tools.
The new architecture was shown to increase the cohesion, and decrease the coupling of the platform, which indicates an increase in the overall modularity of the platform. The analysis itself was found to be tedious, and the dynamic nature of Python increases the chance of errors in determining the coupling and cohesion of a component. A possibility of modifying a refactoring tool to aid in a such analysis was discussed.Tehdaslinjastot koostuvat nykyään älykkäistä järjestelmistä, jotka kykenevät toimimaan ilman ihmisen ohjausta. Merkittävä tekijä tämän muutoksen takana on ohjelmistojen kehittyminen, ja niiden merkityksen kasvu teollisuudessa. Tämä luo ohjelmistosuunnitteluun uusia haasteita, joita on ratkottu uusilla sovellusalustoilla ja -kehyksillä.
Tässä tutkielmassa toteutetaan uusi ohjelmistoarkkitehtuuri testiautomaatiorobotille käyttäen liitännäisarkkitehtuuria. Tavoitteena on kasvattaa alustan modulaarisuutta, mikä mahdollistaa sen joustavan käytön erilaisissa järjestelmissä, jotka koostuvat erilaisista roboteista, antureista ja sensoreista.
Uuden toteutuksen soveltuvuuden varmistamiseksi tässä tutkielmassa suoritetaan modulaarisuusanalyysi molemmille järjestelmille. Analyysissä perehdytään järjestelmien luokkien ja moduulien yhteenkuuluvuuteen (eng. cohesion) sekä riippuvuuksiin (eng. coupling). Järjestelmä toteutetaan Python-kielellä, joten tutkimuksessa selvitetään modulaarisuusanalyysin soveltuvuutta dynaamisesti tyypitetylle ohjelmointikielelle.
Tutkimuksessa todettiin luokkien yhteenkuuluvuuden kasvaneen ja moduulien riippuvuuksien vähentyneen, mikä kertoo järjestelmän modulaarisuuden kasvusta. Analyysi itsessään todettiin työlääksi, ja sen huomattiin kasvattavan tulosten virhettä, koska moduulien väliset vuorovaikuttamiset eivät välttämättä olleet yksikäsitteisiä. Tutkimuksessa pohdittiin mahdollisuudesta muokata olemassa olevia refaktorointityökaluja siten, että niitä voisi hyödyntää tämänkaltaisen analyysin tekemisessä
Construção de uma ferramenta flexível de base histórica de medição
Trabalho de Conclusão de Curso (graduação)—Universidade de Brasília, Faculdade UnB Gama, 2018.A medição é uma área importante na engenharia de software, uma vez que ela permite
que as organizações consigam fazer estimativas confiáveis sobre prazo, custo e qualidade.
Desenvolver um processo de medição bem definido, baseado nos objetivos de negócio,
fornece uma fonte de informação confiável para tomada de decisões nos projetos. Problemas
relacionados à criação e à manutenção de uma base histórica de medição são
recorrentes nas organizações que trabalham com desenvolvimento de software, uma vez
que não existem muitas ferramentas que mantém a base histórica das métricas e que
existe falta de flexibilidade na criação e edição das métricas na maioria das ferramentas
medição disponíveis. Diante deste problema, este trabalho tem como objetivo desenvolver
uma ferramenta de base história de medição flexível. A metodologia de pesquisa utilizada
foi a revisão sistemática de literatura. Além disso, a metodologia de desenvolvimento foi
uma versão simplificada do Scrum. Os resultados da revisão sistemática apresentam as
ferramentas de métricas listadas na literatura, quais são as suas funcionalidades, suas vantagens
e também desvantagens. Foi obtido também, as principais métricas utilizadas por
essas ferramentas. A ferramenta desenvolvida trabalhou boas práticas de programação,
buscou utilizar das forças que as ferramentas estudadas mostraram e preencheu as lacunas
que essas ferramentas apresentam. Além disso, a ferramenta foi validada por iterações de
Interação Humano Computador e em ambiente real de desenvolvimento de software. Os
resultados dessa validação foram aplicados em melhorias para o sistema. Assim, o objetivo
do estudo foi atingido, uma vez que a ferramenta de base histórica de medições foi
construída e validada utilizando boas técnicas de desenvolvimento de software.Measurement is an important area in software engineering once it enables organizations
to do reliable estimates of time, cost, and quality. Developing a well-defined measurement
process, based on business objectives, provides a reliable source of information for project
decision-making. Problems related to the creation and maintenance of a historical measurement
base are recurrent in organizations that work with software development since
there are few tools that maintain the historical base of the metrics and that there is a lack
of flexibility in the creation and edition of the metrics in the majority measuring tools
available. Faced with this problem, this work aims to develop a flexible measurement
historical base tool. The research methodology used was the systematic review of the
literature. In addition, the development methodology was a simplified version of Scrum.
The results of the systematic review present metrics tools listed in the literature, what
are their functionalities, their advantages and also disadvantages. The main metrics used
by these tools were also obtained. The tool developed used good programming practices,
sought to use the forces that the tools studied showed and filled the gaps that these tools
present. In addition, the tool was validated by Human Computer Interaction iterations
and in real software development environment. The results of this validation were applied
in improvements to the system. Thus, the objective of the study was reached, since
the measurement historical base tool was constructed and validated using good software
development techniques
Software Engineering Laboratory Series: Collected Software Engineering Papers
The Software Engineering Laboratory (SEL) is an organization sponsored by NASA/GSFC and created to investigate the effectiveness of software engineering technologies when applied to the development of application software. The activities, findings, and recommendations of the SEL are recorded in the Software Engineering Laboratory Series, a continuing series of reports that includes this document
Enterprise Information Architecture for the dissemination of Geothermal Data
English: This thesis enables an information system for the dissemination of Geothermal Data by using Enterprise Integration Patterns in an Event Driven Service Oriented Architecture and gives details about the architecture, design and implementation of the system, the technologies and concepts used