Modularitet Och Objektorientering
Total Page:16
File Type:pdf, Size:1020Kb
Uppsala universitet Institutionen för informatik och media Modularitet och objektorientering Byggandet av ett program som kan visa en molekyl Lars Tedenborg Examensarbete C Höstterminen 2010 2011-01-04 Abstract The development of IT systems is usually accomplished by some form of system development methodology. It can be performed as the waterfall method, where each phase is completed before the next begins. One of the reasons to follow a development methodology is that the process is more structured, faster and that the product will have higher quality. One risk of not using a system development approach is that the code can be unstructured and difficult to maintain. This paper describes an alternative method in which the development occurred without the use of any system development methodology. This has been possible because there was a clear goal of the program that should be developed. The goal was to read a molfile and from the information stored in the file plot the molecular structure. The appearance of the molecule has been fine-tuned as more features are added. A molfile is able to store all the information about the different characteristics a molecule can have. Not all molecules containing all the properties. Development has proceeded as follows: Each property has been classified as an object and then implemented. The whole way from reading the property in the file into the computer program and then interpret the information to plot the property as a part of the molecule. The most important programming principle has been to develop the program as a number of more or less independent modules for the system to have high modularity. 2 Sammanfattning Vid utveckling av IT-system brukar någon form av systemutvecklingsmetod följas. Det kan vara exempelvis vattenfallsmetoden där varje fas slutförs innan nästa påbörjas. Ett av skälen att följa en utvecklingsmetod är att arbetet ska bli mer strukturerat, gå fortare samt att produkten ska ha hög kvalité. En risk med att inte använda en systemutvecklingsmetod är att koden kan bli ostrukturerad och svår att underhålla. Denna uppsats beskriver en alternativ metod där utvecklingen skett utan användandet av någon etablerad systemutvecklingsmetod. Det var möjligt då det fanns ett tydligt mål med programmet som skulle utvecklas. Målet var att läsa en molfil och från den information som finns lagrad i filen rita molekylärstrukturen. Utseendet på molekylen har finjusterats allteftersom fler egenskaper lagts till programmet. En molfil har möjlighet att lagra all information om de olika egenskaper en molekyl kan ha. Alla molekyler innehåller inte alla egenskaper. Utvecklingen har gått till på följande sätt: Varje egenskap har klassats som ett objekt och sedan implementerats. Det innebär allt ifrån att läsa in egenskapen i filen till dataprogrammet och sedan tolka informationen till att rita ut den egenskapen. Den viktigaste programmeringsprincipen har varit att utveckla programmet som ett antal mer eller mindre fristående moduler för att systemet ska ha hög modularitet. 3 Innehållsförteckning Abstract .............................................................................................................................................. 2 Sammanfattning ................................................................................................................................. 3 Innehållsförteckning .......................................................................................................................... 4 Ordlista ............................................................................................................................................... 5 Inledning ............................................................................................................................................. 6 Problemformulering ....................................................................................................................... 6 Syfte ............................................................................................................................................... 8 Bakgrund ........................................................................................................................................ 9 Avgränsning .................................................................................................................................. 12 Hur en molfil är uppbyggd ........................................................................................................... 12 Metod ............................................................................................................................................... 15 Undersökningsstrategi ................................................................................................................. 15 Teori ................................................................................................................................................. 17 Utveckling av programmkod ........................................................................................................ 17 Analys och diskussion ...................................................................................................................... 31 Slutsatser .......................................................................................................................................... 32 Källförteckning ................................................................................................................................ 33 Elektroniska källor ........................................................................................................................ 33 Bilaga 1 lista över program för att rita molekyler ..................................................................... 34 Bilaga 2 CTFilen från Symyx som beskriver hur en molfil är uppbyggd .................................... 35 Bilaga 3 Komplett kod från programmet ................................................................................... 43 4 Ordlista Acyklisk En struktur som inte innehåller någon cykliskt element. Agil systemutveckling Metod för programmering, med korta utvecklingscykler med nära kontakt mellan utvecklare och beställare. http://www.agilemanifesto.org/iso/sv/ Cyklisk En struktur som innehåller ett cykliskt element. Deprotonerad Heteroatom som saknar ett väte och därmed har laddningen -1. Eter En syreatom som binder två olika kolatomer. Generisk struktur Struktur där vissa delar inte är fullständigt specificerade, utan de kan innehålla olika atomer eller fragment. Heteroatom Atom som inte är kol eller väte. Isotop Atomer av samma grundämne, alltså med samma antal protoner, men med olika antal neutroner. InChi filformat IUPAC standard för lagring av molekylär information. (http://www.iupac.org/inchi/) Kiral En atoms möjlighet att vara asymmetrisk. Bindningar från atomen kan peka åt olika håll i tre dimensioner. Konformation En molekyls utseende vid en viss tidpunkt vilket påverkas av molekylens rörlighet i dess bindningar. Masstal Summan av antalet protoner och neutroner. Molekyl När atomer sitter ihop i ett visst arrangemang tack vare bindningar. Molfil Ett filformat utvecklat av MDL som blivit en inofficiell standard för lagring av molekylär struktur information. Radikaler Atom som inte har tillräckligt med elektroner runt sig. Stereokemi Förtydligande av hur bindningarna pekar om en atom är kiral. SMILES fil format Simple Molecular Input Line Entry System. Filformat för att lagra molekylär struktur information. Varje molekyl lagras som textsträng. 5 Inledning Contur Software AB var i behov av ett dataprogram vars uppgift var att rita en molekylstruktur från en lagrad molfil. Den utritade molekylen skulle visas upp som en bild. Redan vid projektets början sågs ett flertal problem med hur kraven för programmet skulle formuleras. Då det är en bild som ska visas upp finns det en estetisk parameter att ta hänsyn till under utvecklingen. Det är svårt att ge specifika krav beträffande hur alla molekylens egenskaper ska anges, när de olika delarnas utseende i en molekyl påverkar varandra. Därför utvecklades programmet utan någon form av föregående systemanalys, förutom ett begränsat antal funktionskrav. Här används begreppet systemanalys som benämning på den dokumenterade kravspecifikation som normalt föregår programmering. I molfilen finns alla molekylens egenskaper beskriva och utvecklingen gick till så att en egenskap i sänder implementerades. Denna uppsats kommer att beskriva hur man kan bygga ett datorprogram genom att lägga till en liten funktion i taget, förutsatt att programmeraren kan bedöma resultatet. I detta fall har utvecklaren utbildning i kemi. Molekylen delas alltså upp i ett flertal moduler som en efter en lagts till i programmet. Detta har varit möjligt genom att strikt använda ett objektorienterat synsätt. Problemformulering Den mest rigida formen av systemutveckling är vattenfallsmodellen(Royce 1970). Denna metod är ett bra exempel på systemutveckling då varje fas är isolerad och dokumenteras innan nästa fas tar vid. Jag använder den som exempel för att förklara alla faser som ett systemutvecklingsprojekt normalt har. Varje fas slutar med ett beslut, ska projektet fortsätta eller avslutas. Vattenfallsmodellen består av följande faser: 1. Planering eller förstudie. Man kan också kalla denna fas behovsstudie. Den ska leverera argument för eller emot den fortsatta utvecklingen av IT-systemet. 2. Analysfas. Vad är det systemet ska utföra? 3. Design. Här