Software Pipelines Methodology
From Software Pipelines Alliance
Software Pipelines Optimization Cycle (SPOC)
This is an overview to the Software Pipelines Optimization Cycle (SPOC), the accompanying methodology, providing a well-defined path for implementing concurrent computing for business applications.
As the name connotes, SPOC is a method for iteratively optimizing business applications, identifying opportunities for and successfully implementing concurrent computing in typical business transaction applications. Using the basic pattern of the five main steps described in SPOC, developers can learn to "think concurrently" and apply the advantages of Software Pipelines to both existing and new applications.
A multitude of valid software development methodologies exist today, so why is SPOC being offered? SPOC is designed to provide an adjunct to other methodologies, specifically targeted at the realm of enabling concurrent computing. To support its goals of iterative development, SPOC uses concepts from agile methodology, but can be used with any existing development methodology. SPOC fulfills the need for orienting developers to the concurrent concepts presented in Software Pipelines, making it a straightforward task to analyze and enhance virtually any business transaction application, implementing effective, highly scalable concurrent software services. Therefore, SPOC can and should be utilized in conjunction with established development methodologies within an organization, adding an ideal approach for massive improvements in both scalability and performance of business applications.
Many developers are new to the concepts of concurrent computing, and without a basic set of guiding principles and a stepwise approach, the task can be daunting indeed. Therefore, using SPOC developers can find a set of successful, proven patterns for getting business applications to "do more than one thing at a time," with a fraction of the time, effort and risk posed by more traditional methods of accomplishing the task.
For example, compare Software Pipelines to other methods, such as the implementation of concurrent compilers, or redeveloping an application from scratch using "multi-threaded" techniques. Both options are high-risk and require a level of expertise few organizations possess internally. Software Pipelines on the other hand, allows existing application components to run concurrently, offering complete control of critical business requirements. This "non-invasive" approach is the key to the technology, and SPOC provides an orderly and safe approach to implementation.
SPOC is based on the theory of Software Pipelines, a specific set of mathematical formulas derived from the proven engineering principles of Fluid Dynamics. This approach allows the professional developer to apply solid engineering principles to the problem of concurrent computing: SPOC allows developers to analyze an application, to predict the outcome of planned optimizations, and to validate pipelines designs prior to the expense and time of full implementation. This is a key point, as business applications are frequently optimized via "trial and error" approaches – sometimes fruitful, but often resulting in results that are less than expected or required.
SPOC is designed as an iterative methodology. Through experience it has been found that optimizing software applications is best done on an incremental basis. Supporting this approach is the fact that increasing scalability in one portion of a system exposes bottlenecks in other parts or the system, or even in related applications which the system is dependent. Therefore, SPOC takes the approach of setting specific objectives to improve performance in the most critical areas first, and then iteratively optimizing other "downstream" systems and components.
SPOC is composed of the following elements:
- An iterative set of clearly defined steps and deliverables for successful implementation of Software Pipelines;
- Worksheets to help the professional developer through each of the steps of the process, along with the elements needed to calculate expected outcomes of the pipelines implementation;
- A set of report templates that provide the skeleton documents required for SPOC deliverables;
- Sample outputs of SPOC to be used as a guide to the process.
In addition, SPOC includes articles on Software Pipelines technology and theory for reference during the process.
SPOC is packaged as a Wiki application, making it easy for developers to collaborate on a Software Pipelines project. All SPOC flow charts, worksheets and documents are provided in this format, simplifying the management of the process between a group of developers.
While SPOC is primarily for use by the professional developer tasked with extreme application performance challenges, the outputs of SPOC can be used to show mangers, end-users and business executives what they can expect in terms of results and Return on Investment as a result of the process.
