Application Development
The custom software development model followed by Nanomite consists of three phases
Requirements & Pre-Sales
The requirements and pre-sales phase involves:
Requirements Gathering
The Nanomite sales team conducts a joint discussion with the client to understand the background and key business objectives sought from the engagement. Based on these discussions, Nanomite and the client jointly identify possible re-engineering opportunities for which Nanomite can build business solutions that not only drive value but also streamline processes for end users.
Project Finalization
Upon refining the requirements collected from the client, the Nanomite team presents an engagement plan that details the suggested team structure, technology platform and development process to be followed along with the milestones and estimates for various activities. Once the customer signs-off on the contract, the development and execution phase begins.
Development & Execution
The development and execution phase involves:
Requirements Analysis
Experienced business analysts and project managers from Nanomite study the functional and non-functional requirements and frame detailed technical documentation for the engineering team to build appropriate systems. This documentation represents the contract between the project team and the customer. Each requirement is tagged with a unique ID to help track and verify development progress from its initial definition to final testing.
Project Planning
Nanomite follows three principal development methods namely Agile, Waterfall and V-model while executing projects. The selection of the model depends on the type of project and the stability of client requirements. Once an appropriate development strategy is chosen, the project manager prepares a project plan that details scope, milestones, risk management strategies and tracking and control mechanisms. Milestone driven schedules are created for each team role to ensure delivery is as per committed timelines. The quality assurance team also begins outlining the types of tests to be performed including resources, tools and responsibilities for test related activities.
Design/Architecture
In this stage, the engineering teams prepare detailed architecture designs, class diagrams, entity relationship diagrams and database designs. Moreover, wireframes conforming to project requirements are made using Balsamiq, Pencil or Visio.
Development
Post the design/architecture stage, the development of code commences. Project managers enforce Test Driven Development (TDD) and code review as a critical part of the project development process. This ensures that the quality of coding conforms to industry best practices and that the code is readable, clean and maintainable. The completion of each module results in the preparation of test cases and unit level testing.
Quality Assurance
Once the application is ready, the Quality Assurance team tests the application using manual and automated methods against various test cases, test plans and user acceptance criteria. In addition to unit and functional testing, integration testing is performed by combining the various modules and testing them end-to-end. The application is also tested for cross-browser support as well as for performance under peak load and stress.
Maintenance
Nanomite also offers ongoing web application maintenance and support services such as functional enhancements; bug fixes; performance optimization; modification or update of supporting utilities; localization; integration of data management or backup services using AWS; infrastructure upgrade and various .NET and database migration services.