Ylläpitodokumentti Ohjelmistotuotantoprojektin tietojärjestelmä - Otie2 Helsinki 7.12.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Jani Hanhisalo Matias Käkelä Virpi Peuralinna Niklas Rosenberg Petteri Salonvaara Teemu Vilén Asiakas Turjo Tuohiniemi Johtoryhmä Juha Taina Kotisivu http://www.cs.helsinki.fi/group/otie2 Versiohistoria Versio Päiväys Tehdyt muutokset 0.1 30.11.2004 Ensimmäinen versio. PS 0.2 1.12.2004 Lisätty luku 3: Järjestelmän asennus. PS 0.3 7.12.2004 Lisätty luku 4: Järjestelmän ylläpito. PS
Sisältö i 1 Johdanto 1 1.1 Termit.................................... 1 2 Toteutettu järjestelmä 1 2.1 Oracle-tietokanta.............................. 1 2.2 Apache ja PHP-sivut............................ 1 3 Järjestelmän asennus 3 3.1 Tietokannan pystytysskriptit........................ 3 3.2 Apache ja PHP:n asetustiedostot...................... 4 3.2.1.htaccess-tiedosto.......................... 4 3.2.2 php.ini-tiedosto........................... 4 3.2.3 tietokantayhteyden asetustiedosto DBconnection.inc....... 4 4 Järjestelmän ylläpito 5 4.1 Manuaalisesti ylläpidettävät taulut..................... 5 4.1.1 Metriikat: content-taulu...................... 6 4.1.2 Metriikat: content_in_serie-taulu.................. 6 4.1.3 Metriikoiden valintalistat: selection_lists-taulu.......... 6 4.1.4 Metriikoiden valintalistat: list_elements-taulu........... 6 4.1.5 Metriikoiden valintalistat: list_to_content-taulu.......... 7 4.1.6 Metriikkasarjat: metric_series-taulu................ 7 4.1.7 Käyttäjäoikeuksien tyypit: user_rights-taulu............ 7 4.2 Muu dokumentaatio ja CVS........................ 7 5 Järjestelmän jatkokehitys 7 5.1 Tunnetut puutteet.............................. 7 5.2 Määrittelyvaiheessa poisjätetyt ominaisuudet............... 7 5.3 Ideoita uusista ominaisuuksista....................... 8 Liitteet 1 phpdoc-kuvaukset
2 Tietokantakaavio ii
1 Johdanto 1 Dokumentti esittelee periaatteet ja käytännöt, joilla Otie2-projektin sovellus asennetaan ja ylläpidetään tuotannossa. Dokumentissa käsitellään myös projektin myötä tulleet kehitysideat, joita ei lähdetty toteuttamaan projektin puitteissa. 1.1 Termit PHP: Hypertext PreProcessor, aiempi merkitys Personal Home Page tools. Yleiskäyttöinen skriptikieli, joka soveltuu erityisesti web-sovellusten toteuttamiseen. Projekti: Helsingin yliopiston tietojenkäsittelytieteen laitoksen kurssin Ohjelmistotuotantoprojekti puitteissa toteutettava projektimuotoinen ryhmätyö, jonka tavoitteena on ohjelmistosovelluksen toteuttaminen. TKTL: Helsingin yliopiston tietojenkäsittelytieteen laitos. 2 Toteutettu järjestelmä 2.1 Oracle-tietokanta Projektiryhmä tuotti laitoksen Oracle-tietokantapalvelimelle bodbacka.cs.helsinki.fi Oracle 10g tietokannan, jonka FQDN on otie2.cs.helsinki.fi. Päivitetty versio tietokantakaaviosta on tämän dokumentin lopun liiteosassa. 2.2 Apache ja PHP-sivut PHP-sivut asennettiin laitoksen webbipalvelimelle alkokrunni, joka tuntee myös nimen db.cs.helsinki.fi. Alkokrunnin käyttöjärjestelmän versio on Linux (CSL 2.136) 2.6.9-csl.smp i686. Webbipalvelun tarjoaa Apache v. 1.3.33. PHP-tulkki on versioltaan 4.3.9. Sovelluksen tiedostot hajautettiin neljään rinnakkaiseen hakemistoon. "include-hakemiston inc-päätteisissä tiedostoissa on PHP-lomakkeiden tarvitsemia apufunktiota. "public_- html-hakemistossa on varsinaisen sovelluslogiikan PHP-sivut. Tämän alla on myös kuvia varten "images-hakemisto ja CSS-tyylitiedostoja varten "css-hakemisto. Käytössä on oma css-tyylitiedosto, jotta laitoksen alati muuttuvat tyylit eivät rikkoisi sovelluksen ulkoasua. "templates-hakemistossa on pääasiassa käyttöliittymään liittyviä aputiedostoja ja "workhours-hakemistossa tuntikirjanpidon syöttötiedostoja. Sovelluksen hakemistorakenne ja tiedostoluettelo on seuraava:
include DBconnection.inc DBmetric.inc DBmisc.inc DBperson.inc DBproject.inc DBsecurity.inc DBwork.inc LIBfunctions.inc UIfunctions.inc public_html.htaccess activeprojects.php addserie.php addserietoproject.php addwork.php allpersons.php allprojects.php authentication.php changepreferences.php createperson.php createproject.php css otie2.css error.php gradeproject.php images bg.gif bg_language_fin.gif bullet.gif dot.gif liukuvari.gif logo_fin.gif spacer.gif tktl.gif topbar_fin.gif viiva_peitto.gif index.php logoff.php modifypersoninformation.php modifyproject.php modifyprojectinformation.php modifyserie.php modifyserieinproject.php ok.php 2
3 projectinformation.php projectinformationhours.php projectmetricsearch.php removeperson.php removepersonfromproject.php removeserie.php search.php showhelp.php showserieinproject.php showseries.php templates footer.inc header.inc help_en.inc help_fi.inc version.inc workhours 3 Järjestelmän asennus 3.1 Tietokannan pystytysskriptit Projektiryhmä tuotti laitoksen Oracle-tietokantapalvelimelle bodbacka.cs.helsinki.fi sopivat SQL-skriptit, joilla rakennetaan tietokannan taulut ja staattinen sisältö, kuten käyttöoikeudet, saadaan pystytettyä. Myös esimerkkidatalle on oma skripti. Skriptit vaativat, että itse tietokanta ja oikeudet ovat valmiina (create database). Skriptit ovat suoritusjärjestyksessä seuraavat: kantapystyyn.sql - taulujen rakenne lisaarakenne.sql - staattinen sisältö lisaaprojektidataa.sql - esimerkkidata Skriptien ajamisessa tarvittavat ympäristömuuttujat ovat: export ORACLE_HOME=/opt/oracle-client-10.1.0 export PATH=$PATH:$ORACLE_HOME/bin export NLS_LANG=FINNISH_FINLAND.WE8ISO8859P1 Skripteistä on myös vastaavan nimiset MySQL-versiot mysql-alihakemistossa.
4 3.2 Apache ja PHP:n asetustiedostot Sovelluksen asentaminen webbipalvelimelle on suoraviivainen operaatio. Sovelluksen hakemistot kopioidaan tiedostoineen halutulle webbipalvelimelle. PHP-sivuille asetetaan oikeat oikeustasot sekä muutaman asetustiedoston parametreille oikeat arvot. Nämä tiedostot kuvataan tarkemmin seuraavissa kappaleissa. Hakemistoille tarvittava oikeustaso on: drwxr-x x Tiedostoille tarvittava oikeustaso on: -rwx x 3.2.1.htaccess-tiedosto public_html-hakemistoon sijoitettava.htaccess-asetustiedosto vaatii tietyt arvot, jotta PHP, skandinaaviset merkit ja Oracle-yhteys toimii oikein laitoksen webbipalvelimella. Sisältö on seuraava: AddHandler cgi-script php SetEnv ORACLE_HOME /usr/local/oracle SetEnv NLS_LANG FINNISH_FINLAND.WE8ISO8859P1 3.2.2 php.ini-tiedosto php.ini-tiedostossa suositellaan asetuksen magic_quotes_gpc olevan päällä tietoturvasyistä. Tiedostossa on tällöin seuraava rivi: magic_quotes_gpc = on 3.2.3 tietokantayhteyden asetustiedosto DBconnection.inc Tietokantayhteyden muodostamiseen tarvittavat parametrit ovat sovelluksen DBconnection.inctiedostossa funktiossa _DBoracleConnection. Funktio sisältö on seuraava: function _DBoracleConnection() { $db = "(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = bodbacka.cs.helsinki.fi)
(PORT = 1521) ) (CONNECT_DATA = (SID = otie2)) )"; $odbc = @ocilogon ( ohtutie, SALASANA, $db); if($odbc == false) { $_SESSION[ message ]="Tietokantaan ei saada yhteyttä."; echo("<meta http-equiv= refresh content= 0;url=error.php >"); die(); } return $odbc; } Sovellus toimii myös Windows/MySQL-alustalla, jota varten on funktio _DBmysqlConnection(). Tietokanta valitaan muuttujalla $dbtype seuraavasti: 5 $dbtype = 0; tämä on ORACLE $dbtype = 1; tämä on MYSQL Tällä hetkellä sovellus tunnistaa automaattisesti tyypin Oracleksi palvelimen nimen perusteella: if(getenv("http_host") == "db.cs.helsinki.fi") $dbtype = 0; else $dbtype = 1; 4 Järjestelmän ylläpito 4.1 Manuaalisesti ylläpidettävät taulut Halutut metriikkasarjat ja metriikat on tarkoitus tehdä suoraan kantaan. Tätä työtä varten on tarpeen ymmärtää metriikka-taulujen rakenne ja tietyt sovitut kenttien arvot. Päivitetty tietokantakaavio on tämän dokumentin lopun liitteissä. Seuraavat taulut sisältävät rakennetietoa, eivät käyttäjien syöttämää dataa.
6 4.1.1 Metriikat: content-taulu Content-taulu kertoo metriikan rakenteen, eli sen tietosisällön muodon sekä erilaisten otsikoiden tiedon. Content_type on maksimissaan neljän merkin pituinen kenttä, joka kertoo minkätyyppisestä metriikasta on kyse. Sen arvot voivat olla: METR - normaali metriikka TABL - taulukkotyyppisen metriikan otsikko ja "isätietue" TABC - taulukkotyyppisen metriikan solu LIST - listatyyppinen metriikka Erityisen huomattavaa on, että kaikki muun tyyppiset metriikat tulkitaan sovelluksessa HTML-tageiksi. Näitä ovat esimerkiksi: H1 - otsikko taso 1 H2 - otsikko taso 2 H3 - otsikko taso 3 SEL1 - selite 1 SEL2 - selite 2 SEL3 - selite 3 4.1.2 Metriikat: content_in_serie-taulu Content_in_serie-taulu sitoo metriikat tiettyyn tai tiettyihin metriikkasarjoihin. 4.1.3 Metriikoiden valintalistat: selection_lists-taulu Selection_lists-taulu sisältää metriikoiden valintalistojen nimet. 4.1.4 Metriikoiden valintalistat: list_elements-taulu List_elements-taulu sisältää valintalistojen yksittäiset valinnat.
7 4.1.5 Metriikoiden valintalistat: list_to_content-taulu List_to_content-taulu sitoo valintalistat metriikoihin. 4.1.6 Metriikkasarjat: metric_series-taulu Metric_series-taulu sisältää kaikkien metriikkasarjojen rakenteet. 4.1.7 Käyttäjäoikeuksien tyypit: user_rights-taulu Erilaiset käyttäjäoikeustyypit tallennetaan user_rights-tauluun. 4.2 Muu dokumentaatio ja CVS Projektin määrittely-, suunnittelu- ja testausdokumentti sijaitsevat CVS:ssä, jonka repositoryn UNC-osoite on: /home/group/otie2/cvsroot Lähdekoodia varten on oma CVS-repository: /home/group/otie2/codebase 5 Järjestelmän jatkokehitys 5.1 Tunnetut puutteet 5.2 Määrittelyvaiheessa poisjätetyt ominaisuudet Määrittelyvaiheessa jätettiin toteutuksesta pois tiettyjä prioriteetiltaan alhaisia ominaisuuksia. Näitä ovat: TV9 Koostetun tiedon haku projekteista Kuvaus: Projekteja on voitava hakea kompleksisilla hakutermeillä ja -ehdoilla. Hakuja voidaan tehdä useiden hakuehtojen ja termien perusteella. Hakuja voidaan rajoittaa esit-
8 tämällä tuloksista vain esim. tietylle arvovälille osuvat projektit. 5.3 Ideoita uusista ominaisuuksista
Liite 1. phpdoc-kuvaukset 1 phpdoc-kuvaukset oheisena:
Liite 2. Tietokantakaavio 1 Oheisena on päivitetty tuotantoa vastaava tietokantakaavio, kuva 1.
2 content_in_serie CS_id C_id S_id COrder Struct_value_fi Struct_value_en content C_id Content_type Content_name_fi Content_name_en Data_type C_date M_date Desc_fi Desc_en Parent_id Visible Required selection_lists L_id L_name_fi L_name_en serie_in_project S_id P_name MP_id Serie_comment C_date M_date list_elements Elem_id Elem_data_fi Elem_data_en L_id list_to_content L_id C_id projects P_name Description C_date M_date Begin_date End_date Project_type Process_model Active Grade Homepage metrics_data P_name S_id C_id MP_id Number_data Varchar_data Date_data Decimal_data Elem_id person_in_project Account P_name Role person Account First_name Last_name Date_of_birth C_date M_date Default_lang Expiration_date Grade Password work Account P_name Hours Phase Work_date Work_week person_rights R_id Account user_rights R_id Default_role Name_fi Name_en metric_series S_id Serie_name_fi Serie_name_en Description_fi Description_en C_date M_date Visible 1-1 Kuva 1: Järjestelmän tietokantakaavio.