Internet-Speed Development


Internet-Speed Development is an Agile Software Development development method using a combined spiral model/waterfall model with daily builds aimed at developing a product with high speed.
It was developed in the late nineties because software development was changing rapidly. Companies were having problems delivering products with the correct requirements within the time scheduled for the project and as such were changing to more agile software development methods. More details about how the internet-speed method was developed can be seen in the evolutionary map in the paper of Abrahamsson.

Main ideas behind Internet-Speed Development

Often one of the biggest problems in software engineering is that the requirements change quickly and the internet-speed development method was created to adapt to this situation. The idea is to combine two main standards in software engineering models namely the spiral model and the waterfall model into a new model and base a new software engineering method on this new model. The main disadvantage of the waterfall model was that it was very rigid and not very flexible when it comes to changes in requirements, while the disadvantage of the spiral model was that it was not very structured. The idea behind internet-speed development is that the combination of these models will result in a method which does not have these disadvantages and is a better method to use in situations where requirements can change rapidly, but the project has to be executed in a structured way.

Goal of the method

The goal of the internet-speed development method is to allow software developers to perform a project in a structured way, but still be able to adapt to the needs of the customer. It aims to deliver a software product in a short time through intensive development. The method provides a means to deliver a fully implemented system and also has ways to determine progress in a project through the use of milestones. One of the main versions of this method is created by Microsoft and is called the Microsoft Solutions Framework.

The concepts behind Internet-speed development method

The first concept that is very important to internet-speed development is the creation of a vision and scope. What this means is that in the beginning of the project a global definition of the system is created which explains what the system aims to be and what is within the scope and what is not. This is one of the fundamental steps as it gives the developers some guidelines as to what the system will be without freezing any requirements. The scope can be documented in a vision statement.
Another very important concept within this method is scope management. The scope needs to be managed throughout the project to prevent scope creeping which results in delays. The scope will be determined early and changes to the scope will be evaluated and either accepted or rejected. Changes in the scope can be made but this will always be affected by trade offs between features, resources and time.
The internet-speed development method is very different from the traditional methods and therefore uses Agile method principles. It focuses on adaptation to requirements and as such is based on the basic principles of Agile software development.
Internet-speed development also focuses on using one fixed framework architecture from which the product is built and relies heavily on tools to increase the development speed.
Another basic concept of internet-speed development is that it also focuses on using small teams. The idea is that all projects can be divided into smaller activities which often can be done parallel. Smaller teams can often be more focused on their task and it is easier to determine accountability and monitor progress within the project.
The last concept discussed in this entry of internet-speed development is the concept of parallel development. This concept basically means that all the software development is done in parallel as often as possible. This will allow very quick development and it allows the smaller teams to focus on their own feature as much as possible which has a good result on quality. To ensure that the smaller teams do work together to create the final system it is however needed to synchronize their development frequently. This can be done using daily builds which means that all the developers check their code in at the end of the day after which a build is created which can then be evaluated and tested to monitor progress. After a feature is completed in the build in needs to be tested and refined which is sometimes called the synch-and-stabilize process. The developed features are synchronized with the build and tested. After these tests any bugs will be corrected and the feature can be refined to work better.
Internet-speed development is based on the agile principles and as such it has a lot of similarities with Extreme Programming, Rational Unified Process, DSDM and Feature Driven Development. Internet-speed development is different however from these methods as it also incorporates a more extensive risk-management planning and has quality as a very important objective of a project. The development phase of Internet-speed development also shows some similarities with the open-source software development model because many developers around the globe can be part of the development process because of communication through the Internet and the use of repositories for storing the code and documentation.

The phases of Internet-Speed Development

The model behind this method looks like this:
Figure 1: Phase model
This model shows the five basic phases of the method. These phases will be explained in the following sections of this entry. The phases are: Envisioning, Planning, Developing, Stabilizing and Deploying. After this cycle has been completed a version of the system is ready and a new cycle begins to create a new version. The phases are explained in the following sections and are shown through a meta-modeling technique. More details about multiplicities and concepts in a project context can be seen in the overall data model later on.

Envisioning phase

The envisioning phase can be modeled as followed:
Figure 2: Envisioning phase process/data model
ActivityDefinition
Analyze requirementsDuring the envisioning phase, business requirements must be identified and analyzed.
“These are refined more rigorously during the planning phase.”
Define Goals and Constraints“Envisioning, by creating a high-level view of the project’s goals and constraints.”
Form TeamFormation of the core team.
Create Vision/scope“The preparation and delivery of a vision/scope document.”
Create Risk assessment“During the envisioning phase, the team prepares a risk document and presents the top risks.”

Table 1: Envisioning activities
The basic activities performed in the envisioning phase are analyzing the requirements, forming the team for the project, determining the risks and the scope of the project. From the requirements and the goals of the project a Vision/Scope document is created. This document describes what the product is to be when it is delivered. It does not contain very detailed functionalities of the product.
ConceptDefinition
VISION/SCOPE DOCUMENT“Document defining the Vision and Scope.”
VISIONVisionis an unbounded view of what a solution may be.”
SCOPEScope identifies the part of the vision can be accomplished within the project constraints.”
RISK ASSESSMENT DOCUMENT“Standardized document for Risk Assessment”
PRIORITIZED RISK LIST“Detailed risk information including project condition, context, root cause, and the metrics used for prioritization are often recorded for each risk in the risk statement form.”
RISK PLANNING“Translation of the prioritized risk list into action plans.”
PROJECT STRUCTURE DOCUMENT“The project structure document includes information on how the team is organized and who plays which roles and has specific responsibilities. The project structure document also clarifies the chain of accountability to the customer and designated points of contact that the project team has with the customer. These can vary depending on the circumstances of the project.”
TEAM ORGANIZATION“Information on how the team is organized.”
CONTACT POINTS“Designated points of contact that the project team has with the customer.”
TEAM ROLES“Definition of who plays which roles and has specific responsibilities.”

Table 2: Concepts in the envisioning phase

Planning Phase

Figure 3: Planning phase process/data model
Table 3: Planning activities
In the planning phase a functional specification is created from the requirements. Features selected are included in this specification. Also, the basic design and planning are created in this phase. The design however is in this phase not frozen as changes may be made in the development phase.
ConceptDefinition
REQUIREMENTS LISTDocumentation
of requirements in a list or tool.”
MASTER PROJECT PLANAll
plans are synchronized and presented together as the master
project plan.”
(MSF Process model
WORKPLANSA plan or plans for the deliverables that pertain to the role and
participates in team planning sessions.”
(MSF Process model
COST ESTIMATESAn estimation of the costs of the project.
SCHEDULESTime estimates and schedules for Deliverables.”
(MSF Process model
MASTER PROJECT SCHEDULEThe
various schedules are then synchronized and integrated into a
master project schedule.”
(MSF Process model
FUNCTIONAL SPECIFICATIONThe
functional specification describes in detail how each feature is
to look and behave. It also describes the architecture and the
design for all the features.”
(MSF Process model

Table 4: Concepts in the planning phase

Development phase

Figure 4: Developing phase process/data model
ActivityDefinition
Develop FeaturesBuilding of solution components.”
Also includes testing after the daily build, bug fixing and evaluating the features.
Create Daily BuildCreation of a build after a workday.
Finalize ScopeAt this milestone, all features are complete and the solution is ready for external testing and stabilization.”
Develop InfrastructureThe infrastructure is developed.”

Table 5: Developing activities
The most important activity in the developing phase is the development of the features. Besides the implementation of these features the scope is also finalized in this phase. During development new features may be added to the product, but once the scope is finalized the features become frozen and ready for testing and stabilizing. The infrastructure is also developed in this phase which means that network structures are identified and servers like for example a database server are defined.
ConceptDefinition
INSTALLATION SCRIPTS AND CONFIGURATION SETTINGS FOR DEPLOYMENTA collection of scripts and settings needed for the product to install/run.
INSTALLATION SCRIPTSThe scripts needed to install the product.
CONFIGURATION SETTINGS
The configuration properties of the product.
PERFORMANCE SUPPORT ELEMENTSElements that support the performance of the product.
TEST SPECIFICATIONS AND TEST CASESSpecification of the tests and test cases used to validate the product.
FUNCTIONAL SPECIFICATIONThe functional specification describes in detail how each feature is to look and behave. It also describes the architecture and the design for all the features.”
SOURCE CODE AND EXECUTABLESThe source code/executables combination.
SOURCE CODEThe source code of the product.
EXECUTABLEThe executable created by source code.

Table 5: Concepts in the developing phase

stabilization phase

Figure 5: Stabilization phase process/data model
ActivityDefinition
TestingTesting during this phase emphasizes usage and operation under realistic environmental conditions.“
Resolve BugsThe team focuses on resolving and triaging bugs and preparing the solution for release.”
Deploy PilotOnce a build has been deemed stable enough to be a release candidate, the solution is deployed to a pilot group.”
ReviewOnce reviewed and approved, the solution is ready for full deployment to the live production environment.”

Table 6: Stabilization activities
The main activities are the testing and resolving of bugs. Once a build version is considered stable enough for a pilot a pilot version is created and deployed. From this pilot it will either go back into the testing/stabilizing loop or it will be approved and reviewed.
ConceptDefinition
TEST RESULTS AND TESTING TOOLSCollection of test results and tools used for testing.
TEST RESULTSResults of executed tests.
TESTING TOOLSTools used for testing.
GOLDEN RELEASEThe version used for the final reviewing.
RELEASE NOTESNotes for a release version.
SOURCE CODE AND EXECUTABLEThe source code/executables combination.
SOURCE CODEThe source code of the product.
EXECUTABLEThe executable created by source code.
MILESTONE REVIEWReview of the final version and the project documents.
PROJECT DOCUMENTSCollection of all the project documents.

Table 7: Concepts in Stabilization phase

deployment phase

Figure 6: Deployment phase process/data model
ActivityDefinition
Deploy the Core ComponentsDeployment of all components needed by the product
Deploy the solution on siteFor tailor-made systems deployment of the product occurs here.
Stabilize the deploymentTacking, monitoring and improving the deployed components.
Transfer the project to operations and supportTransferring all documents and code to the operations and support team.
Obtain final approval from customerThe customer must agree that the team has met its objectives before it can declare the solution to be in production and close out the project. This requires a stable solution, as well as clearly stated success criteria. In order for the solution to be considered stable, appropriate operations and support systems must be in place.”
Review the projectFinal review of the project.

Table 8: Deploying activities
The main activity in the deploying phase is the installation of the infrastructure needed to run the product. Also, the documents are finalized and transferred to the operations and support department, a knowledge base is created and the product and project are reviewed by the customer and the project team.
ConceptDefinition
PROCEDURES AND PROCESSESCollection of procedures and processes.
PROCEDURESCollection of procedures to be used for installation and operation of the product.
PROCESSESCollection of processes to be used for installation and operation of the product.
KNOWLEDGE BASE, REPORTS, LOGBOOKSCollection of the knowledge base, reports and logbooks.
KNOWLEDGE BASEThe knowledge base associated with the product.
REPORTSThe reports associated with the product.
LOGBOOKSLogbooks associated with the product.
DOCUMENT REPOSITORYA repository of all documents.
FINAL VERSIONS OF ALL PROJECT DOCUMENTSThe final versions of the project documents.
OPERATION AND SUPPORT INFORMATION SYSTEMSSystems used by the operation and support teams associated with the product.
CUSTOMER/USER SATISFACTION DATACollection of data from the customer/user about his satisfaction with the product.
DEFINITION OF NEXT STEPSDescription of next steps to take for evolving the product.
PROJECT CLOSE-OUT REPORT
Final report on the product, project and the transfer to operations and support.

Table 9: Concepts in Deploying phase

Overall data model

Figure 7: Overall data model
This data model shows all the concepts with multiplicities and relations in a full project context.

Tools for use with Internet-Speed Development