Change Control: Iterative Development /  Advanced CVS

     

Thursday 24 February

 
14:00 - 14:55 Integration Block
 

Lecture 4

 

 

 

Change Control: Iterative Development /  Advanced CVS
 

Brice Copy

Sebastian Lopienski

This lecture is formed of two parts. In the first one, Brice Copy presents the principles of  Iterative Development, why it was introduced, where it is used and what the various components are. In the second part, Sebastian Lopienski, after a setting the scene, presents the latest development of CVS, advices about common problems and pitfalls, suggest ways to use it and compare it to other similar tools.

Part 1 by Brice Copy

What Is Iterative Development ?
As opposed to monolithic approaches (cascade model)
Perform full, fast and complete development cycles (spec, code, build, integrate, test and back again)
In line with modern risk management techniques
Enables you to cope with changing requirements
 
Why Iterative Development Was Introduced
Cascade development too cumbersome
Full development cycles lets your team members (Dev, QA, System) work in parallel
 
Where Is It Used
Microsoft
Oracle
CERN
 
Ingredients List
Source control management (SCM) system
Somebody to write requirement and design specifications
An eager team of developers ready to work in parallel
Quality Assurance people
An integrated build tool (your Swiss army knife)
 
Integrated Build Tool
Code generation
 
Metadata attributes
 
Remote invocations stubs (Web services, RMI etc...)
 
ORM mapping files
SCM integration (CVS, Perforce, SourceSafe? etc...)
Code compilation (from various sources to various targets)
Functional and regression testing
Packaging
 
ZIP/RPM
 
JAR/WAR/EAR files
 
Integrated Build Tool (2)
Deployment as a named deliverable
 
Web Application Server
 
Middle tier server
 
Shared library repository
Integration testing
 
In Container testing
 
?
Documentation generation
 
Javadoc
 
Cross Referenced Code
 
UML Documentations
 
Specification in various formats (XDoc, PDF etc...)
Reporting
 
SCM activity
 
Coding standards
 
Testing coverage
 
Dependency convergence
 
Apache Ant
All of the above plus more
Not Java specific, but well err..
Easy to extend through Ant Tasks
Somewhat low level
 
Apache Maven
A layer wrapping Ant
Your project is seen as a high level object
 
Properties
 
Named dependencies
 
Deliverable
 
Deployment locations
 
Sub projects
Your project must follow a certain structure
Really aimed at Java projects
 
Automated Build Tools
Cruise Control
Damage Control

Part 2 by Sebastian Lopienski

Objectives of the presentation
 
Basic and not so basic but still useful functionality of CVS (including branching, merging, tagging, watching etc.)
Demystify the vocabulary (repository, revision, tag, attic, karma etc.)
Present available clients (command line clients, GUIs and IDE integrated clients) for both Unix-like and Windows platforms
Present others tool for CVS (Web interfaces etc.)
Show some good (and also bad) CVS users' habits
warn about some common problems and pitfalls
Discuss access control in CVS and security issues
Suggest ways to use CVS in build process
Mention other revision control systems like SourceSafe, Subversion etc.
Collect and present links to books, tutorials etc.
Prepare some exercises to be downloaded and run for further studies.