spacer
spacer
spacer
Tacit Knowledge, LLC Logo
spacer
spacer Tacit Knowledge LLC Home Software Services Featured Clients Contact Us Careers Client Login
spacer Software Stability Consulting Services
spacer
Padlock with Keyhole
Businesses with existing web applications who are encountering systemic problems with the stability, performance, or the functional completeness of a given solution will benefit from this service offering. An application which behaves erratically or experiences performance degradation is often a result of defects within the source code. Systems integrators may suggest a platform upgrade, more hardware, or performance tuning as possible remedies. After spending hundreds of thousands of dollars over several months the application continues to perform poorly.

The reason: the source code contains the same fundamental defects. Tacit Knowledge will 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 stabilized. The result is a stable code base that both costs less to own and is easier to make functional enhancements to.
Diagnosis Phase
Reviewing the source code is the best way to isolate defects and improve the maintainability of the application. Tacit Knowledge will audit the code for common defects and identify 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 code review, the customer will have a clear understanding of where their application stands today along with a strategy for moving toward a more stable and maintainable solution.

Application server-specific configuration issues as well as log file analysis assist in a successful diagnosis. In addition, current software development process is reviewed to pin down logistics around existing version control and build/release processes. Stability issues are identified, and a remedy strategy is designed. Tacit Knowledge makes use of a number of customized tools to assist in this process.

Remedy Phase
The second phase typically lasts about four 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, implementing unit tests, implementing fixes and refactors, testing changes, and a final release. 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 one week.

At the conclusion of this phase a summary report is delivered which covers what was fixed, how it was fixed, and what stability and maintainability improvements resulted.

spacer
Key Benefits

Problem Diagnosis
Tacit Knowledge engineers will identify issues related to configuration, race conditions, resource contention, inefficient queries, object creation and garbage collection, platform-specific defects, data consistency problems, and others specific to multi-threaded web applications. 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 six 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.

Specialization
All architects and program managers have extensive experience with both Java and J2EE compliant application servers.

spacer
spacer
     
   
spacer
spacer