Due
to the high cost involved, it is common to outsource software
development to an external developer. The cost of hiring
programmers is really high in high-cost economies and this they
control through outsourcing from abroad to countries like India,
where highly qualified and competent people can produce software at
cheap prices.
Though
on the face of it, outsourcing may appear to be simple, facts are
otherwise. Companies at both ends – buyer and vendor, need a lot to
do before software is successfully implemented and run. It begins
with the customer identifying a need and finally ending in successful
implementation. The key to satisfying a customer is in understanding
all their needs and the vendor defining the requirements.
Once
a preliminary understanding has been reached, the development process
commences in earnest after an agreement has been reached. However,
the complexity of the game begins when software requirement
specification (SRS) is written. Without an agreement between the
vendor and customer, the chances of a project going bad are high. SRS
is therefore an inevitable process. It lays the foundation for
redressing grievances during the currency of an outsource application development.
The
Principal Components of an SRS
Here
are some of the main components of SRS.
- Definition of functional requirements of the application
- Definition of performance requirements of the application
- Definition of human interface design
- Operational requirements
- Resource requirements in case third-part software is involved
- Verification process to check the different performance parameters
- Acceptable performance levels
- Testing requirements in specified environmental situations
- Documentation requirements for the project
- Fixing quality specifications for the project
- Fixing safety and security issues
- Reliability specifications and controls
- Maintenance requirements for the applications
In
writing the SRS, both parties to an agreement should ensure that the
agreement is complete in all respect, wordings in the agreement are
consistent, problem areas are traceable, the agreement is unambiguous
in all respect and every performance parameter is verifiable. The
agreement should necessarily provide for an arbitration process as
well to avoid costly litigation.
Potential
Areas of Conflict
Here
are some potential areas of conflict when the agreement is not
consistent –
- Multiple descriptors – multiple descriptors are potentially very damaging to the SRS. So ensure that the same word is used in every instance or situation.
- Ambiguous use of words – this must be avoided as far as possible. If it is practical, each and every technical term used must be defined in the definition part of the specification itself. Another way to ease the situation is accept a well documented procedure as the basis for future use.
- Keep notations as transparent as possible – this is particularly important for the vendor. It is also a good idea to define what each notation means exactly as it is visible on the human interface of the application. If not properly documented, notations can cause heartburn to the users and lead to implementation failures.
- As far as possible vendors and customers must adopt standards prescribed by software development regulators. The advantage is, they are easy to interpret and inferences can be adopted from past decisions.
It
is also important to predefine how the vendor will use information
that customers provide for application development. Data security
should be ensured when they are critical to developing an
application. Another often ignored aspect in SRS is the human safety
issue. That too should receive due attention.
If
the customer is not forthcoming on SRS, it is the avowed duty of the
vendor to stress its importance in their own interest. Repeated
complaints from customers can result in the vendor acquiring a bad
reputation.
About
TechTrendsIT
TechTrendsIT is a growing technology and strategic outsourcing company consisting of more than 1000 engineers providing reliable solutions on Business Intelligence, Big Data, Cloud Mobility, Independent Testing, Application Lifecycle Management, UX Design, Research and Social Return on Investment, thereby developing a strategic technology for its clients.
TechTrendsIT combines platforms, solutions, accelerator and enablers with research and custom development to offer innovative solutions to its clients and provides a strategic advantage which helps them to stay ahead of its competitors.