Agile software development & services OOSCM Object Oriented SCM SCM Next Generation.

Slides:



Advertisements
Similar presentations
© 2007 IBM Corporation Demo Shimon Nir, Rational Technical & Service Manager, IBM Southwest Europe.
Advertisements

An Object/Relational Mapping tool Free and open source Simplifies storage of object data in a relational database Removes the need to write and maintain.
Point of Sale (POS) Client & Back Office Server. Operational Concept What is our Objective? What is our Objective? What are our Goals? What are our Goals?
By SAG Objectives Cross platform QA Automation for web applications Scheduling the automation Automatically build the test scripts Generate the.
Alternate Software Development Methodologies
Software Configuration Management Donna Albino LIS489, December 3, 2014.
Java development infrastructure at FMI Pekka Rantala FMI.
Maven: Build and project management in the 21th century.
CSE 4939 Alex Riordan Brian Pruitt-Goddard Remote Unit Testing.
Summer of Code (SOC) Presentation Fred R McClurg Girish H Mhatre Version Control Overview.
Chapter 2 Database Environment.
CVS Selim Çıracı Ahmet Kara Metin Tekkalmaz. CVS – Open Source Version Control System Outline What are Version Control Systems? And why do we need them?
1 SVN – Tool for Version Control Talal Ahmed ( ) Ali Ahsan ( ) Adil Zia Khan ( ) Farid Ullah ( )
Principles of Object-oriented Programming Programming Language Paradigms August 26, 2002.
Version Control Systems Phil Pratt-Szeliga Fall 2010.
Introduction to CVS 7/3/20151UMBC CMSC 341. Outline Introduction to Source Code Management What is CVS? CVS for Project Submission Basic commands Checkout,
Source Control Repositories for Enabling Team Working Svetlin Nakov Telerik Corporation
UNIT4 BUSINESS ANALYTICS. page WHAT IS THE PRODUCT? 2 A business intelligence tool kit, specializing in Coporate Performance Management An application.
G51FSE Version Control Naisan Benatar. Lecture 5 - Version Control 2 On today’s menu... The problems with lots of code and lots of people Version control.
Test Driven Development Derived from Dr. Fawcett’s notes Phil Pratt-Szeliga Fall 2009.
Version Control. What is Version Control? Manages file sharing for Concurrent Development Keeps track of changes with Version Control SubVersion (SVN)
Task Manager Software Engineering: CS 673 Spring 2009 John Spencer, Parag Shah, Rich Moffitt, Hassan Sobhie May 4, 2009.
Standardize on Team Foundation Server across the enterprise with Teamprise Corey Steffen General Manager
Spring Roo CS476 Aleksey Bukin Peter Lew. What is Roo? Productivity tool Allows for easy creation of Enterprise Java applications Runs alongside existing.
Database Environment 1.  Purpose of three-level database architecture.  Contents of external, conceptual, and internal levels.  Purpose of external/conceptual.
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.
Introduction to VB.NET Tonga Institute of Higher Education.
MobeSys Technologies MobeSys – helping you overcome mobile technology challenges.
Introduction to Version Control with SVN & Git CSC/ECE 517, Fall 2012 Titus Barik & Ed Gehringer, with help from Gaurav.
1 Topics for this Lecture Software maintenance in general Source control systems (intro to svn)
MAVEN-BLUEMARTINI Yannick Robin. What is maven-bluemartini?  maven-bluemartini is Maven archetypes for Blue Martini projects  Open source project on.
EasyBoard Share schedule and ideas in a twinkle. EasyBoard Goals Application features Technologies used Schedule Problems that we can meet Questions?
Sumedha Rubasinghe October,2009 Introduction to Programming Tools.
Subversion, an Open Source Version Control System An Introduction.
CS 350 – Software Design The Object Paradigm – Chapter 1 If you were tasked to write code to access a description of shapes that were stored in a database.
Git – versioning and managing your software L. Grewe.
Warmup A programmer’s wife tells him, “Would you mind going to the store and picking up a loaf of bread? Also, if they have eggs, get a dozen.” The programmer.
CakePHP is an open source web development framework. It follows Model-View- Controller and is developed using PHP. IT is the basic for user to create.
Priit Collaboration infrastructure.
INFSO-RI Module 01 ETICS Overview Etics Online Tutorial Marian ŻUREK Baltic Grid II Summer School Vilnius, 2-3 July 2009.
University of Southern California Center for Systems and Software Engineering Model-Based Software Engineering Supannika Koolmanojwong Spring 2013.
Software Development Tools Changes 2013 BE-CO-DO
Eclipse Simple Profiler Ben Xu Mar 7,2011. About Eclipse simple profiler is a open source project to analyze your plug-ins/RCPs performance.
Refactoring and Synchronization with the StarTeam Plug-in for Eclipse  Jim Wogulis  Principal Architect, Borland Software Corporation.
1 GIT NOUN \’GIT\ A DISTRIBUTED REVISION CONTROL AND SOURCE CODE MANAGEMENT (SCM) SYSTEM WITH AN EMPHASIS ON SPEED. INITIALLY DESIGNED AND DEVELOPED BY.
Frameworks CompSci 230 S Software Construction.
1 Chapter 1 Introduction to Databases Transparencies.
1© Nokia Siemens Networks Presentation / Author / Date For internal use T Better Code Faster - Next Generation Java Continuous Integration Environment.
By : SAG3 Members.  Cross platform client interface for Time recording/capturing  MS Project integration to Time tracker  integration to Time.
Devanshu Bawa Customization Specialist Logo Business Solutions.
Recommending Adaptive Changes for Framework Evolution Barthélémy Dagenais and Martin P. Robillard ICSE08 Dec 4 th, 2008 Presented by EJ Park.
Version Control and SVN ECE 297. Why Do We Need Version Control?
CASE Tools CSC 532 : Advance Topics CSC 532 : Advance Topics Software Engineering Software Engineering Dr. box Dr. box Moayad Almohaishi Moayad Almohaishi.
Eclipse.NET An Integration Platform for ProjectIT-Studio João Saraiva IST & INESC-ID (GSI)
Maven. Introduction Using Maven (I) – Installing the Maven plugin for Eclipse – Creating a Maven Project – Building the Project Understanding the POM.
Solutions for demanding business City, date 1 How can Open source technologies help to reduce the cost of development?
/16 Final Project Report By Facializer Team Final Project Report Eagle, Leo, Bessie, Five, Evan Dan, Kyle, Ben, Caleb.
Source Control Repositories for Enabling Team Working Doncho Minkov Telerik Corporation
DIGITAL REPOSITORIES CGDD Job Description… Senior Tools Programmer – pulled August 4 th, 2011 from Gamasutra.
Internship Presentation by Gary Esworthy. Overview About me About MobilVox Living Arrangements Work Environment Project Summary Project Details (User.
PRODUCT - ORGANIZATION - AGILE - LEAN CD - Agile on Steroids - (and what Jenkins got to do with it) Paul Bakker linkedin.com/paulgbakker github.com/p-bakker.
XNAT 1.7: Getting Started 6 June, Introduction In this presentation we’ll discuss:  Features and functions in XNAT 1.7  Requirements  Installing.
Version Control Systems
Programming paradigms
Version Control with Subversion
RTC – Source Control Management
Version Control Systems
FileSpot Collaborative File Manager
JENKINS TIPS Ideas for making your life with Jenkins easier
Recommending Adaptive Changes for Framework Evolution
Presentation transcript:

agile software development & services OOSCM Object Oriented SCM SCM Next Generation

We’d like to declare… Barcelona The SCM Conference

Why? ▶ Colin Putney’s Monticello 2 – “Merging is the most important feature of an SCM” ▶ Veronica Urquillaz-Gomez – Torch: Code review before integration ▶ Fernando Olivero – Reify the programmer an his “unit of work” ▶ Dale Henrichs and Mariano Martinez Peck – Metacello ▶ And at the same time as this talk Alan Knigth – Taking about Store

We NEED a BETTER SCM tool

What are we going to talk about OOSCM ▶ A new SCM concept ▶ WHY? – Current tools do not fulfill our goals – Current tools have conceptually different approaches to solve SCM that our idea – We want to promote Smalltalk

Motivation 1 ▶ I want to know – where a change was integrated – By who and when – On what versions – What were the changes made to that code during integration – Provide feedback to the programmer at all levels (method, class, etc) MANAGE CHANGE LIFECYCLE

Motivation 2 ▶ Did all the test run after implementing that change? – The programmer should run all tests before submitting the change to integration ▶ Does the change provide new tests? CHANGE QUALITY

Motivation 3 ▶ We don’t want this to be an integration conflict Object subclass: #Class1 instanceVariableNames: ‘’ Object subclass: #Class1 instanceVariableNames: ‘a’ Object subclass: #Class1 instanceVariableNames: ‘b’ V1 V1.1V1.2 Integration Conflict! SMART AUTOMATIC INTEGRATION

Motivation 4 ▶ I want the decisions I made during the pre- integration code review to be applied during integration – Reformat the code – Do not integrate this method PRE-INTEGRATION TOOLS

Motivation 5 AUTOMATIC REFACTORING INTEGRATION

Motivation 6 ▶ Seaside releases version 3.1 that includes lots of method renames – I want the system to tell me there is a new version – I decided Patagonia should work with seaside 3.1!! I can’t because I have to do the rename myself in Patagonia! Why not applying those renames to Patagonia automatically? AUTOMATIC UPGRADE

Motivation 7 ▶ How do I know if programmers are doing TDD or just testing? – Writing the test first really ▶ How do I know the system architecture and its evolution? – Maven in Java, but can not see its evolution or internal architecture, only dependencies. QUERY THE REPOSITORY

What can we do withthecurrenttools?

Traditional SCM RequirementsTraditional SCM (SVN, Git, etc) MANAGE CHANGE LIFECYCLENO CHANGE QUALITYNO SMART AUTOMATIC INTEGRATIONNO PRE-INTEGRATION TOOLSNO AUTOMATIC REFACTORING INTEGRATIONNO AUTOMATIC UPGRADENO QUERY THE REPOSITORYNO (there is no model)

Traditional SCM ▶ Archive oriented: Archive is the minimun trackeable item – Between commit changes are lost! (lost of information) – Not easy to track group of changes ▶ No reification of what a module is, what a system is, etc. Just files and directories ▶ Not easy to model the development process – It has to be defined from outside the tool ▶ Good for versioning files, not so for OO development ▶ Advantages: – Simple interface – Can work offline

Monticello/Metacello RequirementsMonticello/Metacello MANAGE CHANGE LIFECYCLENO CHANGE QUALITYNO SMART AUTOMATIC INTEGRATIONMedium PRE-INTEGRATION TOOLSTorch AUTOMATIC REFACTORING INTEGRATIONNO AUTOMATIC UPGRADENO QUERY THE REPOSITORYYes (But limited to the info it stores)

Monticello / Metacello ▶ As traditional SCM, only “commits” are saved – Between commit changes are lost ▶ Metacello helps to model the system architecture ▶ But it does not help to – model the development group – Integrate different development lines – See the integration history (evolution) ▶ Advantages: – Simple – Can be use offline – Metacello provides tools that allow to use it easily

Store * RequirementsStore MANAGE CHANGE LIFECYCLENO CHANGE QUALITYNO (could be added) SMART AUTOMATIC INTEGRATIONNot sure PRE-INTEGRATION TOOLSMedium AUTOMATIC REFACTORING INTEGRATIONNO AUTOMATIC UPGRADENO QUERY THE REPOSITORYYes (But limited to the info it stores) * We do not have experience with Store, so this could be wrong

ENVY RequirementsENVY MANAGE CHANGE LIFECYCLENO CHANGE QUALITYNO (could be added, in fact we did it) SMART AUTOMATIC INTEGRATIONNO (we did it) PRE-INTEGRATION TOOLSThree way Differences AUTOMATIC REFACTORING INTEGRATIONNO AUTOMATIC UPGRADENO QUERY THE REPOSITORYYes * ▶ New objects can be added to the repository

ENVY ▶ Trackable items are methods, classes, modules (application) and systems (configuration maps) ▶ Between commit (versioning) changes are saved ▶ Easy to see method, class and module history ▶ Not so easy to see the system history ▶ Kind of difficult for agile development (unless you remove security, etc) ▶ No reification of programmers changes ▶ No automatic integration (unless you develop it)

ENVY ▶ Disadvantages: – Proprietary – Old server technology – Complex implementation – Only for Smalltalk ▶ The best one we have used so far

OOSCM Proof of concept

Managechangelifecycle

ChangeQuality

SmartAutomaticIntegration

OOSCM The solution…

OOSCM Goals ▶ SCM oriented to development with Objects – Paradigm shift from traditional SCM ▶ Easy to track programmers work ▶ Easy to track system evolution – Be able to model system architecture ▶ Automatic Integration – Smart – Easy to integrate complex changes (i.e. refactorings) ▶ Upgrades – Automatic upgrading ▶ Not only for Smalltalk: – Planned: Java with Eclipse – Open to other languages

Architecture ▶ Client-Server ▶ REST ▶ Multi-repository ▶ Offline support ▶ IDE Client: Plug-In Architecture ▶ WebBrowser support

Details ▶ Technology: – Developed with Pharo – Production: GLASS ▶ Project: – Subsidy of the Argentine Ministry of Technology (USD 38 K) – Total time: 13 months (with out refactoring integration) – We just started ▶ License: – Not sure, open client, close server? – Open for Smalltalk, paid for other languages? – Based on projects, customers, SaaS?

Suggestions – Help – Support - Ideas

agile software development & services Thank you! Hernan Wilkinson Jorge Silva