Software Engineering

Analysis, Design, Implementation, Testing

Improving Project Success Through Experience

Developing applications requires more than a solid knowledge of programming. Analysis, design, and planning play large part in all successful projects. To achieve the business objectives successfully, a consultant must:

  • Demonstrate the ability to distill requirements from many sources
  • Be able to develop a plan integrating existing assets with new components
  • Possess the soft skill necessary to confidently communicate with project stakeholders
  • Support the change management needs of the organization as it adopts the new solution
  • Above all, be open to change

For over 20 years I have provided consulting services to clients across the globe. I have worked with government agencies to develop new IT systems from pen and paper workflows. I also have worked with small one-person companies updating websites and automating spreadsheets. In all these years I have yet to find a project that didn’t need at least some aspect of engineering and design to take place.

I treat every project individually and perform the minimal amount of engineering to support the business objectives. Just like you wouldn’t hire an architect to create blueprints and full specifications to install a new ceiling fan, I don’t expect to perform a full enterprise-level SDLC process on every project. Some projects need a short, one-page list of requirements and a simple sketch of a new UI screen. Other projects are more complicated and need full requirements documentation, Use Case stories, Entity Relationship and Data Flow diagrams.


Requirements Analysis

Gathering requirements is an essential step in system design. Clients generally don’t have a list of requirements ready to hand over. They have problems to be solved, or systems to be enhanced. It is the job of the analyst to identify the requirements based on interactions with clients. Interviews, meetings, and questionnaires assist the analyst to identify the requirements.


System Design

Requirements lead to a clearer sense of what is to be created. But the analysis continues in order to define how the system should be developed. Using a variety of tools and techniques, including Use Case analysis, Entity Relationship and Data Flow diagrams, process models and more the analyst works to create the blueprint for the new system. It is quicker and less costly to make changes at this stage than during development.


Implementation & Development

Using Agile methodologies, development is an iterative process. Beginning very early in the project incremental versions of the new system are developed using a 2-4 sprint cycle. By regularly producing functional and testable updates, clients are able to watch progress being made. Clients and users are able to provide rapid feedback which can quickly be incorporated into the design plan.


Testing & Deployment

Using various methods of testing, including automated unit, user acceptance, and integration testing testers and users are able to begin vetting the new system as soon as the first functioning increments are released. Using Agile methodologies allows the testing to be fully integrated in the development process. As testers encounter issues, or bugs, they are able to rapidly relay this information to the development team for correction.