Ohjelmistoarkkitehtuurit Kevät 2016 Johdantoa Samuel Lahtinen http://www.cs.tut.fi/~ohar/ 8.1.2014 1
1 Johdanto 1.1 Mikä on ohjelmistoarkkitehtuuri? 1.2 Ohjelmistoarkkitehtuuri ja laatuvaatimukset 1.3 Katsaus ohjelmistotuotannon kehittymiseen 1.4 Miksi ohjelmistoarkkitehtuuri on tärkeä 1.5 Ohjelmistoarkkitehtuuri ja ohjelmistokehitysprosessi 1.6 Ohjelmistoarkkitehtuuri ja organisaatio 1.7 Ohjelmiston osittaminen 1.8 Toteutusalustan arkkitehtuuri 1.9 Yhteenvetoa 2
Arkkitehti? http://www.codingthearchitecture.com 3
Onko tämä arkkitehtuuria? Ohjelmisto toteutetaan siten, että se käyttää P2P-topologiaa Valitaan toteutusteknologiaksi Qt Käytetään avoimen lähdekoodin -kirjastoa OpenSSL Softa julkaistaan GPL-lisenssillä Ohjelmisto toteutetaan käyttäen ketteriä menetelmiä Ohjelmiston pitää olla valmis tammikuussa 2016 4
1.1 Mitä asioita liittyy arkkitehtuuriin (rakennuksien kanssa)? Ketkä ovat kiinnostuneet, mitkä asiat kiinnostavat, millä tasolla? Mitä eri tietoja halutaan välittää? Kenelle tiedot halutaan esittää? 5
7
1.1 Mikä on ohjelmistoarkkitehtuuri? Mitä asioita ohjelmistoarkkitehtuuri sisältää? - Miten toiminnallisuus on jaettu alijärjestelmien kesken? - Miten alijärjestelmät kommunikoivat keskenään? - Miksi näin on tehty? 8
Standardien määritelmät Software architecture: The fundamental organization of a system embodied in its components, their relationships to each other and to the environment, and the principles guiding its design and evolution. (IEEE Standard 1471-2000) Software architecture: The fundamental conception of a system in its environment embodied in elements, their relationships to each other and to the environment, and the principles guiding its design and evolution. (ISO/IEC 42010) 9
Arkkitehtuuri järjestelmän kehitysperiaatteena "Architecture is the set of design decisions about any system that keeps its implementors and maintainers from exercising needless creativity." (D'Souza & Wills) - tietyt kiinnitetyt perusratkaisut - tietyn teknologian käyttö(tapa) - tiettyjen tietorakenteiden käyttö(tapa) - tiettyjen suunnittelumallien käyttö(tapa) - käyttösuhteiden säännöt - poikkeusten käsittelysäännöt Arkkitehtuuri = järjestelmän laki 10
Boehmin määritelmä: yhteys vaatimuksiin A software system architecture comprises a collection of software and system components, connections, and constraints a collection of system requirements a rationale which demonstrates that the components, connections, and constraints define a system that, if implemented, would satisfy the collection of system requirements 11
Arkkitehtuuritietämys (Kruchten & co.) Architectural Knowledge = Design Decisions+Design 12
Bass & Clements The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them. (Software architecture in Practice -kirjaa) 13
toisaalta Even though every system has an architecture, it does not necessarily follow that the architecture is known to any one. This reveals the difference between the architecture and the representation of that architecture. Unfortunately, an architecture can exist independently of its description or specification, which raises the importance of architecture documentation and architecture reconstruction. (Bass & Clements) 14
Kaksi eri arkkitehtuurikäsitystä Suunniteltu arkkitehtuuri Suunnittelijan tahdonilmaus, järjestelmälle määritelty, spesifikaatio Olemassa olevan järjestelmän arkkitehtuuri Järjestelmän ominaisuus, järjestelmän määrittelemä Ongelmia: Vain ideaalisessa maailmassa nämä ovat sama asia Yleensä ei tarkenneta kummasta puhutaan Suunniteltua arkkitehtuuria ei ole välttämättä dokumentoitu Toteutuksen arkkitehtuuri vaikeasti nähtävissä/määriteltävissä 17
Mitkä asiat vaikuttavat arkkitehdin päätökseen? Resources: I have two Scrum teams Experience: I have had bad experiences using Struts Requirements: The system should have response time under 1 s when there is 10000 users logged in the service. Personal preference: I prefer to use open source components over commercial ones Business goals: Company should take technology X in use within two years. Time-to-market: Product should be released next week,i just do this quick-n-dirty solution..and many other concerns. Architect 18
Arkkitehtuurifilosofiat arkkitehtuuri järjestelmä järjestelmä esitys kuvaa ratkaisut arkkitehtuuri arkkitehtuurin kuvaus Idealistinen arkkitehtuurin kuvaus Pragmaattinen 19
Ohjelmistoarkkitehtuuri ja laatuvaatimukset Ohjelmiston arkkitehtuuri määräytyy pääasiassa sen laatuvaatimusten, ei toiminnallisten vaatimusten perusteella Arkkitehtuuri on tapa ottaa huomioon järjestelmän laatuvaatimukset ohjelmistokehitysprosessissa Tässä laadulla ei viitata virheettömyyteen vaan siihen millä laadulla järjestelmä tekee loogiset toimintonsa Esimerkiksi Ohjelmiston vasteaika on normaalilla kuormalla 5 ms. Järjestelmän pitää olla toimintavalmis 3 minuutissa käynnistämisestä. 20
Laatuvaatimukset Mikä tahansa järjestelmä voidaan toiminnallisuuden puolesta toteuttaa millä tahansa arkkitehtuurilla, joka koostuu toisiinsa liittyvistä komponenteista (ts., toiminnallisuus voidaan sijoitella miten hyvänsä järjestelmän osiin, jos mikään osa ei ole irrallinen muusta järjestelmästä). Pelkän loogisen toiminnallisuuden kannalta arkkitehtuuri ei ole kovin merkittävä. Toiminta A Toiminta B A tarvitsee B:tä? Kuinka usein? Millainen yhteys? => Suorituskyky 21
Yhteenvetoa Opittiin ohjelmistoarkkitehtuurin käsitteestä jotain Törmättiin käsitteeseen ohjelmistoarkkitehti ja saatiin esimakua kaverin tehtävistä ja tehtäviin vaikuttavista asioista 22
Kysyttävää?