Strategic Management of Technical Debt

Speaker: Philippe Kruchten (University of British Columbia)
Duration: Half Day

The technical debt metaphor acknowledges that software development teams sometimes accept compromises in a system in one dimension (for example, modularity) to meet an urgent demand in some other dimension (for example, a deadline), and that such compromises incur a “debt”. If not properly managed the interest on this debt may continue to accrue, severely hampering system stability and quality and impacting the team’s ability to deliver enhancements at a pace that satisfies business needs. Although unmanaged debt can have disastrous results, strategically managed debt can help businesses and organizations take advantage of time-sensitive opportunities, fulfil market needs and acquire stakeholder feedback. Because architecture has such leverage within the overall development life cycle, strategic management of architectural debt is of primary importance. Some aspects of technical debt --but not all technical debt—affect product quality. This tutorial introduces the technical debt metaphor and the techniques for measuring and communicating this technical debt. Topics covered are:

  1. Introduction to Technical Debt
  2. Making Hard Choices about Technical Debt
    1. Learning game to illustrate concepts
    2. Debrief: lessons learned form the game
  3. Practical measures
    1. Examples, results of interviews from industry
    2. Tools and techniques
    3. Requirements for support (tool or otherwise), metrics and measures of success
  4. Future Directions
    1. Agile architecting and technical debt
    2. Vision for technical debt analysis framework
    3. Discussion on key problems and challenges faced by practicing software engineers who need to elicit, communicate, and manage technical debt at different facets of their projects

Attendees will start by playing the Hard Choices game, an engaging technique for communicating the trade-offs of technical debt management to fellow colleagues and managers: in your quest to release a quality product, you must decide whether to take shortcuts and incur penalties later, or to traverse more of the board to potentially earn more immediate value. We then use the game to discuss practices that can be applied to mitigate the impacts of various classes of technical debt in software development. The tutorial concludes by raising awareness of efforts in the research community to move beyond the original metaphor to provide a foundation for managing trade-offs based on models of their economic impacts.

> top <

Metamorphic Testing

Speaker: T.Y. Chen (Swinburne University of Technology)
Duration: Half Day

The main learning objective of this tutorial is to get a better understanding of the underlying concepts of metamorphic testing which is developed to alleviate the oracle problem, to know how to apply metamorphic in practice, to know how to integrate metamorphic testing with other program analysis and testing techniques.

Intended audience includes those who are interested in software testing, in particular to those who are interested to know more about how to address the oracle problem in testing. No assumed background is required. The topics covered in this tutorial are:

  • Basic concepts of metamorphic testing
  • Application domains where metamorphic testing has been applied
  • How to define effective metamorphic relations which are the key elements in metamorphic testing
  • Integration of metamorphic testing with other software analysis and testing techniques
    • Fault-based testing
    • Symbolic execution – semi-proving
    • Slicing – metamorphic slicing
    • Statistical spectrum-based fault localization
  • Potential research projects on metamorphic testing

> top <

Structural Testing with PathCrawler

Speakers: Nicky Williams (LSL laboratory) and Nikolai Kosmatov (Software Safety Lab of CEA LIST)
Duration: Half Day

This tutorial is aimed mainly at software engineering students and professionals. They will learn more about the state of the art in automated software testing and how it could help them in their future career in software development or validation. Software engineering lecturers may also be interested in how a tool such as pathcrawler-online can help in teaching software testing. The necessary background is some knowledge of the C language. The topics included in this tutorial are:

  • Review of structural testing, coverage criteria, infeasible paths, unreachable code
  • What is a path predicate?
  • Review of the concolic test generation method
  • The role of the precondition
  • The role of the oracle
  • The choice of coverage criterion
  • Understanding the test-generation outputs
  • Some limits of structural testing

> top <

Software Analytics: Data-driven Engineering of Software and Services

Speakers: Dongmei Zhang, Yingnong Dang, and Shi Han (Microsoft Research Asia) and Tao Xie (North Carolina State University)
Duration: Half Day

A huge wealth of various data exist in the practice of software development. Further rich data are produced by modern software and services in operation, many of which tend to be data-driven and/or data-producing in nature. Hidden in the data is information about the quality of software and services and the dynamics of software development. Software analytics is to develop and apply data exploration and analysis technologies, such as pattern recognition, machine learning, and information visualization, on software data to obtain insightful and actionable information for modern software and services. This tutorial presents the latest research and practice on principles, techniques, and applications of software analytics, highlighting success stories in industry, research achievements that are transferred to practice, and future research and practice directions in software analytics. Attendees will acquire the skills and knowledge needed to perform research or conduct practice in the field of software analytics and to integrate analytics in their own research, practice, and training. Topics covered are:

  1. Introduction
    1. What does software engineering practices need in analytics?
    2. How can analytic techniques help software engineering practices?
    3. Software analytics in software engineering practices: an overview
  2. What kinds of software data can be analyzed with software analytics?
  3. What software engineering tasks can be helped with software analytics?
  4. How are analytic techniques used in software engineering practices?
  5. Industrial case studies

> top <