Code Rocket White paper: Outsourcing with Confidence

Download the PDF here, or read the report below.

Outsourcing with Confidence Front Page Graphic

Introduction

Outsourcing of software development work requires careful considerations and practices to alleviate the potential challenges involved.

This white paper summarizes the challenges and describes Code Rocket: a software visualization and documentation system which offers invaluable assistance for supporting recommended best practices for outsourcing.

Outsourcing challenges

Managing requirements on a software project is a difficult challenge at the best of times. Ensuring that the requirements accurately reflect the real business needs and then being able to successfully coordinate their translation into implemented software is often cited as one of the most significant factors that can threaten the success of a software project.

When undertaking outsourced or subcontracted projects development typically has to be coordinated across external service providers, including the possibility of managing remote or virtual teams in different countries, time zones, and cultures. This can make the following challenges more pronounced:

  • ensuring a clear definition of and a correct understanding of requirements provided to external contractors;
  • tracing the progress of those requirements into the detailed stages of development;
  • being able to maintain visibility of the progress of development and to assess the quality/standard of development.

Outsourcing: Where Code Rocket Helps


Allow clients and subcontractors to talk the same language when discussing detailed system requirements – to ensure correct understanding and agreement.


Provide improved visibility of the detailed stages of outsourced development – to enhance project management and quality control.


Provide comprehensive, high quality documentation throughout the project – to assist reporting, review, communication and code maintenance beyond the end of the project.


Support for creating detailed up front specifications – allowing you to clearly define the scope of work and requirements, to enforce standards in design, and to define Intellectual Property before hand-off to contractors.


With outsourcing also come considerations in relation to Intellectual Property – protecting it and being able to make a clear distinction in its ownership.

Outsourcing failures can be attributed to many factors such as poor communication, unclear expectations, interests becoming less aligned over time, selecting incompatible providers, cost cutting measures which may force providers to cut corners, and poor selection of projects to outsource, e.g. offloading work because it is less attractive to do in house rather than selecting projects which make more sense for the company’s objectives and are more suited to an outsourced context.

Key best practices to adopt when undertaking outsourcing include the following:

  • Establishing clear objectives and a clearly defined scope and schedule for the project - this includes a clear definition of the project requirements up front, making sure the service provider understands the project specifications, ideally being as detailed and precise as possible.
  • Choosing the correct service provider – ensuring they are a good fit, that they have the experience that your type of project requires and are compatible with your company’s culture and objectives.
  • On-site presence – i.e. someone to oversee development, to keep communications fluid, to manage changes in scope or direction, to maintain visibility of quality and progress. However, this can be expensive if you need to use some of your key resources to achieve this such as senior developers.
  • Communications - regular reporting of progress, ensuring agreement, preventing interests and understanding from becoming misaligned.

How Code Rocket Helps

Code Rocket assists in the following key areas:

  • Providing a clear definition of scope and requirements up front.
  • Improving communication between client and contractor to ensure a correct understanding of the requirements prior to development.
  • Assisting ongoing review and discussion of requirements during development, to retain alignment.
  • Improving visibility of the detailed stages of development to assist with monitoring quality, progress and correctness of work.
  • Clearer demarcation of Intellectual Property.

Clear definition of requirements

With its detailed design support, Code Rocket allows in house senior developers or architects to efficiently define the core functionality and business requirements expected for the project to a much more precise level than other tools, taking you right down to the algorithmic level if required. Therefore helping to reduce the grey area where ownership of (intellectual) property becomes fuzzy and also helping to more clearly define the scope of work.

Code Rocket achieves this by bringing together tried and tested software design principles (such as pseudocode and flowcharts) in an innovative way, making them a seamlessly integrated part of a designer’s toolkit. Intuitive, automated, time saving strategies ensure that designers can focus their efforts on the content and quality of their designs, rather than struggling with inefficient drawing and editing tasks. Unlike many other software engineering tools which focus on higher level architecture designs, Code Rocket goes further, taking your design right down into the algorithmic / business process level. Combined with subsequent forward engineering of high quality code skeletons from these detailed designs, this provides your onsite team with much finer control of what is handed over to contractors, setting expectations for standards to be adopted and providing a clear definition of implementation requirements.

Improving communication and ensuring development remains aligned with objectives

No matter how hard one tries, there are inevitably challenges in ensuring a correct understanding of, and reaching agreement on the requirements of what is being developed. Things are missed out, not correctly understood or just not written down correctly. It is difficult to talk about the detailed functionality of a system in a way that everyone can clearly visualize and understand without ambiguity.

This is where Code Rocket really shines. Code Rocket allows you to define and discuss very detailed system requirements in a way that anyone can understand, including non-programmers. Code Rocket achieves this by providing two simple but powerful views of the requirements that have to be implemented: pseudocode and business-process type flowcharts. This not only allows you to create detailed upfront specifications of the system requirements, for review and clarification. It also allows you to reverse engineer these views from code – allowing people to review what has actually been implemented. Thereby further enhancing the capability to ensure the system is conforming to expectations. These views facilitate more effective communication of the system requirements to ensure that everybody remains on the same page. Therefore, even as development is progressing, an ongoing accurate reflection of what has actually been implemented can be obtained in a palatable format, helping to ensure that development remains aligned with the objectives of the project.

Improving project management cost effectively

With its simple but powerful mechanisms for visualizing code, Code Rocket provides project managers with improved visibility of the detailed stages of software development. This allows them to assess code quality and progress quickly and efficiently, providing visibility of the business requirements expected to be implemented and possible adherence to development standards and code quality. For example, assessing how well commented the code is, being able to easily visualize complex pathways in the code where testing effort should be focused and/or performance testing. It is very easy to identify large, sprawling, rambling flowcharts which give an indication of code that requires possible quality improvements. Code Rocket can provide automated documentation reports throughout the development stages of a project, not just at the end. Therefore, offering continuous monitoring of the development status and its conformance to expectations and assisting contractors to fulfill their reporting and documentation requirements.

Clearer demarcation of Intellectual Property

By providing deeper definitions of designs and requirements, including possible skeleton code for handover to contractors, Code Rocket assists with making clear the distinction between Intellectual Property that has been developed onsite, prior to hand over to contractors.

Summary

Outsourcing of software development work presents many challenges. Adopting recommended best practices can help to alleviate the risks involved. With its automated design and reporting support for detailed stages of development, Code Rocket provides valuable assistance for achieving these best practices: providing a clear definition of scope and requirements up front; improving communication between client and contractor to ensure a correct understanding of the requirements prior to development; ongoing review and discussion of requirements during development, to retain alignment; improving visibility of the detailed stages of development to assist project management monitoring quality, progress and correctness of work; offering a clearer demarcation of onsite Intellectual Property.

About Rapid Quality Systems

Rapid Quality Systems Limited develops innovative software tools to support the detailed design, visualization and documentation of software systems. Our Code Rocket software makes documentation a seamlessly integrated part of the development process and delivers cost and quality benefits in the following key areas: Project management; Quality assurance; Communication amongst diverse stakeholders; Visualization support for software developers designing, implementing and reviewing complex business processes, algorithms and methods.

Our vision is to open the development process up to domain experts to allow anyone to see what code really does, providing views that don't require an intimate knowledge of programming languages.

Please join us online at: www.rapidqualitysystems.com

Code Rocket

Code Rocket is a code visualization and documentation system designed to reduce software development time and costs.

It integrates seamlessly with existing development environments (Microsoft Visual Studio, Eclipse) where it provides automatic design and code visualization support for software developers during coding activities. It offers productivity support during code construction and provides documentation which assists project managers during review and quality assurance tasks. Code Rocket generates documentation in a format that is readily understandable to programmers and non-programmers, therefore enhancing ease of communication amongst diverse stakeholders on a software project when discussing and reviewing the detailed requirements and functionality of a system.

Code Rocket is also deployed as a standalone system. This offers the capability for performing up front design of software systems right down to procedural / algorithmic level. Or, through a code import, to inspect, redesign and document the contents of existing or legacy code.

Outsourcing with Confidence Last Page Graphic