Dr. Dobb's is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.


Channels ▼
RSS

Best Practices Actually Applied


July 2000 Tools of the Trade: Best Practices Actually Applied

There are those of us who believe that the best practices for software development are practical and deserve implementation. And then there are those of us who believe that best practices are interesting in an academic sort of way, but are not for the real world, thank you very much. It’s true that the term "best practices" has become somewhat synonymous with the bureaucratic ponderousness of the Capability Maturity Model. And, despite the success the CMM has enjoyed in military applications, such as at the Ogden Air Logistics Group (which I discussed in my October 1999 column, "When There Are No Second Chances"), success stories for best practices in the commercial arena have been few and far between.

Thus, when the development practices employed at Reston, Va.-based Cysive Inc. appeared on my radar screen, I was intrigued. Here was a company, operating in Internet time and developing Web applications for some heavy-hitting clients, that was actually using best practices for competitive advantage. Too good to be true? I had to find out.

Cysive–formerly Alta Software–focuses on developing e-commerce sites for the World Wide Web; its customer base includes some well-known "new economy" clients such as Cisco, AT&T and Qualcomm as well as a variety of clients from the "old economy." What makes the Cysive story interesting is its internal focus on software engineering, not just as theory but as a discipline to put into practice.

Defined Process

Cysive employs a defined four-phase development process, which includes assessment, analysis, development, and testing and deployment activities. Within the assessment phase, the capabilities, scope, requirements, costs and schedule are defined and delivered to the client as findings and recommendations, including use cases. In the analysis phase, the deliverables include a requirements specification, a high-level object model and project plan, specifications for the system architecture, and prototypes for the architecture and GUIs. In the development phase, design documentation and source code are created, and unit testing begins. Functional demonstrations are provided as each milestone is completed. Finally, in the testing and deployment phase, system testing and user acceptance are addressed.

Cysive’s development of an "Internetworking Products Center" for Cisco Systems provides an example of the benefits of their development process. Cisco contracted with Cysive to create a next-generation version of IPC that could grow with the company–a system whose load grew from 300 to 1,200 orders per day, and which now accounts for 70 percent of Cisco’s revenue. The solution: an extensible e-commerce engine built on a server-side Java system–which, in 1997, was cutting-edge technology–that emphasized multiple, long-latency transactions. Cysive built the new IPC on an object-oriented foundation to provide maximum extensibility–which later allowed Cisco to link IPC with its Oracle Financials and thereby contribute to Cisco’s oft-quoted claim that they can close the books for the corporation in a couple of hours.

Small-Team Focus

To obtain some insight into how Cysive leverages best practices for the benefit of its clients, I spoke to Mike Price, chief technology officer, and Dave Adams, process development manager. The Cysive philosophy, which emphasizes object-orientation, small teams and software engineering, results from an emphasis on effective organizational structures that was developed by Price and Nelson Carbonell, chief executive officer, whose backgrounds are in software development. They strongly believe that object-oriented distributed system development requires a focus that cannot be found on large development teams.

The object-oriented development process used at Cysive uses some aspects of the UML, but Adams emphasized that, as with other aspects of the company’s practice, a best-of-breed philosophy guides their methodology choices.

"The development process is based on and driven by use cases," Price tells me. "Class diagrams and sequence diagrams are two facets of UML diagramming that Cysive does mandate for each development process. Other facets, such as activity diagrams and state diagrams, are used as appropriate for a particular development effort. We employ use cases to develop and document system functional requirements."

With such a heavy reliance on use cases, I wasn’t surprised to learn that Cysive has developed proprietary tools to track use-case progress and build schedule estimates based on the use cases for a particular system. "We have developed and use these tools," Price says, "because use cases are the foundation for our process and their timely completion is critical to our delivery of e-business systems."

Any discussion of process improvement inevitably turns to the CMM and this discussion proved to be no different. Cysive, according to Adams, uses "an internally-developed process improvement framework to identify and introduce change to our development process. This framework has similarities to the CMM but is considerably more streamlined. A reduction in the complexity of our process from the CMM version is designed, in part, to address the need to be able to make process changes within the context of the fluid, Internet-driven business where we compete."

Reviews and inspections are de rigueur, as you might expect from an organization that values software engineering precepts. Design and code reviews are mandated by the development process. Cysive’s review process was developed internally and is used by all engineers. In an interesting departure from the norm, Cysive conducts a formal review of each project every month, in which a project manager from another project examines scope, schedule, cost and risks. The results of these reviews are documented and presented to the project team as well as to the executive management of the client for whom the work is being performed. Action items identified during the review are tracked until completed, and the action item list is attached to the weekly status report and is distributed to both Cysive and client management.

Employees tend to be industry veterans, with an average of ten years of development experience under their belts. If you’ve ever had the misfortune of dealing with some of the young and inexperienced new hires sent to client sites by some of the larger consulting firms–no names will be mentioned, to protect the guilty–you’ll appreciate the significance of having experienced personnel working on projects.

But coming on board with experience is only the first step. In today’s industry, where the half-life of technology is measured in months, if not weeks, the engineer who doesn’t keep current with new technology frequently becomes an ex-engineer. Cysive’s Technology Pipeline program represents an aggressively proactive effort to keep its engineering staff current. A proprietary, intranet-based part of Cysive’s knowledge base, the Technology Pipeline gives all Cysive engineers frequent opportunities to review and employ bleeding-edge technologies before they are used on critical projects. Currently, the Technology Pipeline contains 167 products in 30 categories, with about 20 new products added every quarter.

I asked Adams how products were selected for the Technology Pipeline and how the research results were used. "Products are selected for inclusion in the Technology Pipeline based on their relevance to the work we are doing for our clients or on trends in the e-business industry that we identify as promising subject areas to track," he says. As for using the research results, "the information in the pipeline is used by our software engineers who review the evaluations of products in the pipeline and can select the most appropriate set of technologies for a particular customer."

Products are evaluated by individuals or groups, depending on the scope of the specific evaluation. "We use ‘Tiger Teams’ to conduct intensive, focused evaluations of some products," Adams says. "These teams work in a lab environment and apply a specific set of criteria to evaluate the product or technology under investigation."

Study groups have been proven to be an effective method for keeping current with knowledge. Cysive software engineers often form informal study groups to further their knowledge of a specific technology, such as the groups that form to prepare for the Sun Certified programmer for the Java Platform exam. The company also introduces new technologies or products through a two-week boot camp training program in which they will use a product as part of one of the case studies in the boot camp and then use the knowledge gained to add information to the pipeline and advance the product through the pipeline accordingly.

It warms the cockles of my heart–whatever cockles may be–to see a company successfully apply so many of the software engineering best practices advocated for so long by those who seek to make our industry a true engineering profession. But for that company to be an aggressive user of leading-edge technology, operating in Internet time, demonstrates that these best practices really can be used in a wide variety of environments–maybe even yours.


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.