Hajautettu työajanseuranta DCI-arkkitehtuuria käyttäen
Simola, Juha (2013)
Simola, Juha
2013
Tietotekniikan koulutusohjelma
Tieto- ja sähkötekniikan tiedekunta - Faculty of Computing and Electrical Engineering
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2013-05-08
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tty-201305231155
https://urn.fi/URN:NBN:fi:tty-201305231155
Tiivistelmä
Ohjelmistotuotannossa projektinhallinta, ajankäytön seuranta ja aikataulun pitävyys ovat tärkeitä laatutekijöitä. Kiinteähintaisista projekteista on siirrytty enenevässä määrin ketterään ohjelmistokehitykseen ja suoraan tuntiperusteiseen laskutukseen. Kehitys on lisännyt entisestään tarkan työajanseurannan merkitystä.
Ohjelmistojen koko kasvaa jatkuvasti, ja arkkitehtuurin hallinta monimutkaistuu. Yleisesti käytetyissä olioarkkitehtuureissa monivaiheisten käyttötapausten toiminta koostuu lukuisten olioiden yhteistoiminnasta. Kokonaisjärjestelmän toiminnallisuus hajoaa suuressa järjestelmässä moneen eri luokkaan, ja kokonaisuuden hahmottaminen vaikeutuu. Ratkaisuna ongelmaan on esitetty uutta DCI-arkkitehtuurimallia, jossa ohjelman rakenne suunnitellaan käyttäjälähtöisesti. DCI-arkkitehtuurissa käyttötapaukset ovat kokonaisjärjestelmän rakennusosia.
Tässä diplomityössä toteutetaan Qubit-työajanseurantasovellus DCI-arkkitehtuuria ja alustariippumatonta Qt-ohjelmistokehystä käyttäen. Toteutuksessa käytetään myös C++11-standardin tuomia uusia ominaisuuksia ja arvioidaan niiden hyödyllisyyttä. Työpöytäsovellus mittaa työaikaa automaattisesti taustalla ja integroituu yrityksen pilviympäristössä toimivaan projektinhallintajärjestelmään. Järjestelmä mahdollistaa työajanseurannan ja laskutuksen automatisoinnin.
Työssä selvitetään, miten akateemisessa ympäristössä tutkittu DCI-arkkitehtuuri soveltuu käytettäväksi oikeassa työelämän projektissa. Työssä tutkitaan arkkitehtuurin hyötyjä perinteiseen olioarkkitehtuuriin nähden ja arvioidaan, miten DCI soveltuu käytettäväksi ominaisuuksiltaan erilaisissa ja eri kokoisissa ohjelmistoissa. Qubit-sovelluksen toteutus oli kokonaisuutena onnistunut, ja DCI osoittautui toimivaksi arkkitehtuurimalliksi myös käytännössä. Arkkitehtuurin ansiosta järjestelmätason toiminta ja eri käyttötapaukset ovat selkeästi dokumentoituna koodissa. DCI helpottaa toimintojen automaattista testausta, koodin ylläpitoa ja ketterää kehitystä.
DCI soveltuu erityisesti käytettäväksi paljon eri käyttötapauksia sisältävissä järjestelmissä. Pieniin, yksinkertaisiin ja vähän käyttötapauksia sisältäviin sovelluksiin se ei kuitenkaan sovellu. Tällöin perinteisen oliosuunnittelun ja DCI-arkkitehtuurin välimuoto on järkevin vaihtoehto. Mitä suurempi ja käyttötapauksiltaan monimutkaisempi sovellus on, sitä enemmän hyötyä saavutetaan. Jatkossa arkkitehtuuria tulisikin testata ja soveltaa tätä projektia suuremmassa projektissa. Project management, time tracking and firm schedule are all important quality factors in software production. Today, projects more often use agile work flow and hour-based invoicing and as a result accurate time tracking is increasingly important.
The size of software projects are increasing, this making architecture design more demanding and until recently object-orientation has been the mainstream architecture utilised. The overall system behaviour is distributed in several objects and the system functionality is created by complex co-operation of these objects.
It has been stated that DCI architecture is a solution for the complexity as it clarifies the system-wide functionality. DCI uses use cases as system functionality building blocks. It also uses the end-user's mental models for structure design.
In this thesis, Qubit work time tracking software is implemented using DCI architecture on Qt cross-platform application framework. The implementation also uses a few new features of the new C++11-standard; the usefulness and usability of these are also discussed. The desktop application measures work time automatically at background. The application also integrates to a project management system, which runs on cloud. The management system enables company-wide work time tracking and automatised customer invoicing.
This thesis concentrates on DCI architecture, which has recently been under academic research and studies how well the architecture can be utilised in a real work project. The thesis studies the differences, advantages and disadvantages between DCI and the traditional object-oriented design. Moreover, it evaluates how DCI applies in projects with different sizes and features. The thesis project was successful in general with DCI proving to be a good software architecture for practicality. Due to DCI, the system-wide functionality and use cases are clearly documented in source code. The architecture also simplifies automatic testing, code maintenance and agile development.
DCI applies particularly well to applications that include many use cases, however, it does not apply for small and simple applications that include only few real use cases. In such instances, a composite of the object-oriented design and DCI architecture is the best alternative. The larger the system and the more use cases it has, the more gain the DCI architecture obtains. Thus, future studies should be made using DCI on a larger scale.
Ohjelmistojen koko kasvaa jatkuvasti, ja arkkitehtuurin hallinta monimutkaistuu. Yleisesti käytetyissä olioarkkitehtuureissa monivaiheisten käyttötapausten toiminta koostuu lukuisten olioiden yhteistoiminnasta. Kokonaisjärjestelmän toiminnallisuus hajoaa suuressa järjestelmässä moneen eri luokkaan, ja kokonaisuuden hahmottaminen vaikeutuu. Ratkaisuna ongelmaan on esitetty uutta DCI-arkkitehtuurimallia, jossa ohjelman rakenne suunnitellaan käyttäjälähtöisesti. DCI-arkkitehtuurissa käyttötapaukset ovat kokonaisjärjestelmän rakennusosia.
Tässä diplomityössä toteutetaan Qubit-työajanseurantasovellus DCI-arkkitehtuuria ja alustariippumatonta Qt-ohjelmistokehystä käyttäen. Toteutuksessa käytetään myös C++11-standardin tuomia uusia ominaisuuksia ja arvioidaan niiden hyödyllisyyttä. Työpöytäsovellus mittaa työaikaa automaattisesti taustalla ja integroituu yrityksen pilviympäristössä toimivaan projektinhallintajärjestelmään. Järjestelmä mahdollistaa työajanseurannan ja laskutuksen automatisoinnin.
Työssä selvitetään, miten akateemisessa ympäristössä tutkittu DCI-arkkitehtuuri soveltuu käytettäväksi oikeassa työelämän projektissa. Työssä tutkitaan arkkitehtuurin hyötyjä perinteiseen olioarkkitehtuuriin nähden ja arvioidaan, miten DCI soveltuu käytettäväksi ominaisuuksiltaan erilaisissa ja eri kokoisissa ohjelmistoissa. Qubit-sovelluksen toteutus oli kokonaisuutena onnistunut, ja DCI osoittautui toimivaksi arkkitehtuurimalliksi myös käytännössä. Arkkitehtuurin ansiosta järjestelmätason toiminta ja eri käyttötapaukset ovat selkeästi dokumentoituna koodissa. DCI helpottaa toimintojen automaattista testausta, koodin ylläpitoa ja ketterää kehitystä.
DCI soveltuu erityisesti käytettäväksi paljon eri käyttötapauksia sisältävissä järjestelmissä. Pieniin, yksinkertaisiin ja vähän käyttötapauksia sisältäviin sovelluksiin se ei kuitenkaan sovellu. Tällöin perinteisen oliosuunnittelun ja DCI-arkkitehtuurin välimuoto on järkevin vaihtoehto. Mitä suurempi ja käyttötapauksiltaan monimutkaisempi sovellus on, sitä enemmän hyötyä saavutetaan. Jatkossa arkkitehtuuria tulisikin testata ja soveltaa tätä projektia suuremmassa projektissa.
The size of software projects are increasing, this making architecture design more demanding and until recently object-orientation has been the mainstream architecture utilised. The overall system behaviour is distributed in several objects and the system functionality is created by complex co-operation of these objects.
It has been stated that DCI architecture is a solution for the complexity as it clarifies the system-wide functionality. DCI uses use cases as system functionality building blocks. It also uses the end-user's mental models for structure design.
In this thesis, Qubit work time tracking software is implemented using DCI architecture on Qt cross-platform application framework. The implementation also uses a few new features of the new C++11-standard; the usefulness and usability of these are also discussed. The desktop application measures work time automatically at background. The application also integrates to a project management system, which runs on cloud. The management system enables company-wide work time tracking and automatised customer invoicing.
This thesis concentrates on DCI architecture, which has recently been under academic research and studies how well the architecture can be utilised in a real work project. The thesis studies the differences, advantages and disadvantages between DCI and the traditional object-oriented design. Moreover, it evaluates how DCI applies in projects with different sizes and features. The thesis project was successful in general with DCI proving to be a good software architecture for practicality. Due to DCI, the system-wide functionality and use cases are clearly documented in source code. The architecture also simplifies automatic testing, code maintenance and agile development.
DCI applies particularly well to applications that include many use cases, however, it does not apply for small and simple applications that include only few real use cases. In such instances, a composite of the object-oriented design and DCI architecture is the best alternative. The larger the system and the more use cases it has, the more gain the DCI architecture obtains. Thus, future studies should be made using DCI on a larger scale.