Software Development Management A simplistic howto Mathieu Lacage service DREAM.

Slides:



Advertisements
Similar presentations
Introduction To GIT Rob Di Marco Philly Linux Users Group July 14, 2008.
Advertisements

Configuration management
Usage of the memoQ web service API by LSP – a case study
CS 501: Software Engineering Fall 2000 Lecture 2 The Software Process.
1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 2 Software Processes.
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?
Juan Carlos Flores 10/20/2011. Outline Introduction Centralized Revision Control Systems Subversion Overview Distributed Revision Control Systems Network.
CS 501: Software Engineering
CS 501: Software Engineering
CS 501 : An Introduction to SCM & GForge An Introduction to SCM & GForge Lin Guo
Applied Software Project Management Andrew Stellman & Jennifer Greene Applied Software Project Management Applied Software.
Firefox 2 Feature Proposal: Remote User Profiles TeamOne August 3, 2007 TeamOne August 3, 2007.
Low level CASE: Source Code Management. Source Code Management  Also known as Configuration Management  Source Code Managers are tools that: –Archive.
The Basic Tools Presented by: Robert E., & Jonathan Chase.
Source Code Management Or Configuration Management: How I learned to Stop Worrying and Hate My Co-workers Less.
Source Control Repositories for Enabling Team Working Svetlin Nakov Telerik Corporation
Software Documentation Written By: Ian Sommerville Presentation By: Stephen Lopez-Couto.
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.
SubVersioN – the new Central Service at DESY by Marian Gawron.
Włodzimierz Funika, Filip Szura Automation of decision making for monitoring systems.
CONTINUOUS INTEGRATION, DELIVERY & DEPLOYMENT ONE CLICK DELIVERY.
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.
Selected Topics in Software Computing Distributed Software Development CVSQL Final Project Presentation.
Software Engineering Modern Approaches
Source Code Management with CVS Kurt Wiersma December 2004.
Article: Source Code Review Systems Author: Jason Remillard Presenter: Joe Borosky Class: Principles and Applications of Software Design Date: 11/2/2005.
Sumedha Rubasinghe October,2009 Introduction to Programming Tools.
Zhonghua Qu and Ovidiu Daescu December 24, 2009 University of Texas at Dallas.
Software engineering Olli Alm Lecture 6: implementation, tools for software development.
ProCol~ A jEdit Plugin for Remote Project Collaboration Justin Dieters Spring 2004 CS470 Final Presentation.
Or ways to enhance coding enjoyment, productivity and, most of all, preserve your sanity. Nicolas Connault Web developer Moodle HQ February 19 th 2008.
1 Lecture 19 Configuration Management Software Engineering.
 To explain the importance of software configuration management (CM)  To describe key CM activities namely CM planning, change management, version management.
DAT602 Database Application Development Lecture 12 C/S Model Database Application.
Software Engineering in Robotics Packaging and Deployment of Systems Henrik I. Christensen –
Software Development Process and Management (or how to be officious and unpopular)
Service Computation 2010November 21-26, Lisbon.
Configuration Management (CM)
May 29 th, 2003 Curtis Anderson Sivaprasad Padisetty.
Melissa Armstrong – Sponsor Dr. Eck Doerry – Mentor Greg Andolshek Alex Koch Michael McCormick Department of Computer Science SolutionProblemDesign User.
1 SEG4912 University of Ottawa by Jason Kealey Software Engineering Capstone Project Tools and Technologies.
May05-36: Boone Cemetery Management Software Boone Cemetery Management Software May05-36 Greg Thede, Director, Boone Parks Department Dr. Kothari Joseph.
Writing macros and programs for Voyager cataloging Kathryn Lybarger ELUNA 2013 May 3, #ELUNA2013.
1 3. Computing System Fundamentals 3.1 Language Translators.
Progress with migration to SVN Part3: How to work with g4svn and geant4tags tools. Geant4.
ILDG Middleware Status Chip Watson ILDG-6 Workshop May 12, 2005.
PHP Features. Features Clean syntax. Object-oriented fundamentals. An extensible architecture that encourages innovation. Support for both current and.
Intermediate 2 Software Development Process. Software You should already know that any computer system is made up of hardware and software. The term hardware.
How to Publish Your Code on COIN-OR Bob Fourer Industrial Engineering & Management Sciences Northwestern University COIN Strategic Leadership Board.
Kako razvijate PL/SQL pakete? File based PL/SQL development Mitja Golouh SIOUG 2006,
Chapter 4 – Threads (Pgs 153 – 174). Threads  A "Basic Unit of CPU Utilization"  A technique that assists in performing parallel computation by setting.
1 CS 501 Spring 2004 CS 501: Software Engineering Lecture 2 Software Processes.
Confidential Continuous Integration Framework (CIF) 5/18/2004.
CS5103 Software Engineering Lecture 02 More on Software Process Models.
Copyright 2002 Prentice-Hall, Inc. Chapter 4 Automated Tools for Systems Development 4.1 Modern Systems Analysis and Design.
August 2003 At A Glance The IRC is a platform independent, extensible, and adaptive framework that provides robust, interactive, and distributed control.
Overview of SAIP and LSSA. Software Architecture in Practice Provides a set of techniques, not a prescriptive method for architectural design. Based on.
Software Engineering Overview DTI International Technology Service-Global Watch Mission “Mission to CERN in Distributed IT Applications” June 2004.
APT Configuration Management May 25th, 2004 APT Configuration Management Jesse Doggett.
CASE Tools CSC 532 : Advance Topics CSC 532 : Advance Topics Software Engineering Software Engineering Dr. box Dr. box Moayad Almohaishi Moayad Almohaishi.
TEAM FOUNDATION VERSION CONTROL AN OVERVIEW AND WALKTHROUGH By: Michael Mallar.
Outline Announcements: –HW II due today! –HW III on web CVS.
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
A S P. Outline  The introduction of ASP  Why we choose ASP  How ASP works  Basic syntax rule of ASP  ASP’S object model  Limitations of ASP  Summary.
Moving Picture Metaphor
Version Control and Source Code Control Systems
Version Control with Subversion
Design and Programming
Presentation transcript:

Software Development Management A simplistic howto Mathieu Lacage service DREAM

What is software ? Examples: -excel macros -javascript -graphical user interface for a database -real-time control of an articulated arm -numerical computation The goals, requirements, and know- how are extremely different

What is software ? (2) « Features »: -development methods (or lack thereof) -bugs are always present -all software engineers spend 80% of their time completing the last 20% of a software

What are the goals ? Complete current project ASAP As few bugs as possible Complete next project ASAP (maybe) Means to achieve these goals: -reuse of libraries and/or programs -write reusable code -write bug-free code (?!) -...

How to achieve these goals Software development « management » -keep in mind the ultimate goal during technical discussions or when you must take a decision on your own: complete the projet asap within the given constraints -none of this is technically challenging. It is a (not so simple) matter of communication and organization Each and every project, small or big, can save time with such « management »

Decisions Macro-decisions: -will library X be used ? -when do you want to complete the project ? -what features must be implemented ? Micro-decisions: -how do you add featurelet Y to the project ? hack into object A, B, or C ? create a new clean object D ?

Macro-decisions Features: -end-user: feature list, user documentation -developer side: documentation Deadlines: prototype, final version, hard deadlines ? Development environment: -libraries, compiler, and OS versions Production environment: -different from development environment ?

Each decision has a direct and fundamental influence on: -architecture -maintainance cost -reuse cost -initial cost Each decision must be weighed against its consequences This requires experience to get right Macro-decisions (2)

Micro-decisions Every day, every second, small decisions must be made on how to build the software, how to add a function: -language-specific: requires knowledge of the language idioms -language-independent: requires knowledge of many development idioms to pick the right one If you have experience, it ’s easy. If you do not you can learn easily

How to acquire experience ? No need to be a level 5 guru (gurus always start at level 0) A few ideas: -be very rigorous -question yourself -discuss your decisions with others -read the code of others -obey the following 7 basic rules

Rule n°1 Source server -CVS, arch, subversion, bitkeeper, perforce -yes, zip archives are worthless -must allow concurrent work on the same file with easy merging -must allow branch creation and merging -must allow history browsing

Rule n°2 Tag/Branch the source repository for each release Yes, numbered zip archives are worthless This is the only reliable way to reproduce bugs reported by users

Rule n°3 ChangeLog -one change = one entry in the ChangeLog file -describe the goal of the change and how it was implemented in each entry -use the same entry as your source repository commit message -automatically generate the entry skeleton -add an entry for each release

Rule n°3 (2) Example David Bordoley * src/nautilus-shell.c: (open_window): Prefer an existing window for a location when opening a location from the command line and the user's preference is open in new window mode. === nautilus === Dave Camp * NEWS * configure.in: Bumped version to

Rule n°4 Coding style -please, do not invent one (no NIH) -do not change the existing coding style -use the coding style of the modified file -ideally, you cannot guess who wrote what -ex: in C, the Linux kernel, GNU, Gnome

Rule n°5 Documentation -communication medium: it is worthless if no one reads it -please, do not document that copy_object copies objects: the name is obvious the source code is probably trivial: we can read it -focus on important stuff: global program structure global dynamic control flows

Rule n°6 Automated Tests -Ex: data decoding -goal: find bugs in code modifications -do not test normal behaviour (it is useful but has a very low return on investment ratio) -test side effects -focus on the easy stuff -add a test for each bug for which you can easily write a test-case

Rule n°7 Reviews -for each commit, request review from another engineer -reviewer: how did you test this change ? -reviewee: justify each line changed Help you to focus on what you did and why you did it

Recommended reading Books: -« Refactoring: Improving the Design of Existing Code », by Martin Fowler, Addison Wesley -« The mythical man month », by Frederick P. Brooks, Addison Wesley Papers: - -

Conclusion (2) I am no crook: -I can review two people -I can provide ChangeLog generation scripts for C, C++, and Java -I can help CVS server configuration (not administration) -I answer all s: DREAM answers all s too: