Software Reengineering Assignment Decomposing ArgoUML
|
|
- Zoe McCarthy
- 5 years ago
- Views:
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 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 informationIntroduction 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 informationAn 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 informationTDDC88 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 information1: 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 informationCategorizing 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 informationHandout 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 informationSoftware 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 informationWho 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 informationCreating 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 informationSECTION 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 informationThis 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 informationSystems 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 information2. 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 informationVersion 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 informationProgramming 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 informationSource 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 informationTechnology 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 informationConstruction: 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 informationWhat 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 informationEffective 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 informationLab 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 informationWeek - 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 informationEvaluation 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 informationVersion 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 informationCSCI 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 informationObject-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 informationAnalysis 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 informationModule 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 informationCptS 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 information12/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 informationCommon 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 informationA 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 informationWhat 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 informationAnd 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 informationWorking 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 informationCSCD01 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 informationReengineering 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 informationRevision 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 informationCS 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 informationSubversion. 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 informationAbout 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 informationBrief 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 informationCSE 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 informationSection 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 informationCS18000: 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 informationCHAPTER 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 informationRevision 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 informationOutline. 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 informationThis 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 informationReliable 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 informationWhat 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 informationVersion 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 informationWACC 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 informationRecent 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 informationCS450: 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 informationNews 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 informationAADL 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 informationSoftware 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 informationLab 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 informationWe 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 informationComputer 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 informationImplement 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 informationChapter 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 informationTechnology 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 informationCMSC424: 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 informationSample 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 informationTest 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 informationConstruction: 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 informationWeek. 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 informationA 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 informationContinuous 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 informationCSE 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 informationMacros 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 informationNews 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 informationThe 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 informationSubversion 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 informationChapter01.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 informationNews 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 informationJBoss 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 informationPush 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 informationChapter 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 informationThe 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 informationGetting 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 informationUsing 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 informationCSCIE-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 informationHome 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 informationRestructuring 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 informationSVN_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 informationSoftware 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 informationCase 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 informationAbout 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 informationOutline 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)
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 informationSpringSource 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 informationBest 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 informationRevision 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 informationOpen 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 informationIceCube 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 information3 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