SKA/KAT SPIN Presentation Software Engineering (!?) 2007-01-17 Robert Crida.

Slides:



Advertisements
Similar presentations
Agile Software Distribution
Advertisements

1. What is Subversion? Why do we need CM? Basic concepts Repositories Options Setup Clients Options Setup Operation Troubleshooting Slide 2.
Developing in CAS. Why? As distributed you edit CAS 3 with Eclipse and build with Maven 2 – Best Practice for Release Engineering – Difficult edit-debug.
ANT: Another Nice Tool Ali Beyad October 1, 2003.
ANT: Another Nice Tool Ali Beyad October 1, 2003.
Software Configuration Management Donna Albino LIS489, December 3, 2014.
Validata Release Coordinator Accelerated application delivery through automated end-to-end release management.
Version Control, Revision Control Software Configuration Management.
MC365 Ant. Today We Will Cover: Overview of Ant Installing Ant Using the Ant command line tool Various Ant commands available Using Ant in Eclipse.
VisIt Software Engineering Infrastructure and Release Process LLNL-PRES Lawrence Livermore National Laboratory, P. O. Box 808, Livermore,
European Organization for Nuclear Research Source Control Management Service (Subversion) Brice Copy, Michel Bornand EN-ICE 13 May 2009.
Software Installation The full set of lecture notes of this Geant4 Course is available at
Activity 1 - WBs 5 mins Go online and spend a moment trying to find out the difference between: HIGH LEVEL programming languages and LOW LEVEL programming.
Introduction to The Linaro Toolchain Embedded Processors Training Multicore Software Applications Literature Number: SPRPXXX 1.
1 Introduction to Tool chains. 2 Tool chain for the Sitara Family (but it is true for other ARM based devices as well) A tool chain is a collection of.
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.
Sikuli Ivailo Dinkov QA Engineer PhoneX Team Telerik QA Academy.
Maven & Bamboo CONTINUOUS INTEGRATION. QA in a large organization In a large organization that manages over 100 applications and over 20 developers, implementing.
MAVEN-BLUEMARTINI Yannick Robin. What is maven-bluemartini?  maven-bluemartini is Maven archetypes for Blue Martini projects  Open source project on.
Trilinos 101: Getting Started with Trilinos November 7, :30-9:30 a.m. Mike Heroux Jim Willenbring.
AUTOBUILD Build and Deployment Automation Solution.
Software Engineering in Robotics Packaging and Deployment of Systems Henrik I. Christensen –
INFSOM-RI Juelich, 10 June 2008 ETICS - Maven From competition, to collaboration.
FYP Final Presentation: Distributed Audio Mixing Daire O'Neill, Final Year Electronic Engineering Project Supervisor: Dr Peter Corcoran Co-Supervisor:
Creating a Personal Webvoyáge Development Environment Using VMware Chris Delis, CARLI.
Subversion (SVN) Tutorial Source:
Scons Writing Solid Code Overview What is scons? scons Basics Other cools scons stuff Resources.
…using Git/Tortoise Git
Object-Oriented Analysis & Design Subversion. Contents  Configuration management  The repository  Versioning  Tags  Branches  Subversion 2.
NA-MIC National Alliance for Medical Image Computing Slicer Building and Deployment Steve Pieper, PhD.
1 Software Configuration Management (SCM) and Software Reuse Presented By: Edmund Leng (HT052446J) Choo Zhi Min (HT052430X)
SONIC-3: Creating Large Scale Installations & Deployments Andrew S. Neumann Principal Engineer, Progress Sonic.
Presentation Name / 1 Visual C++ Builds and External Dependencies NAME.
Confidential Continuous Integration Framework (CIF) 5/18/2004.
Overview of the Automated Build & Deployment Process Johnita Beasley Tuesday, April 29, 2008.
Dissecting the Windows CE Build Process James Y. Wilson Principal Engineer, Windows Embedded MVP CalAmp, Inc. James Y. Wilson Principal Engineer, Windows.
© 2008 by Shawn Spiars; made available under the EPL v1.0 | March 17, 2008 Case Study – Phurnace Software and RCP Shawn Spiars Lead UI Developer Phurnace.
GLite build and integration system Building and Packaging Robert HARAKALY
British Atmospheric Data Centre Python Eggs. British Atmospheric Data Centre Overview Part I: Installers  What are Eggs?  What Eggs can do for me? 
J.P. Wellisch, CERN/EP/SFT SCRAM Information on SCRAM J.P. Wellisch, C. Williams, S. Ashby.
Yannick Patois - Datagrid Software Repository Presentation - March, n° 1 Datagrid Software Repository Presentation CVS, packages and automatic.
Part 4: FCM and the UM University of Reading, December 2015.
Trilinos Framework: Next Steps Thursday November 9, :45-9:30 a.m. Jim Willenbring Mike Phenow.
© 2012 LogiGear Corporation. All Rights Reserved FitNesseFitNesse Authors: Nghia Pham 1.
Slide 1 Running NEMO at ECMWF Slide 1 NEMO under Perforce at ECMWF Kristian S. Mogensen Last revised:
How to configure, build and install Trilinos November 2, :30-9:30 a.m. Jim Willenbring.
IBM Express Runtime Quick Start Workshop © 2007 IBM Corporation Deploying a Solution.
GLAST Science Support Center June 29, 2005Data Challenge II Software Workshop User Support Goals For DC 2 James Peachey GSFC/L3.
Process changes: Internal processes of CASA, external contributions, release schedule Mark G. Rawlings, CASA Build & Test Lead NRAO, Charlottesville Acknowledgements:
JRA1 Meeting – 09/02/ Software Configuration Management and Integration EGEE is proposed as a project funded by the European Union under contract.
 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
NALINI S. NAUTIYAL SYSTEM SOFTWARE DIVISION Subversion.
SWIM Project Meeting, Bloomington, IN September 2006 Working with the SWIM Code Repository David E. Bernholdt Oak Ridge National Laboratory
Introduction Aaron Day ● Software Architect ● Open Solutions Interests and Hobbies ● Family ● Software Development ● Woodworking ● Gaming ● Shooting.
Stephanie Allison Software Mar 2, 2006 IOC Applications Host Applications Directory Structure Environment Setup Issues.
Node.js Modules Header Mastering Node.js, Part 2 Eric W. Greene
Agenda:- DevOps Tools Chef Jenkins Puppet Apache Ant Apache Maven Logstash Docker New Relic Gradle Git.
Open-O Integration Project Introduction
Python’s Modules Noah Black.
What is Apertis? Apertis is a versatile open source infrastructure tailored to the automotive needs and fit for a wide variety of electronic devices.
LBNL Version Management of CMB and Planck Software
Drupal VM and Docker4Drupal For Drupal Development Platform
Drupal VM and Docker4Drupal as Consistent Drupal Development Platform
TRANSLATORS AND IDEs Key Revision Points.
Dev Test on Windows Azure Solution in a Box
Compilers, Make and SubVersion
Introduction to Ansible
Software Installation
Presented by : Chirag Dani & Dhaval Shah
Presentation transcript:

SKA/KAT SPIN Presentation Software Engineering (!?) Robert Crida

Overview Software Configuration Management (SCM) Automated Build System External Dependencies Design Study – Antenna Control Software Module (ACSM)

SCM Challenge KAT is expected to have a life span in excess of 20 years (project will outlive the people) Maintenance is inevitable during that period Continuous development is also likely Importance over that period of being able to freeze build environment What about hardware failure that far into the future?

SCM Use subversion – potentially multiple repositories (collaborations, different subsections) Store multiple projects in a tree Standard svn hierarchy for each project  trunk (primary development)  tags (releases)  branches (qa, users, etc) Try to include all dependencies as projects within the hierarchy

Subversion Layout Tools (used by the build process)  doxygen tags  doxygen  doxygen  etc (typically only store tags for each tool) Code (ultimately linked into products)  ThirdPartyLibraries (typically only tags)  InternalProjectsHierarchy Each layer can only depend on other projects in the same or lower layers, ideally wanted to only depend on projects in lower levels but deemed too difficult for users, instead have to work out build order within each layer.

Build system based on distutils  Actually we use from recursivebuild import setup  recursivebuild.setup delegates to setuptools.setup and provides a convenient place to centrally add new commands (eg doc, pylint)  Use setuptools because of egg support Allows multiple builds of the same library to be present simultaneously  from pkg_resources import require  require(“numpy==1.0”)  import numpy Most distutils projects easily converted by changing import of setup function Python projects

Build System Each directory of the hierarchy has a script to build its children  script determines order  passes arguments from parent  arguments modeled after distutils.setup Leaves are the projects themselves, must provide script understanding build targets  Python projects use setup.py  Other projects provide eg build.py to wrap make or scons etc

Build system contd 1 All scripts must understand standard build targets  install (more like build) puts python eggs into suitable directory should compile and link other libs but not deploy  test (runs unit tests on the project)  doc (runs doxygen on project)  pylint (runs pylint on project – rename to lint!)

Build system contd 2 Build controller machine stores svn repository mirror plus overall build script Build environment to be configured on a virtual machine, currently requires only gcc and python Virtual machine is cloned prior to each build svn repository mirror is updated and copied to the build vm Multiple build steps are executed remotely on the vm by the controller

Build system contd 3 This allows multiple vm's with different compiler versions and even OS versions Each can be built using (probably) the same control script

Testing Integrate unit testing based on xUnit into the auto- build Investigating Fitnesse based testing for automated ATP type testing Looked at web testing technologies such as Twill and selenium to assist with automated web app testing

Dependencies Python projects can depend on other python projects using the egg mechanism, hence can just find suitable egg in standard PYTHONPATH Depend on other projects by specifying paths within the hierarchy  multiple versions of a lib can coexist  requires extensive include and lib paths  use $PROJECT_ROOT environment variable instead of relative paths due to svn moves (different nesting levels)

External Dependencies Try to minimize external dependencies  all need to go into SCM  increases code-base (potential maintenance problem)  traded off against leveraging existing code AIPS++  many dependencies  hard to build – difficult to configure tools  constantly changing Use each one's own build system  must configure appropriate include and lib paths

External Python Dependencies Eggs help a lot – in theory Despite distutils, many python packages have non- standard builds which makes life difficult Haven't yet found a python project which defaults to using setuptools