CodeBreaker Decentralized, cooperative and flexible support for extreme programming software development Nelson Baloian Roberto Konow Francisco Claude.

Slides:



Advertisements
Similar presentations
Week 2 DUE This Week: Safety Form and Model Release DUE Next Week: Project Timelines and Website Notebooks Lab Access SharePoint Usage Subversion Software.
Advertisements

Software Configuration Management Donna Albino LIS489, December 3, 2014.
Software Configuration Management (SCM) Software Configuration Management (SCM) is a) the development and b) the application of standards and procedures.
Summer of Code (SOC) Presentation Fred R McClurg Girish H Mhatre Version Control Overview.
1 The IIPC Web Curator Tool: Steve Knight The National Library of New Zealand Philip Beresford and Arun Persad The British Library An Open Source Solution.
Version Control What it is and why you want it. What is Version Control? A system that manages changes to documents, files, or any other stored information.
Source Control in MATLAB A tool for tracking changes in software development projects. Stuart Nelis & Rachel Sheldon.
CSE 331 SOFTWARE DESIGN & IMPLEMENTATION VERSION CONTROL UW Autumn 2011.
Presented by IBM developer Works ibm.com/developerworks/ 2006 January – April © 2006 IBM Corporation. Making the most of Creating Eclipse plug-ins.
CS 501 : An Introduction to SCM & GForge An Introduction to SCM & GForge Lin Guo
Low level CASE: Source Code Management. Source Code Management  Also known as Configuration Management  Source Code Managers are tools that: –Archive.
Source Code Management Or Configuration Management: How I learned to Stop Worrying and Hate My Co-workers Less.
1 CMPT 275 Software Engineering Revision Control.
Source Control Repositories for Enabling Team Working Svetlin Nakov Telerik Corporation
1 Securing Network Resources Understanding NTFS Permissions Assigning NTFS Permissions Assigning Special Permissions Copying and Moving Files and Folders.
Proxy Design Pattern Source: Design Patterns – Elements of Reusable Object- Oriented Software; Gamma, et. al.
SubVersioN – the new Central Service at DESY by Marian Gawron.
Deriving AO Software Architectures using the AO-ADL Tool Suite Luis Fernández, Lidia Fuentes, Mónica Pinto, Juan A. Valenzuela Universidad de Málaga
Combining KMIP and XACML. What is XACML? XML language for access control Coarse or fine-grained Extremely powerful evaluation logic Ability to use any.
CSCI ClearQuest 1 Rational ClearQuest Michel Izygon - Jim Helm.
Working with Workgroups and Domains
Version control Using Git 1Version control, using Git.
1 Input/Output. 2 Principles of I/O Hardware Some typical device, network, and data base rates.
Version Control with Subversion. What is Version Control Good For? Maintaining project/file history - so you don’t have to worry about it Managing collaboration.
REFACTORING Lecture 4. Definition Refactoring is a process of changing the internal structure of the program, not affecting its external behavior and.
Software Engineering Modern Approaches
Zhonghua Qu and Ovidiu Daescu December 24, 2009 University of Texas at Dallas.
Introduction to Version Control
Subversion, an Open Source Version Control System An Introduction.
1 Lecture 19 Configuration Management Software Engineering.
1 Software Development Configuration management. \ 2 Software Configuration  Items that comprise all information produced as part of the software development.
Maintaining File Services. Shadow Copies of Shared Folders Automatically retains copies of files on a server from specific points in time Prevents administrators.
IOS110 Introduction to Operating Systems using Windows Session 8 1.
Copyright © 2015 Pearson Education, Inc. Chapter 7: Software Engineering.
Recap (önemli noktaları yinelemek) from last week Paradigm Kay’s Description Intro to Objects Messages / Interconnections Information Hiding Classes Inheritance.
Programming in Java Unit 2. Class and variable declaration A class is best thought of as a template from which objects are created. You can create many.
CVS 簡介 數位芝麻網路公司蔡志展 2001/8/18 大綱 • CVS 簡介 • CVS 安裝 • CVS 設定 (Linux/Windows) • CVS 指令簡介 • CVS 多人環境的應用.
Version control Using Git Version control, using Git1.
1 SEG4912 University of Ottawa by Jason Kealey Software Engineering Capstone Project Tools and Technologies.
European Knowledge Platform basics. „....integration functions are becoming increasingly important.“ The vicious circle: systems introduced to reduce.
Extreme/Agile Programming Prabhaker Mateti. ACK These slides are collected from many authors along with a few of mine. Many thanks to all these authors.
…using Git/Tortoise Git
1 Chapter Overview Publishing Resources in Active Directory Service Redirecting Folders Using Group Policies Deploying Applications Using Group Policies.
Subversion (SVN) A Revision Control System Successor to CVS Carlos Armas Hervey Allen.
Notes of Rational Related cyt. 2 Outline 3 Capturing business requirements using use cases Practical principles  Find the right boundaries for your.
Introduction to Software Development. Systems Life Cycle Analysis  Collect and examine data  Analyze current system and data flow Design  Plan your.
ATLAS Detector Description Database Vakho Tsulaia University of Pittsburgh 3D workshop, CERN 14-Dec-2004.
STASIS Technical Innovations - Simplifying e-Business Collaboration by providing a Semantic Mapping Platform - Dr. Sven Abels - TIE -
Module 4 Planning for Group Policy. Module Overview Planning Group Policy Application Planning Group Policy Processing Planning the Management of Group.
Connecting with Computer Science2 Objectives Learn how software engineering is used to create applications Learn some of the different software engineering.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
® IBM Software Group © 2009 IBM Corporation Essentials of Modeling with IBM Rational Software Architect V7.5 Module 17: Team Modeling.
CodeBreaker Decentralized, cooperative and flexible support for extreme programming software development Nelson Baloian Roberto Konow Francisco Claude.
Author: DoanNX Time: 45’.  OOP concepts  OOP in Java.
Building Preservation Environments with Data Grid Technology Reagan W. Moore Presenter: Praveen Namburi.
IBM Academic Initiative JazzHub Overview John Schilt Lead, IBM Academic Initiative Australia / New Zealand UNSW and IET (Young Professionals)
 Project Team: Suzana Vaserman David Fleish Moran Zafir Tzvika Stein  Academic adviser: Dr. Mayer Goldberg  Technical adviser: Mr. Guy Wiener.
Source Control Repositories for Enabling Team Working Doncho Minkov Telerik Corporation
Administrating a Database
CodeBreaker Decentralized, cooperative and flexible
Chapter 7: Software Engineering
Version control, using Git
FileSpot Collaborative File Manager
Basic Concepts in Data Management
Design and Programming
HingX Project Overview
Version Control CS169 Lecture 7 Prof. Aiken CS 169 Lecture 7 1.
Administrating a Database
The COSMO Coding Standards Some Highlights
CodeBreaker Decentralized, cooperative and flexible
Presentation transcript:

CodeBreaker Decentralized, cooperative and flexible support for extreme programming software development Nelson Baloian Roberto Konow Francisco Claude Mitsuji Matsumoto

The Problem Juanita Pedro

* Extreme Programming *

Program as fast as you can Simple Designs Pair Programming Small Releases Beta testing Team Communication

Available Technologies Version Control Systems  CVS  Subversion  Etc... Collaborative Environments  IBM Rational ClearCase  TUKAN File Level permissions Central Repository Synchronous/Asynchronous Central/Distributed Repository Expensive Many Developers

“Breaking” The code A.java String sint d Method zMethod y

“Breaking” The code A.java String sint d B.java Method zMethod y Method HMethod v

Logical Locking Every File, Class, Method or Logical Object must have an owner. Every Logical Object is locked to everyone except the owner. The locking is done over a name of a class or interface, a method inside a class or a class variable. (Fine Grained Locking) Automatically locking the inherited classes of a locked class. (Extended classes, Implementation of Interfaces, etc) It is possible to lock code which still not exists

“Breaking” The code

Coordination Rules The Coordination Rules are necessary to maintain the development in order.  Code ownership can be transferred with or without permit to transfer to a third  New members can be created with or without right or limited number to invite others,  This can implement a kind of “administrator role” Two kind of Files:  Accepted Java Files The “final” and revised java files.  Temporary Java Files Files being changed by another users.

Exceptions to the rules What happens when the hard disk of a code- owner crushes forever ?  Change ownership by voting  Define creator of the project as administrator What if a user start not cooperating ?  Does not confirm code change ownership  Starts distributing code which does not owns Introduce public and private keys

Coordination Rules Participant “Pedro” is not available. Participant “Juanita” Needs to modify something in the definition file of Object E.

Coordination Rules “Juanita” Changes part of the code in object E. A Temporary Java File is created.

Coordination Rules “Pedro” goes online and receives the changes made by “juanita”. “Pedro” can Accept or Reject the changes made.

Coordination Rules “Pedro” accepts the changes and the modified java file is now an “accepted java file”.

Requirements Work on a peer-to-peer architecture without having a central repository. Allow synchronous and asynchronous collaborative working (including synchronization of the code). Allow the inclusion of new unforeseen participants. Allow fine grained and logical oriented locking of code.

* File System Architecture * Accepted Java Files : This layer contains the Java files with that where accepted by their owner. It is used to create distributions of the software, giving an alternative to build a patched version also, including code that has not been accepted yet. The files are stored as normal java files of a NetBeans project. Temporary Files : Those are the copy made for every java file containing modifications which are still not approved by the owner of the code XML Files : There is an XML for every Java file containing the information about the owner, permissions and information needed for the merging phase. The Simulated File System: Is the logical layer that manages the logical access to the physical files and presents the information about which part of the code is owned by which user and whether the local code has been approved or released by the owner. For this, it uses the information stored in the XML files. It also implements a transparent file system for the user merging the temporary files with the accepted ones when corresponds.

* The XML File * name : The name of the entity. owner : user that owns this object. rev : the version of this object, incrementing in one for every modification made or accepted by the owner. modified : a boolean variable that allows to know if a certain object has been modified by a user that has not the rights. umod : user that modified the file without permission. uver : the version created by the user that is making the modifications without owning the object itself. srcid : a description of the object that allows to distinguish for example two methods with the same name but different arguments. type : if the object is a variable, method, class, etc.

class Test { // fields... // methods... } Java File XML File Transform... The Variables owner, srcid, user modification and user version are assigned in the xml file, including all the java source file information.

Synchronization JXTA/ /pen drive XML FILE

XML File XML File 1 Compare XML Transfer File PRODUCEPRODUCE

Types of Differences: Modification: Changes in the source code or the owner. DeleteClass: Deletes a Class DeleteMethod: Deletes a Method Delete Field: Deletes a Field NewMethod: Creates a new Method NewField: Creates a new Field NewClass Creates a new Class XML Transfer File

Scenarios of usage Development of Extreme Programming Projects with small teams. Development of small Spontaneous Ideas outside the working area. (i.e: Coffee Break) Development of medium-sized projects without having a fixed development team and a fixed physical work area. (small student-owned software developing enterprises) Support for development teams where members are constantly changing roles. Collaborative learning tool for Java courses.

Conclusions CodeBreaker is: Synchronized/Asynchronized development tool Fine-grained and logical blocking of the code Support for Extreme Programming teams Support for Pair-Programming. Controlled permissions of the code for the developers with flexibility for special cases. Peer-to-peer Network Easy to install and use (Netbeans plugin)