Recent Articles

Adopting Agile/Iterative Software Development

Iterative Software Development

Choosing An Approach To Agile/Iterative Software Development

Adopting AGILE In Your SDLC Shop

iterDev Documentation Model

GitHub.com Projects

Convert Log4Net to NLog

Log4Net integration in ASP.NET MVC

iterDev.com Project Delivery

iterDev.com Project Delivery System

Overview

This document defines the iterDev Iterative Project Delivery System. The Project Delivery System substantially automates the following, recurring project tasks:

  • Default Project Setup of Development and Management environments: Create directories for Source Development, Documentation, Models, Testing and Deployment
  • Measurement and Audit Metrics: Software Development Standards Compliance
  • Production of Development Artifacts: Requirements Documents, Estimates, Schedules, Development Documents, Source Code Documentation and Code Inspection Packages.
  • Production of Audited Project Builds

The process consists of a collection of process automation tools and custom scripts. The system commands available are:

  • Project Initiation
  • Requirements Management Cycle
  • Project Documentation Cycle
  • Iterative Development Cycle
  • Project Build and Demonstration Cycle
  • Project Deployment Cycle
  • Project Milestone Cycle

Combining and iterating the cycles above will generate a Managed Project Release. Facilitating a Managed Project Release that meet all of the Managed Project´┐Żs deliverable and process requirements is the entire purpose of this system.

Assumptions

The Project Delivery System specified here is based on the following assumptions:

  1. Project-wide development IDEs, components, configuration management have been selected and are available for automated install (nuget, BoxStarter, Docker...).
  2. A project-wide Requirements Management tool has been selected and initial requirements entered (Enterprise Architect).
  3. A project-wide Class and Data Modeling tool has been selected and initial data model created: code first or model first (Enterprise Architect).
  4. Project Deliverable Documentation set is specified and conforming templates are available.
  5. A Project-wide project template has been created and is available.
  6. A Deliverable Prototype of at least 1 component has been built by the development team, demonstrated and approved by management.

Project Initiation

The Project Initiation command is an automated script to create a named, managed, project development environment on any development workstation. The work product of the Project Initiation command is a complete Deliverable Prototype with documentation.

The structure of the development environment is dictated by department standards, the structure required by the Configuration Manager and the Deliverable Prototype.

With the proper Automation tool, this step is completely automated.

Project Initiation consists of the following configurable steps:

  1. Create development directory structure: script or template
  2. Create Default Documentation Set, User Requirements
  3. Create Default Source from Project Deliverable Prototype baseline
  4. Optional: Create Default Help project
  5. Optional: Create Default Development database scripts and accounts,
  6. Optional: Create Resource/Memory Leak test project
  7. Create Requirements Management project
  8. Create Test Project
  9. Create Exception Logging Account
  10. Optional: Create Design Model Project
  11. Optional: Create Web Development site
  12. Perform First Project Build and Demonstration Cycle

Requirements Management Cycle

The Requirements Management Cycle command encapsulates the activities needed to gather, vet and express requirements for the project as a whole, or for individual milestones.

The work product of the Requirements Management Cycle is an updated User Requirements Document, Technical Design Document, Project Schedule and Requirements Traceability Matrix associating user requirements with technical design and development tasks.

During the Requirements Management Cycle, changes or additions to the requirements set, resulting from the most recent deliverable prototype demonstration, are made.

With the proper Requirements Management tool, this step is mostly automated.

Assuming the use of a requirements management tool, such as Enterprise Architect, the Project Manager and Development Staff perform the following actions:

  1. Scan and OCR any WORD document with formatted requirements entries from client meetings, specifications or interviews
  2. Inherit or update current organization-wide project requirements into Requirements Management tool
  3. Add or update any additional explicit Data Model or Security requirements
  4. Adjust or update Level Of Effort for project design elements associated with a new or changed user requirement
  5. Perform a Project Documentation Cycle and generate an updated Project Schedule
  6. Project Management reviews updated Project Documentation and Project Schedule with project customer
  7. Deliver completed Requirements Traceability Matrix to Development for next Iterative Development Cycle

Project Documentation Cycle

The Project Documentation Cycle updates the set of user requirements for the project as a whole and identifies the subset of requirements assigned to the next Iterative Development Cycle. The work product of the Project Documentation Cycle is updated requirements, designs for the project team and, optionally, an updated Project Notebook suitable for delivery to the customer.

For Project Documentation Cycles that are not part of a Milestone or Managed Release, Source Code and User Help documentation updates are optional.

With the proper Requirements Management tool, this step is completely automated.

Assuming the use of a Requirements Management Tool, such as Enterprise Architect, Project Management performs the following actions:

  1. Optional: Generate an updated User Requirements Document
  2. Generate an updated Project System Test
  3. Generate updated Project Schedule
  4. Run Design Documentation script, with current design model:
    • Document UML object hierarchy
    • Optional: Update Data Model Entity Relationship Diagrams
    • Generate an updated Technical Design Document
    • Generate an updated Requirements Traceability Matrix, RTM
  5. Optional except for project releases: Run Source documentation script:
    • Code Metrics
    • Code Documentation
    • Optional: Design/Code Inspection Packages
    • Coding Standards Compliance
  6. Optional except for project releases: Run Project help creation scripts:
    • Update user help text and graphics
    • Rebuild User help

Iterative Development Cycle

An Iterative Development Cycle is the central development activity in this model. Iterative Development Cycles include are driven by the list of requirements assigned to this cycle. Each new or updated requirement is vetted to assess impact on other requirements and their design elements. Each affected design element is vetted and updated as needed to reflect changes needed to meet assigned requirements. Developers perform check out, coding, testing and debugging cycles as needed until all assigned requirements are met and ready for system test.

Within the SCRUM-Agile methodology this is called a Sprint.

The work product of an Iterative Development Cycle is a set of updated, tested, documented source files ready for use in a Project Build and Demonstration Cycle.

  1. Evaluate Project Requirements and Design Requirements assigned to this cycle in the updated Requirements Traceability Matrix
  2. Team meets to update Design Model based on new or updated requirements
  3. Check-out Project source files from Configuration Management
  4. Develop: Code, Unit Test, Debug, Confer
  5. Update Database scripts
  6. Update Tests and Feature Test Scripts
  7. Check-in updated work products to Configuration Management

Project Build and Demonstration Cycle

A Project Build and Demonstration Cycle performs each cycle needed to generate the complete set of updated project deliverables required by the calling cycle.

The work product of a Project Build and Demonstration Cycle is an incremental build of project deliverables that have been updated, unit tested. If the enclosing cycle is not a Project Milestone Cycle or Managed Project Release, updated Documentation and Project Deployment are optional.

With the proper Build/Continuous Integration tool this step is completely automated.

  1. Perform a Requirements Management Cycle
  2. Perform an Iterative Development Cycle
  3. Invoke Continuous Integration tool to produce Production and Test versions
  4. Update Test Scripts: Minimum Application Response, Regression Set, RTM,
  5. Run all Automated Test Scripts
  6. Perform a Project Documentation Cycle
  7. Verify Exception Reporting
  8. Optional: Update/Expand Application Help
  9. Optional: Perform Project Deployment Cycle
  10. Check-in Project
  11. Optional: Demonstrate Project

Project Deployment Cycle

A Project Deployment Cycle consists of running all current build automation projects and any manual scripts necessary to build a project completely from source files in the project configuration management repository.

The work product of a Project Deployment Cycle is a set of updated project deliverables available on the targeted deployment platform: development test, alpha/system test/ beta/public test or production.

With the proper Build/Continuous Integration tool this step is completely automated.

  1. Run Database scripts in Target environment
  2. Create/Update Deployment Script
  3. Optional: Create Archive Distribution Media
  4. Optional: Create Archive Source Media
  5. Deploy to distribution location, media

Project Milestone Cycle

A Project Milestone Cycle consists of a Project Build & Demonstration Cycle and Project Deployment Cycle. User community feedback is solicited into new or updated requirements which are fed into a Requirements Management Cycle. Management support/test staff and user community feedback determine if project deliverables meet requirements for a Managed Project Release.

The work product of a Project Milestone Cycle is a deployed partial or full application, to beta or production environments.

  1. Perform a Requirements Management Cycle to generate Milestone requirements
  2. Perform 1 or more Project Build and Demonstration Cycles
  3. Perform a Project Deployment Cycle
  4. Demo the Production version to stakeholders
  5. Solicit and prioritize (users, testers, PM) response into project requirements
  6. Perform a Requirements Management Cycle
  7. Evaluate schedule/resource impacts

Managed Project Release

A Managed Project Release combines and iterates other project cycles to generate project release.

The work product of a Managed Project Release is a deployed application to beta or production environments.

  1. Perform a Requirements Management Cycle to generate release requirements
  2. Perform 1 or more Project Milestone Cycles
  3. Optional create or update Context Sensitive Help
  4. Optional create or update Video help
  5. Optional create or update Web Update setup
  6. Perform a Project Deployment Cycle
  7. Review all artifacts
  8. Update Project Notebook
  9. Update or create Organization wide Project Standards requirements

Navigating the iterDev Process

The sections of this presentation are structured to be read once, sequentially, and then as needed in any order. The navigation links to the left and section descriptions below appear on every page.

To continue now with the iterDev.com Iterative Development Process, click each of the links to on the left in order. A brief description of each document's contents is below. The 'Home' link returns you to the home page.

Foreword - iterDev.com Home page and Author's Foreword to the Iterative Software Development web site.

Introduction - iterDev.com Introduction, Background and The Iterative Development Force Multiplier.

Iterative Process Model - The Iterative Development Process Model, its place in the Software Development Lifecycle and expected benefits.

Deliverable Prototype - The Deliverable Prototype, its down stream Advantages for projects and the Work Product that delivers them.

Development Process - The Iterative Development Process, Activities and their mapping to SDLC and a closer look at the core Iterative Development Cycle.

Project Delivery System - The Project Delivery System: Activities, Activity Specifications and how they combine to produce Managed Project Releases.

Epilog - A few final thoughts. A request for comments. What I hope to achieve with this site.