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

Slides:



Advertisements
Similar presentations
Configuration management
Advertisements

Software engineering tools for web development Jim Briggs 1CASE.
Let Use SVN(Subversion) Interaction Lab. Hyo-Geun Ahn
Introduction To Java Objectives For Today â Introduction To Java â The Java Platform & The (JVM) Java Virtual Machine â Core Java (API) Application Programming.
ANT: Another Nice Tool Ali Beyad October 1, 2003.
Revision Control Systems Amin Tootoonchian Kian Mirjalali.
NetBeans IDE Tal Maoz Na’ama Zahavi.
22 February Implementation. Tournament Good concept Implementation problems Status: terminate or find an alternative that does not require fixed time.
Programming Languages Structure
CVS II: Parallelizing Software Development Author: Brian Berliner John Tully.
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.
© Prentice Hall CHAPTER 3 Computer Software.
Source Code Management Or Configuration Management: How I learned to Stop Worrying and Hate My Co-workers Less.
Software Configuration Management Slides derived from Dr. Sara Stoecklin’s notes and various web sources.
Source Control Repositories for Enabling Team Working Svetlin Nakov Telerik Corporation
NetBeans IDE Vishnuvardhan.M Dept. of Computer Science - SSBN.
ECLIPSE IDE N AME : A SHOK P ADMARAJU C OURSE : T OPICS ON S OFTWARE E NGINEERING I NSTRUCTOR : D R. S ERGIU D ASCALU.
Standards for Technology in Automotive Retail STAR Workbench 1.0 Michelle Vidanes & Dave Carver STAR XML Data Architects, Certified Scrum Masters.
Talend 5.4 Architecture Adam Pemble Talend Professional Services.
Using Ant to build J2EE Applications Kumar
Task Manager Software Engineering: CS 673 Spring 2009 John Spencer, Parag Shah, Rich Moffitt, Hassan Sobhie May 4, 2009.
Lesson 4 Computer Software
Software Configuration Management (SCM)
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.
Servlets Environment Setup. Agenda:  Setting up Java Development Kit  Setting up Web Server: Tomcat  Setting up CLASSPATH.
COMPUTER SOFTWARE Section 2 “System Software: Computer System Management ” CHAPTER 4 Lecture-6/ T. Nouf Almujally 1.
Software Engineering Modern Approaches
Sumedha Rubasinghe October,2009 Introduction to Programming Tools.
Computing and SE II Chapter 18: Tools and Environments Er-Yu Ding Software Institute, NJU.
CIS 375—Web App Dev II Microsoft’s.NET. 2 Introduction to.NET Steve Ballmer (January 2000): Steve Ballmer "Delivering an Internet-based platform of Next.
Introduction to Version Control
The new version control system. Kiril Karaatanasov, July 2006 What is Subversion Subversion is a newly developed open source version control system Subversion.
Subversion, an Open Source Version Control System An Introduction.
Revision Control and Issue Tracking Andrew Watkins.
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.
Software Engineering in Robotics Packaging and Deployment of Systems Henrik I. Christensen –
Subversion (SVN) Tutorial for CS421 Dan Fleck Spring 2010.
Configuration Management (CM)
Version control Using Git Version control, using Git1.
DORII Joint Research Activities DORII Joint Research Activities Status and Progress 6 th All-Hands-Meeting (AHM) Alexey Cheptsov on.
July 2011CMSC 341 CVS/Ant 1 CMSC 341 Java Packages Ant CVS Project Submission.
Subversion (SVN) A Revision Control System Successor to CVS Carlos Armas Hervey Allen.
Software Quality Assurance
Copyright © 2015 – Curt Hill Version Control Systems Why use? What systems? What functions?
SENG 403 Tutorial 1 1SENG 403 – Winter Agenda Version Control Basics Subversion Basic actions in Subversion Some examples 2SENG 403 – Winter 2012.
CASE Tools Union Palenshus. In the early days… ► Software engineering tools consisted solely of translators, compilers, assemblers, linkers, loaders,
INFSO-RI Enabling Grids for E-sciencE SCDB C. Loomis / Michel Jouvin (LAL-Orsay) Quattor Tutorial LCG T2 Workshop June 16, 2006.
Eclipse 24-Apr-17.
Development with Eclipse Software Engineering Prof. Werner Krandick.
 Programming - the process of creating computer programs.
SPI NIGHTLIES Alex Hodgkins. SPI nightlies  Build and test various software projects each night  Provide a nightlies summary page that displays all.
Subversion (SVN) Tutorial for CS421 Dan Fleck Spring 2010.
Sung-Dong Kim Dept. of Computer Engineering, Hansung University Chapter 3 Programming Tools.
Source Control Repositories for Enabling Team Working Doncho Minkov Telerik Corporation
NALINI S. NAUTIYAL SYSTEM SOFTWARE DIVISION Subversion.
Software Configuration Management -Subversion- RTLAB YuJin Park.
Testing Tools & Standards
Development with Eclipse
Basic 1960s It was designed to emphasize ease of use. Became widespread on microcomputers It is relatively simple. Will make it easier for people with.
Version Control with Subversion
SE goes software engineering; (practically) managing the Compose
SE goes software engineering; managing the Compose* project.
LECTURE 3: Software Configuration Management
Unit# 8: Introduction to Computer Programming
Cmake Primer.
SE goes software engineering; managing the Compose* project.
SE goes software engineering; (practically) managing the Compose
Review of Previous Lesson
Presentation transcript:

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

Version Management Both during and after development Both code and documentation Uses Multi-developer change control Releases Support for different environments Computers Operating systems

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

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?

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

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

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”

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

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

But there are tools … CVS: Concurrent Version System Subversion (SVN) SourceForge Actually uses CVS and SVN, but a different model

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

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

Subversion 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

SourceForge Open source development environment Free web-based facility Purchasable software as well SourceForge.net supports SourceForge.net CVS and SVN Compile farm Trackers Web site

Lots of Others Google code TRAC

Tools Version Management Build Systems Integrated Development Environments Document Extraction

Build System Functions System configuration Executing preprocessors compilers linkers Manage paths and libraries Create executables and libraries

Types of Build Systems Platform specific independent Part of version management systems integrated development environments nothing (standalone)

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

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)FT Jam

Apache Ant: build Introduction Workflow elements XML-based configuration files Java based contains features specifically for J2EE

Ant Control Commands (sample) Ant: Runs Ant on a supplied buildfile Ant AntCall: Runs another target within the same buildfile AntCall Exec: Executes a system command (can be OS specific) Exec Java: Executes a Java class Java Parallel: Forks a new thread for another Ant tasks Parallel Sequential: Grouping of commands Sequential Waitfor: Blocks execution until a set of specified conditions become true Waitfor

Tools Version Management Build Systems Integrated Development Environments Document Extraction

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

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?

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

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) SharpDevelop GNU Emacs (Unix) – major modes for languages GNU Emacs

Eclipse 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

Tools Version Management Build Systems Integrated Development Environments Documentation Extraction

What can be extracted? Documentation Signatures Building interfaces first Initial documentation Tools avoid update issues Are there drawbacks?

Tools Doxygen – open source Doxygen Javadoc – from Sun Javadoc

Software Engineering Elaborated Steps Concept Requirements Architecture Design Implementation Unit test Integration System test Maintenance

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

Software Craftmanship Software craftsmanship (McBreen 2001)McBreen 2001 Craft of writing software Craft of using software Distinguish from software engineering Scope Rigor Relevant distinction?