DESIGNDIFF: Continuously Modeling Software Design Difference from Code Revisions

Total Page:16

File Type:pdf, Size:1020Kb

DESIGNDIFF: Continuously Modeling Software Design Difference from Code Revisions DESIGNDIFF: Continuously Modeling Software Design Difference from Code Revisions Xiao Wang Lu Xiao Kaifeng Huang Stevens Institute of Technology Stevens Institute of Technology Fudan University Hoboken, United States Hoboken, United States Shanghai, China [email protected] [email protected] [email protected] Bihuan Chen Yutong Zhao Yang Liu Fudan University Stevens Institute of Technology Nanyang Technological University Shanghai, China Hoboken, United States Singapore [email protected] [email protected] [email protected] Abstract—The design structure of a system continuously refactoring following the boy-scout rule: Leave your code better evolves as the consequence of fast-paced code revisions. Agile than you found it. Therefore, developers need a way to quickly techniques, such as continuous testing, ensures the function goals and correctly understand the high-level design differences of a system with every code revision. However, there lacks an efficient approach that can continuously model the design resulting from their own and others’ code revisions. Previous difference resulting from every single code revision to facili- research has developed various techniques to recover the overall tate comprehension and ensure the design quality. This paper design of a software system to improve understanding [10]– contributes a novel design modeling approach, called Design [18]. The limitation is that existing approaches scan the entire Differencing (DESIGNDIFF), that models and visualizes the high- code base to build the design model, and thus are too expensive level design differences resulting from every code revision. This paper defines a complete and general set of 17 design change to apply after every code revision in fast-paced development operators to capture the design difference from any code revision. process. In fact, a code revision usually only alters (if at all) a We evaluated the potential of DESIGNDIFF in three aspects. First, very small part of the design. We argue that it is more efficient a user study of 10 developers indicated that DESIGNDIFF can help to model the design difference by focusing on the changed practitioners to faster and better understand high-level design parts in an incremental fashion. differences from real-life software commits. Second, DESIGN- DIFF analyzed 14,832 real-life commits in five real-life projects: In addition, developers often unintentionally introduce design finding 4,189 commits altered the software design, 855 commits flaws, which are formed by problematic connections among introduced and 337 commits eliminated design flaws. The latency software elements. Previous research has revealed typical design between the flaw introduction and elimination is on average 2 flaws that recur in different projects [19]–[21]. For example, months to 2 years! With an affordable performance overhead, Cyclic Dependency is a group of source files that form a DESIGNDIFF has great potential to benefit practitioners in more applications. dependency cycle. Strong evidences from dozens of real-life Index Terms—software architecture, architecture flaws, reverse projects, both open source and industry, reveal that typical engineering design flaws are responsible for poor maintenance quality and high long-term costs [19], [21]–[23]. The limitation is that I. INTRODUCTION these design flaws usually have already caused significant loss During the past decades, agile methods have gained preva- to the system when they can be detected by existing approaches. lence to enable fast-paced software development [1]–[5]. In practice, due to limited resources, the design flaws were The design structure of a system continuously evolves as seldom eliminated by refactoring and continued causing more the consequence of fast-paced code revisions. Developers loss to the project [24], [25]. We argue that a more effective often unintentionally introduce design flaws that violate well solution is to instantly identify the introduction (as well as the accepted design principles. Overtime, the system becomes ever elimination) of these design flaws with rapid code revisions. challenging to understand and maintain [6]. Agile techniques, This paper contributes an efficient approach, called Design such as continuous testing [7]–[9], ensures the function goals Differencing (DESIGNDIFF). It automatically and efficiently of a system with every code revision. However, there still lacks models and visualizes the essential design differences resulting an efficient approach that can continuously model the design from any code revision as a sequence of design change difference resulting from every single code revision to facilitate operators. This paper defines a comprehensive set of 17 comprehension and ensure the design quality. fundamental design change operators. These operators, applied Many agile methods advocate collective code ownership in combinations and/or in sequences, can capture any drastically and continuous refactoring for enabling the “Built-In Quality” design structure change in a system. The unique advantage of principle. The development team should perform Litter-Pickup our approach is that it focuses on modeling the changed parts, instead of re-modeling the entire design structure of a system. software system as a square matrix [34]–[37]. The rows and As such, it is affordable to be applied after every code commit. columns in a DSM are labeled by the same set of software DESIGNDIFF can also help to instantly detect the introduction design elements in the same order. A cell along the diagonal and elimination of design flaws with rapid code revisions. This represents self-dependency, and a non-empty off-diagonal cell paper contributes the corresponding tool that automatically captures the dependency between the element on the row and generates such design differences and visualization, taking a the element on the column. In Java, there are nine common commit ID and the code base of the system as inputs. The tool types of structural dependencies among source files, extracted developed and data used in this paper can be found here 1. by Understand [32]. In common programming languages like 1) Can DESIGNDIFF facilitate the understanding of the Java and C++, each file usually contains the definition of one high-level design differences resulting from real-life software major class, therefore we use “class” and “file” interchangeably commits? A user study involving 10 developers reviewing for the ease of presentation. Each dependency type is explained 20 real-life software commits of different complexity levels as follows. indicates that DESIGNDIFF can help improve the completeness • fa Implement fb: fa (class) implements fb (interface) and correctness of understanding with less time. In the study, • fa Extend fb: fa (child class) extends fb (parent class) we compared with the code diff viewer from GitHub [26] • fa Call fb: fa calls the methods declared in fb as the baseline. The rationale is that 1) GitHub is the most • fa Throw fb: fa throws an exception of the type of fb accessible tool that highlight code difference in every single • fa Cast fb: fa is casted into the type of fb code commit; and 2) to the best of our knowledge, there • fa Create fb: fa creates an instance of fb is no other available tool that can compute the high-level • fa Typed fb: fa declares a variable of the type of fb design difference from every single code revision. Therefore, • fa Use fb: fa uses a value assigned from the type of fb we believe that DESIGNDIFF can be a handy tool for developers • fa Import fb: fb is imported at the header of fa to perform design review for every single code commit. Fig. 1a presents an example of a file-level DSM of the Maze 2) Can DESIGNDIFF help to instantly detect the introduction Game program (see Section III-A). Cell[1,7] says “Tp, Cr”. It and elimination of design flaws with every single code revision? means that file 1, Door, declares a parameter type of (Typed) We applied DESIGNDIFF on a total of 14,832 commits from five and create an instance of (Create) file 7, Room. open source projects on the Apache Software Foundation [27]. b) Modular Operators We found that only 4,189 (28%) commits altered the design According to the design rule theory proposed by Baldwin structure of a system. DESIGNDIFF further detected that 855 and Clark [33], any complex system is composed of high- (20%) of the 4,189 design structure altering commits introduced level design rules and modules. They proposed to capture four types of architectural flaws, including cyclic dependency, the dynamics of a modular structure by six simple modular parent calls child, sibling call each other and declare child operators, which are a powerful set of conceptual tools to class which violated the SOLID design principles [28], [29]. capture the dynamics of a modular design. These six modular On the contrary, only 337 (8%) commits fixed the flaws. The operators are: latency between the flaw introduction and elimination is on • Augmenting: add a new module to a system average 2 months to 2 years! This indicates that DESIGNDIFF • Excluding: remove a module from a system can help to safeguard the design quality by providing instant • Porting: a module ports the functions from another module warning to developers when design flaws are first introduced. • Inverting: create a new design rule from existing module(s) 3) Finally, the overhead of DESIGNDIFF is averagely from • Splitting: break a module into sub-modules 13 to 29 seconds for analyzing commits in different sizes, • Substituting: replace one module by another module which is affordable to be employed for analyzing every single change. These six operators form the theory of design evolution. They can be applied in combinations and in sequences to drastically II. BACKGROUND change the design structure of a system. In this section, we introduce the fundamental background. III.T HE DESIGNDIFF APPROACH a) Dependency Graph and Design Structure Matrix The Design Differencing (DESIGNDIFF), which can incre- A dependency graph captures the structural dependencies mentally model and visualize the design structure differences among software design elements [30].
Recommended publications
  • Understanding Continuous Design in F/OSS Projects
    Understanding Continuous Design in F/OSS Projects Les Gasser1,2, Walt Scacchi2, Bryan Penne1, and Gabriel Ripoche1,3 Graduate School of Library and Information Science1 University of Illinois, Urbana-Champaign, USA Institute for Software Research2 University of California, Irvine, USA LIMSI-CNRS3 Orsay, France {gasser | bpenne | gripoche @uiuc.edu} {[email protected]} Address for correspondence: Prof. Les Gasser, GSLIS/UIUC, 501 East Daniel Street, Champaign, IL, 61820 USA. Tel: +1-217-265-5021; Fax: +1-217-244-3302; Email: [email protected] Extended Abstract In current research we are studying software maintenance work, bug reporting, and repair in Free/Open Source Software (F/OSS) communities, giving special attention to factors such as knowledge exchange, effectiveness of tool support, social network structures, and organization of project activity. More specifically, we are examining how these factors affect such outcome variables as the time taken to resolve reported problems; the ability to detect interdependent and duplicate problems; the effective scope of repairs (the degree to which the community can address the entire range of software problems that appear, rather than just selected subsets); and the general quality of software. The research process is based on qualitative and computational analysis of large corpuses of large bodies of longitudinal data from Web sites, public repositories, online discussion forums, and online artifacts from F/OSS development projects including networked computer games, Internet/Web infrastructure, X-ray astronomy/deep space imaging, and academic software research. We have access to a number of large collections of current data from these projects, comprising at least six repositories of problem report/analysis activity, with a total of over 500,000 reports, containing approximately 5M individual comments, and involving over 60,000 reporters and developers.
    [Show full text]
  • Rapid Design Using Web Based UI Design Tools, Case: Contriboard
    Rapid design using web based UI design tools, Case: Contriboard Heli Sutinen Bachelor’s Thesis December 2014 Degree Programme in Media Engineering School of Technology, Communication and Transport Description Author(s) Type of publication Date Sutinen, Heli Bachelor’s thesis 12.12.2014 Language of publication: English Number of pages Permission for web English 75 publication: x Title of publication Rapid design using web based UI design tools Case: Contriboard Degree programme Media Engineering Tutor(s) Niemi Kari Assigned by JAMK University of Applied Sciences , Need for Speed Program, Rintamäki Marko Abstract The thesis is assigned by JAMK University of Applied Sciences and Digile Need for Speed Program (N4S). N4S Program acts as an accelerator for a new ways of working from Agile and LEAN development to Real-time Delivery. The program focuses on research in three areas: real time value delivery, deep customer insight and mercury business - finding the new money. The purpose of the thesis was to research web based UI design tools and the effect of tools being part of the software development process. One of the main research questions was to discover if UI design tools speed the development process when used in designing. The research of web based UI design tools was conducted by evaluating and selecting the most suitable ones to support the development process of a product called Contriboard. Contriboard is a brainstorming and collaboration tool and reference product for Need for Speed Program developed by N4S@JAMK team. The evaluation was executed by tripartite testing of UI design tools. The first part included testing of larger amount of tools with the help of three summer trainees.
    [Show full text]
  • What Is Extreme Programming? | Xprogramming.Com
    search Xprogramming » What is Extreme Programming? COLLECTED TOPICS: Kate Oneal | Adventures in C# | Documentation in XP | Book Reviews What is Extreme Programming? Ron Jeffries 11/08/2001 Extreme Programming is a discipline of software development based on values of simplicity, communication, feedback, and courage. It works Extreme Programming by bringing the whole team together in the Adventures in C# presence of simple practices, with enough Ron Jeffries feedback to enable the team to see where they are and to tune the practices to their unique situation. In Extreme Programming, every contributor to the project is an integral part of the “Whole The Manager Pool Team“. The team forms around a business representative Don Sherwood Olson called “the Customer”, who sits with the team and works with and Carol L.Stimmel them daily. Core Practices: Whole Team Extreme Programming teams use a simple form of planning and tracking to decide what should be done next and to predict when the project will be done. Focused on business value, the team produces the software in a series of small fully-integrated releases that pass all the tests the Customer has defined. Core Practices: Planning Game, Small Releases, Ruby in a Nutshell Customer Tests Yukihiro Matsumoto Extreme Programmers work together in pairs and as a group, Extreme Programmers work together in pairs and as a group, with simple design and obsessively tested code, improving the design continually to keep it always just right for the current needs. Core Practices: Simple Design, Pair Programming, Test-Driven Development, Design Improvement Lean Software The Extreme Programming team keeps the system integrated Development Mary Poppendieck, ..
    [Show full text]
  • Test-Driven Development in C
    NELKINDA SOFTWARE CRAFT Ƅ TRAINING Test-Driven Development in C# Duration: 3 Days Available Languages: English German Audience Software Crafters, Software Developers, Software Testers, XP Coaches. Precondition Solid knowledge of the C# programming language. Goals Learn the benefits, mechanics, and nuts and bolts of developing software using Test- Driven Development. Contents Test-Driven Development (TDD) is a software development practice from Extreme Programming (XP) and Software Craft. TDD increases code coverage, leads to fast tests, and supports continuous refactoring and continuous design improvement. Some benefits of TDD include developing faster with fewer errors, reducing debug time, lean development, better design, quick feedback, and eliminating fear for continuous refactoring. Last but not least, TDD drives decoupled and thus better quality software architecture. • Software Architecture Fundamentals for TDD ◦ The Two Values of Software ◦ The ATP-Trinity of project code ◦ The Importance Priorities: Automation > Test > Production ◦ The four major design smells ◦ Cohesion and Coupling ◦ What is "testable" and how is it related to maintainability / Clean Code? ◦ Test Automation Pyramid ◦ TDD in the context of Agile and XP • Unit Testing fundamentals ◦ The job of and work split between test frameworks ◦ Anatomy of xUnit frameworks ◦ NUnit, xUnit, MSTest ◦ The Single-Assert Rule • TDD fundamentals ◦ The Three Laws of Test-Driven Development ◦ The Red-Green-Refactor Cycle ◦ The FAIR/FIRST principles ◦ How to Start 1/3 https://nelkinda.com/training/TDD-C%23
    [Show full text]
  • Best Practices for Implementing Agile Methods: a Guide for Department of Defense Software Developers
    Best Practices for Implementing Agile Methods: A Guide for Department of Defense Software Developers Ann L. Fruhling Associate Professor Information Systems and Quantitative Analysis Peter Kiewit Institute College of Information Science and Technology University of Nebraska at Omaha Alvin E. Tarrell Doctoral Student in Information Technology Peter Kiewit Institute University of Nebraska at Omaha E-Government/Technology Series E-Government/Technology 2008 E-GOVERNMENT/TECHNOLOGY SERIES Best Practices for Implementing Agile Methods: A Guide for Department of Defense Software Developers Ann L. Fruhling Associate Professor Information Systems and Quantitative Analysis Peter Kiewit Institute College of Information Science and Technology University of Nebraska at Omaha Alvin E. Tarrell Doctoral Student in Information Technology Peter Kiewit Institute University of Nebraska at Omaha Upper left: In flight over Pohang, South Korea, U.S. Navy photo by MC2 Sandra M. Palumbo. Upper right: Whiteman Air Force Base by TSGT Lance Cheung. Lower left: Offutt Air Force Base by PH2 (NAC) Jeffrey S. Viano. Lower right: Ramstein Air Base, Germany, by MSGT Bill Kimble, USAF. Cover photos courtesy of DefenseImagery.mil. TABLE OF CONTENTS Foreword ..............................................................................................4 Executive Summary ..............................................................................6 Introduction .........................................................................................9 Challenges of Transforming
    [Show full text]
  • Overcoming the Limitations of Agile Software Development and Software Architecture
    Master Thesis Software Engineering Thesis no: MSE-2013-139 September 2013 Overcoming the Limitations of Agile Software Development and Software Architecture Carlos García Álvarez School of Computing Blekinge Institute of Technology SE-371 79 Karlskrona Sweden This thesis is submitted to the School of Engineering at Blekinge Institute of Technology in partial fulfillment of the requirements for the degree of Master of Science in Software Engineering. The thesis is equivalent to 20 weeks of full time studies. Contact Information: Author(s): Carlos García Álvarez E-mail: [email protected] University advisor(s): Dr. Darja Šmite School of Computing School of Computing Internet : www.bth.se/com Blekinge Institute of Technology Phone : +46 455 38 50 00 SE-371 79 Karlskrona Fax : +46 455 38 50 57 Sweden ABSTRACT Context. Agile Software Development has provided a new concept of Software Development based in adaptation to changes, quick decisions, low high-level design and frequent deliveries. However, this approach ignores the value that Software Architecture provides in the long term for increasing the speed in delivery working software, which may have catastrophic consequences in the long term. Objectives. In this study, the combination of these two philosophies of Software Development is investigated. Firstly, the concept of Software Architecture in Agile Projects; then, the major challenges faced concerning Software Architecture in Agile Projects, the practices and approaches that can be used to overcome these challenges and the effects that these practices may cause on the project. Methods. The research methodologies used in this study are Systematic Literature Review for gathering the highest amount possible of contributions available in the Literature at this respect, and also the conduction of Semi-Structured Interviews with Agile Practitioners, in order to obtain empirical knowledge on the problem and support or deny the SLR findings.
    [Show full text]
  • Extreme Programming: Strengths and Weaknesses
    Computer Technology and Application 5 (2014) 15-20 D DAVID PUBLISHING Extreme Programming: Strengths and Weaknesses Ahmad Dalalah Computer Networks, Quality Assurance Consultant, University of Hail, Hail, Saudi Arabia Abstract: Meeting deliverable deadline is a critical issue for successful organization. Last minute adjustments characterize software development due to many reasons including not testing thoroughly. XP (Practicing Extreme Programming), which is an agile software development methodology, gives rise to the issue of pair programming. This paper aims at discussing the strengths and weaknesses of an Extreme Programming methodology by examining the characteristics of the 12 software development practices of the XP methodology. Working together will incur in a highly reliable functionalities to release. Furthermore, moving people around will allow the team to keep track of the whole project. Key words: Extreme Programming, release, exploration phase, system metaphor. 1. Introduction―What Is Extreme code ownership, and testing. Testing includes both Programming? unite testing and acceptance testing. These are well-known common software development practices XP (Extreme Programming) is an agile software but XP takes these practices to their extremes. development methodology. It is a lightweight In addition to these 12 practices: XP has a number of methodology combining a set of existing software supporting practices. These supporting practices include: development practices [1]. XP tends to rapidly develop do the simplest thing that could possibly work, develop high-quality software that provides the highest value what is immediately required to meet customers need, for the customers in the fastest way possible. coaching to help the team keep in track. Extreme Programming is based on values of This paper is organized as follows: Section 2 simplicity, communication, feedback, courage, and discusses the practices in the planning phase; Section 3 respect, which was newly added.
    [Show full text]
  • Extreme Programming
    EXTREME PROGRAMMING AGILE PROJECT MANAGEMENT ADVISORY SERVICE WHITE PAPER by Jim Highsmith CUTTER CONSORTIUM PRACTICE AREAS: à Distributed Architecture à Business-IT Strategies à Business Intelligence à Business Technology Trends and Impacts à Project Management à IT Management à Sourcing CUTTER CONSORTIUM, 37 BROADWAY, SUITE 1, ARLINGTON, MA 02474-5552, USA; Tel: +1 781 648 8700; Fax: +1 781 648 8707; [email protected]; www.cutter.com CUTTER CONSORTIUM ABOUT THE CUTTER CONSORTIUM Cutter Consortiums mission is to help senior executives leverage technology for competitive advantage and business success. Cutters offerings are entirely unique in the research/analyst industry sector because they are produced and provided by the top thinkers in IT today a distinguished group of internation- ally recognized experts committed to providing high-level, critical advice and guidance. These experts provide all of Cutters written deliverables and perform all of the consulting and training assignments. Cutter Consortiums products and services include: high-level advisory/research services, online and print publications, benchmarking metrics, management and technical consulting, and advanced training. The content is aimed at both a technical and business audience with an emphasis on strategic processes and thinking. An independent, privately held entity that has no allegiance or connections to any computer vendors, Cutter has a well-earned reputation for its objectivity. Cutters more than 5,300 clients include CIOs, CEOs, CFOs, and senior IT managers in Fortune 500 companies and other businesses, national and state governments, and universities around the world. As a smaller information provider, the Consortium customizes its services to meet each clients individual needs and ensure them access to the experts.
    [Show full text]
  • Test-Driven Development in Java
    NELKINDA SOFTWARE CRAFT Ƅ TRAINING Test-Driven Development in Java Duration: 3 Days Available Languages: English German Audience Software Crafters, Software Developers, Software Testers, XP Coaches. Precondition Solid knowledge of the Java programming language. Goals Learn the benefits, mechanics, and nuts and bolts of developing software using Test- Driven Development. Contents Test-Driven Development (TDD) is a software development practice from Extreme Programming (XP) and Software Craft. TDD increases code coverage, leads to fast tests, and supports continuous refactoring and continuous design improvement. Some benefits of TDD include developing faster with fewer errors, reducing debug time, lean development, better design, quick feedback, and eliminating fear for continuous refactoring. Last but not least, TDD drives decoupled and thus better quality software architecture. • Software Architecture Fundamentals for TDD ◦ The Two Values of Software ◦ The ATP-Trinity of project code ◦ The Importance Priorities: Automation > Test > Production ◦ The four major design smells ◦ Cohesion and Coupling ◦ What is "testable" and how is it related to maintainability / Clean Code? ◦ Test Automation Pyramid ◦ TDD in the context of Agile and XP • Unit Testing fundamentals ◦ The job of and work split between test frameworks ◦ Anatomy of xUnit frameworks ◦ JUnit 3, 4, 5; TestNG ◦ The Single-Assert Rule • TDD fundamentals ◦ The Three Laws of Test-Driven Development ◦ The Red-Green-Refactor Cycle ◦ The FAIR/FIRST principles ◦ How to Start 1/3 https://nelkinda.com/training/TDD-Java
    [Show full text]
  • An Ontological Model of Emergent Design in Software Engineering
    INTERNATIONAL CONFERENCE ON ENGINEERING DESIGN, ICED’07 28 - 31 AUGUST 2007, CITE DES SCIENCES ET DE L'INDUSTRIE, PARIS, FRANCE AN ONTOLOGICAL MODEL OF EMERGENT DESIGN IN SOFTWARE ENGINEERING John S Gero1 and Udo Kannengiesser2 1Krasnow Institute for Advanced Study and Volgenau School of Information Technology and Engineering, George Mason University, USA 2NICTA, Australia ABSTRACT This paper proposes an ontological account of a recent model of software engineering: emergent design. This model augments traditional software design approaches by accounting for incremental and unexpected modifications of the design state space. We show that the principles of emergent design are consistent with a model of designing as a reflective conversation. We use the situated function-behaviour-structure (FBS) framework to represent the activities driving emergent design. This is a basis for increasing understanding and acceptance of emergent design. Keywords: Emergent Design, Software Engineering, Ontology 1 INTRODUCTION Emergent design is a model of software design that includes the iterative development of software through gradual improvements and incremental additions of new functionality during the process of designing. This methodology is often seen as the opposite of “up-front design”, or the “waterfall model”, where designing is assumed to proceed in a fixed, single sequence of stages without iterations. The waterfall model has often been criticised as too inflexible with respect to dynamic changes in the requirements, and as too difficult to implement when feedback from downstream stages is needed to complete an upstream stage. The benefits of a more adaptive approach such as emergent design include increased ability to incorporate changes in the design requirements, easier elimination of coding errors and reduced development times.
    [Show full text]
  • Extreme Programming Installed
    Preface . 7 Chapter 1 Extreme Programming . 9 Extreme Programming is a discipline of software develop- ment with values of simplicity, communication, feedback and courage. We focus on the roles of customer, manager, and programer and accord key rights and responsibilities to those in those roles. Forward . 23 Chapter 2 Circle of Life . 27 An XP project succeeds when the customers select business value to be implemented, based on the team’s measured ability to deliver functionality over time. Chapter 3 On-site Customer . 31 An XP project needs a full-time customer to provide guid- ance. Here’s a summary of why ... Chapter 4 User Stories . 37 Define requirements with stories, written on cards. Chapter 5 Acceptance Tests . 45 Surely you aren’t going to assume you’re getting what you need. Prove that it works! Acceptance tests allow the custom- er to know when the system works, and tell the programmers what needs to be done. Sidebar - Chapter 5 Acceptance Test Samples . 49 At first it can be difficult figuring out how to do acceptance tests. With a little practice it becomes easy. Chapter 6 Story Estimation . 51 Customers need to know how much stories will cost, in order to choose which ones to do and which to defer. Programmers evaluate stories to provide that information. Here’s how. 1 Sense of Completion . .61 XP’s nested planning and programming cycles keep the project on track, and provide a healthy sense of accomplish- ment at frequent intervals. Chapter 7 Small Releases . .65 The outermost XP cycle is the release.
    [Show full text]
  • Continuous Design Decision Support
    Chapter 6 Continuous Design Decision Support Anja Kleebaum, Marco Konersmann, Michael Langhammer, Barbara Paech, Michael Goedicke, and Ralf Reussner In this chapter, we elaborate on how design decisions are made, documented, and exploited during software evolution. We emphasise the importance of design decisions, in particular in the context of continuous software engineering. We detail the challenge of the intrusiveness of rational decision-making, documentation, and exploitation of design decisions and the challenge of ensuring consistency between design decisions and software artefacts. The main contributions of this chapter are three approaches to a continuous design decision support: First, we present an approach that supports developers in design decision-making using a catalogue of design patterns. Second, we present an approach to support the awareness for documented design decisions by integrating the decision documentation with the underlying source code. Third, we present how short-cycled practices in continuous software engineering can be used to support the documentation and exploitation of design decisions. A. Kleebaum · B. Paech () Universität Heidelberg, Mathematikon - Institut für Informatik, Heidelberg, Germany e-mail: [email protected]; [email protected] M. Konersmann Institute for Software Technology, Research Group Software Engineering, Universität Koblenz-Landau, Koblenz, Germany e-mail: [email protected] M. Goedicke paluno – The Ruhr Institute for Software Technology, Specification of Software Systems, Universität Duisburg-Essen, Essen, Germany e-mail: [email protected] M. Langhammer · R. Reussner Institute for Program Structures and Data Organisation, Karlsruhe Institute of Technology (KIT), Karlsruhe, Germany e-mail: [email protected]; [email protected] © The Author(s) 2019 107 R.
    [Show full text]