XP2007b Extreme Code Quality Dongsu Park Venkatesh BS.

Slides:



Advertisements
Similar presentations
XP2007b Planning and Tracking Andrey Romanov Venkatesh BS.
Advertisements

30-Apr-15 Extreme Programming. 2 Software engineering methodologies A methodology is a formalized process or set of practices for creating software An.
© AgiliX Agile Development Consulting Agile Software Architecture Cesario Ramos.
Unnat-e Infotech 1 Object Oriented Concepts Introduction.
1 Software Maintenance and Evolution CSSE 575: Session 2, Part 2 Composing Methods Steve Chenoweth Office Phone: (812) Cell: (937)
A P RAGMATIC A PPROACH Brent Bradbury Joshua Bruning.
REFACTORING. What is refactoring ? In refactoring, you start with the basic code and make it better. Change the internal structure of the existing code.
Improving Testability Dave Catlett Test Architect, Microsoft
CSCE 121, Sec 200, 507, 508 Software Engineering Fall 2010 Prof. Jennifer L. Welch.
Lecturer: Sebastian Coope Ashton Building, Room G.18 COMP 201 web-page: Lecture.
Software Engineering and Design Principles Chapter 1.
Designing classes How to write classes in a way that they are easily understandable, maintainable and reusable 4.0.
Copyright W. Howden1 Lecture 6: Design Evaluation and Intro to OO Design Patterns.
Visual Languages and Human-Centric Computing September 9, 2004 Managing Duplicated Code with Linked Editing Michael Toomim, Andrew Begel and Susan L. Graham.
Introduction to Refactoring Excerpted from ‘What is Refactoring?’ by William C. Wake and Refactoring: Improving the Design of Existing Code by Martin Fowler.
WEL COME PRAVEEN M JIGAJINNI PGT (Computer Science) MCA, MSc[IT], MTech[IT],MPhil (Comp.Sci), PGDCA, ADCA, Dc. Sc. & Engg.
CS 4240: The OO Paradigm Revisited Readings: Chap. 1 of Design Patterns Explained OO (some review) Coupling, cohesion.
Test-Driven Development “Test first, develop later!” –OCUnit.
Chapter 7 Designing Classes. Class Design When we are developing a piece of software, we want to design the software We don’t want to just sit down and.
Design Patterns Trends and Case Study John Hurst June 2005.
A Survey of Software Refactoring Tom Mens, Tom Tourwé
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
Agile Web Development C. Daniel Chase University of Colorado at Boulder.
GENERAL CONCEPTS OF OOPS INTRODUCTION With rapidly changing world and highly competitive and versatile nature of industry, the operations are becoming.
Design-Making Projects Work (Chapter7) n Large Projects u Design often distinct from analysis or coding u Project takes weeks, months or years to create.
Object Oriented Analysis and Design Introduction.
1 Chapter 5 Practice: A Generic View Software Engineering: A Practitioner’s Approach, 6th edition by Roger S. Pressman.
Refactoring Cristescu Marilena. Definitions Loose Usage: Reorganize a program(or something) As a noun: a change made to the internal structure of some.
What’s the Goal of Design? Answer: Flexibility As you arrive… If you have not done so already, please set up your computer to snarf code using the Ambient.
1 On to Object Design Chapter 14 Applying UML and Patterns.
Week 3-4 MondayTuesdayWednesdayThursdayFriday Design Reading II due Group meetings SRS due DesignUMLDesign Progress report due Lecture TBA Reading III.
Extreme Programming (XP). Agile Software Development Paradigm Values individuals and interactions over processes and tools. Values working software over.
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
Improving the Quality of Existing Code Svetlin Nakov Telerik Corporation
Criteria Based Software Product Integration Architecture F. Tsui Southern Polytechnic State University.
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Design Patterns IX Interpreter, Mediator, Template Method recap.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 11 Slide 1 Design.
Software Engineering Saeed Akhtar The University of Lahore Lecture 6 Originally shared for: mashhoood.webs.com.
1 5 Nov 2002 Risto Pohjonen, Juha-Pekka Tolvanen MetaCase Consulting AUTOMATED PRODUCTION OF FAMILY MEMBERS: LESSONS LEARNED.
Service Oriented Architecture CCT355H5 Professor Michael Jones Suezan Makkar.
Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in.
Reviews and Inspections. Types of Evaluations Formal Design Reviews conducted by senior personnel or outside experts uncover potential problems Inspections.
Comp 311 Principles of Programming Languages Lecture 1 Course Overview and Culture Corky Cartwright August 25, 2008.
3-1 Encapsulation and Connascence Encapsulation and connascence are the two fundamental properties of object-oriented systems Encapsulation and connascence.
Designing Classes. Software changes Software is not like a novel that is written once and then remains unchanged. Software is extended, corrected, maintained,
CS 350 – Software Design Expanding Our Horizons – Chapter 8 The traditional view of objects is that they are data with methods. Sometimes objects could.
AGILE XP AND SCRUM © University of LiverpoolCOMP 319slide 1.
Informatics 122 Software Design II Lecture 12 Emily Navarro Duplication of course material for any commercial purpose without the explicit written permission.
Refactoring Agile Development Project. Lecture roadmap Refactoring Some issues to address when coding.
The Last Lecture CS 5010 Program Design Paradigms "Bootcamp" Lesson © Mitchell Wand, This work is licensed under a Creative Commons Attribution-NonCommercial.
Objects First With Java A Practical Introduction Using BlueJ Designing classes How to write classes in a way that they are easily understandable, maintainable.
Refactoring Constants and Variables Lesson Three: Constants and Variables.
Fundamentals of Visual Modeling with UML Module 1: Introduction to Object Technology.
1 CEN 4020 Software Engineering PPT4: Requirement analysis.
Refactoring. DCS – SWC 2 Refactoring ”A change made to the internal structure of software to make it easier to understand and cheaper to modify without.
WARNING These slides are not optimized for printing or exam preparation. These are for lecture delivery only. These slides are made for PowerPoint 2010.
More SQA Reviews and Inspections. Types of Evaluations  Verification Unit Test, Integration Test, Usability Test, etc  Formal Reviews  aka "formal.
How to become a pragmatic programmer By Rick Mason, BusinessGrade.com.
Principled N-Tier Design or, a Solution to the Solution Problem Steve | ardalis.com Telerik, Inc.
Code Refactoring Milan Vukoje Soprex SkfOffice2 SkfOffice3 Big5 Quality oriented We are hiring…
© 2011 IBM Corporation ® Managing Decision services in WebSphere Message Broker using WebSphere ILOG JRules. Amar Shah Mallanagouda Patil December 2011.
Embedded Systems Software Engineering
Canvas and Arrays in Apps
Object-Orientated Analysis, Design and Programming
Reviewing Code A guide to smelling another developer’s source code.
Agile Software Development Paradigms
Software Construction and Evolution - CSSE 375 Composing Methods
Software Engineering Lecture #45
Object oriented analysis and design
Software Design Principles
Presentation transcript:

XP2007b Extreme Code Quality Dongsu Park Venkatesh BS

Agenda What is “Extreme Code Quality”? How to do it in XP. Example. Remember.

What is Extreme Code Quality? Code Quality: Amount of flexibility in the code. Flexibility: change, adapt and re-use. Extreme : To the maximum possible via XP paradigm. Why? Because of humans. Misunderstand communications. Requirements change. Examples*: per month (software industry requirement change).  30% of rework due to mistakes (building construction). “Soft”ware – easy to change: how well, how fast, how cheap. To get a good design. * Source: IEEE Software, May 2004; Andy Hunt and Dave Thomas

How to do it in XP? Test everything. Code should be testable. Write tests together with code. Keep it DRY / Eliminate Duplication. Don’t Repeat Yourself: Code (Documents, Review, Processes) Duplication is harder to read (time consuming and redundant reading), understand and maintain. Keep it Shy Highly modular, highly cohesive and loosely coupled. Static, Dynamic, Domain and Temporal couplings. Tell the other guy. Tell, don’t ask (OO Principle: not as Function -> as Message!). Let the code reflect your intentions. Tools: Refactoring. DRY: Do not Repeat Yourself.

Example. Test everything. Finite State Machine. Keep it DRY / Eliminate Duplication. Extract Superclass Logic Actions Logic Actions

Example… cont. Minimize entities. Extract class Express all ideas. Introduce explaining variable. if ( (platform.toUpperCase().indexOf("MAC") > -1) && (browser.toUpperCase().indexOf("IE") > -1) && wasInitialized() && resize > 0 ) { // do something } final boolean isMacOs = platform.toUpperCase().indexOf("MAC") > -1; final boolean isIEBrowser = browser.toUpperCase().indexOf("IE") > -1; final boolean wasResized = resize > 0; if (isMacOs && isIEBrowser && wasInitialized() && wasResized) { // do something }

Remember Keep it DRY, Keep it Shy and Tell the other guy. Test everything, Eliminate duplication, Minimize entities and Express all ideas. Extreme code quality is important. Apply the principles and review (daily/weekly). Allocate time in your planning. It looks subjective – so understand and practice ! Past eXP: Everyone knew refactoring but was not applied. It’s a challenge for us to apply …

danke für Ihnen Aufmerksamkeit Fragen?

References Agile Software Development, Principles, Patterns and Practices ; Robert C. Martin Previous XP Lab presentations;XP2007a