Software Reengineering P1: Intro & Organization. Martin Pinzger Delft University of Technology

Similar documents
Software Maintenance

Implementing a tool to Support KAOS-Beta Process Model Using EPF

Empirical Software Evolvability Code Smells and Human Evaluations

Deploying Agile Practices in Organizations: A Case Study

The open source development model has unique characteristics that make it in some

Software Security: Integrating Secure Software Engineering in Graduate Computer Science Curriculum

PROCESS USE CASES: USE CASES IDENTIFICATION

Chamilo 2.0: A Second Generation Open Source E-learning and Collaboration Platform

Introduction to Modeling and Simulation. Conceptual Modeling. OSMAN BALCI Professor

A Pipelined Approach for Iterative Software Process Model

Use of CIM in AEP Enterprise Architecture. Randy Lowe Director, Enterprise Architecture October 24, 2012

The Role of Architecture in a Scaled Agile Organization - A Case Study in the Insurance Industry

Institutionen för datavetenskap. Hardware test equipment utilization measurement

PESIT SOUTH CAMPUS 10CS71-OBJECT-ORIENTED MODELING AND DESIGN. Faculty: Mrs.Sumana Sinha No. Of Hours: 52. Outcomes

Specification of the Verity Learning Companion and Self-Assessment Tool

Objects Identification in Object-Oriented Software Development - A Taxonomy and Survey on Techniques

An OO Framework for building Intelligence and Learning properties in Software Agents

COURSE INFORMATION. Course Number SER 216. Course Title Software Enterprise II: Testing and Quality. Credits 3. Prerequisites SER 215

Data Structures and Algorithms

TAP Responsibilities. Gordon Burke

1 Use complex features of a word processing application to a given brief. 2 Create a complex document. 3 Collaborate on a complex document.

Using Task Context to Improve Programmer Productivity

Activities, Exercises, Assignments Copyright 2009 Cem Kaner 1

The University of Iceland

Procedures for Academic Program Review. Office of Institutional Effectiveness, Academic Planning and Review

Specification and Evaluation of Machine Translation Toy Systems - Criteria for laboratory assignments

Including the Microsoft Solution Framework as an agile method into the V-Modell XT

Collective Code Bookmarks for Program Comprehension

A Model to Detect Problems on Scrum-based Software Development Projects

McGraw-Hill Connect and Create Built by Blackboard. Release Notes. Version 2.3 for Blackboard Learn 9.1

Pair Programming: When and Why it Works

DIGITAL GAMING & INTERACTIVE MEDIA BACHELOR S DEGREE. Junior Year. Summer (Bridge Quarter) Fall Winter Spring GAME Credits.

Rachel Edmondson Adult Learner Analyst Jaci Leonard, UIC Analyst

Nearing Completion of Prototype 1: Discovery

Operational Knowledge Management: a way to manage competence

Online Marking of Essay-type Assignments

COMPETENCY-BASED STATISTICS COURSES WITH FLEXIBLE LEARNING MATERIALS

Patterns for Adaptive Web-based Educational Systems

Teaching Tornado. From Communication Models to Releases. Stephan Krusche. Department of Computer Science, Technische Universitaet Muenchen

UCEAS: User-centred Evaluations of Adaptive Systems

COMM370, Social Media Advertising Fall 2017

Different Requirements Gathering Techniques and Issues. Javaria Mushtaq

IT Project List. Description

OCR LEVEL 3 CAMBRIDGE TECHNICAL

Please find below a summary of why we feel Blackboard remains the best long term solution for the Lowell campus:

Ministry of Education, Republic of Palau Executive Summary

Software Development Plan

EDITORIAL: ICT SUPPORT FOR KNOWLEDGE MANAGEMENT IN CONSTRUCTION

November 17, 2017 ARIZONA STATE UNIVERSITY. ADDENDUM 3 RFP Digital Integrated Enrollment Support for Students

PROJECT PERIODIC REPORT

MASTER OF SCIENCE (M.S.) MAJOR IN COMPUTER SCIENCE

PeopleSoft Human Capital Management 9.2 (through Update Image 23) Hardware and Software Requirements

DOCTORAL SCHOOL TRAINING AND DEVELOPMENT PROGRAMME

Moodle Student User Guide

RESEARCH INTEGRITY AND SCHOLARSHIP POLICY

Intel-powered Classmate PC. SMART Response* Training Foils. Version 2.0

Doctoral Student Experience (DSE) Student Handbook. Version January Northcentral University

Cannot Submit Changes to Delegated Grading Options in Available Assignments

Abstractions and the Brain

Web as Corpus. Corpus Linguistics. Web as Corpus 1 / 1. Corpus Linguistics. Web as Corpus. web.pl 3 / 1. Sketch Engine. Corpus Linguistics

Smarter ELA/Literacy and Mathematics Interim Comprehensive Assessment (ICA) and Interim Assessment Blocks (IABs) Test Administration Manual (TAM)

MARKETING MANAGEMENT II: MARKETING STRATEGY (MKTG 613) Section 007

Patterns for Supervising Thesis Projects

DATA MANAGEMENT PROCEDURES INTRODUCTION

e-portfolios in Australian education and training 2008 National Symposium Report

Programme Specification

Davidson College Library Strategic Plan

Class Numbers: & Personal Financial Management. Sections: RVCC & RVDC. Summer 2008 FIN Fully Online

A BOOK IN A SLIDESHOW. The Dragonfly Effect JENNIFER AAKER & ANDY SMITH

CURRICULUM PROCEDURES REFERENCE MANUAL. Section 3. Curriculum Program Application for Existing Program Titles (Procedures and Accountability Report)

Reducing Features to Improve Bug Prediction

Experiences Using Defect Checklists in Software Engineering Education

Process improvement, The Agile Way! By Ben Linders Published in Methods and Tools, winter

WP 2: Project Quality Assurance. Quality Manual

ACCT 3400, BUSN 3400-H01, ECON 3400, FINN COURSE SYLLABUS Internship for Academic Credit Fall 2017

IMGD Technical Game Development I: Iterative Development Techniques. by Robert W. Lindeman

Subject: Regulation FPU Textbook Adoption and Affordability

Bachelor of International Hospitality Management

Modeling user preferences and norms in context-aware systems

Instructional Materials Survey For Compliance With Education Code Sections 1240 (i) And Elementary School Level

Strategy and Design of ICT Services

EdX Learner s Guide. Release

AGENDA LEARNING THEORIES LEARNING THEORIES. Advanced Learning Theories 2/22/2016

THE DoD HIGH LEVEL ARCHITECTURE: AN UPDATE 1

The Future of Consortia among Indian Libraries - FORSA Consortium as Forerunner?

P. Belsis, C. Sgouropoulou, K. Sfikas, G. Pantziou, C. Skourlas, J. Varnas

Computer Science 141: Computing Hardware Course Information Fall 2012

CEFR Overall Illustrative English Proficiency Scales

Every student absence jeopardizes the ability of students to succeed at school and schools to

It's Not Just Standing Up: Patterns for Daily Stand-up Meetings

CWIS 23,3. Nikolaos Avouris Human Computer Interaction Group, University of Patras, Patras, Greece

A MULTI-AGENT SYSTEM FOR A DISTANCE SUPPORT IN EDUCATIONAL ROBOTICS

Demography and Population Geography with GISc GEH 320/GEP 620 (H81) / PHE 718 / EES80500 Syllabus

Supporting flexible collaborative distance learning in the CURE platform

Dublin City Schools Career and College Ready Academies FAQ. General

Experience and Innovation Factory: Adaptation of an Experience Factory Model for a Research and Development Laboratory

Banner Financial Aid Release Guide. Release and June 2017

MAGNETIC ANALYSIS CORPORATION TRAINING AND INFORMATION PROGRAMS ELECTROMAGNETIC TEST METHODS CONTENTS. Introduction Page 1

Being Extreme in the Classroom: Experiences Teaching XP

Software Engineering Education at Carnegie Mellon University: One University; Programs Taught in Two Places

Transcription:

Software Reengineering P1: Intro & Organization Martin Pinzger Delft University of Technology

Greenfield software development 2

Non-greenfield software development? 3

How often did you...... encounter greenfield and non-greenfield software engineering? 4

Why non-greenfield engineering? Because existing software, often called legacy software, is valuable Often business-critical A huge amount of money has already been invested in it Has been tested and runs Does (mainly) what it should do Would you replace such a system? 5

Why do we (often) start from a mess? 6

Lehman s Laws of software evolution Continuing change A program that is used in a real-world environment must change, or become progressively less useful in that environment. Increasing complexity As a program evolves, it becomes more complex, and extra resources are needed to preserve and simplify its structure. For more information read Lehman and Belady, 1985 7

Evolution of Mozilla source code 8

Lehman s Laws in practice Existing software Is often modified in an ad-hoc manner (quick fixes) Lack of time, resources, money, etc. Initial good design is not maintained Spaghetti code, copy/paste programming, dependencies are introduced, no tests, etc. Documentation is not updated (if there is one) Architecture and design documents Original developers leave and with them their knowledge 9

Typical result of such practices 10

Implications of the results Software maintenance costs continuously increase Between 50% and 75% of global software development costs are spent on maintenance! Up to 60% of a maintenance effort is spent on understanding the existing software 11

What is your decision? According to Lehman: there will always be changes hack it? * duplicated code * complex conditionals * abusive inheritance * large classes/methods * first reengineer * then implement changes Take a loan on your software pay back via reengineering Investment for the future paid back during maintenance 12

Let s reengineer Definition: Reengineering is the examination and alteration of a subject system to reconstitute it in a new form and the subsequent implementation of the new form. [Demeyer, Ducasse, Nierstrasz] 13

Reengineering Life-Cycle (1) requirement analysis New Requirements (3) problem detection (4) problem resolution Designs (2) model capture Code 14

Goals of reengineering Testability Understandability Modifiability Extensibility Maintainability 15

Goals of reengineering (concrete) Unbundling Split a monolithic system into parts that can be separately marketed Performance First do it, then do it right, then do it fast Design extraction To improve maintainability, portability, etc. Exploitation of New Technology I.e., new language features, standards, libraries, etc. 16

In this course, you will learn and apply Best practices to analyze and understand software systems (i.e., reverse engineering) Heuristics and tools to detect shortcomings in the design and implementation of software systems Testing and re-factoring techniques to systematically resolve these shortcomings 17

Course Organization

General information LV Info Block course, IFI 1.D.07 1st block: 21.09. -- 23.09.2011 each from 8:15 -- 10:00 and 14:00 -- 15:45 2nd block: 2.11. -- 4.11.2011 each from 8:15 -- 10:00 and 14:00 -- 15:45 Presentations and final exam: 16.12.2011 Language: English AP (ECTS): 4 Subscription until: 14. October 2011? Attend the lectures and prepare for each lecture! Latest news always at: http://seal.ifi.uzh.ch/reeng/ 19

Overview of the course Block 1 Today 22.09.2011 Overview of the course and the lab, Setting direction & Initial understanding Reverse engineering -- Detailed model capture DA4Java demo 22.09.2011 Code smells and evolution 23.09.2011 23.09.2011 OO Design Principles Findbugs, PMD, Metrics tool Code Clone Detection, CCFinderX Demo Overview Dynamic Analysis 20

Overview of the course (cont.) Block 2 02.11.2011 Feedback on Assignment I: Problem Detection 03.11.2011 Testing and Refactoring 03.11.2011 Guest lecture by Canoo (TBO) 04.11.2011 Working Effectively with Legacy Code 04.11.2011 Refactoring to Patterns 21

Overview of the course (cont.) Lab presentations & exams 16.12.2011 Lab presentations & exams 22

How will you be assessed? Lab assignments Assignment I: Problem Detection (30%) Assignment II: Re-engineering (30%) Final presentation of your results (20%) Oral examination after/during the final presentation (20%) Your contribution to the lecture (+/- 5%) 23

Reading material Object-Oriented Reengineering Patterns Serge Demeyer, Stephane Ducasse, and Oscar Nierstrasz free copy from: http://scg.unibe.ch/download/oorp/ Working Effectively with Legacy Code Michael Feathers, Prentice Hall, 1 edition, 2004 Refactoring to Patterns Joshua Kerievsky, Addison-Wesley Professional, 2004 I will provide copies of selected chapters 24

Additional reading Agile Software Development: Principles Patterns, and Practices Robert C. Martin, Prentice Hall Object-Oriented Design Heuristics Arthur J. Riel, Prentice Hall, 1 edition, 1996 Refactoring: Improving the Design of Existing Code Martin Fowler, Addison-Wesley Professional, 1999 25

The Reengineering Lab

The system: jmonkeyengine 3.0 A modern 3D game engine in Java Documentation http://jmonkeyengine.org/ Source code (Eclipse project) ~110.000 lines of code Checkout from svn repository http://jmonkeyengine.googlecode.com/svn/trunk/engine/ 27

Lab outline Reengineering of a jmonkeyengine 3.0 Part I: Reverse Engineering & Problem Detection Initial understanding, detailed model capture Code smells, violations of class and package design principles Part II: Testing & Refactoring Develop a test harness Refactor to improve the design and implementation 28

Phase 1: Reverse Engineering First Contact Install the system and find out what its features are Is a reengineering feasible or should we re-implement it from scratch? Reverse Engineering What are the building blocks of jmonkeyengine? What is the design of jmonkeyengine (package level, class level)? Problem Detection Where do you expect implementation design shortcomings? See also http://seal.ifi.uzh.ch/reeng_uebung/ 29

TODO for you Exercise 1: Perform First Contact and Reverse Engineering Detect problems in the design of jmonkeyengine 3.0 Problems on the code level (smells): Duplicated Code, Solution Sprawl, Long Method, Conditional Complexity, Large Class, Violations of class design principles: Single Responsibility, Open/Closed, Dependency Inversion Violations of package design principles: Reuse-Release Equivalence, Common-Reuse, Common-Closure, Acyclic-Dependencies, Stable-Dependencies, Stable-Abstractions -> Simple problems in the source code do not count (e.g., naming)! Write up a report Template can be found on the web-site Deadline for submission of report: 25.10.2011, 18:00 sharp! 30