Our Process: Planning for Success
Building a successful software or systems should be much like building a house. In home building, before the first nail is driven, before the first load of concrete is poured, and before the lot is cleared, the builder has a detailed plan. Without some sort of a plan, the layout, the materials to be used, and the type and quality of finish are not known. Just as importantly, there would be no way for the builder to provide any kind of time or cost estimate. Obviously, no sane future homeowner would let a builder start without a plan…
So why is it that so many software and systems projects are attempted without a thorough, quality plan?
Far too many development projects go over time and over budget, or just fail altogether. In almost all such cases, the cause can be traced back to inadequate planning.
In 2009 we started development of our FACTS™ (Fishing Activity & Catch Tracking System) software (details at fisheryfacts.com). At that time we started backing away from custom development for many clients and now (as of 2014) soley working on FACTS™ and fisheries IT consulting.
One thing has not changed and that is our process - it works and we are sticking with it!
Step 1: Requirements Gathering
One of the reasons why we love what we do is that we get to learn about so many diverse businesses. When you work with Electric Edge Systems, we will learn all that we can about your business, what your needs are, and which solutions will serve you best. Learning all about your business process and rules helps us to evaluate the impact of proposed solutions on your entire business.
The result of the requirements gathering phase is a simple plan that all parties can follow and understand.
Step 2: Data and Technical Design
For applications that require data to be entered, stored, retrieved, or modified, a database will be at the heart of the system. Going back to the house building analogy, the database is equivalent to the foundation. It is of great importance to get the foundation right before the rest of the structure is built.
Designing the database in advance and making it efficient and easily expandable for future needs is absolutely crucial. Doing so will make the rest of the development process much simpler and will avoid potentially costly and time consuming changes later in the development process.
A quality technical design is another important element of application development. This document will list and describe the functionality to be provided and will define the scope of the project. The technical design document is a roadmap for you and for us to follow. Furthermore, it provides a definition of the project that can be referred to when evaluating the progress of development.
The level of detail in the technical design will vary depending upon the complexity of the project and your time and budgetary limits. Please note however, that when more time is spent on the technical design, the time and expense of the development phase is usually greatly reduced.
Step 3: Development
In the development phase of a project, the software programming starts and the system begins to come together into something that you can see and use. For projects that are not properly planned, this phase can be a disastrous litany of false starts and errors, resulting in re-working of major components, missed deadlines, and blown budgets.
If a good database and technical design is in place, system development can be one of the smoothest phases of your project. With a proper plan, the developers can simply follow the plans and build your solution.
Of course, during development of any system, some degree of change is inevitable. For example, some parts of our work may inspire new ideas for additional functionality that would be of great benefit to you. In order to keep projects manageable, we use a change control process. Under this process, a change request is written-up, the extra time and cost is quoted, and you and we sign-off on the change. Even if a change involves no additional time or cost, a change request is created to account for the final results of the project. A proper change request system is of benefit to all parties as it increases clarity and accountability.
Step 4: Testing
During development, our people will test each component of your system as it is built. This is referred to as "unit testing". For larger projects, you and your staff may be asked to perform some of the unit testing.
Upon completion of initial development, the system is tested as a whole. This is called "integrated testing". In the information technology business, it is widely understood that the programmers are not the best candidates to test the system as it can be difficult for people to evaluate their own work objectively. As the user and owner of the system, integrated testing is mostly or entirely performed by you since nobody has a better understanding of your business and its needs. At the same time, we can produce a "test plan" document for you. A test plan can list some of the potential situations that users may encounter, so that you can be sure to test the system against these possible conditions.
Upon successful completion of testing, you can sign-off on that phase of the project and implementation begins.
Step 5: Implementation and Ongoing Support
Project implementation is when we "flip the switch" and you begin using the system in the real world and with your real data. This may happen all at once, or in a phased approach.
For the first while after implementation, we stand-by to offer assistance if any unexpected situations arise. Beyond that, we are pleased to make ourselves available to you for ongoing support. This may include training of your staff, documentation of your system, and adding to your system and making changes as your business grows and evolves.