Article Summary of The Structural Complexity of Software: An Experimental Test By Darcy, Kemerer, Slaughter and Tomayko In IEEE Transactions of Software.

Slides:



Advertisements
Similar presentations
The Robert Gordon University School of Engineering Dr. Mohamed Amish
Advertisements

Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Software Engineering 2003 Jyrki Nummenmaa 1 A BASIC OO SOFTWARE DEVELOPMENT PROCESS Earlier, we saw a number of different software lifecycle models.
Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
High Quality Code Why it matters. By Ryan Ruzich.
Chapter 9: The Traditional Approach to Design Chapter 10 Systems Analysis and Design in a Changing World, 3 rd Edition.
Introduction To System Analysis and Design
Object-Oriented Metrics. Characteristics of OO ● Localization ● Encapsulation ● Information hiding ● Inheritence ● Object abstraction.
Software Metrics II Speaker: Jerry Gao Ph.D. San Jose State University URL: Sept., 2001.
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
Object-Oriented Metrics
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
Creating Architectural Descriptions. Outline Standardizing architectural descriptions: The IEEE has published, “Recommended Practice for Architectural.
WEL COME PRAVEEN M JIGAJINNI PGT (Computer Science) MCA, MSc[IT], MTech[IT],MPhil (Comp.Sci), PGDCA, ADCA, Dc. Sc. & Engg.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
DATA STRUCTURE Subject Code -14B11CI211.
CASE Tools And Their Effect On Software Quality Peter Geddis – pxg07u.
Introduction to Systems Analysis and Design Trisha Cummings.
Chapter 7 Requirement Modeling : Flow, Behaviour, Patterns And WebApps.
GENERAL CONCEPTS OF OOPS INTRODUCTION With rapidly changing world and highly competitive and versatile nature of industry, the operations are becoming.
Implementation Yaodong Bi. Introduction to Implementation Purposes of Implementation – Plan the system integrations required in each iteration – Distribute.
An Introduction to Software Architecture
Software System Engineering: A tutorial
Chapter 6 : Software Metrics
Coupling and Cohesion Pfleeger, S., Software Engineering Theory and Practice. Prentice Hall, 2001.
Information Processing. History In response to Behaviorism, a cognitive model of mind as computer was adopted (1960’s, 70’s) Humans process, store, encode,
Introduction To System Analysis and Design
SOFTWARE DESIGN.
Software Measurement & Metrics
Chapter 9 Moving to Design
SE: CHAPTER 7 Writing The Program
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
Cohesion and Coupling CS 4311
Major objective of this course is: Design and analysis of modern algorithms Different variants Accuracy Efficiency Comparing efficiencies Motivation thinking.
GRASP: Designing Objects with Responsibilities
Introduction to Design Patterns Part 1. © Lethbridge/Laganière 2001 Chapter 6: Using design patterns2 Patterns - Architectural Architectural Patterns:
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Introduction to Software Architecture.
Generic Tasks by Ihab M. Amer Graduate Student Computer Science Dept. AUC, Cairo, Egypt.
1-1 Software Development Objectives: Discuss the goals of software development Identify various aspects of software quality Examine two development life.
Data Structures and Algorithms Dr. Tehseen Zia Assistant Professor Dept. Computer Science and IT University of Sargodha Lecture 1.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Design Reuse Earlier we have covered the re-usable Architectural Styles as design patterns for High-Level Design. At mid-level and low-level, design patterns.
OO Design Roshan Chitrakar. Analysis to Design Do the RIGHT thing Do the RIGHT thing Requirement Analysis Requirement Analysis Domain Modeling with addition.
Software Engineering and Object-Oriented Design Topics: Solutions Modules Key Programming Issues Development Methods Object-Oriented Principles.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
Design and Planning Or: What’s the next thing we should do for our project?
Data Structure Introduction Dr. Bernard Chen Ph.D. University of Central Arkansas Fall 2010.
Lecture VIII: Software Architecture
Chapter 1: Introduction to Visual Basic.NET: Background and Perspective Visual Basic.NET Programming: From Problem Analysis to Program Design.
PROGRAMMING FUNDAMENTALS INTRODUCTION TO PROGRAMMING. Computer Programming Concepts. Flowchart. Structured Programming Design. Implementation Documentation.
Basic Characteristics of Object-Oriented Systems
CHAP-1 OBJECT ORIENTED SYSTEM DESIGN (IT-703)
Coupling and Cohesion Schach, S, R. Object-Oriented and Classical Software Engineering. McGraw-Hill, 2002.
Coupling and Cohesion Pfleeger, S., Software Engineering Theory and Practice. Prentice Hall, 2001.
Chapter I: Introduction to Computer Science. Computer: is a machine that accepts input data, processes the data and creates output data. This is a specific-purpose.
TK2023 Object-Oriented Software Engineering CHAPTER 13d GRASP Patterns: High Cohesion.
TK2023 Object-Oriented Software Engineering
Unit - 3 OBJECT ORIENTED DESIGN PROCESS AND AXIOMS
GRASP – Designing Objects with Responsibilities
Unified Modeling Language
Objective of This Course
Software Engineering Lecture #45
Software Metrics “How do we measure the software?”
Chapter 1 Introduction(1.1)
An Introduction to Software Architecture
Introduction to Systems Analysis and Design Stefano Moshi Memorial University College System Analysis & Design BIT
Chapter 19 Technical Metrics for Software
Paper by D.L Parnas And D.P.Siewiorek Prepared by Xi Chen May 16,2003
Cohesion and Coupling.
Presentation transcript:

Article Summary of The Structural Complexity of Software: An Experimental Test By Darcy, Kemerer, Slaughter and Tomayko In IEEE Transactions of Software Engineering November, 2005 issue

Software Complexity There are problem complexity and solution complexity –We are interested in solution complexity when we speak about software complexity in “Design” –For software solution there are: Algorithmic complexity (detailed design) Structural complexity (high level design / architecture) –We are interested more in Structural Complexity when we discuss the construction and maintenance of software components because structural complexity deals with organization of program/design elements (component, form, rationale) --- which touches upon people’s decision making. –Algorithmic Complexity is more interesting for execution of code --- that is the reduction of number of steps to solve the problem directly affects computational time, which is more machine oriented than human oriented (even though it does also affect human)

Interest in Structural Complexity Some main reasons of studying structural complexity is to more clearly outline: –What constitute (help define/measure) better or worse structure –Ways to aid in creating structurally optimal solutions (less complexity) to influence other attributes such as maintainability, testability, re-usability, etc. In software, we already know the concepts of cohesion and coupling affect structural complexity ---- from past studies, we want: - high cohesion and - low coupling

Using Wood’s Task Complexity Model to Aid in Studying Structural complexity Has 3 essential concepts: –Products : things created by acts and behaviors –Acts: pattern of behavior that has a purpose or direction –Information cue ; information about attributes of stimuli that affect the decision making needed to perform the tasks Also has 3 sources of task complexity associated with the above concepts: –Component complexity : # of distinct acts and the # of distinct information cues needed in the performance of the acts to produce the product. –Coordinative complexity: relationships between task inputs and task outputs such as the form, strength, and sequence of the relationships. –Dynamic complexity: changes in the state of the world that has an effect on the relationship between tasks and products

People ---- Making Trade-offs Draw from Cognition studies on how people make trade-offs between dimensions of complexity –People have primary storage called short term memory (STM) where all the needed information must be available for people to think. –People will access information from secondary storage called long term memory (LTM) to help the thinking process. The problem is that accessing LTM takes a lot more time and effort. This suggests that we should work with small chunks of information and that thinking that requires the usage of LTM will take longer or more effort.

Drawing Analogy to Wood’s Task Complexity and Cognitive Science’s STM and LTM Wood’s Complexity : –Component Complexity – related to the acts and the information cues need for each of the acts This is similar to software cohesion –Coordinative Complexity – related to the precedence, form and strength of relationships between the input to a task and the product This is similar to software coupling Short Term and Long Term Memory: –In comprehension and thinking, all the information must be brought into STM and when there is too much some of that information is moved to LTM. This is similar to looking at Cohesion of a component (STM) and Coupling (LTM) among components, because coupling requires one to look at more than one thing and thus require more memory --- (LTM). These Task - Cognitive Science Studies also suggest that “complexities” are not independent of each other.

Authors’ Research Hypotheses Hypothesis 1: For the more highly cohesive programs, maintenance effort is lower Hypothesis 2: For the more highly coupled programs, maintenance effort is higher Hypothesis 3: For the more highly coupled programs, higher levels of cohesion reduce maintenance effort. Why would people think of Hypothesis 3? This 3 rd Hypothesis seems like something added after the experimental results were known. (---- I am being a bit cynical here -----)

Experimental Test of Hypotheses Used 17 professional software engineers Performed “perfective” maintenance task on two types of problems: –Regression analysis enhancement written in procedural style with C language –Database functionality enhancement written in OO style with C++ language There were 4 code variations set up for the enhancement task: –High coupling – High cohesion –High coupling – Low cohesion –Low coupling – High cohesion –Low coupling – Low cohesion Measured the “time” required to complete the maintenance task.

Somewhat Surprising Experimental Results 1.Covariate factors such as previous experience with language and length of work experience had NO significant correlation to task time. 2.Hypothesis 1 : more cohesive programs should take less maintenance effort could not be accepted 3.Hypothesis 2: more coupled programs should take more maintenance effort could not be accepted 4.Hypothesis 3: For more highly coupled programs, higher levels of cohesion reduce maintenance effort could be accepted The two attributes, coupling and cohesion, together shows a relationship where coupling is the main and cohesion is the moderator of that relationship in bringing down the maintenance effort.

Hypothesis 3 Results Says? In case of high coupling we need to bring in a lot of related information and use LTM because coupling brings in chunks (programs) of information that need to be processed. –Within the situation of high coupling, when the chunk (program) is itself very cohesive, then maintenance effort is actually less compared to when the chunk is less cohesive.

Now Look carefully at Figure 6 of the Article coupling high effort (low cpl; high coh) (low cpl; low coh) (high cpl; low coh) (high cpl; high coh) Observations: 1.With low cpl, effort is higher as we get more cohesive --- not ok 2.With high cpl, effort is lower as we get more cohesive --- ok 3.With high cohesion, effort goes up with low cpl ---- not ok 4. With low cohesion, effort goes up with high cpl ---- ok The experimental results did NOT come out with high cohesion is always better (e.g. low coupling with low cohesion required less effort than low coupling with high cohesion!) with high coupling, high cohesion is better high