Step 2: Design

In this section we will go over the design stage of our 4D Methodology.  There are a lot of activities that go into this stage, so let's look at each one in more detail. But one comment before we begin. While the define stage was characterized by project control and requirements, the design stage is characterized by Functional Design. System Architecture and Test Planning. Okay, let's review the Functional Design portion now.


Functional Design

  • Screens
  • Reports/Inquiries
  • Dialog Flows
  • Menu Hierarchy
  • Refinement of Interface Definition
  • Identification of Impacts

The Functional Design relates to all the aspects of the system you can see and touch. Put another way, the Functional Design captures what the system should do, while the Non-Functional Design captures how well it does it. To get a clearer picture, let's look at the Non-Functional Design portion next.


Non-Functional Design

  • Ease of Use
  • Configurability
  • Reliability/Availability
  • Performance (throughput, response time, etc.)
  • Scalability
  • Extensibility (how easily modifiable)
  • Reusability

Hopefully you can see from the above list how important this step is to the success of your project. Put another way, imagine building a system without considering each of the above points? I wouldn't want to.

Next, let's review the Technical Design portion of our 4D Methodology, which translates the Functional Design into a form useful to the development team.


Technical Design

  • Data Model Approval
  • System Structure Chart
  • Physical Database Design
  • File Designs & Layouts
  • Program Specifications
  • Conversion & Implementation Plans
  • Technical Environment Design
  • Disaster Recovery HW/SW Design 
  • Operations Review

People occasionally ask me why building software is so expensive. As you can see, coding is but one step in a symphony of activity related to your project. Building software correctly is expensive. But building software incorrectly is extremely expensive

The next thing we need to do is focus on the System Architecture. The System Architecture defines the structure of the system. Let's review the activities involved in this step:


System Architecture

  • System Interfaces
  • Security Architecture
  • Overall Architecture
  • Plans for New and Retired Systems

The System Architecture relates to everything under the hood, so to speak. It determines how we are going to structure, or layout the building blocks of your system.

Next, we'll switch gears and look at the Training Plan. Our systems are intuitive, but your users are still going to need training. Let's look at the steps involved:


Training Plan

  • User Training Plan
  • Strategy
  • Scope
  • Materials/Guides
  • Personnel Involved
  • Locations

It is important to understand that we aren't actually creating the materials or guides at this stage. This is just the plan. We'll create those materials during the next stage of our 4D Methodology, Develop

In the next step we need to focus on the Test Plan. And yes, we are going to have to test your application before we hand it over to you. What a concept, huh? Okay, so what does the Test Plan entail? Let's review the steps below:


Test Plan

  • Create Test Plan
  • Test Case Suite
  • Test Script Suite 
  • Implementation Plan
  • Test Scope
  • Testing Approach
  • Testing Resources
  • Testing Objectives

The Test Plan defines how we are going to test the application, and identifies high level test scenarios we want to test for. It is the plan, not the detailed test scripts. We'll do that in the next stage of our 4D Methodology, Develop.


Design Checkpoint / Sign Off for Next Stage

Once all the above steps are completed, we'll conduct a formal review (checkpoint) just like we did after the define stage was completed. This also involves stakeholders, project sponsors, end-users, management, etc. This is done, much like the define checkpoint, to verify that the system we are about to develop is the same system all members of your team desire to create. It is not uncommon to flush out minor changes during this presentation as well.

I hope you found this section informative. In the next section I'll review how we develop software.