• No results found

Videre arbeid

In document Implementasjon av et kompleksitetsmål (sider 115-119)

Eksperimenter med kompleksitetsmalet

9.6 Videre arbeid

Denne oppgaven har fokusert pahvordan malet kan implementeres, og eksp-erimentene med malet i kapittel 8 var ikke srlig omfattende. Den modiserte kompilatoren burde danne et godt utgangspunkt for malinger pamange pro-gramsystemer slik at vi kan danne oss et mer nyansert bilde av kompleksitets-malet.

9.6.1 Malinger pa ere systemer

Kildekoden vi testet malet pa holdt hy standard, og er kanskje ikke rep-resentativ for \typisk" kildekode. For eksempel sa vi at Meta viste tegn pa tilnrming mot et objektorientert design, og kanskje ikke egnet seg til testing av formel (3.12) for det optimale antallet prosedyrer i et prosedyre-orientert program. Det vil vre interessant a foreta malinger pa et strre antall prosedyreorienterte programmer slik at vi kan faet bedre grunnlag for en vurdering av (3.12).

Vi br ogsaforeta malinger paen del darlig strukturert kildekode slik at vi kan vurdere hvor godt malet straer darlig struktur. Kildekode skrevet av ferske informatikkstudenter kunne tjene som kildemateriale.

115

9.6.2 Videre vurdering av malet

A verisere om et kompleksitetsmal gir et godt bilde av kildekodens vedlike-holdbarhet er svrt ressurskrevende. Maus utledet i [1] hvordan optimalt strukturert kildekode br se ut dersom malet stemmer godt overens med in-tuitiv kompleksitet. Vi har sammenlignet disse spadommene med kildekode vitrorer tilnrmet optimalt strukturert. Det er interessantagjre malinger som kan vise oss sammenhengen med intuitiv kompleksitet mer direkte: Som testmateriale kan vi bruke kildekode som har vrt vedlikeholdt over lengre tid under kontroll av et versjonskontrollsystem. Ved hjelp av versjonskontroll-systemet kan vi fa oversikt over hvilke prosedyrer som har vrt gjenstand for est modikasjoner. Hvis vi antar at disse prosedyrene er de mest kom-plekse, kan vi kontrollere om de originale versjonene av disse prosedyrene pekes ut som spesielt komplekse av malet. Versjonskontrollsystemet lar oss rekonstruere tidlige versjoner av prosedyrene slik at de kan males med kom-pleksitetsmalet.

9.6.3 Eksperimenter med modisert kompleksitetsmal

Alle de foreslatte modikasjonene pa kompleksitetsmalet kan realiseres pa samme implementasjon. Vi kan modisere implementasjonen i G++ kompi-latoren, og underske om vi kan observere noen positiv eekt pamalingene.

Det synes spesielt interessantaunderske om vekting av lkkekropper tjener noen hensikt for \typisk" kildekode.

9.7 Konklusjon

Vi har sett at malet lar seg implementere relativt enkelt ved a modisere en kompilator. Malingene pa Nora og Meta i kapittel 8 viste oss at Maus' kompleksitetsmal C(T) for et utsnitt T av et program er en tilnrmet liner funksjon av strrelsen til T regnet i antall symboler. Proporsjonalitets-konstanten k bestemmes i stor grad av antall globale deklarasjoner, og k vil derfor ke med den totale programstrrelsen.

Den observerte proporsjonaliteten er trolig knyttet til bruken av header-ler, og kan falle mer eller mindre bort ved malinger pa andre program-systemer der headerler brukes annerledes. Malinger pa ere programsyste-mer vil gi oss et bedre grunnlag for en vurdering av malet.

116

Referanser

[1] Arne Maus. Entropy as a Complexity Measure, and the Optimal Module Size of Object Oriented Programs. Proc. IFIP 12th World Computer Congress - Madrid 1992, Vol I, Ed: Jan van Leeuwen. North Holland 1992.

[2] Thomas J. McCabe. A Complexity Measure. IEEE Transactions on Software Engineering, Vol. SE-2, No 4, December 1976, pp.308 - 320 [3] Richard M. Stallman. The GNU Manifesto.Hentet via InterNet, datert

1985

[4] V. Cote, P. Bourque, S. Oligny, N. Rivard. Software Metrics: An Overview of Recent Results. The Journal of Systems and Software 1988, pp.121-131

[5] W. Harrison, K. Magel, R. Kluczny, A. DeKock. Applying Software Complexity Metrics to Program Maintenance. Computer, September 1982, pp.65-79

[6] B. Curtis. In Search of Software Complexity.Workshop on Quantitative Software Models for Reliability, Complexity and Cost: An Assessment of the State of the Art. IEEE, New York 1979, pp.95-106

[7] M. H. Halstead. Elements of Software Science. Elsevier North-Holland, New York 1977

[8] M.H. Halstead. Natural Laws Controlling Algorithm Structure? SIG-PLAN Notices, Februar 1972, pp.19-26

[9] E.W. Dijkstra. Go To Statement Considered Harmful.Communications of the ACM, Mars 1968, pp.147-148

[10] H.F. Ledgard, M. Marcotty. A Genealogy of Control Structures. Com-munications of the ACM, November 1975, pp.629-639

[11] W.J. Hansen. Measurement of program Complexity by the Pair (Cyclo-matic Number, operator Count). SIGPLAN Notices, Mars 1978, pp.29-33

117

[12] D.L. Parnas. On the Criteria To Be Used in Decomposing Systems into Modules. Communications of the ACM, December 1972, pp.1053-1058 [13] D. Kafura, S. Henry. Software Quality Metrics Based on

Interconnec-tivity. The Journal of Systems and Software 1981, pp.121-131

[14] P.G. Hamer, G.D. Frewin. M.H. Halstead's Software Science - a Critical Examination. Proc. 6th International Conference on Software Engineer-ing 1982, pp.197-206

[15] A.M. Lister. Software Science - The Emperor's New Clothes? The Australian Computer Journal, Mai 1982, pp.66-70

[16] R. Brooks. Towards a theory of the comprehension of computer pro-grams. International Journal of Man-Machine Studies 1983, pp.543-554 [17] S. Letovsky. Cognitive Processes in Program Comprehension. The

Jour-nal of Systems and Software 1987, pp.325-339

[18] R.V.L. Hartley. Transmission of Information. Bell System Technical Journal, Vol. 7, 1928, pp.535-63

[19] Norman Abramson. Information Theory and Coding.McGraw-Hill 1963 [20] Alfred V. Aho, Ravi Sethi, Jerey D. Ullman. Compilers. Priciples,

Techniques and Tools. Addison-Wesley 1986.

[21] Charles Donnelly, Richard Stallman. BISON - the YACC Compatible Parser Generator V1.12. Free Software Foundation, December 1990 [22] Bjarne Stroustrup. The C++ Programming Language, Second Edition.

Addison-Wesley 1991.

[23] J.S. Davis, R.J. LeBlanc. A Study of the Applicability of Complexity Measures.IEEE Transactions on Software Engineering, September 1988, pp.1366-1372

[24] W. Wulf, M. Shaw. Global Variable Considered Harmful. SIGPLAN Notices, Feb. 1973, pp.28-34

[25] J.D. Gannon, J.J. Horning. Language Design for programming Reliabil-ity. IEEE Transactions on Software Engineering Vol. SE-1, No. 2, June 1975, pp.179-191

[26] M. Adar, R. Field, W. Kubalski, T. Chou. The Objectworks Brows-ing Model - UnderstandBrows-ing Complex Software. ParcPlace Systems Inc.

Sunnyvale, California 1993.

118

Vedlegg A

In document Implementasjon av et kompleksitetsmål (sider 115-119)