ohjelmistoarkkitehtuurit kevät 2014 johdantoaohar/luennot_materiaali/ohar1_johdantoa.pdf · 1...
TRANSCRIPT
Ohjelmistoarkkitehtuurit
Kevät 2014
Johdantoa
Samuel Lahtinen
(Johannes Koskinen)
http://www.cs.tut.fi/~ohar/
8.1.2014 1 Ohjelmistoarkkitehtuurit 2012-2013
1 Johdanto
2
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
Ohjelmistoarkkitehtuurit 2013-2014
Arkkitehti?
3
http://www.codingthearchitecture.com
Ohjelmistoarkkitehtuurit 2013-2014
Onko tämä arkkitehtuuria?
•Ohjelmisto toteutetaan siten, että se käyttää
P2P-topologiaa
•Valitaan toteutusteknologiaksi QT
•Käytetään OpenSource-kirjastoa openssl
•Softa julkaistaan lisenssillä GPL
•Ohjelmisto toteutetaan käyttäen ketteriä
menetelmiä
•Ohjelmiston pitää olla valmis tammikuussa
2014
4 Ohjelmistoarkkitehtuurit 2013-2014
1.1 Mitä asioita liittyy
arkkitehtuuriin
(rakennuksien kanssa)?
5
Ketkä ovat kiinnostuneet, mitkä asiat kiinnostavat, millä tasolla?
Mitä eri tietoja halutaan välittää?
Kenelle tiedot halutaan esittää?
Ohjelmistoarkkitehtuurit 2013-2014
6 Ohjelmistoarkkitehtuurit 2013-2014
1.1 Mikä on
ohjelmistoarkkitehtuuri?
7
Mitä asioita ohjelmistoarkkitehtuuri sisältää?
- Miten toiminnallisuus on jaettu alijärjestelmien kesken?
- Miten alijärjestelmät kommunikoivat keskenään?
- Miksi näin on tehty?
Ohjelmistoarkkitehtuurit 2013-2014
Standardien määritelmät
8
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)
Ohjelmistoarkkitehtuurit 2013-2014
Arkkitehtuuri järjestelmän
kehitysperiaatteena
9
- 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
"Architecture is the set of design
decisions about any system that keeps
its implementors and maintainers
from exercising needless creativity."
(D'Souza & Wills)
Ohjelmistoarkkitehtuurit 2013-2014
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
10 Ohjelmistoarkkitehtuurit 2013-2014
Arkkitehtuuritietämys
(Kruchten & co.)
•Architectural Knowledge = Design
Decisions+Design
11 Ohjelmistoarkkitehtuurit 2013-2014
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 Practise -kirjaa)
12 Ohjelmistoarkkitehtuurit 2013-2014
…toisaalta…
13
… 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)
Ohjelmistoarkkitehtuurit 2013-2014
Kaksi eri arkkitehtuurikäsitystä
16
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ä
Ohjelmistoarkkitehtuurit 2013-2014
Architect
Mitkä asiat vaikuttavat arkkitehdin päätökseen?
Requirements: “The system should have
response time under 1 s when
there is 10000 users logged in the service.
Resources: “I have two Scrum teams”
Experience: “I have had bad
experiences using Struts”
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.
17 Ohjelmistoarkkitehtuurit 2013-2014
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ä.
19 Ohjelmistoarkkitehtuurit 2013-2014
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ä.
20
Toiminta
A
Toiminta
B
A tarvitsee B:tä? Kuinka usein? Millainen yhteys? => Suorituskyky
Ohjelmistoarkkitehtuurit 2013-2014
Yhteenvetoa •Opittiin ohjelmistoarkkitehtuurin käsitteestä jotain
•Törmättiin käsitteeseen ohjelmistoarkkitehti ja saatiin esimakua
kaverin tehtävistä ja tehtäviin vaikuttavista asioista
21 Ohjelmistoarkkitehtuurit 2013-2014
Kysyttävää?