Presented by Lu Xiao Drexel University Quantifying Architectural Debt.

Slides:



Advertisements
Similar presentations
Ranking Refactoring Suggestions based on Historical Volatility Nikolaos Tsantalis Alexander Chatzigeorgiou University of Macedonia Thessaloniki, Greece.
Advertisements

Early Effort Estimation of Business Data-processing Enhancements CS 689 November 30, 2000 By Kurt Detamore.
R2PL, Pittsburgh November 10, 2005 Copyright © Fraunhofer IESE 2005 Analyzing the Product Line Adequacy of Existing Components Jens Knodel
Min Zhang School of Computer Science University of Hertfordshire
Code Smell Research: History and Future Directions Second PLOW Installment - March 5, Nikolaos Tsantalis Computer Science & Software Engineering.
MetriCon 2.0 Correlating Automated Static Analysis Alert Density to Reported Vulnerabilities in Sendmail Michael Gegick, Laurie Williams North Carolina.
1 Predicting Bugs From History Software Evolution Chapter 4: Predicting Bugs from History T. Zimmermann, N. Nagappan, A Zeller.
Mining Metrics to Predict Component Failures Nachiappan Nagappan, Microsoft Research Thomas Ball, Microsoft Research Andreas Zeller, Saarland University.
Prediction of fault-proneness at early phase in object-oriented development Toshihiro Kamiya †, Shinji Kusumoto † and Katsuro Inoue †‡ † Osaka University.
Preventive Software Maintenance: The Past, the Present, the Future Nikolaos Tsantalis Computer Science & Software Engineering Consortium for Software Engineering.
What causes bugs? Joshua Sunshine. Bug taxonomy Bug components: – Fault/Defect – Error – Failure Bug categories – Post/pre release – Process stage – Hazard.
1 Software Maintenance and Evolution CSSE 575: Session 8, Part 3 Predicting Bugs Steve Chenoweth Office Phone: (812) Cell: (937)
CS 501: Software Engineering
Investigating the Evolution of Bad Smells in Object-Oriented Code Alexander Chatzigeorgiou Anastasios Manakos University of Macedonia Thessaloniki, Greece.
1 Instability Visualization and Analysis Jim Whitehead Jennifer Bevan University of California, Santa Cruz
Software Testing and Quality Assurance: Introduction and Terminology
Software Process and Product Metrics
Software Life Cycle Model
Methodology for Architectural Level Reliability Risk Analysis Lalitha Krothapalli CSC 532.
Chapter 9 – Software Evolution and Maintenance
SEG Software Maintenance1 Software Maintenance “The modification of a software product after delivery to correct faults, to improve performance or.
1 Prediction of Software Reliability Using Neural Network and Fuzzy Logic Professor David Rine Seminar Notes.
1 Software Maintenance and Evolution CSSE 575: Session 8, Part 2 Analyzing Software Repositories Steve Chenoweth Office Phone: (812) Cell: (937)
University of Toronto Department of Computer Science © 2001, Steve Easterbrook CSC444 Lec22 1 Lecture 22: Software Measurement Basics of software measurement.
UML - Development Process 1 Software Development Process Using UML (2)
What is Software Engineering? the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software”
Cmpe 589 Spring Software Quality Metrics Product  product attributes –Size, complexity, design features, performance, quality level Process  Used.
CSCE 548 Secure Software Development Test 1 Review.
Reviewed By: Paul Varcholik University of Central Florida EEL 6883 – Software Engineering II Spring 2009 Marc Eaddy, Thomas Zimmermann,
Software Engineering CS3003
Chapter 3: Software Maintenance Process Omar Meqdadi SE 3860 Lecture 3 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
1 Software Testing and Quality Assurance Lecture 33 – Software Quality Assurance.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
What is a Business Analyst? A Business Analyst is someone who works as a liaison among stakeholders in order to elicit, analyze, communicate and validate.
Lecture on Computer Science as a Discipline. 2 Computer “Science” some people argue that computer science is not a science in the same sense that biology.
Samad Paydar Web Technology Lab. Ferdowsi University of Mashhad 10 th August 2011.
Effective Detection of Self- admitted Technical Debt Everton S. Maldonado Emad Shihab Department of.
Drexel University CS 451 Software Engineering Winter Yuanfang Cai Room 104, University Crossings
Master Thesis Final Presentation “Improving the Software Architecture Documentation Process of MediaWiki software” , Ankitaa Bhowmick.
OHTO -99 SOFTWARE ENGINEERING “SOFTWARE PRODUCT QUALITY” Today: - Software quality - Quality Components - ”Good” software properties.
Lecture 4 Software Metrics
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Predicting Accurate and Actionable Static Analysis Warnings: An Experimental Approach J. Ruthruff et al., University of Nebraska-Lincoln, NE U.S.A, Google.
1 The Modular Structure of Complex Systems Presented by: SeyedMasoud Sadjadi and Wei Zhu David L. Parnas, Paul C. Clement, and David M. Weiss ICSE 1984.
©Ian Sommerville 2004 Software Engineering. Chapter 21Slide 1 Chapter 21 Software Evolution.
Historical Aspects Origin of software engineering –NATO study group coined the term in 1967 Software crisis –Low quality, schedule delay, and cost overrun.
Recovering Design Technical Debt from Source Code Comments Department of Computer Science and Software Engineering Concordia University Montreal, Canada.
Enabling Reuse-Based Software Development of Large-Scale Systems IEEE Transactions on Software Engineering, Volume 31, Issue 6, June 2005 Richard W. Selby,
Chapter 3: Software Project Management Metrics
THE IRISH SOFTWARE ENGINEERING RESEARCH CENTRELERO© What we currently know about software fault prediction: A systematic review of the fault prediction.
University of Southern California Center for Systems and Software Engineering Software Metrics and Measurements Supannika Koolmanojwong CS577 1.
Using Social Network Analysis Methods for the Prediction of Faulty Components Gholamreza Safi.
Software Maintenance Speaker: Jerry Gao Ph.D. San Jose State University URL: Sept., 2001.
Evolution in Open Source Software (OSS) SEVO seminar at Simula, 16 March 2006 Software Engineering (SU) group Reidar Conradi, Andreas Røsdal, Jingyue Li.
Ehsan Salamati Taba, Foutse Khomh, Ying Zou, Meiyappan Nagappan, Ahmed E. Hassan 1.
Effects of Technical Debt on Software Development Effort
West Virginia University Sherif Yacoub, Hany H. Ammar, and Ali Mili A UML Model for Analyzing Software Quality Sherif Yacoub, Hany H. Ammar, and Ali Mili.
Advanced Software Engineering Lecture 4: Process & Project Metrics.
Diagnosing Design Problems in Object Oriented Systems Adrian Trifu, Radu Marinescu Proceedings of the 12th IEEE Working Conference on Reverse Engineering.
1 Predicting Classes in Need of Refactoring – An Application of Static Metrics Liming Zhao Jane Hayes 23 September 2006.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
CS223: Software Engineering Lecture 21: Unit Testing Metric.
Objective ICT : Internet of Services, Software & Virtualisation FLOSSEvo some preliminary ideas.
What is a software? Computer Software, or just Software, is the collection of computer programs and related data that provide the instructions telling.
 System Requirement Specification and System Planning.
Steve Chenoweth Office Phone: (812) Cell: (937)
Software Analytics Platform
Predicting Fault-Prone Modules Based on Metrics Transitions
Methodology for Architectural Level Reliability Risk Analysis
Why do we refactor? Technical Debt Items Versus Size: A Forensic Investigation of What Matters Hello everyone, I’m Ehsan Zabardast I am a PhD candidate.
Presentation transcript:

Presented by Lu Xiao Drexel University Quantifying Architectural Debt

Agenda  Problem statement  Related work  Background  Approach  Expected contributions  Results achieved so far  Evaluation plan  Conclusion

Problem Statement (1)  Flawed relations propagate defects among files.  Flawed relations incur increasing maintenance costs over time  Debts accumulate interest.  Debts incur increasing penalty over time Architectural flaws Technical Debt Architectural Debt

Problem Statement (2)  How to define architectural debt?  How to identify architectural debt?  How to quantify the penalty -maintenance costs?  How to model the growing trend of penalty for architectural debt over time?

Related Work (1)  Technical Debt [1]  A metaphor for consequences of “short-cuts” for immediate goals.  Technical Debt has attracted increasing attention [2] :  Alves et.al. [3] built an ontology of technical debt by organizing and defining different types of debts.  Everton et. al. [4] proposed a solution to identified “self- admitted” debts by reviewing the comments left by developers.  Our work aims at advance the understanding and management of architectural debt, a type of technical debt, by automatically identify, quantify and model such debts.

Related Work (2)  Bug prediction  It aims at predicting the location of bugs to prioritize testing and debugging.  History metrics [5] :  E.g. number of bugs, bug density, churn…  Complexity metrics [6].  E.g. LOC, fanin, fanout,…  Our work aims at:  Discover architecture issues that cause bugs to propagate.  Find refactoring chances to reduce the error-rate through architectural improvement.

Related Work (3)  Code Smell  According to Fowler [7], "a code smell is a surface indication that usually corresponds to a deeper problem in the system".  e.g. code clones, god class, lazy class and feature envy.  Code smell has been used as a heuristic for approximating technical debt.  Not all files with code smell are involved in technical debt [8].  Not all files in technical debt contain code smell.  Our work aims at:  Formally define architectural debt  Precisely identify architectural debt

Background(1)  A novel architectural model---DRSpaces model:  The architecture of a software system can be represented using multiple overlapping DRSpaces.  Each DRSpace represents a unique aspect of the architecture.  We designed an architecture root detection algorithm based on DRSpace model.  Error-prone files are architecturally connected in DRSpaces.  These DRSpaces contain architectural issues.

Background(2)  We defined and identified recurring architectural issues in software systems as hotspot patterns:  Unstable interface  Unhealthy inheritance  Cyclic dependencies  Modularity violations  We observed strong positive correlation between the number of issues with high maintenance costs in a file.

Approach(1)  We define an architectural debt (ArchDebt) as a group of architecturally connected files that incur high maintenance costs over time due to their flawed connections.  Three key features:  Flawed relations among files.  Files coupled in revision history.  Flawed relations between files persistently incur high maintenance costs over time.

Approach (2)  Automatically identify architectural debts.  Quantify the maintenance consequences of architectural debts.  Model the growing trend of maintenance costs accumulated on architectural debts over time.

Expected Contributions  Pushes the concept of technical debt closer to a practice from a metaphor:  Formal definition of architectural debt  Approach to identify, quantify and model architectural debt.  Contribution in practice:  Enable an analyst to precisely locate the debts, quantify and model the maintenance costs for each debt.  Help project managers to make informed decisions in if, where and how to refactor.

Results Achieved (1)  In the case study of an industry project:  Identified architectural debts that were verified by developers.  Quantified the impact scope and maintenance costs.  Built a simple economic model:  Cost required to refactor.  Expected benefit of refactoring.  We proposed a refactoring plan to the developers team, which was accepted and planned for implementation.  We are now gathering and analyzing data.

Results Achieved (2)  Preliminary study in 15 open source projects:  We selected multiple stable versions for analysis in each project.  We located groups of architecturally connected files that are persistently change- and error-prone in these projects.  We built simple linear regression models showing that the number of error-prone files in these groups increases over time.

Evaluation Plan(1)  Evaluation Questions:  RQ1: Are the architectural debts identified by our approach real problems?  That is, are they true and significant debts?  RQ2: Are the proxies for quantifying architectural debt penalties reliable?  What is the most reliable proxy?  RQ3: How effective is the evolution model of architectural debts?  Can it correctly estimate the amount of costs that have been and will be spent on a debt?  Is it useful to stakeholders in making decisions?

Evaluation Plan(2)  Open source project  Divide data into “past” and “future”, using “future” as a evaluation source.  Reach out to the developers for feedback.  Industry project  Ask for real effort data, if available.  Get feedback from developers.  If a refactoring is implemented based on our approach, we will track the costs and benefits of refactoring.

Conclusion  We formally defined a specific form of technical debt--- architectural debt.  We proposed an approach to identify architectural debts, quantify the penalties, and model their evolution trend.  We’ve evaluated the usefulness of our approach in 1 industry project and did some preliminary study in open source projects.  We plan to evaluate the usefulness of our work using more projects, both industry and open source.

References  [1] W. Cunningham. The WyCash portfolio management system. In Addendum to Proc. 7th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, pages 29{30, Oct  [2] Technical debt workshop series.  [3] N. S. Alves, L. F. Ribeiro, V. Caires, T. S. Mendes, and R. O. Spinola. Towards an ontology of terms on technical debt. In Managing Technical Debt (MTD), 2014 Sixth International workshop on  [4] E. da S. Maldonado and E. Shihab. Detecting and quantifying dierent types of self-admitted technical debt. SIGSOFT Softw. Eng. Notes, Apr  [5] T. J. Ostrand, E. J. Weyuker, and R. M. Bell. Predicting the location and number of faults in large software systems. IEEE Transactions on Software Engineering, 31(4):340{355,  [6] N. Nagappan, T. Ball, and A. Zeller. Mining metrics to predict component failures. pages 452{461,  [7] M. Fowler. Refactoring: Improving the Design of Existing Code. Addison-Wesley, July  [8] N. Zazworka, A. Vetro, C. Izurieta, S. Wong, Y. Cai, C. Seaman, and F. Shull. Comparing four approaches for technical debt identication. Software Quality Journal, pages 1{24, 2013.