Standing out from competitors
A Softech has been consistently recognised as a leader in the managed IT services industry
Development Process
Requirement Engineering
Any successful project starts with a detailed requirement study. We are equipped with a team of requirement engineers who knows the art of understanding clients business and his needs. Our requirement analysts works closely with our technical team during various phases of discussions with the client to understand his business and propose the right technical solutions to reach clients business goals. Typically we start the project once when we finalize client’s requirements, put it on a paper as a doc or as a prototype/wireframe and get it approved. We believe with this approach, we can avoid future misunderstandings.
Design & Development
Any good website or software start with a good user interface or a web design optimized for various devices. Our core expertise lies at creating highly intuitive, interactive and expressive software, web and desktop applications. Once our business analysis team clarifies requirements of the client, rest lies in our development team.
Our technical team makes sure that the software developed will meet the requirements of the product, as well as ensuring that future requirements can be addressed. This architecture step also addresses interfaces between the software system and other software products to make sure that it works under varying scenarios eg. varying loads, different hardware or operating system, etc. A good architecture ensures the stability of the software to be developed. Our team excels in carefully picking the right and proven framework or using our own framework, which helps the development cycle faster with superior quality.
Testing & Deployment
Apart from unit testing by developers, we also have a separate quality assurance team composed of ISTQB-certified testers who make sure that the products/projects we deliver to our clients are of high quality functionally as well as works seamlessly on various devices, resolutions, and browsers. Our development team and system admin team work closely during the last stages of the project to make sure that the project works perfectly in test and in a live environment. Further, our system admin team closely monitors application behavior for a few days after go-live.
Support and Maintenance
We believe a project is never finished after go-live. After the project, we need to support the client by ongoing maintenance tasks, build the system further to meet new business challenges the client faces, and so on. Typically we offer three months warranty for any project we deliver free of cost. After that, we sign with the client a support agreement so as to ensure the client that they are in safe hands when it comes to the project we are involved. Then we take the project into our own hands and maintain it without the client worrying about technical issues. With such an agreement we cover entire life cycle of the project.
Quality Assurance
Quality Policy
Our quality assurance practices span the entire organization’s operations and are not limited to just the software development process alone. We believe that quality is the sum total of all the activities – direct as well as support – that go into the making of the final service or product. Our quality policy therefore influences even the smallest of actions that individuals take on a day-to-day basis.
HR & Training Process
Capable people make the backbone of any organization. A-softecch Solutions, we believe in the strengths and capabilities of our employees and give chance to enhance their capabilities. Training programs on soft skills, technical and quality related aspects are conducted on a regular basis. We give special stress to quality during the induction program, which enables the employee to imbibe the element of quality into the mind.
The recruitment process is organized in such a way so as to attract the best intellect in the area and then a rigorous screening process is used to find the best among the best. We take special care in identifying process oriented persons who are striving for continuous improvement.
Work environment
The management is pledged to provide a pleasant atmosphere and environment conducive to enhance the skills and motivate the employees to the hilt. Here we follow an open culture where there is chance for every individual to pursue his/her professional aspirations.
Code Review
Code review is given utmost importance at A-Softech, with the philosophy in mind that defects/bugs found at the earliest stage reduces the quality related problems at a later stage when it is costly to make the fixes. Our rich experience in project execution has taught us that code review is more economical than bug fixing. So the emphasis of our quality assurance is more on eliminating chances of program failure early on as against identifying bugs at a later stage through testing and then fixing them.
Testing
At A-Softech Solutions, we never allow a delivery to happen without extensive testing by our well-equipped testing team. Here we have a capable testing team of 12-15 members who can handle any type of testing requirement for any software. The team has extensive experience in testing web applications, client-server applications, stand-alone consumer products as well as educational software. This is one way of ensuring the quality of the project we deliver. Read about our Testing Process.
Feedback
We collect 360 degree feedback within and outside the organization. By soliciting feedback from the client on a regular basis, we measure how good the quality of our services are. Internally, we solicit feedback at all levels to identify and enhance the best practices, and to isolate and eliminate the bad practices.
Metrics
We believe in the popular principle that we cannot control what we cannot measure. To have control over processes and change them for the better, we have a few metrics in place even for abstract functions. Individual, team and project performances and successes are translated to accepted measures. The accumulated detailed metrics gives us tremendous information about what is going on, and throws clear indications on where to tweak next.
Advance Planning and Optimizer
Software Development Methodology
There are many agile Methods available, of which we find that Extreme Programming and Scrum are the two methods that are best suited for us to provide you the maximum benefits. Any one of these methods alone has inherent drawbacks. So we have adopted a hybrid method by blending the benefits of both.
Among the different agile practices, we have adopted Test Driven Development and Continuous Integration. Again, any one of these practices alone limits the flexibility in some solution development situations. So we have gone in for the concoction that is difficult for our competitors to beat.
Agile Methods
Extreme Programming (or XP) is an agile methodology that aims to reduce the cost of changes that are an inevitable aspect of all software projects. Your requirements are bound to change a bit even as we are in the process of building the solution for you. Extreme Programming prescribes the set of practices to be followed to tackle and incorporate ongoing changes smoothly without upsetting the rhythm of the development process. By adopting the good aspects of Extreme Programming, we stress that we understand that changes in your requirements at any stage of solution development are very important to meet your business goals. This methodology ensures that your changes get incorporated with the lowest possible cost impact.
A simplified schematic of XP is shown.
Scrum is the other agile software development method that we use in combination with Extreme Programming for our hybrid agile software development method. It is an iterative incremental process with clear guidelines, practices to be followed, and predefined roles. The main roles in Scrum are:
ScrumMaster – similar to a project manager and responsible for maintaining the processes
Product Owner – represents the stakeholders
Team – all the developers
The method has incremental completion periods called sprints, the periodicity of which is decided by the team. Each sprint creates an increment of usable software. The Product Owner tells the team of the items in the product backlog during the sprint planning meeting. The team analyzes and decides how much of this backlog can be committed for the next sprint. Once the sprint is completed, we get a usable increment of software which is demonstrated to the client.
We find Scrum a beneficial method for you because of its empirical approach – accepting that the entire solution you need cannot be fully and accurately defined at the start of the project itself. Instead, the focus is on maximizing our team’s ability to deliver fast and respond quickly to your changing requirements. As the project completes, you get exactly you want now, instead of what you thought you wanted at the start of the project.
The process is shown below.
Agile Practices
Test Driven Development, also known as TDD, uses short development iterations based of pre-written test cases. The test cases define desired improvements or new functions. Each iteration results in code needed to pass that iteration’s tests. Preparing tests before coding aids rapid feedback changes.
A typical cycle development cycle is as shown in the chart.
Write a test: The programmer clearly understands the feature through use cases and user stories. Thus the test is written based on the understanding of the requirements as opposed to the usual practice of writing unit tests after the code is written.
Check whether the new test fails: The new test should fail because code has not yet been written to pass it. This step is therefore a test for the new test itself.
Write some code: Now some code is actually written for the new test to pass. The programmer focuses on writing only the code needed to pass the test, which helps to keep the code clean and simple.
Run the automated tests and see if they succeed: Run all test cases. If all of them pass, it is a good stage from which the programmer can begin the final step of the development cycle.
Refactor code: This is the final step (not in the chart) where code is cleaned up if necessary. Removing duplication of code is an important action in this step. The test cases should be re-run to ensure that refactoring has not upset any existing functionality.
Better software can be built faster by using TDD. The reason is the ability to take small steps and also ensures that all written code is covered by a test. Large numbers of tests help to limit the number of defects in the code and also to catch them early in the development cycle. This obviates the need for tedious debugging at a later stage.
Verification of each integration is done by an automated build (including test) to detect and rectify integration errors as quickly as possible. We reap the full benefits of CI through keep the builds fast, automating them, maintaining a code repository, etc.
Continuous integration has many advantages:
- When a bug is discovered or when unit tests fail, instead of time-consuming debugs, developers can revert the codebase back to a bug-free state.
- Integration problems are detected and fixed continuously – no fixing on the eve of the delivery date
- Bad/incompatible code get detected early on
- Conflicting changes are detected early on
- Immediate unit testing of all changes
- For testing, demo, or release purposes, always a “current” build is available
- Developers get to see the impact of broken code immediately. This helps them learn to work in incremental steps with short feedback cycles.