3,421 research outputs found

    DEPENDENCY-BASED REACTIVE CHANGE PROPAGATION DESIGN PATTERN APPLIED TO ENVIRONMENTS WITH HIGH UNPREDICTABILITY

    Get PDF
    Transitional turbulence is a period of chaotic or unreliable variation in the state of a software system that results from changes in the system’s interconnected components. During these periods of instability, an external observer of the system’s state may “see” erroneous results. This is a problem that can affect visual user interfaces such as those in virtual and augmented reality applications and desktop or Web GUIs. In this research, we study two different reactive applications developed in C# on .NET. We reduce the transitional turbulence by augmenting the base applications with a dependency-graph-based event scheduling approach. The first study investigates desktop and Web GUIs. The second study investigates virtual and augmented reality applications built on the Unity3D game engine. The two studies use similar approaches, but both are somewhat embedded in the details of their applications and implementation platforms. In addition to presenting the two augmented applications, this dissertation characterizes the problem and its solution in a more general way. To do so, we use a design pattern to state the general problem-solution pair and enable it to be reused in similar contexts. We examine the two studies to identify their commonalities. We then unify the approaches by writing a new design pattern named Dynamically Coalescing Reactive Chains (DCRC). This dissertation both presents the new design pattern and records the systematic process we used to write it. To evaluate the design pattern and its usage, we apply it to the application in the first study as if we were approaching the application anew. The DCRC pattern facilitates the use of our approach for other applications and technologies and lays the foundation for further research on transitional turbulence and related software architecture issues

    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

    A network transparent, retained mode multimedia processing framework for the Linux operating system environment

    Get PDF
    Die Arbeit prĂ€sentiert ein Multimedia-Framework fĂŒr Linux, das im Unterschied zu frĂŒheren Arbeiten auf den Ideen "retained-mode processing" und "lazy evaluation" basiert: Statt Transformationen unmittelbar auszufĂŒhren, wird eine abstrakte ReprĂ€sentation aller Medienelemente aufgebaut. "renderer"-Treiber fungieren als Übersetzer, die diese Darstellung zur Laufzeit in konkrete Operationen umsetzen, wobei das Datenmodell zahlreiche Optimierungen zur Reduktion der Anzahl der Schritte oder der Minimierung von Kommunikation erlaubt. Dies erlaubt ein stark vereinfachtes Programmiermodell bei gleichzeitiger Effizienzsteigerung. "renderer"-Treiber können zur AusfĂŒhrung von Transformationen den lokalen Prozessor verwenden, oder können die Operationen delegieren. In der Arbeit wird eine Erweiterung des X Window Systems um Mechanismen zur Medienverarbeitung vorgestellt, sowie ein "renderer"-Treiber, der diese zur Delegation der Verarbeitung nutzt

    The Architecture of Contract Innovation

    Get PDF
    Contract law and the formal models of contract economics assume that agreements are fully customized. On the other hand, recent legal research highlights the role standardized terms play in contract design. Those lines of research overlook an important class of contracts between those extremes. Many contracts, such as the merger agreements studied here, are complex combinations of customized and standardized terms, and thereby achieve economies of both scale and scope. Such contracts are “mass customized,” to borrow a term from engineering research. This Article introduces a theoretical framework for understanding how mass customization of such complex agreements is achieved. It adds to recent scholarship that applies modularity theory to the design of complex agreements by introducing an alternative approach—flexible specialization. It then introduces empirical methods for studying the structure of complex agreements. Using hand-collected data from samples of public company merger agreements and of the teams of deal lawyers that designed them, this Article presents the results of a preliminary empirical study that finds that the architecture of mass customized contracts reflects the logic of flexible specialization rather than modular design. The picture of contract design that emerges is of agreements built upon a flexible architecture provided by a dynamic cluster of experts, more similar to the industrial districts of Emilia-Romagna in Italy than Ford Motor Company’s fabled Highland Park assembly line. Those preliminary results suggest important implications for doctrine, policy, and research. In regard to doctrine, this Article adds a missing dimension to recent attempts to articulate a non-unitary theory of U.S. contract law. With respect to policy, evidence that flexible specialization underpins the infrastructure of the mergers and acquisitions (M&A) market challenges deterministic accounts of the legal industry’s transformation, and illuminates the overlooked trade-offs presented by recent arguments to further standardize complex contracting. Finally, in regard to research, this Article provides a basis for much needed theoretical and empirical work on the interaction effects between governance mechanisms within an agreement

    Analysis domain model for shared virtual environments

    Get PDF
    The field of shared virtual environments, which also encompasses online games and social 3D environments, has a system landscape consisting of multiple solutions that share great functional overlap. However, there is little system interoperability between the different solutions. A shared virtual environment has an associated problem domain that is highly complex raising difficult challenges to the development process, starting with the architectural design of the underlying system. This paper has two main contributions. The first contribution is a broad domain analysis of shared virtual environments, which enables developers to have a better understanding of the whole rather than the part(s). The second contribution is a reference domain model for discussing and describing solutions - the Analysis Domain Model

    Model-based risk assessment

    Get PDF
    In this research effort, we focus on model-based risk assessment. Risk assessment is essential in any plan intended to manage software development or maintenance process. Subjective techniques are human intensive and error-prone. Risk assessment should be based on architectural attributes that we can quantitatively measure using architectural level metrics. Software architectures are emerging as an important concept in the study and practice of software engineering nowadays, due to their emphasis on large-scale composition of software product, and to their support for emerging software engineering paradigms, such as product line engineering, component based software engineering, and software evolution.;In this dissertation, we generalize our earlier work on reliability-based risk assessment. We introduce error propagation probability in the assessment methodology to account for the dependency among the system components. Also, we generalize the reliability-based risk assessment to account for inherent functional dependencies.;Furthermore, we develop a generic framework for maintainability-based risk assessment which can accommodate different types of software maintenance. First, we introduce and define maintainability-based risk assessment for software architecture. Within our assessment framework, we investigate the maintainability-based risk for the components of the system, and the effect of performing the maintenance tasks on these components. We propose a methodology for estimating the maintainability-based risk when considering different types of maintenance. As a proof of concept, we apply the proposed methodology on several case studies. Moreover, we automate the estimation of the maintainability-based risk assessment methodology

    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