Section 5 |
Guidelines for Choosing a Computer Language: Support for the Visionary Organization |
Section 5 Choosing a Language
The SASEA process includes two subprocesses. The first of these is choosing a language, and this section discusses it in detail. The following section looks at the second subprocess of choosing software development products. This section begins with a discussion of language-specific considerations. This is followed by mixed-language considerations and software engineering considerations. Language-Specific ConsiderationsTable 2 contains rows of language-specific characteristics that are commonly important when choosing a language [Telos 94] [Lawlis 89]. The columns include the most commonly chosen languages today for the most common application domains. The characteristics and languages provided in Table 2 are in no way exhaustive. Hence, there is a blank row to be used for an additional characteristic and a blank column to be used for an additional language, where required. More rows and/or columns can also be added as necessary, depending on specific requirements and constraints. For each new row and column, rating numbers must be provided that are comparable to those already in the table. Ratings run from 0 to 10, where 0 indicates no language support at all for a characteristic, and, at the other end, 10 indicates complete support. The characteristics in Table 2 are defined in Appendix C, along with an explanation of what each characteristic contributes to software development. For each characteristic, a low rating indicates poor language support for that characteristic, and a high rating means good support. It should be emphasized that the ratings are an indication of the extent of actual language support for the characteristics. Actual programs written in a particular language will vary widely with respect to these characteristics, depending on both the support provided by the language and on the skill and discipline of the programmers. Appendix H through Appendix R contain analyses of the languages included in Table 2. The languages are listed in Table 2 in alphabetical order by generation, and the appendices use the same ordering scheme. In each appendix, the language is first analyzed according to the criteria given above in the section Criteria for a Good Language. From this, the ratings are established for each given language characteristic. The first column (Weight) in Table 2 is special, and it is for indicating the importance of each of the language characteristics listed. Choose all of the language characteristics really important to the particular project or organization. Then weight each of those selected on a scale of 1 to 10. Make all other weights 0. The non-zero weights may be all different, or some of them may be the same. The higher the weight, the more important the characteristic in making the decision. If any desired new characteristics and languages are added, their ratings must be filled in where necessary. Weights must also be determined for the language characteristics. Calculations of the overall language ratings in the last row of Table 2 are straightforward. These can be easily automated in a spreadsheet. For each language under consideration, multiply each weight by the corresponding rating for that language, sum the results, and then divide this by the sum of the weights used [Anderson 81] [Dawson 93] [Souder 80] [Zeleny 82]. This will be referred to as the Rating Formula, and in equation form it is:
The result of this calculation provides an overall rating that is a normalized weighted average of the ratings of the characteristics of interest for a particular language. Hence, the overall rating will have a value between 1 and 10. The closer the final rating for a language is to 10, the better that language is as a choice for the characteristics rated. Ratings determined by using different characteristics and/or different weights should not be directly compared because they are not based on the same premises (choice of characteristics and their weights). Mixed-Language ConsiderationsFor large software projects, it is very common to find a mixture of languages used in a system. Usually, this is because software code to be reused (existing system libraries, organizational reuse libraries, or COTS software) is in a language other than the primary language, or else a particular language is required to accomplish a particular function for some special reason. In this case, the primary language chosen will be the "glue" that will bind all the software of the system together, and it should provide good support for this. Other code to be developed should probably also be in the primary language. However, if another language better suits the development needs, then both languages could be chosen, each for its specific purpose, provided that the languages can be readily interfaced. Note that interfacing two languages should consider two factors. If the calling language has a built-in ability to do language interfaces, the language mix will probably produce more reliable results. Also, if a COTS product provides interfaces (called bindings) for the "glue" language, the interfacing is smoother and more straightforward than if such bindings must be developed. Mixing languages is never quite as straightforward as using just one language. While there is always good reason to reuse proven components, including COTS, regardless of the primary language used, the use of two or more development languages together is often more trouble than it is worth. However, a practice gaining in support is the use of an interface standard to facilitate the communication between heterogeneous systems. Using such a standard makes mixing languages much easier and more predictable. Software Engineering ConsiderationsThe decision maker must understand that language is just one of many important issues that contribute to successful software development. Appendix D discusses the context in which the use of a computer language should be placed. It is absolutely necessary that this context be understood. A language choice (made with or without the aid of this document) will only contribute to software development success if language is placed in the proper context as an important tool for software development, rather than a solution to all software development problems. Table 3 lays out the second part of the SASEA process for selecting a language, based on factors that establish the context for software engineering. Each row represents a software engineering factor that can be important to the choice of language [Paige 97] [NRC 97]. Factors are organized by categories. The shaded boxes are only intended to show the organization, while the boxes in the rows for particular factors are intended to be filled in where applicable. Each of these factors is discussed by category in Appendix D. The Weight column in Table 3 is for weighting the importance of these factors to the organization or project. As in Table 2, weights should range from 0 to 10, where 0 means no significant importance, and 10 means critical importance. The remaining columns list the languages as they are given in Table 2. Based on the results from using Table 2, a subset of these languages will probably be chosen to be used in Table 3. To avoid confusion, it may be desirable to remove the columns for the languages no longer being considered in Table 3. Again, columns may be added for other languages still under consideration.
The first factor row, language weight and ratings from Table 2, is for the total weight and the ratings from the bottom row of Table 2. The combined weight of all characteristics in Table 2 is used in Table 3, so the weights in both tables have the same effect on the final result. In other words, a weight of 7 for a characteristic in Table 2 will have the same effect on the final ratings as a weight of 7 for a factor in Table 3. This enables the decision maker to compare and choose appropriate weights for elements in both tables. Ratings have not been provided in Table 3 because they must be based on the organization’s environment and an assessment of the current marketplace. A rating must be determined for each factor with a non-zero weight for each language still under consideration. This rating should be in the range of 0 to 10 (as in Table 2), where 0 means the factor is not supported at all by the language, and 10 means outstanding support for that factor. Determining the ratings for Table 3 will probably require some amount of research and investigation of the languages and the availability of products for those languages. However, this is not the time to examine products in depth. The availability of the products is of concern here. With all ratings of interest filled in for Table 3, the overall language ratings (last row) can be calculated using the Rating Formula, as explained for Table 2. Again, round the overall result for a language, Ri, to one digit. As with Table 2, the rounding step is important to avoid being misled by false precision. Also, as with Table 2, ratings determined by using different factors and/or different weights should not be directly compared. The normalized overall language ratings will be in the range of 1 to 10, and the best languages will be those with ratings nearest to 10. The range of actual ratings will depend to a large extent on the rating patterns of those who established the ratings for Table 3. However, as long as rater bias has been minimized, the rankings of the ratings should be valid. The language to be chosen should be the one with the highest overall rating. However, it may be wise to do a sensitivity analysis on the ratings. Since the weights are only approximations at best, vary them somewhat and see how this affects the final language ratings. If one language is not clearly superior, continue to consider all of the top-rated languages. Examples of using the SASEA language choice subprocess described above, along with the product choice subprocess described below, can be found in Appendix G. |
< Previous Page | Search | Contents | Tables | Next Page > |
Sections
1 | 2 | 3 | 4 | 5 | 6 | 7 |
Appendices
A | B | C | D | E | F | G | H | J |
K | L | M | N | P | Q | R | S |