Software application development is not an easy task. It involves a combination of different skills sets. It needs a highly skilful, experienced and right attitude team. It requires best infrastructure and right tools in place. It entails pragmatic project development techniques. It demands greater customer involvement. It stresses on clear cut requirements, proper planning, communication, creating mock-ups, documenting specifications, building scripting tools, tracking progress, managing scope, keeping traceability, continuous integration, automated testing, tracking bugs, fulfilling user experience... and the list is endless.
The success of software applications is determined by several factors. For an outsourced vendor, delivering a software application on schedule, on budget and to the specifications is the success. For a product developer, the value proposition of the product and the ROI out of it determine the success. KnowledgeQ is both an outsourced vendor and a product development company and we know very well what it takes to develop and deliver a successful software application.
Over the last 7+ years, we have developed several robust applications for different domains / industries. The following is the list.
Most of these are enterprise level applications that cover the entire gamut of features needed for the specific industry or the organization using it. These information management systems have been built with lots of intelligent functionalities. These products helped us gain tremendous experience in successfully planning, executing and delivering software applications for our clients.
Software product development experience also gave us deep insights into component-based development where the functionalities are developed as components or library objects. These are reused within a software application or in other applications later. This practice brought a wide ranging degree of benefits for our development teams as well as for the organization as a whole. In the case of web applications where there is a necessity to go for service-oriented architecture, we develop web services and use them in the application.
KQ has dedicated teams working on different technologies and has delivered numerous applications developed using .Net, JAVA, Flex, PHP, HTML5 technologies and few other open source platforms and frameworks. Automobile, Healthcare, Cosmetics, Education, Textile and Publishing are the industries which KQ has served so far.
For any custom software application development, we carry out the following steps religiously
Our requirement gathering team is knowledgeable in business process improvement. We study the AS-IS state of a business or a workflow and capture the problems. We follow use case based requirements model which is an efficient way in outlining the objectives to be met in the application from end users point of view. Our customers always felt it easy to understand our requirements documentation as it explains the system functionalities in the context of actors’ goals. Though requirement gathering starts first we carry out this activity till the end of the development stage. The requirements are gathered for the features to be developed on priority basis for each sprint. The outcome of this stage will be user requirements, system requirements, the features to be implemented, features not in scope, assumption and constraints, etc.
We put in our best efforts in the design phase. Our design team include application architect, database architect, business analysts, process analysts, senior programmers, user experience specialists, and graphic artists. We create both high level (HLD) and low level (HLD) design documents for application of any size that we take up for development. High level design document addresses overview of requirements, development tools, source control mechanism, database / development / staging / production servers, solution architecture, conventions, standards, schema, integration process, checklist for coding, build, release and testing activities, performance, operational and security requirements.
While the HLD is created for an entire application, the LLDs are created for each product backlog item / feature of the application. The low level design documents cover user stories, use case diagrams, wireframes / mock-ups, use cases that include success, alternate and exceptional flows, business rules, field level validations, and the flowchart for the specific PBI.
At this stage, the application architect prepares a list of components to be developed for the project. What needs to be packaged within the component, what needs to be encapsulated, other techniques, level of variability, etc. are finalized.
Our comprehensive design documents offer extensive coverage / explanation needed for the developers and the testing engineers. This helps our team develop the application features error free with only one or two review rounds and less number of bugs.
We have set up our team in such a way that two junior programmers work under one senior programmer. This has shown great results for us. Our programmers strictly follow coding standards and are very good at algorithms and logical thinking. The technical leads carryout detailed code review where each line of code is thoroughly checked. Feedback is given every day and also during sprint review days.
The practices / facilities that we set in place like knowledge sharing sessions, feedback mechanism, osmotic communication, continuous integration, scripts for build, version control, bug tracking, code review, daily meetings, etc. help us build and deliver great applications.
Our software test plans (STP) prescribes the scope, approach, resources and schedule of all the testing activities. The plan also includes the items to be tested, the features to be tested, the types of testing to be performed, the person responsible for testing, the resources and the schedule required to complete the testing and the risks associated with the plan. Our QA team creates test cases addressing all scenarios and for each control available in the forms and reports.
The implementation phase involves reviewing current infrastructure, identifying target areas for improvement, creating detailed infrastructure design documents, and deployment / implementation of the application. Movement of files to the ideal locations (in the servers), necessary settings and configuration are taken care before the deployment. Based on our customers’ preference, we carryout data conversion and migration and handover the system for use. We also deploy the applications to Amazon cloud drive, Microsoft Azure or Google’s cloud storage platforms based on our customers’ preference.