58301304 Ohjelmistotekniikan faktat ja fiktiot
Seminaari, syksy 2001 (2 ov)
Jukka Paakki
Aika ja paikka
19.9.-5.12, keskiviikkoisin klo 14-16, sali A320.
Huom! Kaksi viimeistä kertaa siirretty 2 viikolla!
Teema
Ohjelmistotekniikan yhteisössä elää useita yleisiä uskomuksia.
Muutama näistä uskomuksista on voitu osoittaa todeksi
(kuten se, että kaikkea mieleen juolahtavaa ei voi automatisoida
kirjoittamalla suorituskelpoinen ohjelma), joistakin vallitsee
"yleinen yksimielisyys" (kuten siitä, että käännetty koodi on
tehokkaampaa kuin tulkattu koodi), ja monet uskomukset ovat vailla
minkäänlaista analyyttistä pohjaa (kuten se, että ennen vanhaan
tehtiin parempia ohjelmia kuin nykyisin). Monelle uskomukselle on
olemassa myös täysin vastakkainen vastauskomus (kuten sille,
että Linux on parempi kuin Windows 2000).
Seminaarissa tarkastellaan ohjelmistotekniikan uskomuksia ja
erityisesti niitä, joita ei ole aukottomasti voitu todistaa
paikkansapitäviksi, sekä niitä, joille löytyy suunnilleen yhtä
yleinen vastauskomus. Esimerkkejä mahdollisista teemoista ovat
seuraavat:
- "Avoin ohjelmistokehitys (Open Source) tuottaa virheettömämpiä
ohjelmia kuin teollinen projektityö".
- "Ohjelmoijan tuottavuus on vakio riippumatta käytetystä
ohjelmointikielestä".
- "Käytettävyyden voi toteuttaa ohjelmaan jälkikäteen".
- "Suorituskyvyn voi viedä ohjelmaan jälkikäteen" vs
"Suorituskyky on suunniteltava ohjelmaan".
- "Olio-ohjelmointi on ihmiselle luontainen ohjelmointityyli".
- "Oliotekniikat ovat parempia kuin perinteiset rakenteiset tekniikat"
vs.
"Perinteiset tekniikat ovat parempia kuin oliotekniikat".
- "Ohjelmistojen testaaminen on tehokkaampaa kuin niiden
oikeaksi todistaminen" vs. "Ohjelmien oikeaksi todistaminen
lyö niiden testaamisen".
Työskentelytapa
Seminaarin osallistujat jaetaan pienryhmiin, joista jokainen pyrkii
osoittamaan jonkin ohjelmistotekniikan uskomuksen faktaksi tai
fiktioksi etsimällä sekä kirjallista todistusaineistoa että
käytännön kokemusperäistä tietoa. Seminaariesityksessään ryhmä
yrittää vakuuttaa muun kuulijakunnan valitsemalleen kannalle.
Mikäli uskomukselle on olemassa vastauskomus,
muodostetaan kaksi vastakkaista pienryhmää, jotka molemmat
etsivät todistusaineistoa omalle (vasta)uskomukselleen,
jolloin seminaarista muodostuu paneelikeskustelu.
Seminaaritilaisuudessa käydään täten debatti,
jossa kumpikin ryhmä esittää omalle uskomukselleen
perusteluja ja vastakkaisen ryhmän (vasta)uskomukselle vastaväitteitä.
Kuulijakunnan tehtävänä on lopuksi päättää, kumpi esitetyistä
(vasta)uskomuksista on uskottavampi.
Jokaisen ryhmän on laadittava kantansa tueksi kirjallinen
yhteenveto (noin 10 sivua), joka noudattaa muodoltaan tavanomaista
tieteellistä artikkelia. Yhteenveto on jätettävä seminaarinpitäjälle
vähintään viikkoa ennen paneelikeskustelua kahtena kappaleena.
Toinen yhteenveto arkistoidaan seminaarin mappiin (huone A412),
jotta muut seminaariin osallistujat (ml. ryhmän vastapuoli paneelissa) voivat
tutustua siihen etukäteen. Haluttaessa yhteenveto voidaan myös
linkittää tälle seittisivulle.
Paneelissa joku kummankin esiintyvän ryhmän jäsen pitää
aluksi suullisen alustuksen (noin 30 min), jossa hän esittää kirjalliseen yhteenvetoon
kirjattuja vakuuttavia argumentteja ryhmänsä edustaman kannan puolesta.
Kummankin ryhmän pidettyä alustuksensa käydään ryhmien välinen
paneelikeskustelu (noin 20 min) seminaarinpitäjän toimiessa
puheenjohtajana. Keskustelussa ryhmien edustamat kannat asetetaan
vastakkain, ja kummankin ryhmän tavoitteena on saada kuulijakunta
vakuuttumaan siitä, että sen edustama kanta on uskottavampi kuin
vastapuolen kanta. Paneelikeskustelun lopuksi muilla seminaariin
osallistujilla on mahdollisuus käyttää puheenvuoroja (noin 10 min) ja
ilmoittaa päätymisestään paneelin tuloksena jommallekummalle kannalle.
Yksi poissaolo on sallittu; ei kuitenkaan oman ryhmän
paneelivuorolla.
Esitiedot
Ohjelmistotuotanto ja Ohjelmistotuotantoprojekti.
Aikataulu
- Keskiviikko 19.9: Järjestäytyminen.
- Keskiviikko 3.10: Tietolähdekoosteet.
Jokainen ryhmä laatii 1-3 sivun pituisen kuvauksen käyttämästään
aineistosta, ja yksi ryhmän jäsen esittelee aineiston ja sen
keräämistavan suullisesti (5-10 min). Kirjallinen kuvaus jätetään
seminaarinpitäjälle kahtena kappaleena, joista toinen arkistoidaan
seminaarimappiin.
- Keskiviikko 24.10: Formaalit menetelmät.
Puolesta: Tuula Brorström, Maarit Saaresto.
Vastaan: Juha Kuosmanen, Teemu Paajanen.
Kirjallinen yhteenveto (2 kpl) jätettävä viimeistään 17.10.
- Keskiviikko 31.10: Oliomenetelmät.
Puolesta: Hannele Kyttä, Osku Salerma.
Vastaan: Mikko Talvitie, Turjo Tuohiniemi.
Kirjallinen yhteenveto (2 kpl) jätettävä viimeistään 24.10.
- Keskiviikko 21.11: Open Source.
Puolesta: Juha-Pekka Haataja, Ahti Nurminen, Jussi Paasonen.
Vastaan: Tero Hannula, Timo Immonen.
Kirjallinen yhteenveto (2 kpl) jätettävä viimeistään 31.10.
- Keskiviikko 28.11: Prosessit.
Puolesta: Lauri Aarnio, Antti Mattila, Antti Pietarinen.
Vastaan: Jyrki Haajanen, Jere Halonen, Marko Helskyaho.
Kirjallinen yhteenveto (2 kpl) jätettävä viimeistään 7.11.
Teemat ja kirjallisuutta
Ryhmien on etsittävä edustamansa kannan taakse mahdollisimman
vakuuttavaa todistusaineistoa, ei ns. "mutu-tietoa".
Mahdollisia tietolähteitä tärkeysjärjestyksessä ovat seuraavat:
- tieteelliset lehdet ja konferenssit
- luotetut (esimerkiksi yliopistojen ja tutkimuslaitosten) WWW-sivut
- kirjatut kokemukset ohjelmistoyrityksissä
- asiantuntijoiden haastattelut, esimerkiksi ohjelmistoyrityksissä.
Mikäli vedotaan haastatteluista saatuihin näkemyksiin,
on kirjallisen yhteenvedon liitteenä annettava esitetyt kysymykset,
kerrottava haastateltujen henkilöiden lukumäärä ja ammatti sekä
esitettävä (tilastollinen) analyysi kerätystä haastatteludatasta.
Open Source: puolesta
-
http://www.openresources.com/
- E.S. Raymond: The Cathedral and the Bazaar: Musing on Linux
and Open Source by an Accidental Revolutionary. O'Reilly, 1999.
Open Source: vastaan
- A. Mockus, R.T. Fielding, J. Herbsleb: A Case Study of
Open Source Software Development: The Apache Server.
In: Proc. 22nd IEEE Int. Conference on Software Engineering
(ICSE'22), Limerick, Ireland, 2000. IEEE Computer Society, 2000, 263-272.
- I.T. Bowman, R.C. Holt, N.V. Brewster: Linux as a Case Study:
Its Extracted Software Architecture. In:
Proc. 21st IEEE Int. Conference on Software Engineering
(ICSE'21), Los Angeles, CA, USA, 1999. IEEE Computer Society, 1999,
555-563.
- G. Wilson: Is the Open-Source Community Setting a Bad Example.
IEEE Software, January/February 1999, 23-25.
Formaalit menetelmät: puolesta
- Luqi, J.A. Goguen: Formal Methods: Promises and Problems.
IEEE Software, January/February 1997, 73-85.
- S. King et al.: Is Proof More Cost-Effective Than Testing?
IEEE Transactions on Software Engineering 26, 8, 2000, 675-686.
- G.J. Holzmann: Economics of Software Verification.
In: Proc. 2001 ACM SIGPLAN - SIGSOFT Workshop on
Program Analysis for Software Tools and Engineering
(PASTE'01), Snowbird, Utah, 2001, 80-85.
Supplement to ACM SIGPLAN Notices 36, 2001.
Formaalit menetelmät: vastaan
- J.C. Widmaier, C. Smidts, X. Huang: Producing More Reliable
Software: Mature Software Engineering Process vs. State-of-the-Art
Technology.
In: Proc. 22nd IEEE Int. Conference on Software Engineering
(ICSE'22), Limerick, Ireland, 2000. IEEE Computer Society, 2000, 88-93.
Ohjelmistoprosessit: puolesta
- F. O'Hara: European Experiences with Software Process Improvement.
In: Proc. 22nd IEEE Int. Conference on Software Engineering
(ICSE'22), Limerick, Ireland, 2000. IEEE Computer Society, 2000,
635-640.
- J.D. Herbsleb, D.R. Goldenson: A Systematic Survey of CMM
Experience and Results.
In: Proc. 18th IEEE Int. Conference on Software Engineering
(ICSE'18), Berlin, Germany, 1996. IEEE Computer Society, 1996, 323-330.
- G. Yamamura: Process Improvement Satisfies Employees.
IEEE Software, September/October 1999, 83-85.
- M. Diaz, J. Sligo: How Software Process Improvement Helped Motorola.
IEEE Software, September/October 1997, 75-81.
Ohjelmistoprosessit: vastaan
- J.C. Widmaier, C. Smidts, X. Huang: Producing More Reliable
Software: Mature Software Engineering Process vs. State-of-the-Art
Technology.
In: Proc. 22nd IEEE Int. Conference on Software Engineering
(ICSE'22), Limerick, Ireland, 2000. IEEE Computer Society, 2000, 88-93.
- R. Conradi, T. Dybå: An Empirical Study on the Utility of
Formal Routines to Transfer Knowledge and Experience.
In: Proc. Joint 8th European Software Engineering Conference
(ESEC) and 9th ACM SIGSOFT Symposium on the Foundations of
Software Engineering (FSE-9), Vienna, Austria, 2001.
ACM, 2001, 268-276.
Oliomenetelmät: puolesta
- A. Calio, M. Autiero, G. Bux: Software Process Improvement
by Object Technology.
In: Proc. 22nd IEEE Int. Conference on Software Engineering
(ICSE'22), Limerick, Ireland, 2000. IEEE Computer Society, 2000, 641-647.
-
L.C. Briand, C. Bunse, J.W. Daly:
A Controlled Experiment for Evaluating Quality Guidelines on the
Maintainability of Object-Oriented Designs.
IEEE Transactions on Software Engineering
27, 6, 2001, 513-530.
Oliomenetelmät: vastaan
- L. Hatton: Does OO Sync with How We Think?
IEEE Software, May/June, 1998, 46-54.
- M. Cartwright, M. Shepperd: An Empirical Investigation of an
Object-Oriented Software System.
IEEE Transactions on Software Engineering 26, 8, 2000, 786-796.
Yleistä kirjallisuutta
- IEEE Software
- IEEE Transactions on Software Engineering
- Computer (IEEE)
- Communications of the ACM
- Journal of Systems and Software
- Proceedings of IEEE International Conference
on Software Engineering (ICSE)
- Proceedings of European Software Engineering
Conference (ESEC)