46 research outputs found
Technical Debt in Software Development : Examining Premises and Overcoming Implementation for EïŹcient Management
Software development is a unique ïŹeld of engineering: all software constructs retain their modiïŹability â arguably, at least â until client release, no single project stakeholder has exhaustive knowledge about the project, and even this portion of the knowledge is generally acquired only at project completion. These characteristics imply that the ïŹeld of software development is subject to design decisions that are known to be sub-optimalâeither deliberately emphasizing interests of particular stakeholders or indeliberately harming the project due to lack of exhaustive knowledge. Technical debt is a concept that accounts for these decisions and their eïŹects. The conceptâs intention is to capture, track, and manage the decisions and their products: the aïŹected software constructs.
Reviewing the previous, it is vital for software development projects to acknowledge technical debt both as an enabler and as a hindrance. This thesis looks into facilitating eïŹcient technical debt management for varying software development projects. In the thesis, examination of technical debtâs role in software development produces the premises on to which a management implementation approach is introduced.
The thesis begins with a revision of motivations. Basing on prior research in the ïŹelds of technical debt management and software engineering in general, the ïŹve motivations establish the premises for technical debt in software development. These include notions of subjectivity in technical debt estimation, update frequency demands posed on technical debt information, and technical debtâs polymorphism. Three research questions are derived from the motivations. They ask for tooling support for technical debt management, capturing and modelling technical debt propagation, and characterizing software development environments and their technical debt instances. The questions imply consecutive completion as the ïŹrst pursued tool would beneïŹt fromâpossibly automatically assessableâpropagation models, and ïŹnally the toolâs introduction to software development organizations could be assisted by tailoring it based on the software development environment and the technical debt instance characterizations.
The thesis has seven included publications. In introducing them, the thesis maps their backgrounds to the motivations and their outcomes to the research questions. Amongst the outcomes are the DebtFlag tool for technical debt management, the procedures for retrospectively capturing technical debt from software repositories, a procedure for technical debt propagation model creation from these retrospectives, and a multi-national survey characterizing software development environments and their technical debt instances.
The thesis concludes that the tooling support, the technical debt propagation modelling, and the software environment and technical debt instance characterization describe an implementation approach to further eïŹcient technical debt management. Simultaneously, future work is implied as all previously described eïŹorts need to be continued and extended. Challenges also remain in the introduced approach. An example of this is the combinatorial explosion of technology-development-context-combinations that technical debt propagation modelling needs to consider. All combinations have to be managed if exhaustive modelling is desired. There is, however, a great deal of motivation to pursue these eïŹorts when one re-notes that technical debt is a permanent component of software development that, when correctly managed, is a development eïŹciency mechanism comparable to a ïŹnancial loan investment.Ohjelmistokehitys on uniikki tekniikan ala: kaikki ohjelmistorakenteet sĂ€ilyttĂ€vĂ€t muokattavuutensa â otaksuttavasti ainakin â asiakasjulkaisuun asti. YhdenkÀÀn projektiosakkaan tietĂ€mys ei kata koko projektia ja merkittĂ€vĂ€ osa tĂ€stĂ€kin tiedosta karttuu vasta projektin suorittamisen aikana. NĂ€mĂ€ ominaisuudet antavat ymmĂ€rtÀÀ, ettĂ€ ohjelmistokehitysala on sellaisten suunnitelupÀÀtösten kohde, joiden tiedetÀÀn olevan epĂ€tĂ€ydellisiĂ€âjoko tarkoituksella tiettyjen projektiosakkaiden intressejĂ€ painottavia tai tahattomasti projektia vahingoittavia puutteelliseen tietoon perustuvia. Tekninen velka on konsepti, joka huomioi nĂ€mĂ€ pÀÀtökset sekĂ€ niiden vaikutukset. Konseptin tarkoitus on havaita, seurata ja hallita nĂ€itĂ€ pÀÀtöksiĂ€ sekĂ€ tuloksena syntyviĂ€ teknisen velan vaikutuksen alla olevia ohjelmistorakenteita.
Edellisen kuvauksen valossa ohjelmistokehitysprojekteille on erityisen tÀrkeÀÀ huomioida tekninen velka sekÀ mahdollistajana ettÀ hidasteena. TÀmÀn vuoksi kyseinen vÀitöskirja perehtyy tehokkaan teknisen velan hallinnan fasilitointiin moninaisille ohjelmistokehitysprojekteille. VÀitöskirjassa tarkastellaan teknisen velan roolia osana ohjelmistokehitystÀ. Tarkastelu tuottaa joukon premissejÀ, joihin perustuen esitellÀÀn lÀhestymistapa teknisen velan hallinnan toteuttamiselle.
Viisi vĂ€itöskirjan alussa esitettyĂ€ motivaatiota kiinnittĂ€vĂ€t ne premissit,joille ratkaisu esitetÀÀn. Motivaatiot rakennetaan olemassa olevaan teknisen velan sekĂ€ ohjelmistotekniikan tutkimustietoon perustuen. NĂ€ihin lukeutuvat muun muassa subjektiivisuus teknisen velan estimoinnissa, teknisen velan informaatiolle nĂ€hdyt pĂ€ivitystaajuusvaatimukset sekĂ€ teknisen velan polymorïŹsmi. Havainnoista johdetaan kolme tutkimuskysymystĂ€. Ne tavoittelevat työkalutukea teknisen velan hallinnalle, velan propagoitumisen havainnointia sekĂ€ mallinnusta kuin myös ohjelmistotuotantoympĂ€ristöjen ja niiden velka instanssien kuvaamista. Tutkimuskysymykset implikoivat perĂ€kkĂ€istĂ€ suoritusta: tavoiteltu työkalu hyötyyâmahdollisesti automaattisesti arvoitavistaâteknisen velan propagaatiomalleista. Valmiin työkalun kĂ€yttöönottoa voidaan taas edistÀÀ jos kuvaukset kehitysympĂ€ristöistĂ€ sekĂ€ niiden velkainstansseista ovat kĂ€ytettĂ€vissĂ€ työkalun rÀÀtĂ€löintiin.
VÀitöskirjaaan sisÀltyy seitsemÀn julkaisua. VÀitöskirja esittelee ne kiinnittÀmÀllÀ julkaisujen taustatyön aikaisemmin mainittuihin motivaatioihin sekÀ niiden tulokset edellisiin tutkimuskysymyksiin. Tuloksista huomioidaan esimerkiksi DebtFlag-työkalu teknisen velan hallintaan, retrospektiivinen prosessi teknisen velan kartoittamiselle versionhallintajÀrjestelmistÀ, prosessi teknisen velan mallien rakentamiselle nÀistÀ kartoituksista ja monikansallinen kyselytutkimus ohjelmistokehitysympÀristöjen sekÀ nÀiden teknisen velan instanssien luonnehtimiseksi.
VĂ€itöskirjan yhteenvetona huomioidaan, ettĂ€ teknisen velan hallinnan työkalutuki, teknisen velan propagaatiomallinnus ja ohjelmistokehitysympĂ€ristöjen sekĂ€ niiden teknisen velan instanssien luonnehdinta muodostavat toteutustavan, jolla teknisen velan tehokasta hallintaa voidaan kehittÀÀ. Samalla implikoidaan jatkotoimia, sillĂ€ kaikkia edellĂ€ kuvattuja työn osia tulee jatkaa ja laajentaa. Toteutustavalle nĂ€hdÀÀn myös haasteita. ErĂ€s nĂ€istĂ€ on kombinatorinen rĂ€jĂ€hdys teknologia- ja kehityskontekstikombinaatioille. Kaikki kombinaatiot tulee huomioida mikĂ€li teknisen velan propagaatiomallinnuksesta halutaan kattavaa. Motivaatio vĂ€itöskirjassa esitetyn työn jatkamiselle on huomattavaa ja sitĂ€ kasvattaa entuudestaan edellĂ€ tehty huomio siitĂ€, ettĂ€ tekninen velka on pysyvĂ€ komponentti ohjelmistokehityksessĂ€, joka oikein hallittuna on kehitystehokkuutta edistĂ€vĂ€nĂ€ komponenttina verrattavissa ïŹnanssialan lainainvestointiin.Siirretty Doriast
Genetic Algorithms in Software Architecture Synthesis
Ohjelmistoarkkitehtuurien suunnittelu on kriittinen vaihe ohjelmistokehitystÀ, sillÀ arkkitehtuuri mÀÀrittelee ohjelmiston rungon: miten ohjelma jaetaan eri komponentteihin, ja miten komponentit ovat yhteydessÀ toisiinsa. Ohjelmisto voidaan yleensÀ toteuttaa toimivasti monella eri tavalla, mutta toimiva toteutus ei aina takaa, ettÀ ohjelmisto on myös toteutettu laadukkaasti. Laadun takeena onkin huolella ja taidolla suunniteltu arkkitehtuuri.
Ohjelmistoarkkitehtuurin suunnittelu on haastavaa. Suunnitelmaa tehdessÀ tulee ottaa huomioon monen eri sidosryhmÀn (esim. kÀyttÀjÀ, toteuttaja, markkinoija) vaatimukset ja miettiÀ, miten mahdollisimman suuri osa vaatimuksista voidaan toteuttaa arkkitehtuurissa. Arkkitehtuurisuunnittelu vaatiikin kokeneen ohjelmistoarkkitehdin, joka on hankkinut tietotaitonsa vuosien ajalta eri ohjelmistoprojekteista. Kokemukseen perustuvan tiedon lisÀksi ohjelmistoarkkitehtuurisuunnittelun kÀytÀntöjÀ on koottu erÀÀnlaisiksi katalogeiksi, joissa esitellÀÀn hyvÀksi havaittuja ratkaisuja, ns. suunnittelutyylejÀ ja -malleja, yleisiin arkkitehtuurisuunnitteluongelmiin. Voidaankin ajatella, ettÀ arkkitehtuuri tuotetaan etsimÀllÀ (kokemukseen nojaten) paras mahdollinen kombinaatio suunnittelumalleja ja -tyylejÀ. Arkkitehtuurin suunnittelu onkin siis erÀÀnlainen optimointiongelma.
Ohjelmistoista tulee jatkuvasti yhÀ monimutkaisempia. Sovelluksien monimutkaistuessa myös arkkitehtuurisuunnittelu muuttuu entistÀ vaikeammaksi ja vie yhÀ enemmÀn aikaa. Suunnittelun perustuminen hiljaiseen tietoon ja arkkitehtien kokemukseen tekee prosessista yhÀ hitaamman ja lÀpinÀkymÀttömÀmmÀn. Arkkitehtuurisuunnittelun automatisointi toisikin suuria sÀÀstöjÀ. Henkilöstövaihdosten yhteydessÀ ei myöskÀÀn tarvitsisi pelÀtÀ tietotaidon katoamista, kun arkkitehtuurisuunnittelu olisi helposti toistettavissa aina alusta lÀhtien. TÀssÀ vÀitöskirjassa on tutkittu, miten parhaan mahdollisen ratkaisun etsintÀprosessin (eli suunnittelumallien ja -tyylien soveltamisen) voisi automatisoida.
Monimutkaisissa optimointiongelmissa kÀytetÀÀn etsintÀalgoritmeja, jotka haravoivat hakuavaruutta jollain satunnaistetulla menetelmÀllÀ. Yksi suosituimmista etsintÀalgoritmeista on geneettinen algoritmi. Geneettiset algoritmit tarkastelevat aina pientÀ ratkaisujoukkoa kerrallaan ja etsivÀt parasta ratkaisua yhdistelemÀllÀ osia löydetyistÀ ratkaisuista sekÀ muuntelemalla ratkaisuja. Jokaiselle ratkaisulle lasketaan laatuarvo, ja luonnonvalintaa jÀljitellen jatketaan parhaiden vaihtoehtojen tarkastelua sekÀ kehittelyÀ ja hylÀtÀÀn huonoimmat ratkaisut. EtsintÀalgoritmien kÀyttÀmistÀ ohjelmistokehityksen ongelmiin, esim. ohjelmistosuunnitteluun, testaukseen ja projektinhallintaan, kutsutaan etsintÀperustaiseksi ohjelmistokehitykseksi.
VÀitöskirja kuuluu etsintÀperustaisen ohjelmistosuunnittelun alaan, ja siinÀ tutkitaan ns. ohjelmistoarkkitehtuurisynteesiÀ geneettisten algoritmien avulla. Ohjelmistoarkkitehtuurisynteesi lÀhtee ns. nolla-arkkitehtuurista , joka toteuttaa jÀrjestelmÀn toiminnalliset vaatimukset, mutta ei ota kantaa laatuvaatimuksiin. Laatua pyritÀÀn parantamaan lisÀÀmÀllÀ lÀhtöarkkitehtuuriin suunnittelutyylejÀ ja -malleja. VÀitöskirjassa laatuarviointiin on kÀytetty muunneltavuutta, tehokkuutta ja ymmÀrrettÀvyyttÀ. Lopputuloksena saadaan ehdotus arkkitehtuurista, joka toteuttaa toiminnalliset vaatimukset ja on myös laadukas. GeneettisiÀ algoritmeja ei ole aiemmin sovellettu vastaavantasoisiin suunnitteluongelmiin, joten toteutuksessa on kehitetty uusi tapa mallintaa arkkitehtuuri geneettiselle algoritmille sekÀ laskukaava arkkitehtuurin laadulle. Perustoteutuksen lisÀksi myös geneettisen algoritmin eri ominaisuuksia, ns. risteytysoperaatiota ja laatufunktiota on tutkittu tarkemmin, ja niille on kehitetty vaihtoehtoisia toteutuksia. Tapaustarkasteluista saadut tulokset osoittavat, ettÀ tÀllÀ hetkellÀ geneettisiin algoritmeihin perustuvaa arkkitehtuurisynteesi tuottaa suunnilleen samantasoisia ratkaisuja kuin kolmannen vuosikurssin ohjelmistotekniikan opiskelija.This thesis presents an approach for synthesizing software architectures with genetic algorithms. Previously in the literature, genetic algorithms have been mostly used to improve existing architectures. The method presented here, however, focuses on upstream design. The chosen genetic construction of software architectures is based on a model which contains information on functional requirements only. Architecture styles and design patterns are used to transform the initial high-level model to a more detailed design. Quality attributes, here modifiability, efficiency and complexity, are encoded in the algorithm s fitness function for evaluating the produced solutions. The final solution is given as a UML class diagram. While the main contribution is introducing the method for architecture synthesis, basic tool support for the implementation is also presented.
Two case studies are used for evaluation. One case study uses the sketch for an electronic home control system, which is a typical embedded system. The other case study is based on a robot war game simulator, which is a typical framework system. Evaluation is mostly based on fitness graphs and (subjective) evaluation of produced class diagrams.
In addition to the basic approach, variations and extensions regarding crossover and fitness function have been made. While the standard algorithm uses a random crossover, asexual reproduction and complementary crossover are also studied. Asexual crossover corresponds to real-life design situations, where two architectures are rarely combined. Complementary crossover, in turn, attempts to purposefully combine good parts of two architectures.
The fitness function is extended with the option to include modifiability scenarios, which enables more targeted design decisions as critical parts of the architecture can be evaluated individually. In order to achieve a wider range of solutions that answer to competing quality demands, a multi-objective approach using Pareto optimality is given as an alternative for the single weighted fitness function. The multi-objective approach evaluates modifiability and efficiency, and gives as output the class diagrams of the whole Pareto front of the last generation. Thus, extremes for both quality attributes as well as solutions in the middle ground can be compared.
An experimental study is also conducted where independent experts evaluate produced solutions for the electronic home control. Results show that genetic software architecture synthesis is indeed feasible, and the quality of solutions at this stage is roughly at the level of third year software engineering students
Tradespace and Affordability â Phase 2
MOTIVATION AND CONTEXT: One of the key elements of the SERCâs research strategy is transforming the practice of systems engineering â âSE Transformation.â The Grand Challenge goal for SE Transformation is to transform the DoD communityâs current systems engineering and management methods, processes, and tools (MPTs) and practices away from sequential, single stovepipe system, hardware-first, outside-in, document-driven, point-solution, acquisition-oriented approaches; and toward concurrent, portfolio and enterprise-oriented, hardware-software-human engineered, balanced outside-in and inside-out, model-driven, set-based, full life cycle approaches.This material is based upon work supported, in whole or in part, by the U.S. Department of Defense through the Office of the Assistant Secretary of Defense for Research and Engineering (ASD(R&E)) under Contract H98230-08- D-0171 (Task Order 0031, RT 046).This material is based upon work supported, in whole or in part, by the U.S. Department of Defense through the Office of the Assistant Secretary of Defense for Research and Engineering (ASD(R&E)) under Contract H98230-08- D-0171 (Task Order 0031, RT 046)
A framework to improve the architecture quality of software intensive systems
Over the past decade, the amount and complexity of software for almost any business sector has increased substantially. Unfortunately, the increased complexity of software in the systems to be built has often lead to a significant mismatch between the planned and the implemented products. One common problem is that system-wide quality attributes such as safety, reliability, performance, and modifiability are not sufficiently considered in software architecture design. Typically, they are addressed in an ad-hoc and unstructured fashion. Since rationales for architectural decisions are frequently missing, risks associated with those decisions can be neither identified, nor mitigated in a systematic way. Consequently, there is a high probability that the resulting software architecture fails to meet business goals and does not allow the building of an adequate system.
This work presents QUADRAD, a framework for Quality-Driven Architecture Development. QUADRAD is capable of improving architecture quality for software-intensive systems in a systematic way. It supports the development of architectures that are optimized according to their essential quality requirements. Such architectures permit the building of systems that are better aligned to the principal market needs and business goals. QUADRAD is complemented by the Architecture Exploration Tool (AET), which supports architecture evaluations and helps in documenting the fundamental design decisions of an architecture.
QUADRAD has been validated in three industrial projects. For each of these projects the architecture quality could be significantly increased. The results confirm the hypothesis of this work and demonstrate how critical problems in the transition from requirements to architecture design can be mitigated
PROACTIVE COMPUTING PARADIGM APPLIED TO THE PROGRAMMING OF ROBOTIC SYSTEMS
This doctoral thesis is concerned with the development of advanced software for robotic systems, an area still in its experimental infancy, lacking essential methodologies from generic software engineering. A significant challenge within this domain is the absence of a well-established separation of concerns from the design phase. This deficiency is exemplified by Navigation 2, a realworld reference application for (semi-) autonomous robot journeys developed for and on top of the Robot Operating System (ROS): the projectâs leading researchers encountered difficulties in maintaining and evolving their complex software, even for supposed-to-be straightforward new functions, leading to a halt in further development. In response, this thesis first presents an alternative design and implementation approach that not only rectifies the issues but also elevates the programming level of consistent robot behaviors.
By leveraging the proactive computing paradigm, our dedicated software engineering model provides programmers with enhanced code extension, reusability and maintenance capabilities. Furthermore, a key advantage of the model lies in its dynamic adaptability via on-the-fly strategy change in decision-making. Second, in order to provide a comprehensive evaluation
of the two systems, an exhaustive comparative study between Navigation 2 and the same application implemented along the lines of our model, is conducted.
This study covers thorough assessments at both compile-time and runtime. Software metrics such as coupling, lack of cohesion, complexity, and various size measures are employed to quantify and visualize code quality and efficiency attributes. The CodeMR software tool aids in visualizing these metrics, while runtime analysis involves monitoring CPU and memory
usage through the Datadog monitoring software. Preliminary findings indicate that our implementation either matches or surpasses Navigation 2âs performance while simultaneously enhancing code structure and simplifying modifications and extensions of the code base
Mutable Class Design Pattern
The dissertation proposes, presents and analyzes a new design pattern, the Mutable Class pattern, to support the processing of large-scale heterogeneous data models with multiple families of algorithms. Handling data-algorithm associations represents an important topic across a variety of application domains. As a result, it has been addressed by multiple approaches, including the Visitor pattern and the aspect-oriented programming (AOP) paradigm. Existing solutions, however, bring additional constraints and issues. For example, the Visitor pattern freezes the class hierarchies of application models and the AOP-based projects, such as Spring AOP, introduce significant overhead for processing large-scale models with fine-grain objects. The Mutable Class pattern addresses the limitations of these solutions by providing an alternative approach designed after the Class model of the UML specification. Technically, it extends a data model class with a class mutator supporting the interchangeability of operations.
Design patterns represent reusable solutions to recurring problems. According to the design pattern methodology, the definition of these solutions encompasses multiple topics, such as the problem and applicability, structure, collaborations among participants, consequences, implementation aspects, and relation with other patterns. The dissertation provides a formal description of the Mutable Class pattern for processing heterogeneous tree-based models and elaborates on it with a comprehensive analysis in the context of several applications and alternative solutions. Particularly, the commonality of the problem and reusability of this approach is demonstrated and evaluated within two application domains: computational accelerator physics and compiler construction. Furthermore, as a core part of the Unified Accelerator Library (UAL) framework, the scalability boundary of the pattern has been challenged and explored with different categories of application architectures and computational infrastructures including distributed three-tier systems.
The Mutable Class pattern targets a common problem arising from software engineering: the evolution of type systems and associated algorithms. Future research includes applying this design pattern in other contexts, such as heterogeneous information networks and large-scale processing platforms, and examining variations and alternative design patterns for solving related classes of problems
Adaptation de services dans un espace intelligent sensible au contexte
GrĂące Ă lâapparition des paradigmes de lâintelligence ambiante, on assiste Ă lâĂ©mergence de nouveaux systĂšmes intelligents ambiants visant Ă crĂ©er et gĂ©rer des environnements intelligents dâune façon intuitive et transparente. Ces environnements sont des espaces intelligents caractĂ©risĂ©s notamment par lâouverture, lâhĂ©tĂ©rogĂ©nĂ©itĂ©, lâincertitude et la dynamique des entitĂ©s qui les constituent. Ces caractĂ©ristiques soulĂšvent ainsi des defies scientifiques considĂ©rables pour la conception et la mise en place dâun systĂšme intelligent adĂ©quat. Ces dĂ©fis sont principalement au nombre de trois : lâabstraction et la gestion du contexte, la sensibilitĂ© au contexte et lâauto-adaptation face aux changements imprĂ©visibles qui peuvent se produire dans un environnement ambiant.
Dans cette thĂšse, nous avons proposĂ© une architecture dâun systĂšme intelligent capable dâadapter les services selon les besoins des utilisateurs en tenant compte, dâune part, du contexte environnemental et de ses diffĂ©rents Ă©quipements et dâautre part, des besoins variables exprimĂ©s par les utilisateurs. Ce systĂšme est construit suivant un modĂšle sensible au contexte, adaptatif et rĂ©actif aux Ă©vĂšnements. Il se repose sur des entitĂ©s modulaires de faible couplage et de forte cohĂ©sion lui permettant dâĂȘtre flexible et efficace. Ce systĂšme integer Ă©galement un module dâadaptation de services afin de repĂ©rer le contexte et de lâajuster dynamiquement suivant les attentes des utilisateurs. Cette adaptation est rĂ©alisĂ©e via deux algorithmes : le premier est un algorithme par renforcement (Q-learning), le deuxiĂšme est un algorithme supervisĂ© (CBR). Lâhybridation de ces deux algorithmes permet surmonter les inconvĂ©nients de Q-learning pour aboutir Ă une nouvelle approche capable de gĂ©rer le contexte, sĂ©lectionner et adapter le service
Working Notes from the 1992 AAAI Workshop on Automating Software Design. Theme: Domain Specific Software Design
The goal of this workshop is to identify different architectural approaches to building domain-specific software design systems and to explore issues unique to domain-specific (vs. general-purpose) software design. Some general issues that cut across the particular software design domain include: (1) knowledge representation, acquisition, and maintenance; (2) specialized software design techniques; and (3) user interaction and user interface