46 research outputs found

    Technical Debt in Software Development : Examining Premises and Overcoming Implementation for EïŹƒcient Management

    Get PDF
    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

    Get PDF
    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

    Get PDF
    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

    Get PDF
    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

    Get PDF
    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

    Get PDF
    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

    Get PDF
    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

    Get PDF
    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
    corecore