How To Develop A Project In A Production Environment



Similar documents
Two-Way Data Binding with WinJS By Marcin Kawalerowicz and Craig Berntson, authors of Continuous Integration in.net

We ( have extensive experience in enterprise and system architectures, system engineering, project management, and

Continuous Integration

Improving software quality with an automated build process

Introduction to Programming Tools. Anjana & Shankar September,2010

Source Control Systems

Gallio: Crafting a Toolchain. Jeff Brown jeff.brown@gmail.com

Continuous. Integration. in.net MARGIN KAWALEROWICZ CRAIG BERNTSON MANNING. Greenwich. (74 w. long.)

Leveraging Rational Team Concert's build capabilities for Continuous Integration

CISC 275: Introduction to Software Engineering. Lab 5: Introduction to Revision Control with. Charlie Greenbacker University of Delaware Fall 2011

Why this lecture exists ITK Lecture 12: Open Source & Cross Platform Software Development

Software Configuration Management Best Practices for Continuous Integration

Beginners guide to continuous integration. Gilles QUERRET Riverside Software

SOFTWARE DEVELOPMENT BASICS SED

Revision control systems (RCS) and

PxPlus Version Control System Using TortoiseSVN. Jane Raymond

Nick Ashley TOOLS. The following table lists some additional and possibly more unusual tools used in this paper.

Continuous Integration: Improving Software Quality and Reducing Risk. Preetam Palwe Aftek Limited

TEST AUTOMATION FRAMEWORK

Continuous Integration with CruiseControl.Net

Build management & Continuous integration. with Maven & Hudson

Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

Essential Visual Studio Team System

Continuous Delivery. Alejandro Ruiz

CPSC 491. Today: Source code control. Source Code (Version) Control. Exercise: g., no git, subversion, cvs, etc.)

Continuous Integration for.net Development

SA4 Software Developer Survey Survey Specification v2.2

Automate Your Deployment with Bamboo, Drush and Features DrupalCamp Scotland, 9 th 10 th May 2014

Image Credit:

Continuous Integration with CruiseControl.Net

Continuous Integration with CruiseControl.Net

Work. MATLAB Source Control Using Git

Tutorial: Packaging your server build

Introduction to Subversion

Web Developer Toolkit for IBM Digital Experience

Test Driven Development Part III: Continuous Integration Venkat Subramaniam

GENiC. Deliverable D5.1 Development & Integration guidelines including integration environment & means. Dissemination Level: Public

How To Develop A System For A Car Dealership

Version Control! Scenarios, Working with Git!

Open Source vs. Collaborative Software: FOSS is Not Enough

Practical Continuous Integration

Part III. Integrating.NET Open Source Projects in Your Development

Version Control with Subversion

Version Control with Subversion and Xcode

Version control. HEAD is the name of the latest revision in the repository. It can be used in subversion rather than the latest revision number.

Software Construction

Introduction and Agenda

Jenkins: The Definitive Guide

Moving to the new EAE version control Grantley McCauley

ALERT installation setup

Effective Team Development Using Microsoft Visual Studio Team System

Distributed Version Control with Mercurial and git

Expert PHP 5 Tools. Proven enterprise development tools and best practices for designing, coding, testing, and deploying PHP applications.

Copyrighted , Address :- EH1-Infotech, SCF 69, Top Floor, Phase 3B-2, Sector 60, Mohali (Chandigarh),

Maven or how to automate java builds, tests and version management with open source tools

Software Configuration Management and Continuous Integration

Domain Driven Design. Informatik IT-Uddannelse og IT-Udvikling

Agile Development with Jazz and Rational Team Concert

An Open Source Work Shop. Luciano Resende Haleh Mahbod Aug. 2008

OFBiz Addons goals, howto use, howto manage. Nicolas Malin, Nov. 2012

vs. Web Site: Blog: blog.soebes.com Dipl.Ing.(FH) Karl Heinz Marbaise

Engine: Using MSBuild and Team Foundation

Adopting a Collaborative Software Development Process in the Scientific Community

IKAN ALM Architecture. Closing the Gap Enterprise-wide Application Lifecycle Management

Introduction to Version Control

Managing.NET Development with NAnt

Version Control with. Ben Morgan

HPC-Forge. A Software Development Infrastructure

Development Process A case study

Test-Driven Development and Continuous Integration

EAE-MS SCCAPI based Version Control System

Eclipse Help

Delivering Quality Software with Continuous Integration

Software Continuous Integration & Delivery

Subversion Integration for Visual Studio

Continuous integration End of the big bang integration era

Introduction to Agile Software Development Process. Software Development Life Cycles

Comparison of Version Control Systems for Software Maintenance

CSE 70: Software Development Pipeline Version Control with Subversion, Continuous Integration with Bamboo, Issue Tracking with Jira

Using Subversion in Computer Science

Software Engineering Process. Kevin Cathey

Continuous Integration

Version Control with Git. Dylan Nugent

Version control with Subversion

Mastering CMake. Sixth Edition. Bill Martin & Hoffman. Ken. Andy Cedilnik, David Cole, Marcus Hanwell, Julien Jomier, Brad King, Robert Maynard,

Version Control. Luka Milovanov

Selection and Management of Open Source Software in Libraries.

Support Desk Software

Version control with GIT

Serialization. Informatik IT-Uddannelse og IT-Udvikling

Continuous Integration (CI)

Version Control with Subversion

Software Development Management. Mathieu Lacage - DREAM

Database Build and Release will get started soon

Best Practices for Java Projects Horst Rechner

Offline Database Development and Unit Testing with SSDT. Andrey Zavadskiy

For more about patterns & practices: My blog:

Continuous Integration

Continuous Integration Northwestern University. Evanston, Illinois November The Business of IT

Software infrastructure for Java development projects

Transcription:

Open Source.NET Development Setting Up A Professional Development Environment Using Open Source Software (OSS)

Morten Mertner Senior Consultant, Teknologisk Institut.NET Architect and Software Developer Developer of Gentle.NET (object persistence framework / ORM) MSCD.NET, MCT

Introduction Open Source Software Open Source Software Licensing Stability Support Picking the right tool

Introduction The Development Environment Setting Up A Professional Development Environment Unit Testing Documentation Source Control Automation Continuous Integration Issue Tracking

Open Source Software (OSS) Hosting SourceForce (www.sourceforge.net) 100.000+ projects FreshMeat II (www.freshmeat.net) 41.000+ projects GotDotNet (www.gotdotnet.com) 7.200+ projects Search Engines Koders (www.koders.com) 225,816,744 lines of code Why do it? Fame, Pride, Frustration, Love of Craft Powerful motivators

Licensing GPL (GNU Public License) Must publish all source changes Affects linked files (compile-time dependencies) 67% (freshmeat.net statistics) LGPL (Lesser GNU Public License) Must publish changes to component only Does not affect own project Can be used with closed-source commercial offerings 6% (freshmeat.net statistics) Apache, BSD, Creative Commons, MIT, others...

Stability and Support Activity Checks Forums Mailing lists Source repository Issue tracker Project statistics

Picking the right tool Trials Documentation and license reviews Hands-on testing and evaluation Usage reports (blogs, google groups)

Unit Testing What Module testing (black & white-boxed) Purpose Establish confidence Track progress Never fix the same error twice Additional Benefits Enables Test Driven Development Visibility (project status/progress, reporting)

Unit Testing xunit Tools NUnit MbUnit Frontends Command Line Default GUI TestDriven.NET ZaneBug

Unit Testing Demo Sample Code Creating your first test case Running the tests Evaluating the results TestDriven.NET Visual Studio integration ZaneBug Enhanced GUI

Documentation NDoc NDoc http://ndoc.sourceforge.net Standard.NET documentation tags (<summary>..</summary>) Benefits Create professional looking documentation Enable full Visual Studio integration (F1 help, IntelliSense) Strategy State purpose and document non-obvious information Always document all public methods, their parameters and return types Provide namespace summaries

Documentation NDoc Output HTML Windows Help (.chm) Visual Studio integration (.HxS) Support Tools Visual Studio Help Integration Toolkit http://download.microsoft.com/download/6/2/4/624a17d7-445f-499b-a2ed-82a06c36b370/vshik2003.exe H2Reg http://www.helpware.net/mshelp2/h2reg.htm

Source Control What Everything a developer needs to start working - source, libraries, build files, tools Anything NOT created by build process (documentation, binaries) Benefits Enables effective team work Revision control (labels, branches) Accountability Security (assuming the server is backed up)

Source Control Subversion Subversion WebDAV Cross-platform All modern SCM features (atomic commits, branching, move/rename, etc.) Strategy Use a dedicated development server (avoid file servers / network shares) Use included scripts to convert existing VSS repositories Don t spend much time on security (permit writes) Document most-used procedures and concepts Client installation Common tasks (checkout, update, commit, revert, diff and log)

Source Control Subversion Tools Command Line Subversion (svn) (http://subversion.tigris.org) Stand-alone GUI RapidSVN (http://rapidsvn.tigris.org) Windows Explorer integration TortoiseSVN (http://tortoisesvn.tigris.org) Visual Studio integration AnkhSVN (http://ankhsvn.tigris.org)

Automation What Repetetive tasks (usually also boring and error-prone) Benefits Reproducibility of build procedure Easy sharing of project setup Enables isolated build machine Scheduled builds Cross-compilation Complex scripting Task dependency management

Automation NAnt NAnt (inspired by Ant) http://nant.sourceforge.net XML syntax Tasks Compiling Validation and reporting (unit testing, FxCop) Packaging (installers, setup projects) Custom tasks Tools (graphical editors) NAnt-GUI NAntPad (commercial)

Automation NAnt Sample Build File <?xml version="1.0"?> <project name="nant" default="compile" xmlns="http://nant.sf.net/schemas/nant.xsd"> <target name="compile"> <solution solutionfile=..\source\calculator.sln configuration="debug" /> </target> </project>

Continuous Integration Continuous Integration Developer feedback on source repository actions Remote management and reporting Instant problem detection Early integration = early benefit

Continuous Integration CruiseControl.NET CruiseControl.NET (ThoughtWorks - Martin Fowler, GoF) http://ccnet.thoughtworks.com Web Dashboard CCTray Depends on Web Server / IIS Source repository (any) Build tool (NAnt, MSBuild, VS.NET) Integrates with NUnit / MbUnit FxCop

Continuous Integration Web Dashboard

Continuous Integration Web Project Status

Issue Tracking What Record all tasks that require human action Tasks Requirements (initial feature set) Bugs, supplemental features, tasks Benefits Progress visibility Accountability Reporting and statistics Version management (roadmapping)

Issue Tracking Mantis Mantis http://www.mantisbt.org Strategy Define projects, categories, permissions, etc. in advance - and keep them updated Create sub-tasks for non-actionable issues Always be specific ( fix documentation will not do) Enforce usage Create guidelines for reporting bugs if publicly accessible

Questions?