We help our clients realize their ideas and concepts by developing and delivering well designed and robust applications in the client/server, web, mobile and embedded platforms. We follow a thorough process model for application development. Our services include Custom Application Development, Application Enhancements, Redesigning existing application, porting existing application to new technologies/platforms, web-enabling existing applications etc.
We believe Requirement Analysis is critical to the success of a development project. After collecting the initial set of requirements from the client, a concrete assessment of the problem in hand, the prospective users, existing system (if any), similar products by other competitors etc. is done. With this as input, a detailed requirement specification document is generated in consultation with the customer. The requirements identified shall be functional/non-functional, actionable, measurable and testable units that are defined to a level of detail sufficient for system design.
As the case may be, prototype models are developed initially. Prototypes help the clients review the user interface and some of the abstract functionalities of the application during the initial phase itself, helping there by to minimize rework at a later stage in the development cycle. The number of functionalities included in the prototype depends on the size and complexity of the end product. Most often, the prototype application is developed further to add the remaining functionalities to become the final product. So for us, the prototype is not a trivial application that can be shelved after approval.
Development is done in an incremental manner, with Programmers, Testers and the Customer participating in each iteration. The iterations may be as short as a week in duration and each incremental build is reviewed by a customer representative. By analyzing the product at each stage, the customer can make affirm that the development is heading in the right direction. Developers take utmost care to make the core infrastructure of the product robust and extensible, so that future enhancements can be plugged into the product in a cost effective manner. The source code will also be well documented for the benefit of future programmers.
The finished product along with design documentation, user manual, test case documents and test reports is handed over to the customer. Even though the client had been involved in the development cycle at various stages, a demonstration of the installation and use of the final product is made to get the customer acquainted with it. The customer is requested to perform acceptance testing at their end.
From this stage on, we begin a new relationship with the client. We provide support and maintenance services for the product. There will a help desk provided to the client where they can report any emergency issues and will be attended to, in a most time efficient manner.
Enhancements and maintenance may include requests for new functionality requests, performance tuning and compatibility with new hardware or evolving technologies, issues due to change in system configuration etc. The customer is required to submit a change request, which is then evaluated and worked upon by our team. We provide support and maintenance of applications and a dedicated point of contact for emergency issues.
Firmusoft® Solutions have expertise in maintaining applications developed in various platforms and frameworks like Web applications, windows based applications (DOTNET/C#/C++/VB), Java based applications etc. In cases where it is not feasible for the customer to build a new application from scratch, we modify their existing application by adding new functionalities and optimizing it, to meet their new requirements. We have evolved a process model to perform the maintenance activity. The available documentation on the product such as design documents (class diagrams, database designs etc), source code, install manual, user manuals, help files etc should be made available. A risk analysis is carried out to identify the modules that will be affected by the changes. Depending on the current design of the product, we may decide to plug in the new functionalities into the existing framework, or re-do the design in the most minimal way possible to make it more robust. A test plan is developed for testing the new changes. Any missing documentation could be redone at this stage. A project plan is finalized which also prioritizes the changes. An incremental development strategy is followed here, so the clients can review the changes at each stage. Versioning is enabled to facilitate smooth roll backs. At each stage testers make sure that product functionality is not broken at any level and compatibility is maintained.
No software is perfect, but every user expects perfection. The only way to bring this reality nearer to expectation is through efficient testing of the software. We define software testing as a process of investigating a software product in order to evaluate it. We ensure that this investigation is carried out systematically and using a combination of manual and automated testing methods. Applications are rigorously tested using industry-standard testing methods.
The QA team at Firmusoft® supplements our developers to make sure that the modules in each iteration of development are fail proof. Integration tests are performed in each iteration cycle to ensure that functionalities in the previous iterations are not broke. A full system integration testing is performed at the close of the product development for the product as well as any setup programs. Once the product passes the functionality tests, it's tested for performance. Performance testing is conducted under heavy loads, heavy repetition of commands, providing complex values as input etc. Reliability of the product is measured by running it continuously overnight for several days. Performance parameters like Mean Time between Failures, Mean Time to Fail, Mean Time to Recover etc. are computed.
The QA team is responsible for generating the test plan, test cases document and test reports to be reviewed by the customer.
White box testing is performed depending on the availability of source code. At the first level, functionality tests are conducted using requirements specification, user guide or test cases document. Finally install program is tested by performing install, uninstall, repair, modify operations on the supported operating systems.
Solutions, we have a pool of highly motivated software professionals who are well exposed to leading edge technologies. We have expertise on, and have a proven track record in delivering high quality software solutions using the following technologies. Microsoft .NET
- ASP.NET, C#, Ajax, ServiceStack
Async IO Server
- Java EE, Servlets, JSP, Spring
- Node.js, Google Go, Vert.x
- AngularJS, Ionic, Angular2
Client Side Tools
- JQuery, Bootstrap, HighCharts, D3, ExtJS, OpenLayers, GoJS
- Grunt, Bower, Yeoman, Karma
Mobile App development
- MS SQL Server, MySQL, MongoDB, RDF Triple store/SPARQL, Oracle, PostgreSQL
PHPCloud Computing Automated Testing
- iOS, Android, Windows Phone
- Visual Studio Test, Go Test, Selenium, Protractor, Jasmine, JUnit