by C.A. Conley and L. Sproull

Slides:



Advertisements
Similar presentations
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Advertisements

•7/12 /07 F-1 © 2010 T. Horton CS 4240 Principles of SW Design Packages in Java and UML.
Design Concepts and Principles
Object-Oriented Metrics. Characteristics of OO ● Localization ● Encapsulation ● Information hiding ● Inheritence ● Object abstraction.
Software evolution.
Software maintenance Managing the processes of system change.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 27Slide 1 Chapter 27 Software Change.
Factor Analysis Psy 524 Ainsworth.
Example of Simple and Multiple Regression
Analysis and Modeling of the Open Source Software Community Yongqin Gao, Greg Madey Computer Science & Engineering University of Notre Dame Vincent Freeh.
Software evolution. Objectives l To explain why change is inevitable if software systems are to remain useful l To discuss software maintenance and maintenance.
“Enhancing Reuse with Information Hiding” ITT Proceedings of the Workshop on Reusability in Programming, 1983 Reprinted in Software Reusability, Volume.
Copyright © 2010, 2007, 2004 Pearson Education, Inc. All Rights Reserved Section 10-1 Review and Preview.
Alexander Serebrenik, Serguei Roubtsov, and Mark van den Brand D n -based Design Quality Comparison of Industrial Java Applications.
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 23Slide 1 Chapter 23 Software Cost Estimation.
Chapter Fourteen Statistical Analysis Procedures Statistical procedures that simultaneously analyze multiple measurements on each individual or.
Copyright © 2010, 2007, 2004 Pearson Education, Inc. All Rights Reserved Lecture Slides Elementary Statistics Eleventh Edition and the Triola.
Chapter 16 The Elaboration Model Key Terms. Descriptive statistics Statistical computations describing either the characteristics of a sample or the relationship.
SOFTWARE DESIGN Design Concepts Design is a meaningful engineering representation of something that is to be built It can be traced to a customer’s requirements.
4/1/05F-1 © 2001 T. Horton CS 494 Object-Oriented Analysis & Design Packages and Components in Java and UML.
Basic Concepts of Correlation. Definition A correlation exists between two variables when the values of one are somehow associated with the values of.
Enabling Reuse-Based Software Development of Large-Scale Systems IEEE Transactions on Software Engineering, Volume 31, Issue 6, June 2005 Richard W. Selby,
Software Metrics Cmpe 550 Fall Software Metrics.
Software Design: Principles, Process, and Concepts Getting Started with Design.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 21 Slide 1 Software evolution 1.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 21 Slide 1 Software evolution.
Slide Slide 1 Copyright © 2007 Pearson Education, Inc Publishing as Pearson Addison-Wesley. Lecture Slides Elementary Statistics Tenth Edition and the.
Principal Component Analysis
IT Project Management, Third Edition Chapter 8 1 Chapter 5: Project Quality Management.
Slide Slide 1 Chapter 10 Correlation and Regression 10-1 Overview 10-2 Correlation 10-3 Regression 10-4 Variation and Prediction Intervals 10-5 Multiple.
Tools Shane Cantrell Zach Crisman. Tools CVS FogBUGZ (Bug Tracking) Unit Testing (JUnit, Jakarta Cactus) Catalyst Web Tools (BB and Surveys) Mailman ( .
Static Software Metrics Tool
Chapter 8 Introducing Inferential Statistics.
Software Design.
A Hierarchical Model for Object-Oriented Design Quality Assessment
Overview Software Maintenance and Evolution Definitions
Metrics of Software Quality
Coupling and Cohesion Rajni Bhalla.
Chapter 2 Database System Concepts and Architecture
Course Notes Set 12: Object-Oriented Metrics
Cyclomatic complexity
Chapter 11 Object-Oriented Design
Lecture 9- Design Concepts and Principles
CHS 221 Biostatistics Dr. wajed Hatamleh
Teaching Statistics in Psychology
Distribution and components
What Is the Job Doing for Me
Elementary Statistics
Human Resource Management By Dr. Debashish Sengupta
S1 :: Chapter 6 Correlation
RESEARCH METHODS Lecture 18
Predict Failures with Developer Networks and Social Network Analysis
Predicting Fault-Prone Modules Based on Metrics Transitions
Lecture 9- Design Concepts and Principles
Quality Management Lecture 9 1/2/2019.
Chapter 27 Software Change.
Objectives (IPS Chapter 2.3)
Control Structure Testing
Chapter 19 Technical Metrics for Software
CHAPTER 14 MULTIPLE REGRESSION
Principal Component Analysis
Product moment correlation
Software Metrics SAD ::: Fall 2015 Sabbir Muhammad Saleh.
MBA 510 Lecture 2 Spring 2013 Dr. Tonya Balan 4/20/2019.
Better Architecture Management Made Easy
1. Cyclomatic complexity
Multiple Regression Berlin Chen
Chapter 2: Building a System
Building a “System” Moving from writing a program to building a system. What’s the difference?! Complexity, size, complexity, size complexity Breadth.
Forecasting Plays an important role in many industries
Presentation transcript:

by C.A. Conley and L. Sproull Easier Said than Done: An Empirical Investigation of Software Design and Quality in Open source Software Development by C.A. Conley and L. Sproull Proceedings of the 42nd Hawaii International conference on System Sciences, 2009 Following Power Point Slides and Interpretations by Frank Tsui (Southern Polytechnic State University)

Software Design “R” Software Quality For years in software engineering it has been said by various experts such as D. Parnas, V. Basili, etc. that: “Modularity” decreases “Complexity” Decreasing “Complexity” improves “Quality” Thus “modularity” should improve “quality” In this paper by Conley and Sproull the above relationship, R, is examined empirically using data from Open Source Software

Modularity Concept Modularity ≡ degree to which components within software are independent or “loosely coupled” from one another. Coupling between two components x and y is described as the characteristic such that any change in either x or y will require a change in the other. (this is a limited view because we also have “central data” coupling among many components that changing “data meaning” also affects all components --- a much more subtle coupling) Coupling between x and y also adds an extra item called “interface” between x and y that must be designed. Thus the less the components are coupled, the less concern is among the components; therefore, there should be less work and less opportunity to make mistakes related to the coupling.

Modularity and Quality Less work and less opportunity of making a mistake should imply that the quality improves In addition, increased modularity (less coupling) also implies more independent components; thus pin-pointing any problem to an individual, independent component is easier and faster. Thus problem resolution should be faster and end-product quality should also improve.

Some Metric Definitions for Modularity Modularity measured via “functional calls” For java code use package as the unit, not class. Interested in “calls” from class in a package A to some other class in Package B Afferent (converging towards) coupling (AC) of a package X is a count of number of other packages in the software that “calls” something in package X. (sometimes known as “fan-in” or number of things depending on X). Efferent (conveying outwards) coupling (EC) of a package X is a count of the number of other packages that package X “calls.” (sometimes known as fan-out or number of things X depends on). Define Instability of package X as: I = EC/(EC + AC) Define Abstractness of package X as: A = Abstr/Classes Abstr = # of abstract classes in X (Java has “interface” as abstract class and are more “stable” --- by definition, less likely to change) Classes = # of concrete classes + abstract classes in X

Distance from Abstractness and Instability Note that I varies from 0 to 1 with 0 indicating most stableness when EC =0 or large AC; and 1 indicating total instability due to “all” EC. A = 0 means there is no abstract class; and 1 means the package is all abstract classes (abstract class implies more stability because implementation details can change but it won’t change --- e.g. an “interface” in Java).

“Idealized Line” our goal ? A=1 -> very abstract I =0 -> very stable A=1 -> very abstract I =1 -> very unstable (1,1) (0,1) A = Abstractness (.5,.5) A=.5 -> somewhat abstract I =.5 -> somewhat stable (0,0) (1,0) A=0 -> very concrete I =0 -> very stable A=0 -> very concrete I =1 -> very unstable I = instability

Metric for Degree of Modularity: “Distance” We are interested in those packages that are close to the middle of this idealized line “idealized” line. (Do you agree ?) Define a distance metric: D = | ((A+I) – 1)/2 | or use just the D = (A + I) – 1 The smaller this D is -- the better ; note when A=.5 and I=.5, D=0; this implies a balanced design of somewhat abstract and somewhat stable. Further incorporate the “line of code,” size, factor of the package and multiply by log(loc) and have D * log(loc) Software package: Dr = 1 - [ (∑Di * log(loci))/∑log(loci) ] Dr is the distance for the complete software release Di is the distance of each package i

Metric for Quality: Intrinsic Quality # of Static Bugs found in source code (pre-release time) Use McCabe’s Cyclomatic complexity number for complexity metric: It describes the complexity of control flow This measures the number of linearly independent paths in the package Cyclomatic number = (# of binary predicates) + 1

Metrics for Quality: Customer Satisfaction Number of user reported problems The larger this number is the lower the customer satisfaction Percentage of problems “closed” – resolved The larger this is the more satisfied the customer is Time to problem closure The smaller this is the faster is the problem resolved and thus the customer would be more satisfied In my (Tsui) days we used (#of problems reported/user-months) to get around the issue of more users causes more problem to be found

Statistical Analysis Using OSS projects Performed “Statistical Correlation” of the following information: Computed Degree of Modularity for the sampled source code Counted static bugs and computed cyclomatic number for Intrinsic Quality Counted bugs reported, time to closure, percentage of bugs closed for Customer Satisfaction part of Quality

Looked at 4 “models” of Degrees of modularity and Quality Do projects differ in project Quality? (unconditional means of quality #’s) Does Modularity explain differences in Quality across projects? (regression analysis) Does Modularity explain differences in Quality within projects? (random coefficient) What role does Modularity play after accounting for other variables? (best fit)

Surprising Experimental Results ! The common belief that “ increase in Modularity should increase Quality” could not be ascertained with this set of empirical data, using the authors’ definitions of modularity and quality metrics ! Did find that : As Modularity increased, Complexity decreased (not always –but most of the time) As Modularity increased, number of static bugs sometimes also increased instead of decreasing As Modularity increased, percentage of bugs closed sometimes decreased instead of increasing So ---- perhaps the definition and metrics may be WRONG?!