McCa!"s Triangle of Quality

Size: px
Start display at page:

Download "McCa!"s Triangle of Quality"

Transcription

1

2 McCa!"s Triangle of Quality Maintainability Portability Flexibility Reusability Testability Interoperability PRODUCT REVISION PRODUCT TRANSITION PRODUCT OPERATION Correctness Usability Reliability Efficiency Integrity Maintainability Internal and external attributes Number of procedure par ameters Cyclomatic complexity Reliability Portability Usability Program size in lines of code Number of error messages Length of user manual

3 Measures, Metrics and Indicators! A measure provides a quantitative indication of the extent, amount, dimension, capacity, or size of some attribute of a product or process! The IEEE glossary defines a metric as a quantitative measure of the degree to which a system, component, or process possesses a given attribute.! An indicator is a metric or combination of metrics that provide insight into the software process, a software project, or the product itself These courseware materials are to be used in conjunction with Software Engineering: A Practitioner s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright 1996, 2001, Measurement Process! Formulation. The derivation of software measures and metrics appropriate for the representation of the software that is being considered.! Collection. The mechanism used to accumulate data required to derive the formulated metrics.! Analysis. The computation of metrics and the application of mathematical tools.! Interpretation. The evaluation of metrics results in an effort to gain insight into the quality of the representation.! Feedback. Recommendations derived from the interpretation of product metrics transmitted to the software team. These courseware materials are to be used in conjunction with Software Engineering: A Practitioner s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright 1996, 2001,

4 Goal-Oriented Software Measurement! The Goa!Question/Metric Paradigm! (1) establish an explicit measurement goal that is specific to the process activity or product characteristic that is to be assessed! (2) define a set of questions that must be answered in order to achieve the goal, and! (3) identify well-formulated metrics that help to answer these questions.! Goal definition template! Analyze {the name of activity or attribute to be measured}! for the purpose of {the overall objective of the analysis}! with respect to {the aspect of the activity or attribute that is considered}! from the viewpoint of {the people who have an interest in the measurement}! in the context of {the environment in which the measurement takes place}. These courseware materials are to be used in conjunction with Software Engineering: A Practitioner s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright 1996, 2001, Metrics Attributes! simple and computable. It should be relatively easy to learn how to derive the metric, and its computation should not demand inordinate effort or time! empirically and intuitively persuasive. The metric should satisfy the engineer s intuitive notions about the product attribute under consideration! consistent and objective. The metric should always yield results that are unambiguous.! consistent in its use of units and dimensions. The mathematical computation of the metric should use measures that do not lead to bizarre combinations of units.! programming language independent. Metrics should be based on the analysis model, the design model, or the structure of the program itself.! an effective mechanism for quality feedback. That is, the metric should provide a software engineer with information that can lead to a higher quality end product These courseware materials are to be used in conjunction with Software Engineering: A Practitioner s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright 1996, 2001,

5 Collection and Analysis Principles! Whenever possible, data collection and analysis should be automated;! Valid statistical techniques should be applied to establish relationship between internal product attributes and external quality characteristics! Interpretative guidelines and recommendations should be established for each metric These courseware materials are to be used in conjunction with Software Engineering: A Practitioner s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright 1996, 2001, Analysis Metrics! Function-based metrics: use the function point as a normalizing factor or as a measure of the size of the specification! Specification metrics: used as an indication of quality by measuring number of requirements by type These courseware materials are to be used in conjunction with Software Engineering: A Practitioner s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright 1996, 2001,

6 Function-Based Metrics! The function point metric (FP), first proposed by Albrecht [ALB79], can be used effectively as a means for measuring the functionality delivered by a system.! Function points are derived using an empirical relationship based on countable (direct) measures of software s information domain and assessments of software complexity! Information domain values are defined in the following manner:! number of external inputs (EIs)! number of external outputs (EOs)! number of external inquiries (EQs)! number of internal logical files (ILFs)! Number of external interface files (EIFs) These courseware materials are to be used in conjunction with Software Engineering: A Practitioner s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright 1996, 2001, Function Points Information Weighting factor Domain Value Count simple average complex External Inputs (EIs) = External Outputs (EOs) = External Inquiries (EQs) = Internal Logical Files (ILFs) = External Interface Files (EIFs) = Count total These courseware materials are to be used in conjunction with Software Engineering: A Practitioner s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright 1996, 2001,

7 What it Refactoring? Refactoring is a disciplined process of changing a software system in such a way that it does not alter the external behavior of the code while at the same time improves its internal structure. 14

8 Refactoring Martin Fowler (and Kent Beck, John Brant, William Opdyke, Don Roberts), Refactoring- Improving the Design of Existing Code, Addison Wesley, Refactoring (noun): a change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behavior. Refactor (verb): to restructure software by applying a series of refactorings. 15 Why should refactoring be done? Argument 1 Refactoring Improves the Design of Software. - Without refactoring, the design of the program will decay. As people change code - changes to realize short-term goals or changes made without a full comprehension of the design of the code - the code loses its structure. 16

9 When should refactoring be done? Argument 2 Refactoring makes software easier to understand. - There are users of your code. The computer, the writer, and the updater. The most important is the updater. Who cares if the compiler takes a few more cycles to compile your code. If it takes someone 3 weeks to update your code that is a problem. 17 Who should be doing refactoring? Argument 3 Refactoring helps you find bugs. - Part of refactoring code is understanding the code and putting that understanding back into the code. In that process a clarification takes place. In that clarification bugs will be found. 18

10 Who should be doing refactoring? Argument 4 Refactoring Helps you Program Faster. - Without a good design, you can progress quickly for a while, but soon poor design start to slow you down. You spend time finding and fixing bugs and understanding the system instead of adding new function. New features need more coding as you patch over patches.. 19 Bad smells.! Knowing how to refactor something does not tell you when to refactor and how much to refactor.! Kent Beck and Martin Fowler coined a phrase Bad Smells to describe the hint of when to refactor.! This phrase was meant to reflect the ability and experience gained over time by a programmer that is needed to recognize bad coding structure. 20

11 Bad Smell Examples! Duplicate Code! Long Methods! Large Classes! Long Parameter Lists! Feature Envy! Data Clumps! Primitive Obsession 21 Bad smells in code! Duplicated code! The #1 bad smell! Same expression in two methods in the same class?! Make it a private ancillary routine and parameterize it - gather duplicated code! (Extract method)! Same code in two related classes?! Push commonalities into closest mutual ancestor and parameterize! Use template method DP for variation in subtasks - gather similar parts, leaving holes! (Form template method) 22

12 Bad smells in code Duplicated code Same code in two unrelated classes? Ought they be related? Introduce abstract parent (Extract class, Pull up method) Does the code really belongs to just one class? Make the other class into a client (Extract method) 23! Long method Bad smells in code! Often a sign of:! Trying to do too many things! Poorly thought out abstractions and boundaries! Best to think carefully about the major tasks and how they inter-relate.! Break up into smaller private methods within the class! (Extract method)! Delegate subtasks to subobjects that know best (i.e., template method DP)! (Extract class/method, Replace data value with object) 24

13 Bad smells in code Long method - Fowler s heuristic: When you see a comment, make a method. Often, a comment indicates: The next major step Something non-obvious whose details detract from the clarity of the routine as a whole. In either case, this is a good spot to break it up. 25 Bad smells in code! Feature envy! A method seems more interested in another class than the one it s defined in! e.g., a method A::m() calls lots of get/set methods of class B! Solution:! Move m() (or part of it) into B! (Move method/field, extract method)! Exceptions:! Visitor/iterator/strategy DP where the whole point is to decouple the data from the algorithm! Feature envy is more of an issue when both A and B have interesting data 26

14 Why not refactor? Conventional wisdom would discourage modifying a design You might break something in the code You have to update the documentation Both expensive But, there are longer term concerns: sticking with an inappropriate design Makes the code harder to change Makes the code harder to understand and maintain Very expensive in the long run 27 Refactoring Philosophy Make all changes small and methodical Follow design patterns Retest the system after each change By rerunning all of your unit tests If something breaks, it s easy to see what caused the failure 28

15 Principles of Refactoring In general, each refactoring aims to decompose large objects into smaller ones distribute responsibility Like design patterns Adds composition and delegation In some sense, refactorings are ways of applying design patterns to existing code 29 Obstacles to Refactoring Complexity Changing design is hard, understanding code is hard Possibility to introduce errors Mitigated by testing Clean first Then add new functionality Cultural Issues Producing negative lines of code, what an idea! We pay you to add new features, not to improve the code! If it ain t broke, don t fix it We do not have a problem, this is our software! 30

16 RefactorIT - Rename Renames a method, field, type, package or prefix. Updates all references.! Move Class Moves a class or interface into another package.! Encapsulate Field Replaces direct field usage with corresponding accessor methods.! Extract Method Analyzes the selected piece of code and extracts it into a separate method.! Extract Superclass/Interface Extracts selected methods and fields into new superclass or interface. 31

Evolving Software. CMSC 433 Programming Language Technologies and Paradigms Spring Example. Some Motivations for This Refactoring

Evolving Software. CMSC 433 Programming Language Technologies and Paradigms Spring Example. Some Motivations for This Refactoring CMSC 433 Programming Language Technologies and Paradigms Spring 2007 Refactoring April 24, 2007 Lots of material taken from Fowler, Refactoring: Improving the Design of Existing Code 1 Evolving Software

More information

Administrivia. Programming Language Fall Example. Evolving Software. Project 3 coming out Midterm October 28. Refactoring October 14, 2004

Administrivia. Programming Language Fall Example. Evolving Software. Project 3 coming out Midterm October 28. Refactoring October 14, 2004 CMSC 433 Programming Language Fall 2004 Project 3 coming out Midterm October 28 Administrivia Refactoring October 14, 2004 Lots of material taken from Fowler, Refactoring: Improving the Design of Existing

More information

What? reorganising its internal structure

What? reorganising its internal structure What? Improving a computer program by reorganising its internal structure without t altering its external behaviour. (http://dictionary.reference.com/browse/refactoring ) Why? Improves the over all design

More information

Credit where Credit is Due. Lecture 25: Refactoring. Goals for this lecture. Last Lecture

Credit where Credit is Due. Lecture 25: Refactoring. Goals for this lecture. Last Lecture Credit where Credit is Due Lecture 25: Refactoring Kenneth M. Anderson Object-Oriented Analysis and Design CSCI 6448 - Spring Semester, 2002 Some of the material for this lecture and lecture 26 is taken

More information

Refactoring. Chen Tang March 3, 2004

Refactoring. Chen Tang March 3, 2004 Refactoring Chen Tang March 3, 2004 What Is Refactoring (Definition) Refactoring is the process of changing a software system in such a way that it does not alter the external behavior of the code yet

More information

Designing with patterns - Refactoring. What is Refactoring?

Designing with patterns - Refactoring. What is Refactoring? Designing with patterns - Refactoring Bottom up based application of patterns Improving the design after it has been written What is Refactoring? Two definitions, the object and act of change in software

More information

Moonzoo Kim CS Division of EECS Dept.

Moonzoo Kim CS Division of EECS Dept. Chapter 15 Product Metrics Moonzoo Kim CS Division of EECS Dept. KAIST 1 Overview of Ch15. Product Metrics 15.1 Software Quality 15.2 A Framework for Product Metrics 15.3 Metrics for the Analysis Model

More information

Refactoring, 2nd Ed. A love story. Michael Hunger

Refactoring, 2nd Ed. A love story. Michael Hunger Refactoring, 2nd Ed. A love story Michael Hunger Michael Hunger Open Sourcerer Neo4j @mesirii It crashed at 940! I know what you're here for! Covers By: dev.to/rly Which Refactoring do you like most? Extract

More information

Software Design COSC 4353/6353 D R. R A J S I N G H

Software Design COSC 4353/6353 D R. R A J S I N G H Software Design COSC 4353/6353 D R. R A J S I N G H Week 5 Refactoring What is Refactoring? Code Smells Why Refactoring? Techniques IDEs What is Refactoring? Art of improving the design of existing code

More information

Patterns in Software Engineering

Patterns in Software Engineering Patterns in Software Engineering Lecturer: Raman Ramsin Lecture 10 Refactoring Patterns Part 1 1 Refactoring: Definition Refactoring: A change made to the internal structure of software to make it easier

More information

Refactoring. George Dinwiddie idia Computing, LLC

Refactoring. George Dinwiddie idia Computing, LLC Refactoring George Dinwiddie idia Computing, LLC http://idiacomputing.com http://blog.gdinwiddie.com What is Refactoring? Refactoring is a disciplined technique for restructuring an existing body of code,

More information

COURSE 11 DESIGN PATTERNS

COURSE 11 DESIGN PATTERNS COURSE 11 DESIGN PATTERNS PREVIOUS COURSE J2EE Design Patterns CURRENT COURSE Refactoring Way refactoring Some refactoring examples SOFTWARE EVOLUTION Problem: You need to modify existing code extend/adapt/correct/

More information

Refactorings. Refactoring. Refactoring Strategy. Demonstration: Refactoring and Reverse Engineering. Conclusion

Refactorings. Refactoring. Refactoring Strategy. Demonstration: Refactoring and Reverse Engineering. Conclusion Refactorings Refactoring What is it? Why is it necessary? Examples Tool support Refactoring Strategy Code Smells Examples of Cure Demonstration: Refactoring and Reverse Engineering Refactor to Understand

More information

AntiPatterns. EEC 421/521: Software Engineering. AntiPatterns: Structure. AntiPatterns: Motivation

AntiPatterns. EEC 421/521: Software Engineering. AntiPatterns: Structure. AntiPatterns: Motivation AntiPatterns EEC 421/521: Software Engineering Definition: An AntiPattern describes a commonly occurring solution to a problem that generates decidedly negative consequences Refactoring Reference: Refactoring

More information

Refactoring. Kenneth M. Anderson University of Colorado, Boulder CSCI 4448/5448 Lecture 27 11/29/11. University of Colorado, 2011

Refactoring. Kenneth M. Anderson University of Colorado, Boulder CSCI 4448/5448 Lecture 27 11/29/11. University of Colorado, 2011 Refactoring Kenneth M. Anderson University of Colorado, Boulder CSCI 4448/5448 Lecture 27 11/29/11 University of Colorado, 2011 Credit where Credit is Due Some of the material for this lecture is taken

More information

Refactoring. Refactoring Techniques

Refactoring. Refactoring Techniques Refactoring Refactoring Techniques Code Quality is Important! Refactoring is... A disciplined technique for restructuring an existing body of code, altering its internal structure without changing its

More information

Understading Refactorings

Understading Refactorings Understading Refactorings Ricardo Terra terra@dcc.ufmg.br Marco Túlio Valente mtov@dcc.ufmg.br UFMG, 2010 UFMG, 2010 Understanding Refactorings 1 / 36 Agenda 1 Overview 2 Refactoring 3 Final Considerations

More information

Agile Manifesto & XP. Topics. Rapid software development. Agile methods. Chapter ) What is Agile trying to do?

Agile Manifesto & XP. Topics. Rapid software development. Agile methods. Chapter ) What is Agile trying to do? Topics 1) What is trying to do? Manifesto & XP Chapter 3.1-3.3 2) How to choose plan-driven vs? 3) What practices go into (XP) development? 4) How to write tests while writing new code? CMPT 276 Dr. B.

More information

A Study of Bad Smells in Code

A Study of Bad Smells in Code International Journal for Science and Emerging ISSN No. (Online):2250-3641 Technologies with Latest Trends 7(1): 16-20 (2013) ISSN No. (Print): 2277-8136 A Study of Bad Smells in Code Gurpreet Singh* and

More information

Refactoring. Software Engineering, DVGC18 Faculty of Economic Sciences, Communication and IT Eivind Nordby

Refactoring. Software Engineering, DVGC18 Faculty of Economic Sciences, Communication and IT Eivind Nordby Refactoring Faculty of Economic Sciences, Communication and IT 2011-09-21 Why Refactor Refactoring is one factor in keeping your system in shape Without continuous refactoring, the system will rot It takes

More information

Refactoring. Herez Moise Kattan NUSP: João S. Brito Júnior NUSP:

Refactoring. Herez Moise Kattan NUSP: João S. Brito Júnior NUSP: Refactoring Herez Moise Kattan NUSP: 9860455 João S. Brito Júnior NUSP: 5889672 1 Definition Refactoring is the process of changing a software system in such a way that it does not* alter the external

More information

Objectives: On completion of this project the student should be able to:

Objectives: On completion of this project the student should be able to: ENGI-0655/5232 Software Construction and Evolution Project 1 Reverse Engineering Refactoring & Object Oriented Design Due date November 10, 2009-4:00 pm 1. Aims The aim of this project is to give you more

More information

CSE 403 Lecture 21. Refactoring and Code Maintenance. Reading: Code Complete, Ch. 24, by S. McConnell Refactoring, by Fowler/Beck/Brant/Opdyke

CSE 403 Lecture 21. Refactoring and Code Maintenance. Reading: Code Complete, Ch. 24, by S. McConnell Refactoring, by Fowler/Beck/Brant/Opdyke CSE 403 Lecture 21 Refactoring and Code Maintenance Reading: Code Complete, Ch. 24, by S. McConnell Refactoring, by Fowler/Beck/Brant/Opdyke slides created by Marty Stepp http://www.cs.washington.edu/403/

More information

Reengineering II. Transforming the System

Reengineering II. Transforming the System Reengineering II Transforming the System Recap: Reverse Engineering We have a detailed impression of the current state We identified the important parts We identified reengineering opportunities We have

More information

void printowing(double amount) { printbanner(); printdetails(); void printdetails(double amount) {

void printowing(double amount) { printbanner(); printdetails(); void printdetails(double amount) { Refactoring References: Martin Fowler, Refactoring: Improving the Design of Existing Code; ; Bruce Wampler, The Essence of Object-Oriented Oriented Programming with Java and UML A recent OO technique that

More information

Fascinating Observation Monitor-based Clamant Code Smell Detection Using Python

Fascinating Observation Monitor-based Clamant Code Smell Detection Using Python Fascinating Observation Monitor-based Clamant Code Smell Detection Using Python M.Sangeetha 1, Dr. P.Sengottuvelan 2 M. Sangeetha, Ph.D Research scholar, Department of computer science, Periyar University

More information

2/18/2009. Introducing Interactive Systems Design and Evaluation: Usability and Users First. Outlines. What is an interactive system

2/18/2009. Introducing Interactive Systems Design and Evaluation: Usability and Users First. Outlines. What is an interactive system Introducing Interactive Systems Design and Evaluation: Usability and Users First Ahmed Seffah Human-Centered Software Engineering Group Department of Computer Science and Software Engineering Concordia

More information

Seminar on Software Cost Estimation: Function Points

Seminar on Software Cost Estimation: Function Points : Function Points Institut für Informatik, Universität Zürich Prof. Dr. Martin Glinz Arun Mukhija WS 2002/03 10. December 2002 Author: Christoph Suter Hoffeld 2 8057 Zürich fels@datacomm.ch 1 Introduction...4

More information

Analysis of the Test Driven Development by Example

Analysis of the Test Driven Development by Example Computer Science and Applications 1 (2013) 5-13 Aleksandar Bulajic and Radoslav Stojic The Faculty of Information Technology, Metropolitan University, Belgrade, 11000, Serbia Received: June 18, 2013 /

More information

Restructuring. What is restructuring? Tudor Gîrba Reengineering life cycle. What? forward engineering. reverse engineering

Restructuring. What is restructuring? Tudor Gîrba   Reengineering life cycle. What? forward engineering. reverse engineering Restructuring Tudor Gîrba www.tudorgirba.com Reengineering life cycle Reengineering... is the examination and alteration of a subject system to reconstitute it in a new form and the subsequent implementation

More information

Maintainability and Agile development. Author: Mika Mäntylä

Maintainability and Agile development. Author: Mika Mäntylä Maintainability and Agile development Author: Mika Mäntylä ISO 9126 Software Quality Characteristics Are the required functions available in the software? How easy is it to

More information

Er. Himanshi Vashisht, Sanjay Bharadwaj, Sushma Sharma

Er. Himanshi Vashisht, Sanjay Bharadwaj, Sushma Sharma International Journal Scientific Research in Computer Science, Engineering and Information Technology 2018 IJSRCSEIT Volume 3 Issue 8 ISSN : 2456-3307 DOI : https://doi.org/10.32628/cseit183833 Impact

More information

Refactoring. Kenneth M. Anderson University of Colorado, Boulder CSCI 4448/5448 Lecture 27 04/19/11. University of Colorado, 2011

Refactoring. Kenneth M. Anderson University of Colorado, Boulder CSCI 4448/5448 Lecture 27 04/19/11. University of Colorado, 2011 Refactoring Kenneth M. Anderson University of Colorado, Boulder CSCI 4448/5448 Lecture 27 04/19/11 University of Colorado, 2011 Credit where Credit is Due Some of the material for this lecture is taken

More information

CHAPTER 11 Refactoring

CHAPTER 11 Refactoring CHAPTER 11 Refactoring Introduction When, Why, What? Which Refactoring Tools? Demonstration: Internet Banking Iterative Development Life-cycle Prototype Consolidation: design review Expansion: concurrent

More information

Refactoring. Paul Jackson. School of Informatics University of Edinburgh

Refactoring. Paul Jackson. School of Informatics University of Edinburgh Refactoring Paul Jackson School of Informatics University of Edinburgh Refactoring definition Refactoring (noun) is a change made to the internal structure of software to make it easier to understand,

More information

DAT159 Refactoring (Introduction)

DAT159 Refactoring (Introduction) DAT159 Refactoring (Introduction) Volker Stolz 1, with contributions by: Larissa Braz 2, Anna M. Eilertsen 3, Fernando Macías 1, Rohit Gheyi 2 Western Norway University of Applied Sciences, Universidade

More information

CHAPTER 4 HEURISTICS BASED ON OBJECT ORIENTED METRICS

CHAPTER 4 HEURISTICS BASED ON OBJECT ORIENTED METRICS CHAPTER 4 HEURISTICS BASED ON OBJECT ORIENTED METRICS Design evaluation is most critical activity during software development process. Design heuristics are proposed as a more accessible and informal means

More information

Object-Oriented Design

Object-Oriented Design Object-Oriented Design Lecture 14: Design Workflow Department of Computer Engineering Sharif University of Technology 1 UP iterations and workflow Workflows Requirements Analysis Phases Inception Elaboration

More information

6.001 Notes: Section 8.1

6.001 Notes: Section 8.1 6.001 Notes: Section 8.1 Slide 8.1.1 In this lecture we are going to introduce a new data type, specifically to deal with symbols. This may sound a bit odd, but if you step back, you may realize that everything

More information

SHOTGUN SURGERY DESIGN FLAW DETECTION. A CASE-STUDY

SHOTGUN SURGERY DESIGN FLAW DETECTION. A CASE-STUDY STUDIA UNIV. BABEŞ BOLYAI, INFORMATICA, Volume LVIII, Number 4, 2013 SHOTGUN SURGERY DESIGN FLAW DETECTION. A CASE-STUDY CAMELIA ŞERBAN Abstract. Due to the complexity of object oriented design, its assessment

More information

Technical Metrics for OO Systems

Technical Metrics for OO Systems Technical Metrics for OO Systems 1 Last time: Metrics Non-technical: about process Technical: about product Size, complexity (cyclomatic, function points) How to use metrics Prioritize work Measure programmer

More information

Chapter01.fm Page 1 Monday, August 23, :52 PM. Part I of Change. The Mechanics. of Change

Chapter01.fm Page 1 Monday, August 23, :52 PM. Part I of Change. The Mechanics. of Change Chapter01.fm Page 1 Monday, August 23, 2004 1:52 PM Part I The Mechanics of Change The Mechanics of Change Chapter01.fm Page 2 Monday, August 23, 2004 1:52 PM Chapter01.fm Page 3 Monday, August 23, 2004

More information

Refactoring Exercise

Refactoring Exercise Refactoring Exercise Maria Grazia Pia INFN Genova, Italy Maria.Grazia.Pia@cern.ch http://www.ge.infn.it/geant4/training/apc2017/ Exercise: The Video Store Grab basic concepts Get into the habit of refactoring

More information

COMP 354 TDD and Refactoring

COMP 354 TDD and Refactoring COMP 354 TDD and Refactoring Greg Butler Office: EV 3.219 Computer Science and Software Engineering Concordia University, Montreal, Canada Email: gregb@cs.concordia.ca Winter 2015 Course Web Site: http://users.encs.concordia.ca/

More information

JUnit A Cook's Tour. Kent Beck and Erich Gamma. Renaat Verbruggen 1#

JUnit A Cook's Tour. Kent Beck and Erich Gamma. Renaat Verbruggen 1# JUnit A Cook's Tour Kent Beck and Erich Gamma Renaat Verbruggen 1# JUnit advice "Whenever you are tempted to type something into a print statement or a debugger expression, write it as a test instead."

More information

Refactoring Without Ropes

Refactoring Without Ropes Refactoring Without Ropes Roger Orr OR/2 Limited The term 'refactoring' has become popular in recent years; but how do we do it safely in actual practice? Refactoring... Improving the design of existing

More information

Kerievsky_book.fm Page 355 Thursday, July 8, :12 PM. Index

Kerievsky_book.fm Page 355 Thursday, July 8, :12 PM. Index Kerievsky_book.fm Page 355 Thursday, July 8, 2004 12:12 PM Index A Absorbing class, 117 Abstract Factory, 70 71 Accept methods, 327 Accumulation methods, 315, 325 330 Accumulation refactorings Collecting

More information

Imagine you ve written a piece of code but then accidentally deleted and lost it.

Imagine you ve written a piece of code but then accidentally deleted and lost it. Why Refactor? Imagine you ve written a piece of code but then accidentally deleted and lost it. Questions: How much time would it take you to reconstruct from scratch what you had the same amount, or more,

More information

Plunging into the waters of UX

Plunging into the waters of UX Plunging into the waters of UX Maja Engel TCUK 2017 UX vs. UI design UX is a journey UI design and technical communication are vehicles for that journey «things» that the user can interact with A UI without

More information

Introduction to Extreme Programming. Extreme Programming is... Benefits. References: William Wake, Capital One Steve Metsker, Capital One Kent Beck

Introduction to Extreme Programming. Extreme Programming is... Benefits. References: William Wake, Capital One Steve Metsker, Capital One Kent Beck Introduction to Extreme Programming References: William Wake, Capital One Steve Metsker, Capital One Kent Beck Extreme Programming is... Lightweight software development method used for small to medium-sized

More information

Clean Code * * Or why is more important how we write code rather what we write. Assoc. prof. Catalin Boja, Asist. Bogdan Iancu, Lect.

Clean Code * * Or why is more important how we write code rather what we write. Assoc. prof. Catalin Boja, Asist. Bogdan Iancu, Lect. Clean Code * * Or why is more important how we write code rather what we write Assoc. prof. Catalin Boja, Asist. Bogdan Iancu, Lect. Alin Zamfiroiu Which are the discussion topics Why clean code? Principles

More information

Living and Working with Aging Software. Ralph Johnson. University of Illinois at Urbana-Champaign

Living and Working with Aging Software. Ralph Johnson. University of Illinois at Urbana-Champaign Living and Working with Aging Software Ralph Johnson University of Illinois at Urbana-Champaign rjohnson@illinois.edu Old software gets brittle n n Hard to change Hard to understand Software should be

More information

Practical Objects: Test Driven Software Development using JUnit

Practical Objects: Test Driven Software Development using JUnit 1999 McBreen.Consulting Practical Objects Test Driven Software Development using JUnit Pete McBreen, McBreen.Consulting petemcbreen@acm.org Test Driven Software Development??? The Unified Process is Use

More information

Administrivia. Added 20 more so far. Software Process. Only one TA so far. CS169 Lecture 2. Start thinking about project proposal

Administrivia. Added 20 more so far. Software Process. Only one TA so far. CS169 Lecture 2. Start thinking about project proposal Administrivia Software Process CS169 Lecture 2 Added 20 more so far Will limit enrollment to ~65 students Only one TA so far Start thinking about project proposal Bonus points for proposals that will be

More information

International Function Point Users Group References: Capers Jones: Applied Software Measurement (1997) Estimating Software Costs (1998)

International Function Point Users Group  References: Capers Jones: Applied Software Measurement (1997) Estimating Software Costs (1998) Function Point Estimation Normalized software project metric Application domain rather than technical domain Application functions and data rather than code International Function Point Users Group www.ifpug.org

More information

SOFTWARE ENGINEERING SOFTWARE EVOLUTION. Saulius Ragaišis.

SOFTWARE ENGINEERING SOFTWARE EVOLUTION. Saulius Ragaišis. SOFTWARE ENGINEERING SOFTWARE EVOLUTION Saulius Ragaišis saulius.ragaisis@mif.vu.lt CSC2008 SE Software Evolution Learning Objectives: Identify the principal issues associated with software evolution and

More information

B. What strategy (order of refactorings) would you use to improve the code?

B. What strategy (order of refactorings) would you use to improve the code? { return title.gettext(); public boolean needssplit() { return costlabel.gettext().equals(" >3 "); public boolean needsestimate() { return costlabel.gettext().equals("? "); Challenges PG-1. Smells. A.

More information

Sample Exam. Advanced Test Automation - Engineer

Sample Exam. Advanced Test Automation - Engineer Sample Exam Advanced Test Automation - Engineer Questions ASTQB Created - 2018 American Software Testing Qualifications Board Copyright Notice This document may be copied in its entirety, or extracts made,

More information

CHAPTER 11 Refactoring

CHAPTER 11 Refactoring CHAPTER 11 Refactoring Introduction When, Why, What? Which Refactoring Tools? Demonstration: Internet Banking Iterative Development Life-cycle Prototype Consolidation: design review Expansion: concurrent

More information

Refactoring. Section (JIA s) OTHER SOURCES

Refactoring. Section (JIA s) OTHER SOURCES Refactoring Section 7.2.1 (JIA s) OTHER SOURCES Code Evolution Programs evolve and code is NOT STATIC Code duplication Outdated knowledge (now you know more) Rethink earlier decisions and rework portions

More information

Think like an Elm developer

Think like an Elm developer Think like an Elm developer Piper Niehaus Denver, CO, USA Backpacker / skier Nonprofit board chair Software Engineer at Pivotal Pivotal Tracker team Elm in Production since 2016 Internal Products and Services

More information

Chapter 1 Programming by Intention

Chapter 1 Programming by Intention Chapter 1 Programming by Intention Everything old is new again. The folks who brought us the extreme Programming books 1 were, among other things, promoting a set of best practices in software development.

More information

Implementing evolution: Refactoring

Implementing evolution: Refactoring 2IS55 Software Evolution Sources Implementing evolution: Refactoring Alexander Serebrenik / SET / W&I 17-5-2010 PAGE 1 Last week Problem: changing code is difficult Assignment 6 Deadline: Today Assignment

More information

Client Code - the code that uses the classes under discussion. Coupling - code in one module depends on code in another module

Client Code - the code that uses the classes under discussion. Coupling - code in one module depends on code in another module Basic Class Design Goal of OOP: Reduce complexity of software development by keeping details, and especially changes to details, from spreading throughout the entire program. Actually, the same goal as

More information

Software Evolution. Dr. James A. Bednar. With material from

Software Evolution. Dr. James A. Bednar.  With material from Software Evolution Dr. James A. Bednar jbednar@inf.ed.ac.uk http://homepages.inf.ed.ac.uk/jbednar With material from Massimo Felici, Conrad Hughes, and Perdita Stevens SAPM Spring 2012: Evolution 1 Software

More information

Effects of Clean Code on Understandability. An Experiment and Analysis

Effects of Clean Code on Understandability. An Experiment and Analysis Effects of Clean Code on Understandability An Experiment and Analysis Henning Grimeland Koller Master s Thesis Spring 2016 Abstract Having understandable and readable code is important in the software

More information

Towards Cohesion-based Metrics as Early Quality Indicators of Faulty Classes and Components

Towards Cohesion-based Metrics as Early Quality Indicators of Faulty Classes and Components 2009 International Symposium on Computing, Communication, and Control (ISCCC 2009) Proc.of CSIT vol.1 (2011) (2011) IACSIT Press, Singapore Towards Cohesion-based Metrics as Early Quality Indicators of

More information

CS 370 The Pseudocode Programming Process D R. M I C H A E L J. R E A L E F A L L

CS 370 The Pseudocode Programming Process D R. M I C H A E L J. R E A L E F A L L CS 370 The Pseudocode Programming Process D R. M I C H A E L J. R E A L E F A L L 2 0 1 5 Introduction At this point, you are ready to beginning programming at a lower level How do you actually write your

More information

CSC 408F/CSC2105F Lecture Notes

CSC 408F/CSC2105F Lecture Notes CSC 408F/CSC2105F Lecture Notes These lecture notes are provided for the personal use of students taking CSC 408H/CSC 2105H in the Fall term 2004/2005 at the University of Toronto. Copying for purposes

More information

Design First ITS Instructor Tool

Design First ITS Instructor Tool Design First ITS Instructor Tool The Instructor Tool allows instructors to enter problems into Design First ITS through a process that creates a solution for a textual problem description and allows for

More information

1: Introduction to Object (1)

1: Introduction to Object (1) 1: Introduction to Object (1) 김동원 2003.01.20 Overview (1) The progress of abstraction Smalltalk Class & Object Interface The hidden implementation Reusing the implementation Inheritance: Reusing the interface

More information

Static rules of variable scoping in Erlang

Static rules of variable scoping in Erlang Proceedings of the 7 th International Conference on Applied Informatics Eger, Hungary, January 28 31, 2007. Vol. 2. pp. 137 145. Static rules of variable scoping in Erlang László Lövei, Zoltán Horváth,

More information

CS247. Today s topics. Design matters. What is refactoring?

CS247. Today s topics. Design matters. What is refactoring? Today s topics CS247 Refactoring Adapted from Martin Fowler s text and Mike Godfrey s slides. What is refactoring and why do we care? The rule of three. A simple case study that applies some refactorings.

More information

SOFTWARE ENGINEERING AND PROJECT MAN AGEMENT

SOFTWARE ENGINEERING AND PROJECT MAN AGEMENT SOFTWARE ENGINEERING AND PROJECT MAN AGEMENT Question: Difference between Verification and Validation? Answer: Verification ensures the product is designed to deliver all functionality to the customer;

More information

Module 10A Lecture - 20 What is a function? Why use functions Example: power (base, n)

Module 10A Lecture - 20 What is a function? Why use functions Example: power (base, n) Programming, Data Structures and Algorithms Prof. Shankar Balachandran Department of Computer Science and Engineering Indian Institute of Technology, Madras Module 10A Lecture - 20 What is a function?

More information

Agile Architecture. The Why, the What and the How

Agile Architecture. The Why, the What and the How Agile Architecture The Why, the What and the How Copyright Net Objectives, Inc. All Rights Reserved 2 Product Portfolio Management Product Management Lean for Executives SAFe for Executives Scaled Agile

More information

Extreme programming XP 6

Extreme programming XP 6 Extreme programming XP 6 Planning Game 3 Planning Game Independent: Stories should be as independent as possible. When thinking of independence it is often easier to think of order independent. In other

More information

XP: Planning, coding and testing. Practice Planning game. Release Planning. User stories. Annika Silvervarg

XP: Planning, coding and testing. Practice Planning game. Release Planning. User stories. Annika Silvervarg XP: Planning, coding and testing Annika Silvervarg Practice Planning game Goal: schedule the most important tasks Which features to implement in what order Supports: simple design, acceptance testing,

More information

Plan. Design principles: laughing in the face of change. What kind of change? What are we trying to achieve?

Plan. Design principles: laughing in the face of change. What kind of change? What are we trying to achieve? Plan Design principles: laughing in the face of change Perdita Stevens School of Informatics University of Edinburgh What are we trying to achieve? Review: Design principles you know from Inf2C-SE Going

More information

Building custom components IAT351

Building custom components IAT351 Building custom components IAT351 Week 1 Lecture 1 9.05.2012 Lyn Bartram lyn@sfu.ca Today Review assignment issues New submission method Object oriented design How to extend Java and how to scope Final

More information

IjX: ImageJ refactored to interfaces for extensibility or Evolving ImageJ to an Extensible Imaging Framework

IjX: ImageJ refactored to interfaces for extensibility or Evolving ImageJ to an Extensible Imaging Framework IjX: ImageJ refactored to interfaces for extensibility or Evolving ImageJ to an Extensible Imaging Framework A Proposal by Grant B. Harris, December 13, 2008. ImageJ has exploded beyond an image processing

More information

A few more things about Agile and SE. Could help in interviews, but don t try to bluff your way through

A few more things about Agile and SE. Could help in interviews, but don t try to bluff your way through A few more things about Agile and SE Could help in interviews, but don t try to bluff your way through 1 Refactoring How to do it, where it fits in http://www.cse.ohio-state.edu/~crawfis/cse3902/index.htm

More information

HOW AND WHEN TO FLATTEN JAVA CLASSES?

HOW AND WHEN TO FLATTEN JAVA CLASSES? HOW AND WHEN TO FLATTEN JAVA CLASSES? Jehad Al Dallal Department of Information Science, P.O. Box 5969, Safat 13060, Kuwait ABSTRACT Improving modularity and reusability are two key objectives in object-oriented

More information

Software Design Patterns. Background 1. Background 2. Jonathan I. Maletic, Ph.D.

Software Design Patterns. Background 1. Background 2. Jonathan I. Maletic, Ph.D. Software Design Patterns Jonathan I. Maletic, Ph.D. Department of Computer Science Kent State University J. Maletic 1 Background 1 Search for recurring successful designs emergent designs from practice

More information

Code Refactoring. CS356 Object-Oriented Design and Programming November 21, 2014

Code Refactoring. CS356 Object-Oriented Design and Programming   November 21, 2014 Code Refactoring CS356 Object-Oriented Design and Programming http://cs356.yusun.io November 21, 2014 Yu Sun, Ph.D. http://yusun.io yusun@csupomona.edu The Problem: Software Drift Over many phases of maintenance,

More information

Scenarios, Quality Attributes, and Patterns: Capturing and Using their Synergistic Relationships for Product Line Architectures

Scenarios, Quality Attributes, and Patterns: Capturing and Using their Synergistic Relationships for Product Line Architectures Scenarios, Quality Attributes, and Patterns: Capturing and Using their Synergistic Relationships for Product Line Architectures Muhammad Ali Babar National ICT Australia Ltd. and University of New South

More information

Function Point Counting Practices Manual. Release 4.2.1

Function Point Counting Practices Manual. Release 4.2.1 Function Point Counting Practices Manual Release 4.2.1 International Function Point Users Group (IFPUG) Function Point Counting Practices Manual Release 4.2.1 Chairperson, Counting Practices Committee

More information

Introduction to Extreme Programming

Introduction to Extreme Programming Introduction to Extreme Programming References: William Wake, Capital One Steve Metsker, Capital One Kent Beck Robert Martin, Object Mentor Ron Jeffries,et.al. 12/3/2003 Slide Content by Wake/Metsker 1

More information

c Copyright 2004, Vinicius Cardoso Garcia, Eduardo Kessler Piveta, Daniel Lucrédio, Alexandre Alvaro, Eduardo Santana de Almeida, Antonio Francisco

c Copyright 2004, Vinicius Cardoso Garcia, Eduardo Kessler Piveta, Daniel Lucrédio, Alexandre Alvaro, Eduardo Santana de Almeida, Antonio Francisco c Copyright 2004, Vinicius Cardoso Garcia, Eduardo Kessler Piveta, Daniel Lucrédio, Alexandre Alvaro, Eduardo Santana de Almeida, Antonio Francisco do Prado, Luiz Carlos Zancanella. Permission is granted

More information

Intro to: Design Principles

Intro to: Design Principles Intro to: Design Principles Pragmatic Programmer: Eliminate Effects Between Unrelated Things design components that are: self-contained, independent, and have a single, well-defined purpose Software Design

More information

As a programmer, you know how easy it can be to get lost in the details

As a programmer, you know how easy it can be to get lost in the details Chapter 1 Congratulations, Your Problem Has Already Been Solved In This Chapter Introducing design patterns Knowing how design patterns can help Extending object-oriented programming Taking a look at some

More information

02161: Software Engineering I

02161: Software Engineering I 02161: Software Engineering I Week 9: Version Control, Software Development Process, and Project Introduction Hubert Baumeister Informatics and Mathematical Modelling Technical University of Denmark Spring

More information

Credit where Credit is Due. Lecture 29: Test-Driven Development. Test-Driven Development. Goals for this lecture

Credit where Credit is Due. Lecture 29: Test-Driven Development. Test-Driven Development. Goals for this lecture Lecture 29: Test-Driven Development Kenneth M. Anderson Object-Oriented Analysis and Design CSCI 6448 - Spring Semester, 2003 Credit where Credit is Due Some of the material for this lecture is taken from

More information

כללי Extreme Programming

כללי Extreme Programming פיתוח מער כות תוכנה מבוססות Java כללי Extreme Programming אוהד ברזילי ohadbr@tau.ac.il Based on: K. Beck: Extreme Programming Explained. E. M. Burke and B.M. Coyner: Java Extreme Programming Cookbook.

More information

Design Pattern What is a Design Pattern? Design Pattern Elements. Almas Ansari Page 1

Design Pattern What is a Design Pattern? Design Pattern Elements. Almas Ansari Page 1 What is a Design Pattern? Each pattern Describes a problem which occurs over and over again in our environment,and then describes the core of the problem Novelists, playwrights and other writers rarely

More information

Some doubts about the objectivity of logical determination of the uniqueness of the elementary process in the Function Point Analysis

Some doubts about the objectivity of logical determination of the uniqueness of the elementary process in the Function Point Analysis Some doubts about the objectivity of logical determination of the uniqueness of the elementary process in the Function Point Analysis Table of Contents Marian Zalcman, Ph.D. ASSECO Poland, Rzeszów 1. Introduction

More information

Layout-compatibility and Pointer-interconvertibility Traits

Layout-compatibility and Pointer-interconvertibility Traits Document: P0466R2 Date: 2018-03-29 Reply-to: Lisa Lippincott Audience: Evolution; LEWG; LWG Layout-compatibility and Pointer-interconvertibility Traits Lisa Lippincott Abstract

More information

Abstract: Refactorings are used to improve the internal structure of software without changing its external behavior.

Abstract: Refactorings are used to improve the internal structure of software without changing its external behavior. Refactoring: Risks and its Effects on Software Quality Attribute Ramesh Kumar, Dr.Rajesh Verma Research Scholar, Department of Computer Science, Singhania University, Rajasthan. Asst. Professor, Department

More information

Component-Level Design. Slides copyright 1996, 2001, 2005, 2009 by Roger S. Pressman. For non-profit educational use only

Component-Level Design. Slides copyright 1996, 2001, 2005, 2009 by Roger S. Pressman. For non-profit educational use only Chapter 10 Component-Level Design Slide Set to accompany Software Engineering: A Practitioner s Approach, 7/e by Roger S. Pressman Slides copyright 1996, 2001, 2005, 2009 by Roger S. Pressman For non-profit

More information

Software Metrics 2.1 INTRODUCTION 2.2 PROJECT MANAGEMENT PROCESS ACTIVITIES

Software Metrics 2.1 INTRODUCTION 2.2 PROJECT MANAGEMENT PROCESS ACTIVITIES 2 C h a p t e r Software Metrics 2.1 INTRODUCTION I am reminded of a very interesting story when we talk of software metrics. Once there was a meeting going on in USA. In that meeting, one of the ladies

More information