CSR Initiative: Making Healthcare Accessible through Telemedicine

Outsourcing Profit

Profiting from offshore software outsourcing a systematic approach

For most companies, outsourcing is an interesting option, but they are reluctant to explore this option. Many companies are not even aware of outsourcing possibilities. Occasional failures of outsourced software projects have been discouraging people to entertain the various options that the fast changing globally competitive markets have to offer. Whether it is a service or a product to sustain an organization’s competitiveness, one has to relentlessly pursue cost reduction goals without compromising the quality of the solutions. Thanks to the Internet and the experience of Indian software professionals, outsourcing software has become an excellent service for the talent starved high tech industries.

Much like any other business, the pioneers reap the best benefits, although the early attempts are full of small failures. Thanks to the pioneers, the model has now been perfected and offers a complete scope for all types of companies to venture into outsourcing software to promising IT companies.

Contrary to popular perceptions, the potential benefits are derived best from small and growing companies. They are flexible and focus on delivery of services and solutions in time without compromising quality. Also when you work with such companies, chances are that you will often deal with the top management of the companies who understand the importance of working with clients and satisfying their needs.

There are a few logical and important guidelines that any organization has to follow to be successful in outsourcing software to offshore businesses. India has established itself as one of the most competitive destinations for software development services.

Unlike in house development or on site development, the offshore development has certain peculiarities associated with its process. Most of the steps that are involved in onsite development are present in offshore development. Critical steps have been included in the process to ensure successful completion of the project.

Are you confused about what to expect when you need to outsource software development?

There are common steps in the process, which may vary according to the size of the project.

Defining Requirements Specification The first step towards successful offshore software development is the creation a complete and thorough document, which may be difficult, however it is worth it.In the interest of the project, the client must ensure delivery of a complete set of documents, which clearly state the following.

Purpose

Goals

Major features

Compatibility issues

Human interface issues

Maintenance and support

Documentation and training

Terms and conditions for the project

The Purpose of the Project: This is more of a vision-like document, which clearly spells out the business objective behind the project. The document should also explain, to the development team, some basic information about your industry.

This is common even when you develop specific applications meant for a target industry. The knowledge will pave way for an easier and quicker understanding of the project and the underlying logics that may be applied to the case. In most cases, software solutions are not just purely technical solutions, but business solutions as well. Therefore, the functional knowledge is as equally important as the technical knowledge. The Internet can be a useful guide. Information about your business is usually available on the net and therefore, you are able to direct consultants to the right locations in the Internet.

Goals:Goals direct the efforts to specific deliverables. For example, a business, which launch’s its Internet site may want to provide all of its offerings through the website. However, this particular phase of the project may have specific goals, such as streamlining the sales process using Internet technologies and facilitating order placement by the customers. Such goals help narrow down the thinking of the developers to see the specific solutions in the global context and fit them into the project at the proper stages. In future the same system can be expanded and integrated with the other business processes.

Major Features: Major features help people further redefine the scope of a project and open lines of communication to enhance understanding between the client and the vendor. For example, a web project for a retail store may have several features such as admin module, inventory module, storefront and backend database. These modules are identified with a name and hence easy for the people to understand each other. It is also advisable to define specific terms with specific explanations in a glossary section so that all terminology is understood completely. The language used should be simple, concise and to the point. However, wherever explanations are required, it is better to explain them with examples and in great detail. Ambiguity can often lead to serious complications as a project moves forward.

Compatibility issues: Compatibility issues arise when software that is under development becomes part of an existing software or hardware system. It is best to address these issues at the commencement of a project thus taking steps to avoid further complications during implementation.

Human Interface Issues: Human interface issues, at times, relate to the way the people envision the finished product. This is also subjective and cannot be exactly defined especially when you are developing e-commerce solutions. The web interfaces are what matters to the customers. It is often better to freeze the human interface as quickly as possible so that the developers will be able to comprehend and visualize the system from the beginning of the project. It helps to have complete graphic documents, screen shots, mock pages and interfaces made even at the beginning of the project.

It is well known that revising the user interface late in the project is costly, expensive, adds to the bugs and will delay the delivery.

Maintenance and Support: Software that is developed by a vendor, especially an overseas vendor, should be covered by round the clock support. This would be part of the contract. You must also make sure that the software company has presence internationally as well as connection to the Internet in the same manner and staffed adequately to handle such contingencies. Make sure the contract explicitly mentions all of these terms.

Documentation and Training: It is important that you insist on complete documentation of the entire process including logic and coding. Also insist that the software developed be supplied with a good user manual so that users can easily understand it. If you are interested in working with the upgrades of the software, it would be immensely useful.

Terms and Conditions for the project: Here you will spell out your terms and conditions for the project so that the vendor can adequately prepare its offer, taking in to consideration all terms and conditions. Undefined or unclear terms and conditions can lead to misunderstanding of the project at a later stage leading to development delays and additional costs.

Depending on the completeness of this document, vendor(s) involved in the proposal process may need to make inquiries and revisions to it before it becomes an adequate basis for a bid.

Analysis Proposal

When all of these previous documents are supplied, the vendor will come back and deliver a document. These documents may be a refinement of your prior supply of documents. The refinement would help both side understand the terms, requirements and deliverables. Normally there are some compromises and trade-offs made at this stage so that the final delivery meets with your expectation in all aspects. Also the vendor is clear of the scope and terms.

The scope of the project

Cost and time estimates

A basic project plan

A definition of deliverables

Acceptance criteria

Any terms and conditions required

Any assumptions used to make the proposal

The scope of the Project:

The scope explains the exact understanding of the vendor based on your requirement elicitation.

This document would help you assess the vendors understanding of your requirements. In some cases, you will be able to improve upon your requirement or limit the same, based on the vendor’s advice, capabilities and other constraints such as time for launch of the software and your business objectives.

Cost and Time estimates:

When it comes to cost and time estimates, there are three approaches with off shore projects.

The vendor will bill you for the amount of development man-hours spent on the project

The vendor and the client agree on a bulk payment for the completion of the entire project

The vendor and client agree to payments at various deliverables stages

In any case, before commencement of the project all parties must estimate the time for completion of the project. However, if the definition of the user requirement or the vendors understanding of the scope of the project is not clear, then there is always room for delay in the implementation of the project. It is important to remember that the software development process is entirely a human effort involving many people no matter where it is done. Communication plays a major role, as it ensures documentations, discussions and clarification sessions. Although these sessions and processes may be long and tiresome, it is better to ensure that all parties are clear of their needs. Otherwise, delays and risks will come into play in the development process.

A Basic Project Plan:

The software development team will work based on a project plan to minimize risk and ensure that the promises made are fulfilled. There are some sophisticated development tools and project management systems available. Each vendor follows his own system of project management which suites them best. In any case they will have a project plan for the project. You can insist on a project plan, which would indicate possible details such as the number of people required for the project and their skill sets, estimated time of arrival to milestones, the sequence of activities to be completed, the critical tasks and the role and responsibilities of the client. A good project plan with specific milestones will help the client make sure that the project is being executed on time.

With out such a plan the uncertainty will only increase and corrective actions will become difficult to implement. A seasoned software project manager can understand and estimate the project complexity and judge the capabilities of the team based on the project plan. Although it is not very easy to predict the development time accurately, it is important to have one for the purpose of the management of the project.

Terms and Conditions as Agreed by the Vendor:

This section of the document will ensure that both the vendor and client agree to the terms and conditions in order to start the work with a clear understanding. The client’s expectation, according to the request for proposal, sometimes may not be fully agreed upon by the vendor, or, there may be exceptions to some of the clauses.

Executed contract

Frequently, the client requests revisions of the proposal. Once those are agreed upon and the proposal is accepted, the contract is drawn up and executed. This document should include:

Delivery date

Deliverables

Terms and conditions concerning non-disclosure

Intellectual Property Rights

A clear description of each party’s responsibilities

Functional specification provided by client

The price Payment terms

Pricing is usually on either a fixed-price or time-and-materials basis. Payments on fixed price contracts are expected at project commencement. The vendor meets milestones upon final acceptance by the client.

Payment terms for time-and-materials contracts are variable with weekly to monthly invoicing on agreed terms of credit.

Preliminary Project Plan

The project plan is created by whoever is managing the project. It should include:

A work breakdown

The sequence of events (usually a PERT chart)

A project schedule

Both the client and the vendor should sign off on this document.

Analysis

1. Functional Specification

Through interaction with the client, the vendor creates this document. It should contain:

An overview of the system/application

Major objectives and any special system requirements

A description of all components and deliverables

A method for negotiating specification changes

Acceptance criteria

Client-vendor communications interfaces/protocols

Responsibilities of parties, and any terms, conditions and assumptions

Both parties should sign off the functional specification.

2. Preliminary Design

The preliminary design should include:

A high-level design of the system/application as a whole

A description of user-interaction, data-flow, and data storage

3. Project Plan revised

Update the project plan to reflect the information in the functional specification and changes in available resources and technology.

4. Development Proposal

5. Final versions of analysis proposal

6. Executed contract

Design

Design Specification

Once the vendors devise a set of alternate, top-level designs, the vendors should take the clients through a walk-through. Once this walk-through is complete, the vendor should complete the design process and create a design specification.

This specification should include:

An overview

System requirements

Design priorities

Diagrams and naming conventions

Parameter passing and database conventions

Error handling

Programming tools

Descriptions of data records and storage

The specification should include all of the functionality stated in the Functional Specification.

Quality Assurance Test Plan

This test plan should include:

Alpha entry criteria

Beta entry criteria

Final Code Submission criteria

Acceptance criteria.

It may include more than one Alpha or Beta cycle and other intermediate cycles such as Gamma.

Project Plan revised

Update project plan to reflect the information in the design specification and acceptance plan.

Communication Protocols and remote monitoring of the projects:

When software development is outsourced to an overseas vendor communication protocols play a vital role in successful completion of the project.

During the early phase of the project, it is better to have a one on one meeting with the key development team members and the project representative from the client side. The representative from the client side must be empowered to decide on the requirement and modification thereof during the negotiations as well as development process.

With Internet, emails, chats, video conferencing, collaborative tools and project management software, it is realistically feasible to monitor the project effectively and successfully.

During such communication sessions, if the discussions are not based on final documents, they tend to lead to misunderstanding between the developers and clients. Explaining all the details with conversations is not easy. The risk is increased especially if you do not have a vendor representative close to you. It is also important that people understand the cultural differences between the working teams. For example, in order to be polite, the vendor sometimes may not come out with accurate delivery schedules and strive to complete complex tasks to serve the client better. However, in the event of failures, the clients will not be able to appreciate the efforts of the vendors, they would rather be disappointed.

It is also important that both sides of the project understand the problems that the different time zones they are working in may cause. In most cases, these different time zones help people continue to work based on the feedback from the previous day’s work. In some cases, people are forced to work late hours and/or come in early to meet each other online and exchange ideas.

Such adjustments in working hours cannot be avoided.

The informality of the email communication ensures that people are well connected. However, even while exchanging emails, it is important to be focused on specifics and arrive at decisions for specific issues. Similarly the chat sessions lead to long conversations and negotiations, which have to be concluded with specific decisions for implementation. It is very essential, that after each chat session, the teams agree on the specific issues on which decisions were taken and confirmed with email documents.

Direct meetings and video conferencing are strongly advocated for GUI related discussions and ideas, which are complex and need to be expressed by textual messages.

Development

Alpha entry

Client and vendor should agree upon criteria for alpha entry.

Quality Assurance for Alpha submission

The vendor usually supplies QA

Quality Assurance engineers follow the acceptance test plan and report bugs to the development engineers

Bug fixes and minor feature enhancements

Development engineers fix bugs reported by the QA and by the client. Minor feature enhancements, as agreed upon by client and vendor are incorporated.

Beta entry

Client and vendor should agree upon criteria for beta entry.

Quality Assurance and Beta site testing

The vendor usually supplies QA

Quality Assurance engineers follow the acceptance test plan and report bugs to the development engineers

QA engineers also do regression testing to insure previously reported bugs are fixed

Bug fixes and minor feature enhancements.

Development engineers fix bugs reported by the QA and by the client. Minor feature enhancements, as agreed upon by client and vendor are incorporated.

Final code submission

Client and vendor should agree upon criteria for final code submission.

Acceptance

Acceptance testing

The client performs acceptance testing as specified in the QA test plan, possibly with the vendor present.

Operation

Warranty-period technical support

Vendors should offer to fix problems caused by vendor free of charge for a certain period of time.

The warranty period depends on the size of the project; however, 30 days is common.

Maintenance

This is usually a separate contract, detailing any maintenance requirements including:

Adding features

Fixing bugs

Giving technical support to the client

Project post-mortem

Client and vendor should get together to discuss the project. Topics usually include:

A statement of original objectives and proposed solutions

Project method and organization

A comparison of estimates with actual results

Successful aspects of the project

Problems encountered and how to avoid them in the future

If these steps are followed, the risks involved in software development can be mitigated and success can be achieved.

Stay Connected

Contact us

e-Zest is a leading digital innovation partner for enterprises and technology companies that utilizes emerging technologies for creating engaging customers experiences. Being a customer-focused and technology-driven company, it always helps clients in crafting holistic business value for their software development efforts. It offers software development and consulting services for cloud computing, enterprise mobility, big data and analytics, user experience and digital commerce.