Software Reengineering Assignment Decomposing ArgoUML

Size: px
Start display at page:

Download "Software Reengineering Assignment Decomposing ArgoUML"

Transcription

1 Software Reengineering Assignment Decomposing ArgoUML Steven Aerts Bart Braem th June 00 The Assignment The assignment consists of transforming ArgoUML into a nearly decomposable system : A nearly decomposable system is a system consisting of subsystems for which the interactions among subsystems is of a different order of magnitude from that of the interactions within subsystems. The analogy with a classification is obvious if one looks upon classes as subsystems. The relevant properties are: the short-run behaviour of each of the component subsystems is approximately independent of the short-run behaviour of the other components; the long-run behaviour of each of the component subsystems depends in only an aggregate way on the behaviour of the other components. Feasibility A number of observations on ArgoUML made us decide that the proposed reengineering of ArgoUML seemed feasible: ArgoUML has numerous tests. The overall test coverage, according to Clover, is rather high:.%. The fact that ArgoUML has a GUI makes this result even better. The project structure was already fairly modular, as shown in figure. ArgoUML is well documented. The developer documentation is large and also describes architectural decisions. The ArgoUML design is clean. It uses facades, singletons,... Initial preparations for this restructuring were already in place. The directory src had been made and i8n was already extracted as a premature subsystem. Heikki Hytyniemi (ed.): Complex Systems Science on the Edge of Chaos. Helsinki University of Technology, Control Engineering Laboratory, Report, October 00.

2 Figure : Initial situation as shown in Creole.. Risk analysis Of course this project also has risks: The developer documentation reflects that the ArgoUML developers have a good understanding of software engineering in general. This implies that we had to do better, we had to improve the design. The assignment was not entirely clear to us, we had to do some research to make sure we understood it completely. The ArgoUML Ant build process is not really transparent. In fact it consists of lots of targets that seem to give the right result. We did not have any experience with Ant so this was a large risk as it is an important part of the assignment. We tried to resolve those risks: We had to deal with the fact that the maintainers already had a strong design. On the other hand: the developers wanted this redesign so it is most probably possible. As part of Chat With The Maintainers we mailed with the main developer, Linus Tolke, in order to understand the assignment and its main objectives.

3 We spent one day thoroughly studying Ant and its possibilities. As a result of this analysis we decided to go on with the project and start the restructuring of ArgoUML. Project Path. Project Plan We have not written a project plan. This is a mistake we made but we did have some reasons at the starting of the project. This is a rather small project when compared to the amount of time needed for our Master s Thesis. This meant we did not have a lot of time for it. We did however try and succeed at working on it one day every week. This is of course no guarantee for a good project result but it helps. We did know which steps we were going to follow but we did not know how far we could go. We immediately knew this project could not be finished entirely due to the limited amount of time and the large codebase (almost NCLOC). In the end we know this was not a wise decision but the project did not suffer from it. We would however make a project plan if we had to do this again.. Tests ArgoUML has a lot of UnitTests and has a nice code coverage. We also noticed the existence of GUI UnitTests, which is very nice because that s traditionally a weak point. The tests can be run fully automated from the Ant script and there even was a continuous testing facility online at Unfortunately that system stopped working at the beginning of May. There were two failing testcases in TestAgainstUmlModel in our CVS checkout. In cooperation with the ArgoUML developers we have searched for a possible fix. The fixed test case ensured that our refactorings caused absolutely no regressions.. Tools We have used the following tools to support our project... Subversion Every good software engineering project needs a good version control system. For this project we chose Subversion (svn) instead of traditional CVS for the following reasons: svn supports file moves and copies while keeping the file history, this was very important as we moved a lot of files.

4 svn increments the revision number of all files when committing, so no version management is necessary to find out which revision of one file was used in combination with a particular revision of another file. We made a lot of changes and sometimes we had to go back in history. Then the versioned repository turned out very useful, manually managing version numbers for around 00 sourcefiles is impossible... Eclipse We used Eclipse as our Java editor. ArgoUML has a proper section on how to setup Eclipse to develop ArgoUML. The built-in support for refactoring turned out to be very useful. Combined with the Subversion plug-in Subclipse moving classes to another package, updating all references and moving the files in Subversion went very fast. Again, we have moved a lot of files so this was necessary... Creole We used the Creole system to do initial analysis of possible subsystems. This is a nice tool to visually inspect Java code for high level analysis. We have some nice diagrams from the initial situation but later on the system crashed on our refactored code... Headway review While making this report we wanted to have more data on our reengineering. We discovered Headway review. This software does statical code analysis on Java code. The measurements and graphs in this document have been produced by Headway review... A weblog During a project a lot of information is gathered. We set up a blog to put all information in one place and to allow project supervisors to follow our activities. Some random thoughts but also important things to remember can be found there. The blog is still available at Elaboration. Applied patterns We have applied a number of patterns from the book Object-Oriented Reengineering Patterns. If It Ain t Broke, Don t Fix It We noticed lots of smaller problems in ArgoUML. These include: code duplication

5 obsolete classes/code aged code documentation We did not correct any of these problems as they were out of the scope of the project. Read All the Code in One Hour Our first contact with ArgoUML consisted of Read All the Code in One Hour. That did not give perfect results but it gave a nice impression. Skim the Documentation We skimmed the documentation in minutes which gave us a very well overview of the code. The high level documentation proved to be good later on. Do a Mock Installation Using a fresh CVS checkout we tried a mock installation. This failed on two missing ArgoUML modules/extensions which were then removed from the build path. We also discovered the first existing subsystem model, which did not compile. This was a good contact with the existing build files after our Ant study. Always Have a Running Version On one of our last scheduled days we decided to try applying the techniques we had developed to extract a final subsystem: cognitive. We made the move too abrupt and the resulting system broke completely. We had to revert to the older version and redo the entire extraction progressively while keeping everything running (including all tests). The previous subsystems were extracted while keeping everything running, which went a lot better of course. Regression Test after Every Change The ArgoUML testing systems is very good and helped us do regression testing after every reengineering action. Make a Bridge to the New Town We adapted the ArgoUML build scripts to have the old script use the new subsystem jars. That way all old tests kept running while testing all old and new code.. Subsystem extraction steps Most of the other reengineering patterns were not applicable. The assignment focuses on high-level reengineering, a subject that s not covered in the book nor in literature we consulted. The following is a list of techniques we have applied to get to a subsystem. Every time we try to extract a subsystem that is only dependent on the previous

6 subsystems or external libraries. The resulting directed dependency graph works perfectly for the required results. Subsystem discovery by visualization How do you know what might be a subsystem that can be extracted? Use visualization software (Creole, review,... ) to show dependencies between packages. Packages with a lot of incoming arrows and little outgoing arrows are good candidates. Candidates do not always work as their external dependencies might be difficult to resolve, e.g. the kernel package. Dependency tracking How do you know wether a candidate is viable? There are two techniques possible. First we used a nice grep command to find any imports of other ArgoUML packages: grep -Rh "import org.argo". sort -u If the resulting packages are already subsystems that is no problem for the dependencies, otherwise they have to be resolved (see below). After resolving any possible dependencies from the previous step we use refactoring in Eclipse to discover any left over dependencies. There might be dependencies left in case you are trying to move a part of a package, any dependencies on the same package are not visible in the imports. The trick we used is to move the selected classes using refactoring in Eclipse and preview the results. When looking at the files to be moved they will contain any possible necessary imports from unnoticed dependencies. Those can be resolved again. Dependency resolving using moving What if the external dependency is trivial? Sometimes the external dependency is one class with only dependencies on the current and previous subsystems or only external dependencies. In that case the dependency can be moved to the current or previous subsystems, or in case of an external dependency to external packages. In the first case the external class belongs in the subsystem, in the latter the class does not belong in the subsystem. Resolving cascading dependencies using moving What if the external dependencies are cascading? Sometimes the external dependency has other dependencies but in the end those dependencies are independent or only dependent of each other. In that case the previous technique can be applied recursively. Resolving type dependencies using type hierarchies What if the type is the only dependency? A class can be dependent of a specific type, because in that special case an action is necessary. In that case we force inheritance by replacing the dependent type by a more general type, perhaps by introducing an interface. E.g. checking wether a return value is null can happen on an Object in Java.

7 Figure : Overview of the binder construction. Resolving singleton dependencies using Binder What if the dependency is a singleton class? If everything else failed but the only dependencies left are not large and singleton classes we used our Binder construction, as shown in figure. This uses Java class loading, a technique commonly used in ArgoUML. However there it is used in all kinds of packages which blurs the overall view on the system and makes automatic refactoring hard as it would require inspecting every string that might specify a class for loading. We decided to put the class loading in one abstract class: Bindable. The main idea is that those singleton classes can be replaced by a static API that contains the singleton. The business logic can be implemented in a different package. In order to resolve their singleton instance the API extends Bindable. The API initializes the singleton by calling Bindable.getBinding with its class as argument. Bindable looks up Binder using runtime class loading and returns the result of Binder.getBinding. (To avoid having to use classloading twice, once to get the Binder class and once to get the getbinding method, Bindable calls getbinding on the BinderInterface which is implemented by Binder). Binder is on top of the dependency hierarchy and thus it can freely import all necessary classes and return the results. Iterate for next subsystem How to continue? Every time a new subsystem is created there are more classes that are moved in the right subsystem. That way after each iteration the extraction of subsystems gets easier.. Build system We have redefined the ArgoUML build system as follows. In the root there is one build.xml file which contains directives to run the tests, to compile the subsystems,... The src directory contains all subsystems and also contains 7

8 a generic build script common.xml. That contains the common instructions required to build a subsystem. Each subsystem has its own build.xml which specializes common.xml with its own dependencies such as the libraries and other subsystems required for compiling and testing the subsystem. Each subsystem makes its own jar file. By overriding the jar target it is possible for a developer to compile all jars and then work at one subsystem while using the other subsystems as jars which do not need to be recompiled. It does not even require the source code from the other subsystems. Open problems Some targets are not yet defined for the subsystems, e.g. generating Javadoc documentation and creating a signed jar do not work yet. The Ant build files in the subsystems might need more property files but it is hard to figure out where that property file belongs. Not everything is a subsystem yet... Suggestions The uml package is very large. It seems reasonable to make a few subsubsystems here, to make this more manageable. The new build process spends a lot of time checking subsystem dependencies. This could go faster when using Ant timestamps: unchanged subsystems do not have to start their compilation. There seems to be a lot of unused code, it would be good to check that (using test coverage tools) before proceeding with the restructuring. 7 Results The resulting design can be seen in figure. Note the position of Binder on top of the dependency graph and the subsystems at the bottom. 7. Subsystems We have created the following subsystems: configuration and cognitive. util, ui, ocl, model, i8n, data, 7. Metrics We have studied the following metrics of our result : Afferent Coupling (CA) is the number of other packages that depend upon classes within this package, and is an indicator of the package s responsibility. metric definitions as in the Headway review documentation 8

9 Efferent Coupling (CE) is the number of other packages that the classes in this package depend upon, and is an indicator of the package s independence. Instability (I) is defined as the ratio of efferent coupling to total coupling. This metric is an indicator of the package s resilience to change. The range for this metric is 0 to, with I=0 indicating a completely stable package and I= indicating a completely instable package. The following table shows the metrics for the final version and the difference from the initial CVS checkout, as measured by Headway review. As a reference the new subsystems are marked with a *. Package name CA CA CE CE I I org.argouml.util* org.argouml.uml org.argouml.ui* org.argouml.persistence org.argouml.ocl* org.argouml.moduleloader org.argouml.model* org.argouml.kernel org.argouml.i8n* org.argouml.configuration* org.argouml.cognitive* org.argouml.binder 0 0 org.argouml.application The Afferent Coupling of our subsystems increases slightly. Only the configuration package has a large increase because configuration is necessary in many other packages. The Efferent Coupling is of course an important metric and overall it decreases. However there are some exceptions. Binder did not exist before and now it resolves quite some dependencies. Model uses some classes which moved to the util package and Cognitive had a large dependency on ListSet, as can be seen in figure. It has been moved to the util package. It belongs there because it is only an implementation of a List and it is not really related to cognitive. Overall the instability decreases with only model and cognitive as exceptions, for reasons stated above. 8 Conclusion We have turned a system consisting of several packages into a system with packages and subsystems. The dependency graph is becoming a directed graph. Based on metrics we have shown that the restructuring worked out fine and does not affect the overall structure. We have presented techniques to continue the restructuring of ArgoUML and to transform a general Java system into a nearly decomposable system.

10 b in d e r la n g u a g e a p p lica tion p e rs is te n ce ocl 7 ke rn e l p a tte rn 7 8 cog n itive m od u le loa d e r , 0 u i 8 0, u m l 7, 7 7 con fig u ra tion m od e l 8 u til i 8 n Figure : Overview of the restructuring result at package level. Gray means unchanged, green added, red deleted and blue changed. 0

11 UMLToDoIte m De s ig n e r 7 Offe n d e r Pos te r 8 ToDoIte m 0 ToDoLis t Re s olve d Critic critics Ite m UID u i 8 8 De cis ion Mod e l Goa lmod e l Lis tse t ToDoLis tlis te n e r Un re s olva b le Exce p tion ch e cklis t De cis ion Goa l ToDoLis teve n t Tra n s la tor Ab s tra ctcog n itive Tra n s la tor Figure : Overview of the cognitive package. Gray means unchanged, green added, red deleted and blue changed.

6.170 Laboratory in Software Engineering Eclipse Reference for 6.170

6.170 Laboratory in Software Engineering Eclipse Reference for 6.170 6.170 Laboratory in Software Engineering Eclipse Reference for 6.170 Contents: CVS in Eclipse o Setting up CVS in Your Environment o Checkout the Problem Set from CVS o How Do I Add a File to CVS? o Committing

More information

Introduction to Revision Control

Introduction to Revision Control Introduction to Revision Control Henrik Thostrup Jensen September 19 th 2007 Last updated: September 19, 2007 1 Todays Agenda Revision Control Why is it good for? What is it? Exercises I will show the

More information

An Integrated Approach to Managing Windchill Customizations. Todd Baltes Lead PLM Technical Architect SRAM

An Integrated Approach to Managing Windchill Customizations. Todd Baltes Lead PLM Technical Architect SRAM An Integrated Approach to Managing Windchill Customizations Todd Baltes Lead PLM Technical Architect SRAM Event hashtag is #PTCUSER10 Join the conversation! Topics What is an Integrated Approach to Windchill

More information

TDDC88 Lab 4 Software Configuration Management

TDDC88 Lab 4 Software Configuration Management TDDC88 Lab 4 Software Configuration Management Introduction "Version control is to programmers what the safety net is to a trapeze artist. Knowing the net is there to catch them if they fall, aerialists

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

Categorizing Migrations

Categorizing Migrations What to Migrate? Categorizing Migrations A version control repository contains two distinct types of data. The first type of data is the actual content of the directories and files themselves which are

More information

Handout 4: Version Control Reference

Handout 4: Version Control Reference CSCI 2600 Principles of Software Handout 4: Version Control Reference Introduction SVN (Subversion) provides the following functionality: It allows multiple users to edit the same files independently,

More information

Software Testing 2. OOD and Testability. White box vs Black box Testing. Software Testing 2 Semester 1, 2006

Software Testing 2. OOD and Testability. White box vs Black box Testing. Software Testing 2 Semester 1, 2006 Software Testing 2 Jens Dietrich OOD and Testability Component based design and component based unit testing. Design that isolates component that are difficult to test (automatically) (such as user interfaces).

More information

Who am I? I m a python developer who has been working on OpenStack since I currently work for Aptira, who do OpenStack, SDN, and orchestration

Who am I? I m a python developer who has been working on OpenStack since I currently work for Aptira, who do OpenStack, SDN, and orchestration Who am I? I m a python developer who has been working on OpenStack since 2011. I currently work for Aptira, who do OpenStack, SDN, and orchestration consulting. I m here today to help you learn from my

More information

Creating a Lattix Dependency Model The Process

Creating a Lattix Dependency Model The Process Creating a Lattix Dependency Model The Process Whitepaper January 2005 Copyright 2005-7 Lattix, Inc. All rights reserved The Lattix Dependency Model The Lattix LDM solution employs a unique and powerful

More information

SECTION 1: CODE REASONING + VERSION CONTROL + ECLIPSE

SECTION 1: CODE REASONING + VERSION CONTROL + ECLIPSE SECTION 1: CODE REASONING + VERSION CONTROL + ECLIPSE cse331-staff@cs.washington.edu slides borrowed and adapted from Alex Mariakis and CSE 390a OUTLINE Introductions Code Reasoning Version control IDEs

More information

This assignment requires that you complete the following tasks (in no particular order).

This assignment requires that you complete the following tasks (in no particular order). Construction Objectives The objectives of this assignment are: (1) Implement your FCS design with high-quality code and thorough unit tests (2) Gain experience doing a task breakdown (3) Gain experience

More information

Systems Software. Recitation 1: Intro & Revision Control. Quite different from 213. Our Philosophy. Partly-free lunch

Systems Software. Recitation 1: Intro & Revision Control. Quite different from 213. Our Philosophy. Partly-free lunch Systems Software Recitation 1: Intro & Revision Control Dave Andersen CMU Computer Science Fall 2006 Low-level (projects in C) Designed to run forever Handle every possible error condition Manage resources

More information

2. Reasons for implementing clos-unit

2. Reasons for implementing clos-unit A CLOS Implementation of the JUnit Testing Framework Architecture: A Case Study Sandro Pedrazzini Canoo Engineering AG sandro.pedrazzini@canoo.com Abstract There are different reasons why you would like

More information

Version Control. Second level Third level Fourth level Fifth level. - Software Development Project. January 17, 2018

Version Control. Second level Third level Fourth level Fifth level. - Software Development Project. January 17, 2018 Version Control Click to edit Master EECS text 2311 styles - Software Development Project Second level Third level Fourth level Fifth level January 17, 2018 1 But first, Screen Readers The software you

More information

Programming in the large. Lecture 22: Configuration Management. Agenda for today. Bertrand Meyer. Bernd Schoeller

Programming in the large. Lecture 22: Configuration Management. Agenda for today. Bertrand Meyer. Bernd Schoeller 1 Last update: 17 June 2004 Programming in the large Bertrand Meyer 2 Lecture 22: Configuration Management Bernd Schoeller bernd.schoeller@inf.ethz.ch Agenda for today 3 Motivation What is configuration

More information

Source control with Subversion A user perspective

Source control with Subversion A user perspective http://svnbook.red-bean.com/ Source control with Subversion A user perspective Aaron Ponti What is Subversion? } It is a free and open-source version control system } It manages files and directories,

More information

Technology Background Development environment, Skeleton and Libraries

Technology Background Development environment, Skeleton and Libraries Technology Background Development environment, Skeleton and Libraries Christian Kroiß (based on slides by Dr. Andreas Schroeder) 18.04.2013 Christian Kroiß Outline Lecture 1 I. Eclipse II. Redmine, Jenkins,

More information

Construction: version control and system building

Construction: version control and system building Construction: version control and system building Paul Jackson School of Informatics University of Edinburgh The problem of systems changing Systems are constantly changing through development and use

More information

What is version control? (discuss) Who has used version control? Favorite VCS? Uses of version control (read)

What is version control? (discuss) Who has used version control? Favorite VCS? Uses of version control (read) 1 For the remainder of the class today, I want to introduce you to a topic we will spend one or two more classes discussing and that is source code control or version control. What is version control?

More information

Effective Team Collaboration with Simulink

Effective Team Collaboration with Simulink Effective Team Collaboration with Simulink A MathWorks Master Class: 15:45 16:45 Gavin Walker, Development Manager, Simulink Model Management 2012 The MathWorks, Inc. 1 Overview Focus: New features of

More information

Lab Exercise Test First using JUnit

Lab Exercise Test First using JUnit Lunds tekniska högskola Datavetenskap, Nov, 2017 Görel Hedin/Ulf Asklund EDAF45 Programvaruutveckling i grupp projekt Lab Exercise Test First using JUnit Goal This lab is intended to demonstrate basic

More information

Week - 01 Lecture - 04 Downloading and installing Python

Week - 01 Lecture - 04 Downloading and installing Python Programming, Data Structures and Algorithms in Python Prof. Madhavan Mukund Department of Computer Science and Engineering Indian Institute of Technology, Madras Week - 01 Lecture - 04 Downloading and

More information

Evaluation of Visual Fabrique (VF)

Evaluation of Visual Fabrique (VF) Evaluation of Visual Fabrique (VF) Dr Peter Lappo www.smr.co.uk Scope and Method This is a review of Visual Fabrique (VF) V1.0.371 EAP Release. In order to conduct this evaluation I followed the tutorial

More information

Version Control Systems

Version Control Systems Nothing to see here. Everything is under control! September 16, 2015 Change tracking File moving Teamwork Undo! Undo! UNDO!!! What strategies do you use for tracking changes to files? Change tracking File

More information

CSCI 4152/6509 Natural Language Processing. Lab 1: FCS Computing Environment

CSCI 4152/6509 Natural Language Processing. Lab 1: FCS Computing Environment CSCI 4152/6509 Natural Language Processing Lab 1: FCS Computing Environment http://web.cs.dal.ca/ vlado/csci6509 Lab Instructor: Dijana Kosmajac, Dhivya Jayaraman Slides copyright: Mike McAllister, Vlado

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

Analysis Tool Project

Analysis Tool Project Tool Overview The tool we chose to analyze was the Java static analysis tool FindBugs (http://findbugs.sourceforge.net/). FindBugs is A framework for writing static analyses Developed at the University

More information

Module Road Map. 7. Version Control with Subversion Introduction Terminology

Module Road Map. 7. Version Control with Subversion Introduction Terminology Module Road Map 1. Overview 2. Installing and Running 3. Building and Running Java Classes 4. Refactoring 5. Debugging 6. Testing with JUnit 7. Version Control with Subversion Introduction Terminology

More information

CptS 360 (System Programming) Unit 3: Development Tools

CptS 360 (System Programming) Unit 3: Development Tools CptS 360 (System Programming) Unit 3: Development Tools Bob Lewis School of Engineering and Applied Sciences Washington State University Spring, 2018 Motivation Using UNIX-style development tools lets

More information

12/7/09. How is a programming language processed? Picasso Design. Collaborating with Subversion Discussion of Preparation Analyses.

12/7/09. How is a programming language processed? Picasso Design. Collaborating with Subversion Discussion of Preparation Analyses. Picasso Design Finish parsing commands Collaborating with Subversion Discussion of Preparation Analyses How is a programming language processed? What are the different phases? Start up Eclipse User s Input

More information

Common Configuration Management Tasks: How to Do Them with Subversion

Common Configuration Management Tasks: How to Do Them with Subversion Common Configuration Management Tasks: How to Do Them with Subversion Tom Verhoeff October 2007 Contents 1 The Big Picture 2 2 Subversion Help 2 3 Create New Empty Repository 2 4 Obtain Access to Repository

More information

A Comparative Study on Different Version Control System

A Comparative Study on Different Version Control System e-issn 2455 1392 Volume 2 Issue 6, June 2016 pp. 449 455 Scientific Journal Impact Factor : 3.468 http://www.ijcter.com A Comparative Study on Different Version Control System Monika Nehete 1, Sagar Bhomkar

More information

What s NetBeans? Like Eclipse:

What s NetBeans? Like Eclipse: What s NetBeans? Like Eclipse: It is a free software / open source platform-independent software framework for delivering what the project calls "richclient applications" It is an Integrated Development

More information

And check out a copy of your group's source tree, where N is your one-digit group number and user is your rss username

And check out a copy of your group's source tree, where N is your one-digit group number and user is your rss username RSS webmaster Subversion is a powerful, open-source version control system favored by the RSS course staff for use by RSS teams doing shared code development. This guide is a primer to the use of Subversion

More information

Working with EGL and Subversion Using RDi with RBD

Working with EGL and Subversion Using RDi with RBD HISTORY OF MODIFICATIONS...2 CREATING A NEW REPOSITORY...3 BACKGROUND: INSTALLING TORTOISE...3 SUBVERSION EGL SOURCE CODE REPOSITORY...3 INSTALLING SUBVERSION PLUG-IN AND CONFIGURING FOR USE....5 INSTALLATION

More information

CSCD01 Engineering Large Software Systems. Design Patterns. Joe Bettridge. Winter With thanks to Anya Tafliovich

CSCD01 Engineering Large Software Systems. Design Patterns. Joe Bettridge. Winter With thanks to Anya Tafliovich CSCD01 Engineering Large Software Systems Design Patterns Joe Bettridge Winter 2018 With thanks to Anya Tafliovich Design Patterns Design patterns take the problems consistently found in software, and

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

Revision Control. Software Engineering SS 2007

Revision Control. Software Engineering SS 2007 Revision Control Software Engineering SS 2007 Agenda Revision Control 1. Motivation 2. Overview 3. Tools 4. First Steps 5. Links Objectives - Use revision control system for collaboration Software Engineering,

More information

CS 315 Software Design Homework 3 Preconditions, Postconditions, Invariants Due: Sept. 29, 11:30 PM

CS 315 Software Design Homework 3 Preconditions, Postconditions, Invariants Due: Sept. 29, 11:30 PM CS 315 Software Design Homework 3 Preconditions, Postconditions, Invariants Due: Sept. 29, 11:30 PM Objectives Defining a wellformed method to check class invariants Using assert statements to check preconditions,

More information

Subversion. CS 490MT/5555, Fall 2015, Yongjie Zheng

Subversion. CS 490MT/5555, Fall 2015, Yongjie Zheng Subversion CS 490MT/5555, Fall 2015, Yongjie Zheng About Subversion } Subversion } A free/open source version control system } A typical client-server model } Uses the copy-modify-merge strategy } History

More information

About the required reading. Construction: High quality code for programming in the large. What is high quality code?

About the required reading. Construction: High quality code for programming in the large. What is high quality code? About the required reading All the reading described as required is examinable. For example, you should be able to: briefly explain concepts like process requirement, stakeholder, tacit knowledge, conceptual

More information

Brief overview of the topic and myself the 7 VCS used so far (different one each time), still many unused Acts as a time-machine, and almost as

Brief overview of the topic and myself the 7 VCS used so far (different one each time), still many unused Acts as a time-machine, and almost as Brief overview of the topic and myself the 7 VCS used so far (different one each time), still many unused Acts as a time-machine, and almost as contentious as the text editor This talk tries to address

More information

CSE 390 Lecture 9. Version control and Subversion (svn)

CSE 390 Lecture 9. Version control and Subversion (svn) CSE 390 Lecture 9 Version control and Subversion (svn) slides created by Marty Stepp, modified by Jessica Miller and Ruth Anderson http://www.cs.washington.edu/390a/ 1 Working Alone Ever done one of the

More information

Section 2: Developer tools and you. Alex Mariakakis (staff-wide)

Section 2: Developer tools and you. Alex Mariakakis (staff-wide) Section 2: Developer tools and you Alex Mariakakis cse331-staff@cs.washington.edu (staff-wide) What is an SSH client? Uses the secure shell protocol (SSH) to connect to a remote computer o Enables you

More information

CS18000: Programming I

CS18000: Programming I CS18000: Programming I Testing Basics 19 April 2010 Prof. Chris Clifton Testing Programs Your programs are getting large and more complex How do you make sure they work? 1. Reason about the program Think

More information

CHAPTER 6. Java Project Configuration

CHAPTER 6. Java Project Configuration CHAPTER 6 Java Project Configuration Eclipse includes features such as Content Assist and code templates that enhance rapid development and others that accelerate your navigation and learning of unfamiliar

More information

Revision control systems (RCS) and. Subversion

Revision control systems (RCS) and. Subversion Revision control systems (RCS) and Subversion Problem area Software projects with multiple developers need to coordinate and synchronize the source code Approaches to version control Work on same computer

More information

Outline. Configuration management. Main Phases MOTIVATION

Outline. Configuration management. Main Phases MOTIVATION Outline Configuration management! Motivation! Versioning! Configuration items, configurations, baselines! Change control! Build! Configuration management plan! Configuration management tools Main Phases

More information

This paper was presented at DVCon-Europe in November It received the conference Best Paper award based on audience voting.

This paper was presented at DVCon-Europe in November It received the conference Best Paper award based on audience voting. This paper was presented at DVCon-Europe in November 2015. It received the conference Best Paper award based on audience voting. It is a very slightly updated version of a paper that was presented at SNUG

More information

Reliable programming

Reliable programming Reliable programming How to write programs that work Think about reliability during design and implementation Test systematically When things break, fix them correctly Make sure everything stays fixed

More information

What is Subversion and what does it do?

What is Subversion and what does it do? What is Subversion and what does it do? A version control system Manages files and directories and any changes made to those files and directories Can be used across networks to promote remote collaboration

More information

Version Control. Kyungbaek Kim. Chonnam National University School of Electronics and Computer Engineering. Original slides from James Brucker

Version Control. Kyungbaek Kim. Chonnam National University School of Electronics and Computer Engineering. Original slides from James Brucker Version Control Chonnam National University School of Electronics and Computer Engineering Kyungbaek Kim Original slides from James Brucker What is version control Manage documents over time Keep a history

More information

WACC Report. Zeshan Amjad, Rohan Padmanabhan, Rohan Pritchard, & Edward Stow

WACC Report. Zeshan Amjad, Rohan Padmanabhan, Rohan Pritchard, & Edward Stow WACC Report Zeshan Amjad, Rohan Padmanabhan, Rohan Pritchard, & Edward Stow 1 The Product Our compiler passes all of the supplied test cases, and over 60 additional test cases we wrote to cover areas (mostly

More information

Recent Changes to NetCDF Development Processes. Ed Hartnett Unidata/UCAR. NetCDF Workshop July 25 26, 2011

Recent Changes to NetCDF Development Processes. Ed Hartnett Unidata/UCAR. NetCDF Workshop July 25 26, 2011 Recent Changes to NetCDF Development Processes Ed Hartnett Unidata/UCAR NetCDF Workshop July 25 26, 2011 Why Change Our Processes? To better cope with multiple engineers working on the code at the same

More information

CS450: Structure of Higher Level Languages Spring 2018 Assignment 7 Due: Wednesday, April 18, 2018

CS450: Structure of Higher Level Languages Spring 2018 Assignment 7 Due: Wednesday, April 18, 2018 CS450: Structure of Higher Level Languages Spring 2018 Assignment 7 Due: Wednesday, April 18, 2018 Taken from assignments by Profs. Carl Offner and Ethan Bolker Part 1 - Modifying The Metacircular Evaluator

More information

News in RSA-RTE 10.1 updated for sprint Mattias Mohlin, November 2017

News in RSA-RTE 10.1 updated for sprint Mattias Mohlin, November 2017 News in RSA-RTE 10.1 updated for sprint 2017.46 Mattias Mohlin, November 2017 Overview Now based on Eclipse Neon.3 (4.6.3) Many general improvements since Eclipse Mars Contains everything from RSARTE 10

More information

AADL Graphical Editor Design

AADL Graphical Editor Design AADL Graphical Editor Design Peter Feiler Software Engineering Institute phf@sei.cmu.edu Introduction An AADL specification is a set of component type and implementation declarations. They are organized

More information

Software Maintenance. Maintenance is Inevitable. Types of Maintenance. Managing the processes of system change

Software Maintenance. Maintenance is Inevitable. Types of Maintenance. Managing the processes of system change Software Maintenance Managing the processes of system change Maintenance is Inevitable The system requirements are likely to change while the system is being developed because the environment is changing.

More information

Lab 5 Exercise Build and continuous integration tools

Lab 5 Exercise Build and continuous integration tools Lund University Computer Science Mattias Nordahl Software development in teams EDAF45 2017 12 06 Lab 5 Exercise Build and continuous integration tools 1 Introduction This lab will give you some experience

More information

We first learn one useful option of gcc. Copy the following C source file to your

We first learn one useful option of gcc. Copy the following C source file to your Lecture 5 p.1 Faculty of Computer Science, Dalhousie University CSCI 2132 Software Development Lab 5: gcc and gdb tools 10-Oct-2018 Location: Teaching Labs Time: Thursday Instructor: Vlado Keselj Lab 5:

More information

Computer Science 62 Lab 8

Computer Science 62 Lab 8 Computer Science 62 Lab 8 Wednesday, March 26, 2014 Today s lab has two purposes: it is a continuation of the binary tree experiments from last lab and an introduction to some command-line tools. The Java

More information

Implement an ADT while using Subversion

Implement an ADT while using Subversion 1 Objectives Learn to use Subversion Implement an ADT while using Subversion In this lab, you learn about the version control tool called Subversion and you will implement a Java class given an interface.

More information

Chapter 3. Revision Control

Chapter 3. Revision Control Chapter 3 Revision Control We begin our journey into software engineering before we write a single line of code. Revision control systems (RCSes) such as Subversion or CVS are astoundingly useful for single-developer

More information

Technology Background Development environment, Skeleton and Libraries

Technology Background Development environment, Skeleton and Libraries Technology Background Development environment, Skeleton and Libraries Slides by Prof. Dr. Matthias Hölzl (based on material from Dr. Andreas Schröder) Outline Lecture 1 I. Eclipse II. Git Lecture 2 IV.

More information

CMSC424: Database Design. Instructor: Amol Deshpande

CMSC424: Database Design. Instructor: Amol Deshpande CMSC424: Database Design Instructor: Amol Deshpande amol@cs.umd.edu Databases Data Models Conceptual representa1on of the data Data Retrieval How to ask ques1ons of the database How to answer those ques1ons

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

Test Factoring: Focusing test suites on the task at hand

Test Factoring: Focusing test suites on the task at hand Test Factoring: Focusing test suites on the task at hand, MIT ASE 2005 1 The problem: large, general system tests My test suite One hour Where I changed code Where I broke code How can I get: Quicker feedback?

More information

Construction: version control and system building

Construction: version control and system building Construction: version control and system building Paul Jackson School of Informatics University of Edinburgh The problem of systems changing Systems are constantly changing through development and use

More information

Week. Lecture Topic day (including assignment/test) 1 st 1 st Introduction to Module 1 st. Practical

Week. Lecture Topic day (including assignment/test) 1 st 1 st Introduction to Module 1 st. Practical Name of faculty: Gaurav Gambhir Discipline: Computer Science Semester: 6 th Subject: CSE 304 N - Essentials of Information Technology Lesson Plan Duration: 15 Weeks (from January, 2018 to April, 2018)

More information

A Short Introduction to Subversion

A Short Introduction to Subversion 1 / 36 A Short Introduction to Subversion Miaoqing Huang University of Arkansas 2 / 36 Outline 1 3 / 36 The Problem to Avoid 4 / 36 The Problem to Avoid 5 / 36 The Problem to Avoid 6 / 36 The Problem to

More information

Continuous Integration / Continuous Testing

Continuous Integration / Continuous Testing Bitte decken Sie die schraffierte Fläche mit einem Bild ab. Please cover the shaded area with a picture. (24,4 x 7,6 cm) Continuous Integration / Continuous Testing IIC What s SW Integration? Integration

More information

CSE 374 Programming Concepts & Tools. Hal Perkins Winter 2012 Lecture 16 Version control and svn

CSE 374 Programming Concepts & Tools. Hal Perkins Winter 2012 Lecture 16 Version control and svn CSE 374 Programming Concepts & Tools Hal Perkins Winter 2012 Lecture 16 Version control and svn Where we are Learning tools and concepts relevant to multi-file, multi-person, multi-platform, multi-month

More information

Macros in sbt: Problem solved!

Macros in sbt: Problem solved! Macros in sbt: Problem solved! Martin Duhem, Eugene Burmako Technical Report January 2015 Contents 1 Introduction 2 1.1 What problems do macros bring?................ 2 1.1.1 The problems we addressed

More information

News in RSA-RTE 10.0 updated for sprint Mattias Mohlin/Anders Ek, June 2016

News in RSA-RTE 10.0 updated for sprint Mattias Mohlin/Anders Ek, June 2016 News in RSA-RTE 10.0 updated for sprint 2016.29 Mattias Mohlin/Anders Ek, June 2016 Overview of Improvements (1/3) Now based on Eclipse Mars (4.5.2) New installation scheme RSARTE is now installed as a

More information

The RASTA Framework. Joel Becker October 3, 2001

The RASTA Framework. Joel Becker October 3, 2001 The RASTA Framework Joel Becker October 3, 2001 Abstract RASTA is an framework for describing tasks on a computer system. It is well known that casual and non-expert users prefer to be guided through tasks

More information

Subversion Repository Layout

Subversion Repository Layout Subversion Subversion Control manages documents over time keeps a history of all changes - multiple versions of every file coordinates work of multiple authors avoids conflicts...and helps to resolve them

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

News in RSA-RTE 10.1 updated for sprint Mattias Mohlin, July 2017

News in RSA-RTE 10.1 updated for sprint Mattias Mohlin, July 2017 News in RSA-RTE 10.1 updated for sprint 2017.28 Mattias Mohlin, July 2017 Overview Now based on Eclipse Neon.3 (4.6.3) Many general improvements since Eclipse Mars Contains everything from RSARTE 10 and

More information

JBoss Tattletale 1.1 Developer's Guide

JBoss Tattletale 1.1 Developer's Guide JBoss Tattletale 1.1 Developer's Guide Betraying all your project's naughty little secrets Copyright 2009 Red Hat Middleware Table of Contents 1. About JBoss Tattletale...1 1.1. The team...1 1.2. Thanks

More information

Push up your code next generation version control with (E)Git

Push up your code next generation version control with (E)Git Push up your code next generation version control with (E)Git Dominik Schadow Senior Consultant Application Development dominik.schadow@trivadis.com Java Forum Stuttgart, 07.07.2011 Basel Bern Lausanne

More information

Chapter 11, Testing, Part 2: Integration and System Testing

Chapter 11, Testing, Part 2: Integration and System Testing Object-Oriented Software Engineering Using UML, Patterns, and Java Chapter 11, Testing, Part 2: Integration and System Testing Overview Integration testing Big bang Bottom up Top down Sandwich System testing

More information

The goal of the Pangaea project, as we stated it in the introduction, was to show that

The goal of the Pangaea project, as we stated it in the introduction, was to show that Chapter 5 Conclusions This chapter serves two purposes. We will summarize and critically evaluate the achievements of the Pangaea project in section 5.1. Based on this, we will then open up our perspective

More information

Getting It Right COMS W4115. Prof. Stephen A. Edwards Spring 2007 Columbia University Department of Computer Science

Getting It Right COMS W4115. Prof. Stephen A. Edwards Spring 2007 Columbia University Department of Computer Science Getting It Right COMS W4115 Prof. Stephen A. Edwards Spring 2007 Columbia University Department of Computer Science Getting It Right Your compiler is a large software system developed by four people. How

More information

Using Images in FF&EZ within a Citrix Environment

Using Images in FF&EZ within a Citrix Environment 1 Using Images in FF&EZ within a Citrix Environment This document explains how to add images to specifications, and covers the situation where the FF&E database is on a remote server instead of your local

More information

CSCIE-275. Guide for Chief Programmers

CSCIE-275. Guide for Chief Programmers CSCIE-275 Guide for Chief Programmers Serguei Khramtchenko Apr 2006 1 1. Preface... 3 2. Design walkthrough meeting... 4 2.1 Choosing features for an iteration... 4 2.2 Preparing design for walkthrough

More information

Home Page. Title Page. Contents. Page 1 of 17. Version Control. Go Back. Ken Bloom. Full Screen. Linux User Group of Davis March 1, Close.

Home Page. Title Page. Contents. Page 1 of 17. Version Control. Go Back. Ken Bloom. Full Screen. Linux User Group of Davis March 1, Close. Page 1 of 17 Version Control Ken Bloom Linux User Group of Davis March 1, 2005 Page 2 of 17 1. Version Control Systems CVS BitKeeper Arch Subversion SVK 2. CVS 2.1. History started in 1986 as a bunch of

More information

Restructuring AZDBLab

Restructuring AZDBLab Restructuring AZDBLab The Science of Databases 2/20/2010 Version 5.0 Adam Robertson I hereby grant to the University of Arizona Library the nonexclusive worldwide right to reproduce and distribute my dissertation

More information

SVN_Eclipse_at_home. 1. Download Eclipse. a. Go to: and select Eclipse IDE for Java Developers

SVN_Eclipse_at_home. 1. Download Eclipse. a. Go to:  and select Eclipse IDE for Java Developers 1. Download Eclipse SVN_Eclipse_at_home a. Go to: http://www.eclipse.org/downloads/ and select Eclipse IDE for Java Developers b. Select a mirror (which just means select which identical copy you should

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

Case study on PhoneGap / Apache Cordova

Case study on PhoneGap / Apache Cordova Chapter 1 Case study on PhoneGap / Apache Cordova 1.1 Introduction to PhoneGap / Apache Cordova PhoneGap is a free and open source framework that allows you to create mobile applications in a cross platform

More information

About CVS. 1 Version Control - what is it? why is it useful?

About CVS. 1 Version Control - what is it? why is it useful? About CVS CVS stands for Concurrent Version Control. It s free, open-source software used by multiple developers to share code, keep track of changes, and keep different versions of a project. it can be

More information

Outline The three W s Overview of gits structure Using git Final stuff. Git. A fast distributed revision control system

Outline The three W s Overview of gits structure Using git Final stuff. Git. A fast distributed revision control system Git A fast distributed revision control system Nils Moschüring PhD Student (LMU) 1 The three W s What? Why? Workflow and nomenclature 2 Overview of gits structure Structure Branches 3 Using git Setting

More information

(Refer Slide Time: 4:00)

(Refer Slide Time: 4:00) Principles of Programming Languages Dr. S. Arun Kumar Department of Computer Science & Engineering Indian Institute of Technology, Delhi Lecture - 38 Meanings Let us look at abstracts namely functional

More information

SpringSource Tool Suite M2

SpringSource Tool Suite M2 SpringSource Tool Suite 2.7.0.M2 - New and Noteworthy - Martin Lippert 2.7.0.M2 June 13, 2011 Updated for 2.7.0.M2 ENHANCEMENTS 2.7.0.M2 General Updates Memory Settings We raised the default memory settings

More information

Best practices for OO 10 content structuring

Best practices for OO 10 content structuring Best practices for OO 10 content structuring With HP Operations Orchestration 10 two new concepts were introduced: Projects and Content Packs. Both contain flows, operations, and configuration items. Organizations

More information

Revision control. INF5750/ Lecture 2 (Part I)

Revision control. INF5750/ Lecture 2 (Part I) Revision control INF5750/9750 - Lecture 2 (Part I) Problem area Software projects with multiple developers need to coordinate and synchronize the source code Approaches to version control Work on same

More information

Open XAL Project Architecture

Open XAL Project Architecture Thomas Pelaia II, Ph.D. Open XAL Meeting November 14, 2013 Motivation Common Core is too large Need support for Site Specific Extensions and Plugins Need mechanism for assembling and sharing a project

More information

IceCube s Development Environment.

IceCube s Development Environment. IceCube s Development Environment. S. Patton LBNL, Berkeley, CA 94720, USA D. Glowacki Space Science and Engineering Center, University of Wisconsin, Madison, WI 53706, USA When the IceCube experiment

More information

3 Continuous Integration 3. Automated system finding bugs is better than people

3 Continuous Integration 3. Automated system finding bugs is better than people This presentation is based upon a 3 day course I took from Jared Richardson. The examples and most of the tools presented are Java-centric, but there are equivalent tools for other languages or you can

More information