Sunday, June 14, 2009

Checklist before starting an IT project

Hi, here is an excellent post from http://ianfnelson.com/software-development-process-questions/
in order to ask yourself relevant questions before starting up an IT project.

Thank you Ian Nelson,

Project Management

  • What project management approach is used (e.g. PRINCE2)?
  • Are any formal development processes used (e.g. Agile, Cleanroom, Iterative, RAD, RUP, Spiral, Waterfall, XP, Scrum)?
  • How are projects separated and organised? (Identify potential mapping to TFS Team Projects).
  • Where are documents related to the project stored?
  • Identify the structure of a typical project development team. Does the team include Project Manager, Business Analysts, Developers, Testers, Customer Representative?
  • Team Continuity?

Requirements Gathering

  • Identify how the requirements gathering process works. Who gathers the requirements, from whom, what do they do with these requirements?
  • Are user stories captured?
  • How are requirements prioritised into iterations? By who?
  • How long is a typical iteration?
  • How is feedback solicited and gathered from users of an existing release?

Analysis & Design

  • How are requirements turned into a technical solution design? By whom?
  • Are functional and/or technical specifications written? What format do these take?
  • Are UML or other formal methods used?
  • What techniques do the technical team members use to produce estimates and schedules?

Work Item Tracking

  • What system is used to track work items?
  • What types of work item are tracked? (Bug, Task, Change Request, Quality of Service, etc)
  • How are work items triaged, prioritised and assigned to an iteration?
  • Who assigns work items to individuals?
  • Which stakeholders have the ability to create, update, resolve and close work items?
  • What techniques are used to break down large tasks to fit into an iteration?
  • Are work items pertaining to refactoring and non-functional improvements created?
  • Are user stories broken down into work items?

Source Control

  • Which source control system is used (VSS, TFS, Vault, SVN, CVS, etc)?
  • Is the source control repository backed up appropriately?
  • Is exclusive checkout used?
  • What branching and merging model is used?
  • Do developers check-in frequently?
  • Are database schema objects stored in source control? How?
  • What artifacts other than source are stored in source control? (Build scripts, documentation, etc)
  • What check-in policies exist?
  • Is it possible to identify relationships between changesets and work items?

Development

  • · How is Documentation produced for the solution?
  • How do the development team share information? (Wiki, email, shared folders, Sharepoint?)
  • How many developers work on a typical project simultaneously?
  • Is Pair Programming practiced?
  • Do the team practice Collective Code Ownership?
  • Is time set aside for Refactoring?
  • Which IDEs are used? (VS2005, 2008, Expression Studio?) Which SKUs? Which licenses are held, or could be purchased?
  • Is VS DB Edition (Data Dude) used? Or other tools which perform a similar function?
  • Which databases are used? SQL 2000/5/8, Oracle?
  • What are the core outputs of the development process? (Windows apps, web apps, web services, WCF, SharePoint sites, BizTalk solutions, InfoPath documents, etc)
  • Do the developers integrate their work with that of Designers? How? (Expression?)
  • Do any coding standards or guidelines exist?
  • Do the team use any static code analysis software (FxCop, StyleCop, NDepend)?
  • What code metrics are gathered? To what use are these put?
  • Do the team regularly make use of any internally-developed shared resources?
  • Do the team regularly make use of any third-party components (Telerik controls, Enterprise Library, etc)?
  • What is the physical setup of the project office? Are developers working in a bull pen? Is a customer representative close at hand?

Builds and Integration

  • How are builds performed? MSBuild, NANT, etc?
  • Are build scripts source controlled?
  • How often are builds performed? (CI, Rolling, Daily, Ad-hoc?)
  • Does the build process increment the version number? Of which components?
  • Are database upgraded / recreated as part of the build process?
  • What “optional” steps are performed as part o f the build process (e.g. static analysis, unit testing, labelling?)

Testing

  • Do the developers write unit tests? Which framework is used? (NUnit, XUnit.NET, etc).
  • Is Test-Driven Development practiced?
  • Are mocking frameworks used (e.g Rhino Mocks, MOQ)?
  • Are database objects unit tested? How?
  • Are build verification tests run?
  • Are dedicated testers employed?
  • How is system testing performed? By who?
  • Is UAT performed? By who?
  • Is the FIT framework or similar used to define customer tests?
  • Is Load/Performance testing performed? Using which tools?
  • Are test scripts used to plan manual testing? Where are they located?
  • Are automated web tests used?
  • Are tests performed on a range of browsers / hardware?
  • Are Code Coverage metrics obtained? Use of NCover? Integration with NDepend?

Release Management

  • What environments exist (Dev, Stage, Test, Train, Live, etc)?
  • How are promotions authorised?
  • How are users notified of the release?
  • Who performs the promotions? Involvement from Systems team, DBAs?
  • How are web app promotions performed? Use of app_offline? Replacement of web.config?
  • How are database promotions performed? Data Dude? Scripts?
  • When are releases deployed? Out of hours?
  • Are release notes produced? How, and with what content?

Reporting

  • How are reports and metrics on the development team’s progress created?
  • Are reports created to detail the work items included in each build?
  • Reports on code-churn, bug clearance rates?
  • Reports on estimated vs actual schedules?