Articles of Interest

The ColdFusion 5 Web Application Construction Kit

This is the fourth edition of what people commonly refer to as "the ColdFusion bible".

Leon wrote four of the advanced chapters in this book, during the late winter

>> Learn More

Adobe ColdFusion 8 Web Application Construction Kit

Again, Leon Chalnick, President of Advanta Solutions LLC, was asked and agreed to contribute to the most recent version of this book. Mr. Chalnick has been contributing

>> Learn More

Software Development Life Cycle (SDLC)

"What is the significance of the systems development life cycle?", you may wonder. At Advanta Solutions LLC, developing custom software solutions is a process that includes five phases. Through years of experience, we have found that if any of these phases are skipped or cut short, it is unlikely that the resulting software product will meet users' needs. With years of experience developing custom software solutions, Advanta Solutions has come to recognize and respect the importance of each phase in the Systems Development Life Cycle (SDLC).

These phases are discussed in the sections that follow. The description of each phase is accompanied by a discussion of the output from the phase (the deliverables) and a brief discussion of the factors related to the project phase that are critical to the success of the project.

Analysis

The system's basic requirements are defined in the Analysis phase. The primary users of the system (those people responsible for the data, maintenance, analysis and output of the system) are interviewed in order to establish what the system must do. Note that there is no intent to determine how the system will do things-that is the purpose of the design phase. Here, the system engineers determine what functions the system must provide, what data are involved, what output (reports, files, etc.) must be produced and so on. If the system must interface with any other systems, the nature of these interfaces must also be fleshed out up front.

There are typically several implementation issues discussed in this early phase: data conversion and implementation approach. If there are existing data that needs to be converted for the new system, the system engineers will need to determine how this will take place.

Deliverables

The output of the Analysis phase is usually referred to as a requirements document. This document presents the system engineers' understanding of what the system must do. It will typically describe:

  1. Security requirements
  2. Performance requirements
  3. Data that will be used in the system
  4. Processing and computations used in the system
  5. Output produced by the system

If hardware and software platforms have not already been selected, then recommendations may also be made during the Analysis phase.

Critical Success Factors

The system engineers must come to understand the business of the system. It is critical that users focus on what the system needs to do, not on how it must be done. The requirements document is a tool which the system engineers use to communicate their understanding of the system requirements back to the users. It is important that users carefully review and agree on the system requirements, because this document will act as the guideline from which the rest of the system will be designed. If users find errors or omissions in this document, it is important that the system engineers are made aware of these inaccuracies so that they can be addressed before the system is designed and "construction" has begun.

Design

In the Design phase, the system will be functionally and technically specified. In this phase, the system engineers determine how things will get done. The requirements document produced in the analysis phase acts as input in the development of the functional specifications document. This later document acts as a blueprint from which the engineers will produce detailed technical designs.

The system engineers may run into problems that need to be addressed by users-problems that arise from the selection of a particular hardware or software platform, for example. These issues will be brought to the users' attention and resolved as quickly as possible.

The functional specifications document is used to produce the detailed technical design for the programmers. The detailed technical designs-produced for each component of the system-are used by the programmers in the next phase and are typically not delivered to end users

Deliverables

The functional specification document will explicitly describe-in terms that users can understand-how the requirements will be implemented in the system. It will flesh out data structures, menu structure and general system organization. In order to provide users with a realistic concept of how the system works, the system engineers may include examples of how critical pages, windows or reports will be laid out. Under some circumstances, the engineers will develop prototypes of how various parts of the system. Users must review the functional specification document and "sign off" on it before the detailed technical design work can begin. There will often be other technical documentation produced in this phase, some of which may be delivered (for example, data dictionary, entity relationship diagrams, etc.).

Critical Success Factors

It is very important that design issues get resolved as quickly as possible. It is a big mistake not to resolve potential problems before beginning the technical design and subsequent implementation of the system. Failure to do so can result in downstream modifications which could have been significantly mitigated if the problems had been resolved before the system was coded.

Coding

In this phase, the system is constructed: the individual components-input screens (i.e., windows, dialog boxes, etc.), reports (i.e., output format descriptions), the menu system and so on-are produced. Each system component is tested individually, or module tested. At various points in the process, users may be presented with individual components of the system to verify that these components work as expected. Getting users involved in this testing process is referred to as user testing. As the coding and testing phase wraps up, the entire system is tested to make sure that all of the various components are integrated and work together properly as a system (referred to as the system test).

Deliverables

The most important deliverable is the source code. In today's environment, the source code consists of not only programming code, but any data that are part of the definition of the "objects" that comprise the system. The coding and testing phase also results in the production of test plans and related technical documentation.

Critical Success Factors

This is perhaps the most important phase in that this is where the system is actually produced. There should be no short cuts taken during the production of the system, as they will almost certainly result in a product that does not meet users' expectations. The most important component of this phase is the testing. Not only must individual program components be tested, but the entire system must be tested to make sure that all its various components and sub-systems work together properly. Users should be involved in the process of reviewing and testing the system to as great an extent as possible. This will minimize surprises and will help ensure that users are satisfied with the system.

Installation & Training

Installation refers to the process of installing the new system in the users' environment. In the Analysis phase, the system engineers will have determined how the various implementation issues are to be resolved. Now, the systems engineers will assist in the actual data conversion, load the software onto the computers and provide users with access to the system.

Some type of user manual or other training materials will be developed and the various users will also be trained in the use of the system.

When users have been trained and all data required has been entered into the system or converted, the system will be brought into production. The exact approach with which users begin using the system will also have been determined back in the Analysis phase.

Deliverables

Obviously, the primary deliverable is the completed system. Other important deliverables consist of training materials and converted data.

Critical Success Factors

Getting users trained prior to using the system will help to insure the success of the project. Forcing a new system on users without proper training is one of the biggest mistakes that can be made.

Support & Maintenance

After the system has gone into production, there will almost always be modifications that are required. These change requests may arise for a variety of reasons: the business environment has changed; "bugs" not uncovered in testing may be discovered; users may desire additional functions that were not foreseen when the system was originally specified; budgetary constraints that existed when the system was specified may no longer be a problem, and so on. This phase is ongoing in nature-while it has a beginning it does not have a definite end.

But note that for support requests that are not trivial, we must essentially go through the first four parts of the SDLC again: analysis, design, coding and installation.

Deliverables

A log is kept to monitor the requests for changes and problems. This log is used to document information (who, what, when, why, etc.) related to the implementation of changes and "fixes". Occasionally, additional training materials will be produced, depending on, among other factors, the complexity of the required changes.

Critical Success Factors

It is important that users clearly specify the requested changes and problems as soon as possible. It is also important for the system engineers to provide users with adequate feedback regarding which enhancements and fixes will be made and by when. Once the system is in production, the notion of version control becomes very important. Version control refers to the management of the implementation of new versions of the system. While the developers may be working on a new version, for example, they must always have immediate access to the version of the system which is currently in production.