 |
 |
 |
 |
|
|
 |
 |
| Businesses with existing web applications that need to support increased site traffic or that currently have problems related to the performance of their application will benefit from this service offering. Software optimization is a cheaper and more effective alternative to spending hundreds of thousands of dollars on extra software licenses and equipment to increase the capacity of a solution. Studies have shown that users perceive the responsiveness of a site based on the slowest 10% of the site's functionality. This means that a hardware and software upgrade strategy will more then likely be ineffective as the result is usually incremental performance improvement across all functionality.
Tacit Knowledge will identify the performance bottlenecks in your application and fix them. The process begins with a review the software architecture and source code in the context of the system on which it resides. After diagnosing the most likely issues, a remedy is prescribed and implemented. Quality metrics are consistently applied so that source code becomes more maintainable as it is optimized. The result is a better performing application which both costs less to own and is easier to make future enhancements to. |
| Diagnosis Phase |
The first phase of the project typically lasts about two weeks.
During this phase, the architecture of both the application and the overall system is reviewed. The application is profiled to identify problem areas germane to performance. An extensive, formal code review of the problem areas is conducted, and the findings are documented and presented.
Profiling the application and analyzing the resulting data insures that the most significant bottlenecks are prioritized accordingly. The diagnosis is deterministic not intuitive. Enhancements are recommended with an eye toward improving the maintainability of the application as well as the performance. The code is reviewed to identify potential design improvements. Martin Fowler's catalog of 72 design improvements in his book, Refactoring: Improving the Design of Existing Code, is leveraged along with Java and J2EE specific design improvements defined by Tacit Knowledge. These refactors include deficiencies related to exception handling, logging, namespace abstraction (JNDI), model-view-controller design, and many others. By the end of the diagnosis phase, the customer will have a clear understanding of all performance bottlenecks in their application along with a strategy for fixing each of them. |
| Remedy Phase |
The second phase typically lasts about five weeks.
Development environments are first built to guarantee development or testing will not effect existing environments. During this time, two to four iterations of development take place. Each iteration consists of planning, measuring the performance of key areas, implementing unit tests, implementing fixes and refactors, testing changes, and measuring the resulting performance gains. Software quality metrics are gathered before and after each cycle to guarantee improvement in the maintainability of the code. A development iteration typically lasts about 8 days.
At the conclusion of this phase a summary report is delivered which covers what was fixed, how it was fixed, and what performance and maintainability improvements resulted. |
|
 |
| Key Benefits |
Problem Diagnosis
Tacit Knowledge engineers will identify issues related to transaction rates, I/O metrics, object creation and garbage collection, CPU statistics, method execution times, process contention, and others to successfully diagnose the problem areas. Diagnosis includes a review of both the source code and the architecture in which it resides.
Actionable Recommendations
Any documentation created as part of the offering is not nebulous, but addresses specific issues within specific classes. Findings are presented such that they can be understood by both business stakeholders and developers alike.
Unit Testing
Unit tests are implemented at the class level to insure that no additional code defects are introduced. Part of the process includes development of a non-invasive suite of automated unit tests which can be leveraged for future development.
Quality
Deterministic metrics such as lines of source code per package, the McCabe cyclomatic complexity metric, inheritance fan in and fan out, class coupling ratios, number of unique errors, and error frequencies are used to insure that the code is improving in quality with each successive iteration.
Flexible Offering
The offering is tailored to the needs of an individual customer. The number of development iterations is determined based on the diagnosis of the source code and the system.
Short Duration
A typical project lasts about seven weeks.
No Unnecessary Overhead
The customer will only pay for actual work on the project in question. There are no hidden sales costs, no superfluous project management expenses, and no administrative fees.
Cost Effective
Through software optimization, the application's capacity is improved at a fraction of the cost of increasing capacity through additional hardware and software. |
|
 |
| |
|
|
|
|
|
 |
| |
|
|