Software engineering attempts to industrialize software development, shifting it from a workshop endeavor in the hopes of attaining higher-quality results under a controlled schedule. The workshop model emphasizes the capability of the individual, and is characterized by a slow software development process prone to errors, instability, and disorder. But with these negative characteristics are also embedded possibilities of innovations based on subjective individual initiative. By contrast, industrialized development is based on objective scientific laws characterized by accuracy, stability, and speed, with industry standards or disciplines to provide the facilities of learning and automation. Software engineering is based on projects and products, and is pursued for generalization and permanency. Objectivity is a fundamental principle of software engineering, which depends on scientific facts that are observable, publicly available, and verifiable.
Documentation of the developing history of facts plays an important role in software engineering. Such documentation forms objective representations of understanding and progress, and an objective foundation of analysis and improvement.
The Capability Maturity Model (CMM) summarizes the best practices for software development, and represents the mainstream in software engineering (see Figure 1). By outlining software development processes and activities, and declaring the execution of repetitive activities, this model aims to efficiently accomplish organizational missions. Organizations with higher CMM levels are expected to operate using a more stable, sophisticated, and disciplined approach, making use of automated tools and the experience gained from many past successes.
Recent economic globalism and technology advances have shortened the distance between parties, while increasing the influences they have over each other. The diversity, variation, complexity, and uncertainty of technologies and environments characterize our modern world. Successful projects continually emerge with different, ever-conflicting approaches. Even the popularity of CMM [2] faces challenges, such as the accusation of lightweight methodology ([1, 4], also www.extremeprogramming.org). In some cases, CMM is blamed for engineering failures. Much debate on software process improvement can be heard in forums of academic researchers and industry practitioners. In this article, I attempt to clarify some of this confusion in current reality with a modern application of ancient Chinese philosophy.
The theorems, methods, practices, and standards of software engineering differ from their correspondents in the physical world in a classical sense. Software development strongly depends on specific environments, and individuals executing specific tasks. But given differing individual natures and differing environments, development is hardly repetitive in a machine-like sense. Gil-Aluja [5] likened the attempt to measure features of the changing world or individual behaviors to counting water drops in the sea. Existing theorems on software engineering are merely approximations, or partial models. Software development efforts cannot be expected to be completely repeatable or executable without substantial adaptations to individual circumstances. In successful development projects, developers identify characteristics of projects and contexts, and vary their approach accordingly. The essential difficulty in modeling technology or software engineering is the continuous evolution of human beings, society, and the world.
The Taiji diagram illustrated in Figure 2, which reflects an ancient Chinese understanding of the world, can be a helpful tool for analyzing this evolution. This diagram illustrates the relationship of the opposing poles of inter-transmutation and inter-involvement in a continuous or transitional way, forward and backward, following recursive evolution. The opposing poles are generally represented by the colors white and black. The black pole always includes a small white spot inside it, and vice versa. Turning an imaginary clock hand around the diagram both clockwise and counterclockwise helps illustrate the transmutation of each pole. In a clockwise direction, each pole continuously weakens until its strong opposite is dominant, while in a counterclockwise direction the poles continuously strengthen, with opposite spot involvement, until the progress is broken and the weaker opposite pole begins to grow dominant.
The clockwise and counterclockwise, or backward and forward, directions of imaginary clock hands give an intuitional view of the plane diagram, but more accurately, transmutations from higher to lower and vice versa, under specific metrics, may continue along time changes, or progress at different sense layers, as interpreted in the classic Chinese literary text known as the Yijing, or Book of Changes [3].
From a modern scientific perspective, the Taiji diagram can be understood as a model of world evolution, involving the relationship between two opposite poles. The Taiji model of two poles consists of a static model and a dynamic model. The static model describes a structure of parallel, connected, and inclusive relationships between poles, while the dynamic model describes movement. Both models have the same appearance, as illustrated in Figure 2.
Let us use the Taiji model as an interpretative tool for software process improvement, with the black half representing the pole of human actions and the white half representing the opposite pole of automation. Characteristics of human actions in the software development process include being unstable, error prone, and disorderly, but the static model always includes some repeatable activities, represented by a white spot of automation characteristics inside the black. The dynamic model describes the process improvement.
As understanding of the repeatable processes increases, rules are constructed to avoid certain mistakes and promote productivity. When the rules are composed as standard processes, then automation grows more substantial as it is enlisted to reduce rework as process maturity increases. This is the type of software process improvement represented by CMM. But, as automation becomes standard, some situations require more flexibility than automated processes can address, represented by the black spot inside the white. Demands for change increase until the white half of automation transitions to the black. The black section representing manned work with flexibility and innovation, which resolved the issues of the capability of recent automation (the early stages of XP fall into the black section). Moving in a counter-clockwise direction, from black to white, also could illustrate an improvement cycle.
Let us use the Taiji model as an interpretative tool for software process improvement, with the black half representing the pole of human actions and the white half representing the opposite pole of automation.
Recent CMM failures may be understood with the help of a concept called “Einstellung” [6]. This German word for “set” is used to describe how people hinder their problem-solving ability by repeatedly attempting to solve a problem using an approach that has been performed successfully in the past. While such an approach may be effective at times, differing situations often require differing problem-solving approaches. Experienced organizations with higher maturity may successfully execute past projects, but they also face the risk of failure if their past experiences blind them to direct approaches in rapidly changing situations. In such cases, reducing the inference from past successes and increasing the flexibility for alternative approaches is more effective. Although working with less automation is more error prone, and sacrifices gains from past successes, the resulting flexibility provides alternatives that may lead to further successes. Furthermore, by making the occasional mistake, one may uncover vital alternatives.
Backward, or clockwise movement around the Taiji also suggests a possibility for improvement: reducing the strength of automation based on the past, adding newer approaches based on current insights, and recomposing processes to adapt to rapid changes. In the ever-evolving software world, the processes of developing new software innovations can unearth further automation. Both directions can result in true improvements.
As for CMM, it must be enriched from outside the CMM arena. One approach is to consider a CMM-Taiji model, with organizational management representing one half of the model. All manageable objects within the organization are considered as one pole, and unmanageable objects the opposite pole. Then, a revolving pole in the Taiji model forms the loop structure of bidirective improvement, as illustrated in Figure 3. The CMM-Taiji concept retains all CMM elements, while improving our understanding of maturity, capability, and satisfaction of organizational missions. The measurement of capability is directly related to satisfaction, and was used until process management was developed to predict satisfaction indirectly. But evidence of satisfaction, as in observed conditions, is needed to adopt such process management.
Process maturity, although challenged in recent years, provides the opportunity for refining concepts. Maturity is a measure of formalization, consistence, process conformity, and organizational behaviors. It is not a measurement of the absolute capability to perform tasks in all organizations, or even in the same organization during different time periods. CMM provides a framework of capability maturity in terms of what should be done, but it does not take into account the diverse features of organizational projects. Past successful experiences of organizations institutionalize a series of “how-tos” reflecting CMM concepts. Organizations with the highest maturity or capability may be understood as being equipped with quantified and automatic tools based on past experiences, and characterized by the specific organizational culture.
The maturity metrics only deal with goals, not with the content of organizational activities. The complexity and context of tasks performed in organizations with similar maturity levels can vary significantly. Furthermore, the CMM level is a maturity metric based on conformity between the discipline and the capability behaviors related to specific organizational missions within a stable period. But it is more useful to recognize the difference between maturity metrics (conformity) and capability/improvement metrics (tasks) in the evolving world. The metrics of capability/improvement may be especially changeable according to the role of values in an evolving organizational mission. It is best to weaken indirect metrics and always move in the direction of attaining satisfaction of an organization’s mission during rapid change. Table 1 compares the advantages and disadvantages of higher and lower maturity.
Besides providing clear insight into software processes improvements in an evolving environment, CMM-Taiji also helps to avoid misunderstanding of organizational mission and context in stable environments. Above all, it provides superior explanations of recent phenomena, and helps organizations take realistic actions.
It is obvious in daily life that steps to better capability to perform varied tasks are not identical to steps to maturity. The measurements for capability/ improvement and maturity are identical in one organization only in a stable world. The CMM describes exact steps to maturity, but these steps may not effectively lead to improvement for new missions. The debates about CMM clearly illustrate the incompleteness of measuring CMM capability in an evolving world.
From the perspective of Taiji, everything is temporal and changeable. There is no absolute best solution for the long-term, except evolution. We are not saying higher maturity is inferior to lower maturity, but that the apples of level 2 maturity differ from the oranges of level 2, and also that the oranges of level 3 may not be bigger than the apples of level 2. The absolute best in terms of organizational improvement in the evolving world is practically unreachable from a long-term perspective, as there is no absolute best level in the bidirectional cycle of CMM-Taiji. How can one handle the uncertainty of having two directions of improvement? The human capability of insightful intelligence, along with theorems of uncertainty, and risk-based tools for decision making in the arenas of mathematics and economics, including payoff matrix, nature of states, and possible preferences provide guidance as to which direction to adopt. It is better not to pursue so-called higher maturity without assessing the risks of changes needed to attain it. Understanding and selecting a suitable approach from opposing directions is the best practice of making improvements in each unique case of evolution.
The CMM documents the consistence of maturity and capability using the key process area (KPA) approach to verify products and services. According to this approach, if an organization attains CMM level 3, it is assumed to have satisfied goals at levels 2 and 3, and must next strive to attain level 4. But what action should be taken if a KPA of level 2 remains unsatisfied because of new demands in the rapidly changing organizational environment? Should the organization ignore the unsatisfied goals of levels 2 and 3 and pursue level 4 goals first? Or should it prioritize the goals of level 2? The CMM-Taiji model suggests the latter approach is more reasonable, that taking a step backward is superior to the CMM’s recommendation to move forward. Of course, once the level 2 and 3 goals are met in a stable environment, the next goals to strive for are the forward-directional, level 4 goals.
Risk management, another process area of higher maturity levels in CMM, requires the collection of adequate data that may not be available in an organization with lower maturity. An interpretation of the Taiji model suggests that pressure to improve may be applied from both poles, from inside and outside of organizations. Higher CMM maturity levels assume risk management depends only on controlling available data, but risk-related data from outside organizations is not within organizational control. CMM-Taiji approaches uncertainty by possible backward-directional improvements, such as reacting and adapting to outside influences according to data and/or human insight. The CMM principles seem to generally apply to all organizations, but in reality, small companies are difficult to categorize. CMM-Taiji takes into account that outside influences exert relatively stronger effects on smaller organizations than on larger ones. The incompleteness of CMM may not be obvious in the changing environments of large companies, since improvement within may often be strong enough to counteract changes from without, depending on their level of seriousness. But small organizations with weaker resistance to outside forces cannot afford to seek success by following the same patterns as larger organizations. The Taiji philosophy supports cost-effective improvements via a simple, flexible, approach. Table 2 summarizes the comparison between the philosophies of CMM and CMM-Taiji.
The main problem with CMM lies not with having KPA and maturity goals, but with having incomplete improvement directions for general application. By contrast, CMM-Taiji offers benefits to both large and small organizations by providing clearer directions for improvement, as well as efficiency. CMM-Taiji has the potential to help software organizations assess their current positions in the CMM improvement cycle, and it offers suggestions as to possible directions for improved responses to uncertainty, such as increasing maturity or reducing discipline/automation. Organizations themselves must understand the risks of predicting directions of improvement. Software process improvements in an uncertain context require insight, understanding, and a spirit of risk. In this rapidly shifting world, all applications of CMM, Taiji, and approaches toward uncertainty should apply to all levels, not just to higher levels.
Conclusion
The CMM-Taiji model lends completeness to CMM by highlighting the impact of opposite pole neglect in CMM. In relatively stable environments, CMM becomes the reduction of CMM-Taiji. Besides providing clear insight into software processes improvements in an evolving environment, CMM-Taiji also helps to avoid misunderstanding of organizational mission and context in stable environments. Above all, it provides superior explanations of recent phenomena, and helps organizations take realistic actions.
It must be noted that recent CMM revisions improve the model. CMMI, included with the new version of CMM, offers the flexibility of selecting process areas with both staged and continuous styles. CMMI-Taiji, in a similar spirit to CMM-Taiji, would also recommend bidirectional improvement.
The ancient Chinese philosophy represented by the Taiji model has potential applications in a surprising variety of areas. Examining the history of computing, manned work, and automation, and the unity and the diversity of elements such as technology, method, architecture, and platform—all of these may be analyzed using the black and white poles of the Taiji model. Furthermore, there are many unidirectional staged models and theories in modern science and technology, such as in economics, management, and cognitive science, which played important roles in the past and must now face new challenges. The Taiji model may initiate enrichment of those models by directing attention to their neglected opposite poles, as with CMM-Taiji. After recognizing two poles in these theorems, the similar mapping for one pole, as from CMM to CMM-Taiji, is quite straightforward. It is interesting to note that, using this approach, fixation on mapped models and theories may disappear. Opportunities to separate concepts, as capability from maturity in CMM, would expand. Mapping models and theories bidirectionally, and thus recognizing that evolution moves in two directions, expands possible interpretations, adding flexibility and robustness to an always-uncertain context. The interpretations of the Taiji model, as well as theorems of uncertainty have potential to enrich traditional solutions. In particular, the connection and interchange of the two opposites may create sudden, surprising insights, resulting in innovations. It is worthwhile to explore the generic treasury of an evolving world, and accept the invaluable gifts from ancient Chinese philosophy.
Figures
Figure 1. Original CMM presentation.
Figure 2. Interpretations from the Taiji perspective and Taiji model (static model and dynamic model).
Join the Discussion (0)
Become a Member or Sign In to Post a Comment