36
18 March Implementation

18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

Embed Size (px)

Citation preview

Page 1: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

18 March

Implementation

Page 2: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

Tools

Do you need them? When do you need them? What can they do better then you?

Page 3: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

Tools

Version Management Build Systems Integrated Development

Environments Documentation Extraction

Page 4: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

Version Management

Both during and after development Both code and documentation Uses

Multi-developer change control Releases Support for different environments

Computers Operating systems

Page 5: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

Top Reasons for Using Version Management

Bugs which were fixed reappear

Latest versions of code overwritten by old versions

Which version is the right one? I have so many

I have lost my latest changes

Page 6: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

Questions Addressed Development Issues

How do we integrate parallel work? How do I know which changes were in the code

that was being tested? Who changed this module? When? Why?

Multi-version Issues What versions have been made available to

people? How do I assure that all versions get the changes

that they need? What versions need to be re-released to support

changes made?

Page 7: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

Documentation that Needs Version Control

Manuals: need to reflect the variations of the different releases

Test data: what tests have been run and what was the result

Bug reports Planned changes Any document being edited by

multiple people

Page 8: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

Basic Functions

Ability to add and remove changes Ability to identify differences Record of changes made Storage of different versions Ability to get access to one or more

versions Identification of all the components

needed to build any version

Page 9: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

Need a Baseline

Agreed upon document or code level in large project, formally reviewed and

agreed upon in your project, requires consensus

agreement Basis for further development

in large project, changed only through formal change control procedure

In your project, changed when the developer is “comfortable”

Page 10: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

When To Start Using Version Control

Should you use it during unit testing? What is unit testing? How much structure does your unit

testing require? If unit testing requires significant

infrastructure or scaffolding, it makes sense to start using it very early

Page 11: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

No Special Tools Needed

Identify procedures and data needed to add and remove changes identify differences record changes made store different versions get access to one or more versions build any version

Page 12: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

But there are tools …

CVS: Concurrent Version System Subversion (SVN) SourceForge

Actually uses CVS and SVN, but a different model

Page 13: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

Concurrent Versioning System

Developed in the mid 80s Predecessor RCS (Revision Control

System) Vrije University, Amsterdam

Now open source Until recently, the most commonly

used tool ximbiot.com/cvs/wiki

Page 14: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

What CVS Does Supports hierarchical directories

manages changes on a per file basis Remote repository access

import locally for use Supports parallel development

merges changes identifies, does not resolve, conflicts

Basic tasks getting a working copy committing changes reverting to prior level adding or removing a file synchronizing to the latest code tagging versions of files

Page 15: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

Subversion http://subversion.tigris.org/ improved version of CVS

consistent interfaces except for “compelling reasons”

key changes everything is versioned: directories and file

meta-data as well as files atomic commits

guarantee that all aspects are completed or none are

better performance

Page 16: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

SourceForge Open source development

environment Free web-based facility Purchasable software as well

SourceForge.net supports CVS and SVN Compile farm Trackers Web site

Page 17: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

Lots of Others

Google code TRAC

Page 18: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

Tools

Version Management Build Systems Integrated Development

Environments Document Extraction

Page 19: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

Build System Functions

System configuration Executing

preprocessors compilers linkers

Manage paths and libraries Create executables and libraries

Page 20: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

Types of Build Systems

Platform specific independent

Part of version management systems integrated development

environments nothing (standalone)

Page 21: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

Platform Specific System: Unix make

Uses a makefile Can build full systems or parts Defines dependencies

Simplest example: object file depends on its source file

Executes commands for any (and only) pieces that need to be rebuilt

Page 22: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

Open Source Systems:Lots of Them GNU make

Been around for a while Cons

Built in Perl SCons

Python scripts CMake

cross-platform used in conjunction with the native build

environment Jam

C and C++ See also FT Jam (additional platforms)

Page 23: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

Apache Ant: build +++

http://ant.apache.org Introduction Workflow elements XML-based configuration files Java based

contains features specifically for J2EE

Page 24: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

Ant Control Commands (sample)

Ant: Runs Ant on a supplied buildfile AntCall: Runs another target within the

same buildfile Exec: Executes a system command (can

be OS specific) Java: Executes a Java class Parallel: Forks a new thread for another

Ant tasks Sequential: Grouping of commands Waitfor: Blocks execution until a set of

specified conditions become true

Page 25: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

Tools

Version Management Build Systems Integrated Development

Environments Document Extraction

Page 26: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

Integrated Development Environment What is an IDE?

A programming environment integrated into a software application

Normally includes Source code editor Compiler and or interpreter GUI development tools Build system

May also include Graphical tools (e.g., class hierarchy diagram) Debugger Class browser Version management system

Page 27: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

History

Early programming was not done with IDEs Coding sheets and keypunches Line command make files

Hardware enhancements typewriter-like terminals computer screens

Which of these enabled IDEs? Why?

Page 28: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

Dartmouth Time Sharing System (1964)

Command line system Supported Basic, Algol and FORTRAN DTSS commands:

NEW, OLD, LIST, SAVE, RUN Line starting with number replaced that

line in the current program All other commands implied execution

Considered by most people the first IDE

Page 29: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

Today’s IDEs Menu-driven Proprietary

Microsoft Visual Studio (C#, C++, Visual BASIC) Borland JBuilder (Java) Apple XCode (Mac OS X)

Open Source SharpDevelop (.NET) GNU Emacs (Unix) – major modes for languages

Page 30: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

Eclipse www.eclipse.org Both an IDE and an architecture IDEs

Java, C++, C, C#, Python, PHP, Perl, Smalltalk, CMFL (Coldfusion), Cobol, Fortran, Prolog, Erlang

(you get the idea) IDE built using architecture

Enhancements through plug-ins

Page 31: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

Tools

Version Management Build Systems Integrated Development

Environments Documentation Extraction

Page 32: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

What can be extracted?

Documentation Signatures Building interfaces first

Initial documentation Tools avoid update issues

Are there drawbacks?

Page 33: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

Tools

Doxygen – open source Javadoc – from Sun

Page 34: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

Software Engineering Elaborated Steps

Concept Requirements Architecture Design Implementation Unit test Integration System test Maintenance

Page 35: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

Models of Software Development

Process or people oriented Early Watts Humphrey work: people,

later process Different balances from each model

Number of iterations Waterfall Spiral Agile

Page 36: 18 March Implementation. Tools Do you need them? When do you need them? What can they do better then you?

Software Craftmanship

Software craftsmanship (McBreen 2001) Craft of writing software Craft of using software

Distinguish from software engineering Scope Rigor

Relevant distinction?