Ian Carroll's Software Development Resources - Tips, Templates, and Tools.The following resources have been collected over many years by Ian Carroll and now published in a central resource to share good practices in software development and project delivery. The structure of this page follows the Software Engineering Body of Knowledge (SWEBOK) categories to provide a common structure to the content. Most of the content below has been produced / developed by Ian but some of the links are to 3rd party sites and resources. Items marked with a * are not available for direct download but are available free upon request. Please email ian@solutioneers.co.uk for download details. Ian's blog is at http://ProjectFinishLine.blogspot.com
The discovery, analysis, and documentation of the behaviour to be implemented in a system.
Volere Requirements Template - this is still the original and the best guide to requirements definition available.
Technical Spec Template - use this technical specification template to capture the non-functional requirements and technical solution to be developed.
Requirements Creep Map - this diagram provides a simple yet affective way to communicate to stakeholders how the scope of a project has grown. I've seen many examples of software houses winning a fixed price tender only to go on to see the requirements explode during the requirements capture phase. This map shows what functionality was included in the original bid, what functionality was included but has crept, and what functionality is new and not part of the bid.
Project and system change control, revision control, and releases.
Bug Tracking Software - Mantis is a free popular web-based bug tracking system
DMS* - The Digital Management System is a workflow intranet application designed to manage the software development process using a gated approval process. The system features estimation, resource planning, scheduling, and notification.
Creation of technical models and plans for constructing systems that meet goals and requirements.
Creation of software functionality that meets goals and requirements through application of technology guided by design.
Work Package Template - this template is used to brief developers and provide clear instruction on what should be developed.
How to brief developers - this blog post covers what's needed to improve developer briefing, resulting in reduction of software defects, accelerated development, and motivated development teams.
Is it finished yet? - this blog post informs developers what is expected of them when they deliver a work package.
Planning, tracking, and controlling execution of engineering work to achieve specific goals.
Riskology - this spreadsheet was produced by The Atlantic Systems Guild and is very useful...if you know how to use it! Read the book Waltzing with Bears to find out how to use it.
Technical Lead Handbook - this handbook is basically a collection of checklists and information that anyone who is managing or leading a technical project can use to reduce the risks of project failure.
Estimation Template - After I read Steve McConnell's book - Software Estimation, Demystifying the Black Art, I pulled together this Estimation Workbook to put into practice many of the formulas and principals in the book.
Burndown Chart - these charts are very useful for improving predictability of projects for a given deadline.
Bug Fix Velocity - this spreadsheet is very useful for estimating how much time is remaining during a stabilisation phase of a project. It simply keeps a track of how many logged bugs are being fixed per day and uses this "velocity" to estimate how long the remaining bugs may take.
Classic Mistakes - this document has been drawn together to summarise the classic mistakes experienced when developing software.
Defining, measuring, and managing improvement of engineering work.
Metrics Database* - the metrics database is a network appliance that automatically collects data from multiple projects to serve the purpose of improving estimation and post implementation reviews.
Dev Team Management System (DTMS)* - most companies operate a SMART objectives system but most of them are paper based and the last thing techies want to do is fill out paper work. The main advantage to this system is that it can be used in conjunction with the PDL to provide both contributory objectives and personal objectives - all within a structured framework.
The selection and management of tools, technology, and techniques.
CruiseControl - is a framework for a continuous build process.
Source Monitor - The freeware program SourceMonitor lets you see inside your software source code to find out how much code you have and to identify the relative complexity of your modules.
FXCop - is a code analysis tool that checks .NET managed code assemblies for conformance to the Microsoft .NET Framework Design Guidelines.
NCover - A test code coverage tool for C# .NET
System deployment, migration, operation, repair, and evolution.
Code Diff - this tool measures the impact of changes on code bases. This information is useful for estimating future effort on changes and showing the true cost of changes. System requirements: .Net Framework 2.0
Ensuring that projects, organizations, and systems conform to goals and requirements.
Cyclomatic Complexity - this blog article provides information about improving one of the aspects of quality and provides links to the tools necessary to measure complexity.
Professional Development Ladder (PDL)* - the PDL has been written to give developers a knowledge base of articles, work experience objectives, recommended readings, and training courses which improves long term quality.
A subset of quality, focused on executing systems to detect defects and evaluate features.
NUnit - is a unit-testing framework for all .Net languages.
NCover - A test code coverage tool for C# .NET
Selenium - is a test tool for web applications. Selenium tests run directly in a browser, just like real users do. It runs in Internet Explorer, Mozilla and Firefox on Windows, Linux, and Macintosh, Safari on the Mac.
Fiddler - is a HTTP Debugging Proxy which logs all HTTP traffic between your computer and the Internet. Fiddler allows you to inspect all HTTP Traffic, set breakpoints, and "fiddle" with incoming or outgoing data. Fiddler includes a powerful event-based scripting subsystem, and can be extended using any .NET language.
Test Data Generator - useful site for generating small amounts of test data.
© Copyright 2008 Ian Carroll. All Rights Reserved.