This solution was needed by civil engineer researcher to be able to rapidly design quay wall marine docks and perform some earthquakes impact analysis on these designs. The process of designing a Quay Wall Docks is extremely complicated and it requires a lot of mathematical iterations, the same complexity applies also if the engineer wants to check the stability and reliability of an existing construction if one or more of the original design parameters have changed over time.
The application can design new docks and check the stability of the existing ones under static and seismic conditions and provide analysis reports as well as being able to print all the output generated by the application.
The nature of the project was the main challenge, research projects always have a great lack of requirements and specifications, also the practicality of the goal behind the project was not certain. InspirationGate gradually allocated the most qualified software engineers it has on the project and adopted an agile process to complete the development and testing activities.
InspirationGate spent the first six months evaluating and selecting the most appropriate technology to use to build this solution as well as selecting the third party components which have been used to provide secondary features like drawing charts. We selected Microsoft .NET technology to develop the application and we spent the following three months building all the backend components that we knew we are going to need later on in the project, these components included but not limited to:
- IO Manager, this component is to used provide all the infrastructure required to read and write files to the hard disk in binary and text format.
- Rendering engine, this component is used to render graphics, text and chart on the screen as well as on papers (communicating with the printer).
- Input validation, this component is used to verify all the inputs provided by the presentation layer before it gets sent to the backend for processing.
After we competed the backend features it was easy to set a number of small milestones to deliver the functional requirements, each milestone included one or two features maximum, when we release the features, the researcher and his team spend a short period of time to verify the delivered features while we are working on the next milestone, if they find issues we keep working on the milestone we have in hand until we deliver it to them then we start working on the issues for the pervious milestone, however when the dependency between the milestones is high, we freeze working on the current milestone and give full attention to fix the issues and then we resume working on the postponed milestone.
InspirationGate developed a five layers application, three of these layers are vertically placed on top of each other and the other two layers are vertical layers, they have their functionalities exposed to the rest of the application layers.
- The file system layer is any location on the hard disk drive the user wants to save the application files.
- The data object layer contains all the application business objects.
- The exception handling and logging layer is used to handle any exceptions that may occur in the application and write it in the log file.
- The data access layer encapsulates all the features needed to read and write the application binary and text files.
- Business logic layer, this layer contains the application business logic components, these components are responsible to process the data provided by the user in the presentation layer.
- Presentation layer, this layer is used to handle the interaction between the application and the user, this layer includes two sets of components, the first one is used to receive inputs from the user and the second one is used to provide the output.
Visual Studio.Net 2003, .net framework 1.1, VB.Net and GDI+