Sunday, July 6, 2008

Methodologies Versus Techniques And Tools

Writen by Tim Bryce

"Having a Project Management system without a methodology is like attaching a speedometer to an orange crate; it measures nothing." - Bryce's Law

INTRODUCTION

The term "methodology" is being bandied about by just about every software development vendor and consultant imaginable. You would be hard pressed to find a vendor who, in addition to their usual tool offering, doesn't promise a methodology to solve all of your development problems. But like many things in this industry, the terminology is getting sloppy and it is becoming apparent the true definition of "methodology" is being bastardized.

IN THE BEGINNING

The term "methodology" became popular in information systems in the early 1970's, initially as a response to the question, "What is it?" Milt Bryce first applied the term to systems development in 1971, to describe his Information Systems Engineering process. Bryce referred to "methodology" as a process which ends with the delivery of a product or a completely defined result.

Later on, during the structured programming movement, a different interpretation of the word emerged from software gurus such as Yourdon, Gane/Sarson, Orr, Finklestein, Martin, Warnier/Orr, etc. Instead of describing the overall process by which development occurs, the structured programming people began to use the term "methodology" to describe their techniques for designing software (e., functional decomposition, data driven design, object oriented design, etc.). Consequently, software development tools, which represent automated extensions of these techniques, began to tout their products as "methodology" enablers.

This division in the use of the term "methodology" is a major source of confusion to the industry. Not all "methodologies" are created equally. There are fundamentally two interpretations: as a term referring to the "process" by which work is performed, and; as a term referring to a particular design technique. To truly understand "methodologies" you must know the difference.

METHODOLOGIES AS "PROCESS MANAGEMENT"

We at MBA define a methodology as, "a process which ends with the delivery of a product or a completely defined result." Under this perspective, a methodology defines the "5-W's"; it defines WHO, is to perform WHAT work, WHEN, WHERE, and WHY. If this sounds like an engineering/manufacturing process, it is. MBA contends information resources can be designed and developed in the same manner as any other product. Here, a methodology defines the division of labor and synchronization of work effort. With this approach, the development effort is divided into smaller more manageable pieces just as in an assembly line process. Construction projects represent another example (e,g., shipbuilding, office/home construction, etc.), where the work is carefully divided into stages with precedent relationships.

METHODOLOGY AS A DESIGN TECHNIQUE

As opposed to the "5-W's" interpretation by MBA, a methodology supported by the software design people defines HOW a particular task is to be performed. For example, the forte of design techniques such as "object oriented programming," "structured programming," or "information engineering" is on HOW to accomplish specific activities of work. From this context, the term "methodology" is a misnomer which should be replaced by the term "technique," a more apt description.

Techniques may differ from company to company, and there is not always a single way to perform a task. For example, in the automotive industry, fenders have always been a part of the car, but they have not always been attached the same way. Originally, fenders were bolted to the body of the car. Years later, an automotive worker welded the fender to the car. Today, welding robotics perform the task. The task, attaching the fender to the car, hasn't changed, but the techniques to do it have. Improved techniques can mean realizing the same result with savings in time and money.

The same is true in the information systems world. Whereas there are generic stages of work for designing and developing a system, there are a multitude of techniques for performing the work. For example, there are significant differences between "structured programming" and "object oriented programming," yet the result is fundamentally the same, the development of an executable program. The difference is the chosen approach of implementation (there are pros and cons for both techniques). Whereas "Software Engineering" represents a phase of work in a development project, "structured programming" and "object oriented programming" represent techniques that can be used to perform the phase.

Does this mean there are overlaps or conflicts in the use of the different types of "methodologies"? Not quite. But to appreciate the difference, one must understand the concept of "Productivity" (as we have discussed in other "PRIDE" Special Subject Bulletins).

PRODUCTIVITY = EFFECTIVENESS X EFFICIENCY

Productivity is not simply a matter of how fast a task can be performed, it's a matter of performing the right task at the right time. This is what underlies the concept of productivity. Whereas "efficiency" concentrates on speed of delivery, "effectiveness" is concerned with doing the right thing at the right time; the two are not synonymous. For example, performing a weld using robotics may be a far more efficient means than performing the task manually, but it is useless if you are welding the wrong thing. There is nothing more unproductive than to build something efficiently that should never have been built in the first place. Zero percent effectiveness times 1000% efficiency equals zero productivity.

A true methodology addresses the effectiveness side of the equation (Who, What, When, Where, Why), and a technique addresses the efficiency side (How to). Whereas a methodology defines the work environment, the technique defines how the work is to be performed. The two are obviously complementary and one does not eliminate the need for the other. But comparing one with another is like comparing apples with oranges, they are simply not the same.

FACTORY CONCEPT

Within an engineering/manufacturing facility you will typically find:

  1. An Assembly Line where products are developed in stages.

  2. Production Control monitoring the assembly line for delays or accelerations in production.

  3. Techniques for performing work.

  4. Tools providing mechanical leverage.

These elements can be found in any development environment, including the IT world. What is interesting is the relationship between the elements:

ASSEMBLY LINE - at the heart of the factory is the Assembly Line process where products are developed in stages by workers with different skills for the different stages of work. In IT terminology, this is the "methodology."

PRODUCTION CONTROL monitors the assembly line using dials and gauges. Production Control is not an entity by itself; it is totally dependent on the existence of the Assembly Line in order to measure performance. In IT terminology, this is Project Management. However, this brings up an important point; without a defined methodology, Project Management is an exercise in futility. It measures nothing. Only if a defined mode of operation exists can dials and gauges be effectively applied.

TECHNIQUES, as mentioned, represent ways for performing specific tasks ("how to"). A variety of techniques may be used on the Assembly Line. Obviously, it would be counter-productive to use a technique at the wrong time on the Assembly Line. This means the effective use of techniques is dependent upon a defined Assembly Line.

TOOLS implement techniques. Tools provide mechanical leverage for performing a specific task. In this sense, it is an extension of a technique, and like the technique, tools must be deployed at the proper locations along the Assembly Line. This is the reason why many software engineering tools are failing; not because they are bad tools, but simply because companies have not defined their Assembly Lines (methodologies) and haven't specified when the techniques and tools are to be used.

What this highlights is that a methodology is the focal point within a development environment. Without a defined methodology, Project Management will be ineffective, and design techniques and software development tools will be misapplied. Productivity will be low.

METHODOLOGY CRITERIA

Since a methodology is critical to the success or failure of a development environment, it is important to be able to differentiate between a methodology, technique and tool. The generic properties of a methodology include:

  1. DEFINES THE STAGES OF WORK (a work breakdown structure normally consisting of phases, activities and tasks). The stages of work defines the "5-W's" (Who, What, When, Where, Why). The synchronization of work is needed to define direction and is provided by the precedent relationships between the various steps in the methodology. Defined duties and responsibilities provides insight for performing the work and methodology standardization improves communications between workers.

  2. MEASURABLE - The stages of work can be evaluated in terms of how long it takes to perform them and how much they cost to perform. Further, criteria is provided to substantiate completion of deliverables thereby assuring the development of a quality product.

  3. TECHNIQUE AND TOOL INDEPENDENT - various techniques and tools can be deployed as required.

  4. PROJECT MANAGEMENT INDEPENDENT - can work with or without a Project Management system. For example, an Assembly Line can still function without Production Control, but not vice versa.

If the methodology you are evaluating does not match this simple criteria, it is not a methodology and probably some form of technique.

TYPES OF METHODOLOGIES

Of the "process management" methodologies, there are fundamentally three types:

LINEAR "WATERFALL" METHODOLOGY (sometimes referred to as "Life Cycle") - this is perhaps the best known of the methodologies. Various interpretations of this approach have been published for several years, both commercially and public domain. Fundamentally, it a sequential process where the design of an application moves from the general to the specific; for example:

1. FEASIBILITY STUDY
2. DESIGN
3. PROGRAMMING
4. TESTING
5. REVIEW

The problem with this approach has been its orientation towards computer software and not on total systems. But the biggest pitfall has been its sequential orientation which tends to prohibit parallel development.

SPIRAL DEVELOPMENT - this approach is based on the premise the development process is evolutionary in nature (which, in fact, it is). The concept is to initially design a program, then add additional phases of work to constantly revise the program to enhance its features. From a Project Management perspective, the problem with this approach is that the project never ends.

PRODUCT DEVELOPMENT - as proposed by MBA, this approach uses elements of the other two methodologies, with the added nuance of using a product orientation as the basis for the development process. Under this approach, a system is viewed as a product. Consequently, it can be designed in the same manner as any other product. For example, when a product is being designed (such as an automobile), the overall assemblies are first designed (such as the body, chassis, engine, etc.). After this phase, each assembly is designed by teams of engineers who refine the design of each assembly into sub-assemblies and parts. All of this occurs as parallel phases. MBA advocates the same approach for systems development. An initial phase is used to design the architecture of the system, followed by succeeding parallel phases to refine the design. This is the best approach for parallel development.

INDUSTRIAL ENGINEERING

In an engineering/manufacturing environment, the responsibility for defining the work environment is normally delegated to an "Industrial Engineer." It is the Industrial Engineer's responsibility to define the Assembly Line, the types of people and skill sets required to perform the work, and the deployment of techniques and tools to be used on the Assembly Lines. Industrial Engineering is a recognized profession in the engineering/manufacturing world. A comparable position is required in the information systems world.

Unfortunately, most development methodologies purchased today are evaluated by the wrong people. Quite often, the evaluation of a methodology is delegated to programmers or technicians who are more enamored with the latest software design technique or tool than in defining a managed development environment. This is like Henry Ford allowing the UAW to invent the concept of the Assembly Line. They simply have the wrong perspective. Someone who specializes in installing headlights doesn't necessarily have the expertise to develop Assembly Lines. True, their input can be helpful when evaluating a technique or a tool, but not for an overall development environment. This is one area where American businesses have abdicated complete control.

CONCLUSION

There are essentially two interpretations for the term "methodology" in the IT industry. One interpretation is as a disciplined process for developing information resources, from inception to conclusion. Another is as a technique for performing a specific task of work. These are subtle but significant differences, particularly if a company is analyzing their development environment. As companies have learned, it is not simply a matter of purchasing the latest software engineering tool to overcome their productivity problems. Studies show such tools are failing to have an effect in this area, primarily because they are being misapplied by the users. People looking for programming tools to bring order out of chaos are going to be sorely disappointed. This is not their forte. Rather, they represent an efficient approach for implementing design techniques. The intent of a true methodology is to define the work environment, thereby providing the ability to effectively deploy tools and techniques. To implement a methodology, a development organization needs to reorient themselves into an "Information Factory" environment, where systems and software (products) are developed in the same manner as any other engineering/manufacturing facility.

Tim Bryce is the Managing Director of M. Bryce & Associates (MBA) of Palm Harbor, Florida and has 30 years of experience in the field. He is available for training and consulting on an international basis. He can be contacted at: timb001@phmainstreet.com

Copyright © 2006 MBA. All rights reserved.

No comments: