• No results found

Examples of the Four Usage Classes

Here are some examples of software systems that are probably familiar and where they fit into this usage taxonomy. Again using general terms, software cost per line of code decreases as you progress down the four usage categories listed here. “In gen- eral” ignores certain aspects of software cost such as that cost per line of code can increase with the total number of lines of code.

There is a well-documented, and for some a counter-intuitive, phenomenon whereby cost increases with complexity, which increases with the total size of the application.1 We are not concerned here with complexity issues in the four usage categories. How- ever, using a directory instead of writing your own data management code can cer- tainly reduce the size and hence the complexity and cost of your applications because your application will be smaller than if you have to write code to perform functions that directory servers can perform for you (such as storing data, replicating it, and providing search and sort functions).

1. For example, see The Mythical Man Month, by Frederick P. Brooks, Addison Wesley, 1975.

Usage Example

Man-rated Space Shuttle control Air traffic control 911 emergency systems

Embedded medical device software

You Can’t Afford It

Cost

Man-rated Enterprise-rated Good-enough Don’t-care

Rating 0

To be fair, the usage category of software can depend on your point of view. If you created it, chances are it isn’t don’t-care, even if you slapped it together over a week- end. What we are after here isn’t so much quality categories as quality requirements by intended usage, because the goal is to show how directories can help satisfy the usage requirements (but the quality is still largely up to the implementers).

Also, man-rated software development is difficult for most people to grasp. For example, it is not unreasonable to require that man-rated software be absolutely fro- zen (no changes whatsoever) for a year prior to use in a real system. For that year, it is tested and retested in every possible configuration and with every set of runtime and environmental parameters. Elaborate procedures and even resetting of the testing time clock are required for any bug fix to be put into the code base. After it is installed, no changes can be made except for emergency situations.

Contrast man-rated software development with the speed at which consumer soft- ware comes to market, and you can see that these are truly opposite ends of a very broad spectrum. It takes a unique mindset to develop man-rated software. Knowing that someone could die as a result of your code makes you want to follow very strict procedures. It also makes you wish for provable software, but that is not currently possible in many real-world situations.

Cost

The only word that gets a businessperson’s attention faster than “revenue” is “cost.” After all, revenue minus cost equals bonus, or something like that. The cost associ-

Enterprise- Inventory control and prediction

rated Just-in-time (JIT) manufacturing systems ATM machines

Business-specific transaction and database applications Business-process integration systems (for example, SAP R/3) Internet business systems/Web commerce

Most operating systems

Good-enough Many personal productivity applications Much client and single-user software Server software for noncritical systems

Don’t-care Many games (successful ones are better than this) Seldom-used utilities

Very small, self-contained, limited-function client software

ated with software comes from several related paths through the life cycle of each application.

Software cost can be broken down, again rather nonscientifically,2 into the following general categories. (We are ignoring the fact that these categories are treated differ- ently for accounting purposes and do not all always apply; homegrown applications have no marketing expense, for example.)

Market (or need) identification

Development (R&D)

Marketing and sales

Life cycle – Configuring – Tuning

– Servicing/upgrading – Monitoring/debugging

– One-time charge or extended service plan

These cost categories matter because containing cost intelligently is key to produc- tivity and growth. You wouldn’t run a car company and close all of the manufacturing facilities just to save on costs, if that prevented you from generating revenue. Likewise, you need to know how each category of software can intelligently exploit directory services to competitive advantage. That advantage may be on a cost basis, where your software is cheaper for you to build than to buy (R&D), or it may be on a market (revenue) basis, where your software is cheaper to deploy and hence costs less to your customers in its total life cycle (and therefore wins bids against your competi- tion). Or it may be that exploiting a directory gives your software better enterprise characteristics within a certain development time frame, which would provide advan- tages in both cost and revenue opportunity. Maybe you can achieve “enterprise” without much more cost than you incurred achieving “good-enough” if you can find a way to leverage someone else’s data-storing, searching, and managing software (like a directory service).

Table 5.1 offers another way to look at the general costs of software systems: devel- opment cost, cost of failure in the system, and life-cycle costs. Life-cycle costs include development cost (or purchase price), plus deployment cost and maintenance cost (debugging, monitoring, tuning, and upgrading releases).

2. This is a practitioner’s viewpoint. For an introduction to a more scientific approach to soft- ware cost issues, see “Evaluating the Cost of Software Quality,” Communications of the ACM, August 1998/Vol. 41, No. 8, 67–73.