At Softbase, we practice a standard industry process Software Development Life Cycle (SDLC). The following is a high level description of the process we follow to execute projects successfully.
The core objective of this phase is to understand a problem domain, conduct a preliminary analysis, propose alternative solutions based on different technology platforms, and derive a ball-park cost and preliminary timeline with recommendations.
Our project manager and technical pre-sales team works closely with the client to understand the project requirements and develop a basic initial proposal that would give an idea about the entire project cost and timeline.
Analysis based on Requirements
During this phase we define the project goals and align them with defined functions and operation of the intended application. We describe desired features and operations in detail, including screen layouts (wireframes), business rules, process diagrams, pseudo code and other relevant documentation.
Software Requirement Specification (SRS) is the indispensable document we prefer to develop at initial state of the development followed by initial proposal. Our project managers thoroughly understand our client’s requirement and develop the SRS then re-estimate the project timeline and cost based on client input.
We develop a layout and wireframe before we start programming. Our team works closely with the client, understanding her preferred choice of color, theme and other design elements to deliver a layout to the client. Based on the client’s feedback, we deliver new versions of layout.
Some of the things we focus on during the design phase:
- User friendly and unique design
- Minimum loading time (in case of web applications and website)
- Cross-browser compatibility (Web)
- Cross-platform compatibility (Mobile and Web)
Once the design layout is finalized, we develop system architecture for the development process. This is very important phase because it defines high level structure of entire software system, database design, relationship of database with the functions and features, reusability of components and scalability with the future enhancements. We generally practice 2-tier, 3-tier, n-tier, SaaS and SOA type of standard architecture protocol.
The following are the core elements we focus on during this phase.
- Database design (Tables, Fields & Relationships)
- Specification of security layers and web services
- Documentation of business logic (for non-obvious logic and business flow)
- Mapping of services, page layout and navigation with database.
- Local data storage
Application design and architecture are the core pillars of the Development phase. This is the actual execution phase where the solution is created (programmed) with functions, store procedures, scripts and other elements.
To deliver a high quality and a scalable solution, we follow strict coding guidelines and strive to implement the best practice. This also helps us to write a reusable code base (component base code) which we can replicate for similar functionality in different applications which ultimately save time & cost for our client.
We follow industry standard software coding and development practices, recommended by Microsoft and other Open Source communities. Based on these recommendations, we derive our own practice of coding standards and strive to deliver the best quality software applications. This practice helps our developers in understanding the code structure and enhances the maintenance of the applications by improving the common structure of the code.
During the development phase we audit the source code at regular intervals to ensure proper implementation of the business specification. This also helps to performance optimize the code wherever possible.
We ensure that our developers test the code after each function is completed which will be cross-checked again by the technical leader and Quality Assurance team to deliver robust quality software. This process resolves many of the trivial issues in the most cost effective way and optimizes the code according to the business logic.
As a part of efficient integration development practice, we use TFS (Team Foundation Server) both online and offline, SVN (Subversion), and GitHub which enable us to manage the code centrally in following ways:
- Source code version management.
- Source code backup and restore
- Tracking source code changes and ownership
- Source code branching & merging
Staging (Preliminary Test Environment)
We prefer to use a staging platform to deploy a code once it is unit tested. This would help our QA team to execute the test plan in most efficient way. Further, we also grant access to our client for User Acceptance Testing later on. We resolve the issues on staging before it go lives to protect any business loss due to any omission.
Testing (Quality Assurance)
We have a dedicated department to test the entire software before we deploy the solution to the live environment. Our QA team performs a test using various testing approach and strategies and make sure that software is behaving as per the Software Requirement Specification.
For web application testing, we do test the application using automated tools for cross browser compatibility, cross platform compatibility, user concurrency and alike.
We take care to provide best quality software in balance with the three dimensions i.e. Features, Resources and Time. Below are the Testing strategy and approach that we use for most of our clients but it is based on requirement of the project.
1. Unit Testing: To test each unit (i.e., component) of the software as implemented in source code. Unit testing makes heavy use of white-box testing techniques, exercising specific paths in a module's control structure to ensure complete coverage and maximum error detection.
2. Integration testing: Tests design and construction of software architecture. Integration testing addresses the issues associated with the dual problems of verification and program construction.
3. Validation Testing: Validates the software against the requirements established by the software analysis. Validation testing provides final assurance that the software meets all functional, behavioral and performance requirements.
4. System Testing: Tests software and other system elements as a whole. System testing verifies that all elements mesh properly and that overall system function/performance is achieved. The following are the methods of quality assurance deployed within system testing.
- Recovery Testing
- Security Testing
- Stress Testing
- Performance Testing
1. Functional Testing: We ensure that software functions exactly according to the software requirement specification.
2. Regression Testing: We ensure that the behavior of the software remains consistent in a changing environment which ensures reliability and scalability.
3. Exception or Negative Testing: We ensure that the software behaves perfectly in uncommon conditions by inputting errors into the system.
4. Performance Testing: We ensure the run-time performance of software within the context.
5. Platform Compatibility Testing: We ensure that the software runs smoothly for popular browsers: OS, Web/Application servers, database servers etc.
6. Usability Testing: We ensure that the software is user-friendly.
7. Installation Testing: We ensure that the installer of the software works accurately and is user friendly.
We also allow our client to test the entire software (User Acceptance Test) for uncommon issues arise.
Once our client is satisfied with the performance of the application, we commence the final accepted solution to the live environment.
Support & Maintenance
Due to the nature of software characteristics, it may possible that something goes wrong due to human nature, omission or negligence. We take care of such issues during during post development Support (max 30 days), free of charge.
Softbase is well-known for its prompt service and support. In some cases, we provide free support even after an issue is reported by the client after 1 year or later.
Contact us to experience premium service and support at Softbase!