Tuesday, 18 October 2011

Design and Development Stages

As a software engineer, I have a wide variety of tools available to me that have been developed with this specific purpose in mind.  Before I even look at code development, I will, thoroughly plan out and prepare myself.  My initial document will be a Gantt chart created in Microsoft Project.  This application was built for project development and will aid me in planning out each and every stage in detail so that wherever I am in the cycle, I am aware of what is coming up, where I should currently be and how to evaluate what has been completed so far.  Initially, I will only place major milestones relating to the project but as my initial planning progresses, I will begin to include individual tasks that I have decided will become a part of my project.

As this initial design stage progresses, I will discover uses for more and more design tools and will include them into the overview as necessary.  There are, however, some that should most certainly be included.  These are the ERD and UML diagrams, a flow chart depicting the flow of information throughout the system could also be very useful in development and in demonstrating my ideas to the client.

The UML and ERD diagrams quite simply plan out the entire program structure.  By utilising these vital tools, I can immediately get an overview of the project before I begin, this will enable me to spot any potentially difficult areas and help me get started on building the code structure.  Many programs even give the option to convert a UML into a code shell.  I will evaluate these programs briefly before work commences but I do already have knowledge of Star UML and Visio.  These completed diagrams will form the backbone of my design.

Once I have a working design, I will begin work on the more important functions within the classes by sketching out pseudo-code.  This will allow me to simply focus on the problem solving aspect, without having to concentrate on converting the solution into code.  The pseudo-code section will be quite large but will not look at basic operation mechanics, such as loops and STL use.  Their usage will simply be indicated but not designed as they are basic techniques and should be well known to anyone using this project.

Once the pseudo-code is completed, I will begin working on the code.  This will take place in compartmentalised sections, where I can focus on an individual section of the work (Detailed further below), then test it in isolation in order to ensure a working solution to individual parts before bringing them together as a completed solution.  Initially, I will create a small scale prototype at some point in the design stage in order to demonstrate basic functionality and feasibility of the remainder of the project.  This will have very little working but will simply allow me to demonstrate basic code structure and core techniques.

The code will now be completed and commented thoroughly, I will err on the side of too much, rather than too little and provide extensive comments throughout.  The comments will also indicate basic usage and testing.

Testing is going to be one of the largest parts of this project and will follow once I have commented the code properly.  Testing, as previously mentioned, will take the form of a log and will show valid and invalid inputs and reactions, processing accuracy and time across each calculation with possible solutions or improvements and finally, every piece of output data will be tested for accuracy and understandability within the solution.

The final stage of this deliverable will be the creation of a handbook that will provide extensive usage and details regarding the processing of data within the libraries.  This will provide the user with all the information required to use the libraries properly.  The testing log will be included here as an appendix.

The next post will contain details regarding the Research Methodology that I plan to adopt.

No comments:

Post a Comment