CINXE.COM
Ohjelmistotuotanto – Wikipedia
<!DOCTYPE html> <html class="client-nojs" lang="fi" dir="ltr"> <head> <meta charset="UTF-8"> <title>Ohjelmistotuotanto – Wikipedia</title> <script>(function(){var className="client-js";var cookie=document.cookie.match(/(?:^|; )fiwikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":[",\t."," \t,"],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"fi normal","wgMonthNames":["","tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"],"wgRequestId":"c8a7aa1e-25f2-4552-a5cf-b91d841518c8","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"Ohjelmistotuotanto","wgTitle":"Ohjelmistotuotanto","wgCurRevisionId":22800305,"wgRevisionId":22800305,"wgArticleId":887,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null, "wgUserGroups":["*"],"wgCategories":["Lähdeviitteet puuttuvat","Seulonnan keskeiset artikkelit","Ohjelmistotuotanto"],"wgPageViewLanguage":"fi","wgPageContentLanguage":"fi","wgPageContentModel":"wikitext","wgRelevantPageName":"Ohjelmistotuotanto","wgRelevantArticleId":887,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive":true,"wgFlaggedRevsParams":{"tags":{"accuracy":{"levels":3}}},"wgStableRevisionId":22800305,"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"fi","pageLanguageDir":"ltr","pageVariantFallbacks":"fi"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":true,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":30000,"wgRelatedArticlesCompat":[],"wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true, "wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":true,"wgVector2022LanguageInHeader":false,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q80993","wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":false,"wgGEStructuredTaskRejectionReasonTextInputEnabled":false,"wgGELevelingUpEnabledForUser":false};RLSTATE={"ext.gadget.hidePersonalSandboxEdits":"ready","ext.gadget.fiwiki_flaggedrevs_css_rcfix":"ready","ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.cite.styles":"ready","skins.vector.styles.legacy":"ready","ext.flaggedRevs.basic":"ready","mediawiki.codex.messagebox.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","codex-search-styles":"ready","ext.uls.interlanguage":"ready", "wikibase.client.init":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["ext.cite.ux-enhancements","site","mediawiki.page.ready","mediawiki.toc","skins.vector.legacy.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.flaggedRevs.advanced","ext.gadget.publicarttablesort","ext.gadget.ViikonKilpailu","ext.gadget.WikiLovesMonunmets","ext.gadget.ProtectionIndicator","ext.gadget.frwiki_infobox_v3","ext.gadget.linkeddata","ext.gadget.perustiedotwikidatassa","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.compactlinks","ext.uls.interface","ext.cx.eventlogging.campaigns","ext.checkUser.clientHints","ext.growthExperiments.SuggestedEditSession","oojs-ui.styles.icons-media","oojs-ui-core.icons","wikibase.sidebar.tracking"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=fi&modules=codex-search-styles%7Cext.cite.styles%7Cext.flaggedRevs.basic%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediaBadges%7Cmediawiki.codex.messagebox.styles%7Cskins.vector.styles.legacy%7Cwikibase.client.init&only=styles&skin=vector"> <script async="" src="/w/load.php?lang=fi&modules=startup&only=scripts&raw=1&skin=vector"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=fi&modules=ext.gadget.fiwiki_flaggedrevs_css_rcfix%2ChidePersonalSandboxEdits&only=styles&skin=vector"> <link rel="stylesheet" href="/w/load.php?lang=fi&modules=site.styles&only=styles&skin=vector"> <meta name="generator" content="MediaWiki 1.44.0-wmf.4"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="Ohjelmistotuotanto – Wikipedia"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//fi.m.wikipedia.org/wiki/Ohjelmistotuotanto"> <link rel="alternate" type="application/x-wiki" title="Muokkaa" href="/w/index.php?title=Ohjelmistotuotanto&action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipedia (fi)"> <link rel="EditURI" type="application/rsd+xml" href="//fi.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://fi.wikipedia.org/wiki/Ohjelmistotuotanto"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.fi"> <link rel="alternate" type="application/atom+xml" title="Wikipedia-Atom-syöte" href="/w/index.php?title=Toiminnot:Tuoreet_muutokset&feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="skin-vector-legacy mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject mw-editable page-Ohjelmistotuotanto rootpage-Ohjelmistotuotanto skin-vector action-view"><div id="mw-page-base" class="noprint"></div> <div id="mw-head-base" class="noprint"></div> <div id="content" class="mw-body" role="main"> <a id="top"></a> <div id="siteNotice"><!-- CentralNotice --></div> <div class="mw-indicators"> </div> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Ohjelmistotuotanto</span></h1> <div id="bodyContent" class="vector-body"> <div id="siteSub" class="noprint">Wikipediasta</div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="contentSub2"></div> <div id="jump-to-nav"></div> <a class="mw-jump-link" href="#mw-head">Siirry navigaatioon</a> <a class="mw-jump-link" href="#searchInput">Siirry hakuun</a> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="fi" dir="ltr"><div class="noprint article-about-box" style="background-color: var( --background-color-neutral-subtle, #f9f9f9 ); color: var( --color-emphasized, #000000 ); font-size: 95%; padding: 0.2em 0.2em 0.2em 2em; margin-bottom: 1em; border: 1px solid #b6b6b6;"><i>Tämä artikkeli käsittelee ohjelmistotuotantoa. Asiaa käsittelevä kirja on <a href="/wiki/Ohjelmistotuotanto_(kirja)" title="Ohjelmistotuotanto (kirja)">Ohjelmistotuotanto (kirja)</a>.</i></div> <p><b>Ohjelmistotuotanto</b> on yhteisnimitys niille työnteon ja työnjohdon menetelmille, joita käytetään, kun tuotetaan <a href="/wiki/Tietokoneohjelma" title="Tietokoneohjelma">tietokoneohjelmia</a> sekä monista tietokoneohjelmista koostuvia <a href="/wiki/Tietokoneohjelmisto" class="mw-redirect" title="Tietokoneohjelmisto">tietokoneohjelmistoja</a>. Laajasti ymmärrettynä ohjelmistotuotanto kattaa kaiken tietokoneohjelmistojen valmistukseen liittyvän <a href="/w/index.php?title=Prosessinhallinta&action=edit&redlink=1" class="new" title="Prosessinhallinta (sivua ei ole)">prosessinhallinnan</a> sekä kaikki erilaiset <a href="/wiki/Ohjelmistokehitys" title="Ohjelmistokehitys">ohjelmistokehitysmenetelmät</a>. Ohjelmistotuotantoon kuuluu siis periaatteessa mikä tahansa toiminta, joka tähtää tietokoneohjelmien tai -ohjelmistojen valmistukseen. Tarve valmistukseen tulee asiakkaalta tai ohjelman tuottaja tekee <a href="/wiki/Markkinointitutkimus" title="Markkinointitutkimus">markkinointitutkimuksen</a> ja päättelee tarpeen ohjelmistolle. </p><p>Jotta ohjelmistojen valmistusta voitaisiin käsitellä järjestelmällisesti, ohjelmistotuotannossa on pyritty <a href="/wiki/Mallinnus" class="mw-redirect" title="Mallinnus">mallintamaan</a> ohjelmistojen valmistusprosessia niin sanotun elinkaarimallin mukaisesti. Elinkaarimallissa ohjelmiston valmistus pyritään näkemään mahdollisimman laajana, aikaan sidottuna prosessina, jossa ohjelmiston varsinainen tekninen valmistus on vain pieni – joskin äärimmäisen tärkeä osa – kokonaisketjua. </p><p>Ohjelmistotuotannossa tieteenhaarana tutkitaan myös ohjelmien rakenteellisia ominaisuuksia kuten <a href="/wiki/Dokumentointi" title="Dokumentointi">dokumentointia</a>, <a href="/wiki/Versionhallinta" class="mw-redirect" title="Versionhallinta">versionhallintaa</a>, sekä <a href="/w/index.php?title=J%C3%A4ljitett%C3%A4vyys&action=edit&redlink=1" class="new" title="Jäljitettävyys (sivua ei ole)">jäljitettävyyttä</a>. Tutkimuksen kohteena ovat myös erilaiset ohjelmistojen tukiprosessit, kuten <a href="/w/index.php?title=M%C3%A4%C3%A4rittelyprosessi&action=edit&redlink=1" class="new" title="Määrittelyprosessi (sivua ei ole)">määrittelyprosessi</a>, <a href="/w/index.php?title=Yll%C3%A4pitoprosessi&action=edit&redlink=1" class="new" title="Ylläpitoprosessi (sivua ei ole)">ylläpitoprosessi</a> ja <a href="/wiki/Projektinhallinta" title="Projektinhallinta">projektinhallinta</a>. Myös erilaisia toteutus- ja suunnittelumenetelmiä, joilla itse tuotannon laatua voidaan tehostaa, tutkitaan. </p><p>Ohjelmistotuotantoon kuuluvat myös erilaiset <a href="/wiki/Laatuj%C3%A4rjestelm%C3%A4" title="Laatujärjestelmä">laatujärjestelmät</a>, joita käytetään erityisesti yrityksissä dokumentoimaan yrityksen toimintatapoja. Laatujärjestelmän tavoitteena on dokumentoida ja ottaa käyttöön hyväksi havaitut toimintatavat, jotka parantavat yrityksen toimintaprosessin laatua. </p><p>Kaupallista ohjelmistokehitystä tehdään yleensä <a href="/wiki/Projekti" title="Projekti">projektityönä</a>. Toisaalta useiden ohjelmistojen kehitys ja ylläpito jatkuvat koko niiden elinkaaren ajan ilman ennakoitavaa päätepistettä. Ylläpitotyökin voidaan jakaa määrämittaisiksi toisiaan seuraaviksi projekteiksi. Projektin toteuttamista ohjaavat ohjelmistoprosessit, jotka kuvaavat toistuvan tavan toteuttaa ohjelmistoprojekteja. Prosessit vaihtelevat suuresti laajuudeltaan ja sen suhteen, millaisia menettelytapaohjeita ne antavat. Noudatettava prosessimalli voi olla kevyt, jos kehityshankkeet ovat pieniä ja niiltä odotetaan suurta kustannustehokkuutta. Raskaita prosesseja käytetään toimialoilla, joissa ohjelmistoilta odotetaan poikkeuksellisen suurta luotettavuutta. </p> <div id="toc" class="toc" role="navigation" aria-labelledby="mw-toc-heading"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none" /><div class="toctitle" lang="fi" dir="ltr"><h2 id="mw-toc-heading">Sisällys</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div> <ul> <li class="toclevel-1 tocsection-1"><a href="#Ohjelmistotuotannon_historia"><span class="tocnumber">1</span> <span class="toctext">Ohjelmistotuotannon historia</span></a></li> <li class="toclevel-1 tocsection-2"><a href="#Ohjelmistotuotannon_merkityksestä"><span class="tocnumber">2</span> <span class="toctext">Ohjelmistotuotannon merkityksestä</span></a></li> <li class="toclevel-1 tocsection-3"><a href="#Vaihejakomallit"><span class="tocnumber">3</span> <span class="toctext">Vaihejakomallit</span></a> <ul> <li class="toclevel-2 tocsection-4"><a href="#Vesiputousmalli"><span class="tocnumber">3.1</span> <span class="toctext">Vesiputousmalli</span></a></li> <li class="toclevel-2 tocsection-5"><a href="#Prototyyppimenetelmä"><span class="tocnumber">3.2</span> <span class="toctext">Prototyyppimenetelmä</span></a></li> <li class="toclevel-2 tocsection-6"><a href="#RUP"><span class="tocnumber">3.3</span> <span class="toctext">RUP</span></a></li> <li class="toclevel-2 tocsection-7"><a href="#Ketterät_menetelmät"><span class="tocnumber">3.4</span> <span class="toctext">Ketterät menetelmät</span></a></li> <li class="toclevel-2 tocsection-8"><a href="#Muita_menetelmiä"><span class="tocnumber">3.5</span> <span class="toctext">Muita menetelmiä</span></a></li> <li class="toclevel-2 tocsection-9"><a href="#Eri_tuotantomalleista"><span class="tocnumber">3.6</span> <span class="toctext">Eri tuotantomalleista</span></a></li> </ul> </li> <li class="toclevel-1 tocsection-10"><a href="#Ohjelmiston_elinkaaren_vaiheet"><span class="tocnumber">4</span> <span class="toctext">Ohjelmiston elinkaaren vaiheet</span></a> <ul> <li class="toclevel-2 tocsection-11"><a href="#Vaatimusanalyysi"><span class="tocnumber">4.1</span> <span class="toctext">Vaatimusanalyysi</span></a></li> <li class="toclevel-2 tocsection-12"><a href="#Järjestelmäsuunnittelu"><span class="tocnumber">4.2</span> <span class="toctext">Järjestelmäsuunnittelu</span></a></li> <li class="toclevel-2 tocsection-13"><a href="#Ohjelmistosuunnittelu"><span class="tocnumber">4.3</span> <span class="toctext">Ohjelmistosuunnittelu</span></a></li> <li class="toclevel-2 tocsection-14"><a href="#Toteutus"><span class="tocnumber">4.4</span> <span class="toctext">Toteutus</span></a></li> <li class="toclevel-2 tocsection-15"><a href="#Testaus"><span class="tocnumber">4.5</span> <span class="toctext">Testaus</span></a></li> <li class="toclevel-2 tocsection-16"><a href="#Julkaisu_tai_käyttöönotto"><span class="tocnumber">4.6</span> <span class="toctext">Julkaisu tai käyttöönotto</span></a></li> <li class="toclevel-2 tocsection-17"><a href="#Ylläpito"><span class="tocnumber">4.7</span> <span class="toctext">Ylläpito</span></a></li> <li class="toclevel-2 tocsection-18"><a href="#Elinkaaren_loppu"><span class="tocnumber">4.8</span> <span class="toctext">Elinkaaren loppu</span></a></li> </ul> </li> <li class="toclevel-1 tocsection-19"><a href="#Ohjelmistotuotannon_työkalut"><span class="tocnumber">5</span> <span class="toctext">Ohjelmistotuotannon työkalut</span></a></li> <li class="toclevel-1 tocsection-20"><a href="#Katso_myös"><span class="tocnumber">6</span> <span class="toctext">Katso myös</span></a></li> <li class="toclevel-1 tocsection-21"><a href="#Lähteet"><span class="tocnumber">7</span> <span class="toctext">Lähteet</span></a> <ul> <li class="toclevel-2 tocsection-22"><a href="#Viitteet"><span class="tocnumber">7.1</span> <span class="toctext">Viitteet</span></a></li> </ul> </li> <li class="toclevel-1 tocsection-23"><a href="#Kirjallisuutta"><span class="tocnumber">8</span> <span class="toctext">Kirjallisuutta</span></a></li> <li class="toclevel-1 tocsection-24"><a href="#Aiheesta_muualla"><span class="tocnumber">9</span> <span class="toctext">Aiheesta muualla</span></a></li> </ul> </div> <div class="mw-heading mw-heading2"><h2 id="Ohjelmistotuotannon_historia">Ohjelmistotuotannon historia</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ohjelmistotuotanto&veaction=edit&section=1" title="Muokkaa osiota Ohjelmistotuotannon historia" class="mw-editsection-visualeditor"><span>muokkaa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Ohjelmistotuotanto&action=edit&section=1" title="Muokkaa osion lähdekoodia: Ohjelmistotuotannon historia"><span>muokkaa wikitekstiä</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Ensimmäiset digitaaliset <a href="/wiki/Tietokone" title="Tietokone">tietokoneet</a> tulivat käyttöön 1940-luvulla. Näiden koneiden suorittamat tehtävät määriteltiin muuttamalla koneiden sähköisiä kytkentöjä. <a href="/wiki/Von_Neumannin_arkkitehtuuri" title="Von Neumannin arkkitehtuuri">Von Neumannin arkkitehtuurin</a> mukaiset ohjelmoitavat tietokoneet kehitettiin 40-luvun lopulla, jolloin myös ensimmäiset tietojärjestelmä- ja ohjelmistokehityshankkeet käynnistettiin. </p><p>Ennen vuotta 1954 lähes kaikki ohjelmointi tehtiin <a href="/wiki/Matalan_tason_ohjelmointikieli" title="Matalan tason ohjelmointikieli">matalan tason ohjelmointikielillä</a> kuten <a href="/wiki/Konekieli" title="Konekieli">konekielellä</a> tai <a href="/wiki/Assembly_(ohjelmointikieli)" title="Assembly (ohjelmointikieli)">assemblyllä</a>.<sup id="cite_ref-spoforjb_1-0" class="reference"><a href="#cite_note-spoforjb-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> Suuri osa ohjelmoijien työstä liittyi tuon ajan tietokoneiden rajoitteisiin.<sup id="cite_ref-spoforjb_1-1" class="reference"><a href="#cite_note-spoforjb-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> </p><p>Termi <i>software engineering</i> (<i>ohjelmistosuunnittelu</i>) on esiintynyt vuonna 1965 <i>Computers and Automation</i> -lehden yritysluettelossa.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> Myöhemmin termi esiintyi vuonna 1966 <a href="/wiki/Association_for_Computing_Machinery" title="Association for Computing Machinery">ACM:n</a> puheenjohtajan Anthony A. Oettingerin kirjeessä <i><a href="/w/index.php?title=Communications_of_the_ACM&action=edit&redlink=1" class="new" title="Communications of the ACM (sivua ei ole)">Communications of the ACM</a></i> -lehdessä.<sup id="cite_ref-bmorigin_3-0" class="reference"><a href="#cite_note-bmorigin-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> Oettinger kirjoittaa <a href="/wiki/Tietojenk%C3%A4sittelytiede" title="Tietojenkäsittelytiede">tietojenkäsittelytieteen</a> olevan yksistään liian rajaava termi ja huomauttaa ammattimaisen insinöörialan luonteesta ohjelmiston ja laitteiston suunnittelussa.<sup id="cite_ref-bmorigin_3-1" class="reference"><a href="#cite_note-bmorigin-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> </p><p><i>Ohjelmistokriisi</i> tunnistettiin 1960-luvun loppupuolella.<sup id="cite_ref-swrkcw_5-0" class="reference"><a href="#cite_note-swrkcw-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> Sillä tarkoitettiin tilannetta, jossa pula ohjelmoijista ja selkeiden systeemityömenetelmien puuttuminen johti heikkoon tuottavuuteen, paljon <a href="/wiki/Ohjelmointivirhe" title="Ohjelmointivirhe">ohjelmointivirheitä</a> sisältäviin ohjelmiin ja kustannusten karkaamiseen käsistä. 1900-luvun loppupuolella alkanut tietokoneohjelmien merkityksen ja lukumäärän kasvu ovat tuoneet julkisuuteen lukuisia tietokoneiden aiheuttamia virheitä, jotka ovat lähes aina olleet seurausta inhimillisistä erehdyksistä: tietokoneohjelmien <a href="/wiki/L%C3%A4hdekoodi" title="Lähdekoodi">lähdekoodeissa</a> on ollut virheitä tai ohjelmien <a href="/wiki/K%C3%A4ytett%C3%A4vyys" title="Käytettävyys">käytettävyys</a> on ollut huono. Ohjelmistotuotanto tutkimusalueena on kehitetty vastaamaan kysymykseen, miten ohjelmistoja tulisi valmistaa niin, että niiden laatu olisi mahdollisimman korkea. <a href="/wiki/Ohjelmiston_laatu" title="Ohjelmiston laatu">Ohjelmiston laatu</a> pitää tässä yhteydessä käsittää ohjelmiston tavoiteltavana toimintana, mikä ei ole sama asia kuin lähdekoodin tai <a href="/wiki/K%C3%A4ytt%C3%B6liittym%C3%A4" title="Käyttöliittymä">käyttöliittymän</a> täydellinen virheettömyys. </p> <div class="mw-heading mw-heading2"><h2 id="Ohjelmistotuotannon_merkityksestä"><span id="Ohjelmistotuotannon_merkityksest.C3.A4"></span>Ohjelmistotuotannon merkityksestä</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ohjelmistotuotanto&veaction=edit&section=2" title="Muokkaa osiota Ohjelmistotuotannon merkityksestä" class="mw-editsection-visualeditor"><span>muokkaa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Ohjelmistotuotanto&action=edit&section=2" title="Muokkaa osion lähdekoodia: Ohjelmistotuotannon merkityksestä"><span>muokkaa wikitekstiä</span></a><span class="mw-editsection-bracket">]</span></span></div> <p><a href="/wiki/Ohjelmistoteollisuus" title="Ohjelmistoteollisuus">Ohjelmistoteollisuus</a> on <a href="/wiki/Suomi" title="Suomi">Suomen</a> nopeimmin kasvava vientiala.<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> Ohjelmistoalan merkittävin alatoimiala on ohjelmistojen suunnittelu ja valmistus.<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading2"><h2 id="Vaihejakomallit">Vaihejakomallit</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ohjelmistotuotanto&veaction=edit&section=3" title="Muokkaa osiota Vaihejakomallit" class="mw-editsection-visualeditor"><span>muokkaa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Ohjelmistotuotanto&action=edit&section=3" title="Muokkaa osion lähdekoodia: Vaihejakomallit"><span>muokkaa wikitekstiä</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Ohjelmiston tai ohjelman tuottaminen on laaja ja monimutkainen tehtävä. Onnistuneen tuotannon varmistamiseksi kehitystyö jaetaan osiin. Seuraavaan osaan ei voida edetä, ennen kuin edellinen osa on tarpeellisin osin saatu valmiiksi. Tätä ositusta ohjelmien suunnittelussa sanotaan vaihejakomalliksi. </p> <div class="mw-heading mw-heading3"><h3 id="Vesiputousmalli">Vesiputousmalli</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ohjelmistotuotanto&veaction=edit&section=4" title="Muokkaa osiota Vesiputousmalli" class="mw-editsection-visualeditor"><span>muokkaa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Ohjelmistotuotanto&action=edit&section=4" title="Muokkaa osion lähdekoodia: Vesiputousmalli"><span>muokkaa wikitekstiä</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Tässä perinteisessä prosessissa vaiheet soljuvat eteenpäin kuin vesiputous tasolta toiselle (vain yhteen suuntaan), ja siksi tätä prosessia kutsutaankin <i><a href="/wiki/Vesiputousmalli" title="Vesiputousmalli">vesiputousmalliksi</a></i>. Ajatuksena on, että kukin vaiheista tuottaa <i>dokumentin</i> tai joukon dokumentteja, jotka toimivat syötteenä seuraavalle vaiheelle. Esimerkiksi <a href="/w/index.php?title=Vaatimusanalyysi&action=edit&redlink=1" class="new" title="Vaatimusanalyysi (sivua ei ole)">vaatimusanalyysi</a> määrää ja asettaa vähimmäisvaatimukset ja rajat toiminnalliselle määrittelylle, jotta määrittelyn lopussa voidaan tarkastaa, vastaako määritelty ohjelmisto vaatimusanalyysin mukaista järjestelmää. Toisaalta taas toteutusvaiheessa (koodaus) teknisen määrittelyn pitäisi kattaa ne tarvittavat tiedot, joiden perusteella ohjelmisto voidaan kirjoittaa. </p><p>Vesiputousmallissa suurin vaikeus on suunnitella koko tuote kerralla toteutuskuntoon. Käytännössä tuotantoprosessi on usein <i>iteratiivinen</i>, eli suunnittelua ja toteutusta tehdään pienimmissä osissa ja prosessia toistetaan. Näin ohjelmisto kehittyy <i>inkrementaalisesti</i> eli koko ajan kasvaen kohti lopullista muotoaan. Tästä käytännön sanelemasta tarpeesta ovat syntyneet useat iteratiiviset prosessimallit, kuten <a href="/wiki/RUP" title="RUP">Rational Unified Process</a>, spiraalimalli tai niin sanottu <a href="/wiki/Ketter%C3%A4_ohjelmistokehitys" title="Ketterä ohjelmistokehitys">ketterä kehitys</a>. </p><p>Kun vesiputousmalliin yhdistetään joka vaihetta vastaava testaus (esimerkiksi vaatimusmäärittelystä hyväksymistestaus) aikajanalle syntyy niin kutsuttu <i>V-malli</i>, jonka vasen sakara kuvastaa prosessin vaiheita ja oikea kunkin testausta. Prosessia, joka toistaa alemman tason suunnittelua ja toteutusta, kutsutaankin <i>W-malliksi</i>, jossa keskisakara kuvastaa iteraatiota. </p><p>Vesiputousmalli kuvastaa ohjelmistotuotantoa teoreettisella tasolla hyvin, mutta sen soveltuvuudesta käytännön ohjelmistotuotantoon ollaan erimielisiä. Vesiputousmallin tärkein ansio onkin antaa puitteet, joita myös iteratiiviset prosessit noudattavat, vaikkakin huomattavasti tiheämmissä sykleissä ja kevyemmillä menetelmillä. Voidaankin sanoa, että kaikki ohjelmistotuotantohankkeet noudattavat jollain tasolla vesiputousmallia, mutta eivät välttämättä toteuta kaikkia sen vaiheita dokumentoiduilla menetelmillä. </p> <div class="mw-heading mw-heading3"><h3 id="Prototyyppimenetelmä"><span id="Prototyyppimenetelm.C3.A4"></span>Prototyyppimenetelmä</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ohjelmistotuotanto&veaction=edit&section=5" title="Muokkaa osiota Prototyyppimenetelmä" class="mw-editsection-visualeditor"><span>muokkaa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Ohjelmistotuotanto&action=edit&section=5" title="Muokkaa osion lähdekoodia: Prototyyppimenetelmä"><span>muokkaa wikitekstiä</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Prototyyppimenetelmässä ohjelman kehittäminen etenee spiraalimaisesti. Prototyyppimallissa ulkoasu (<a href="/wiki/K%C3%A4ytt%C3%B6liittym%C3%A4" title="Käyttöliittymä">käyttöliittymä</a>) rakennetaan ensin ja vasta sitten spiraalimaisesti laajenevin kehin tuotteen liiketoiminnallinen kerros (bisneslogiikka) sekä tietokantakerros. Menetelmän etuna asiakas saa nopeasti nähtäväksi tuotteen lopullisen ulkoasun. Asiakas voi jo tässä vaiheessa kertoa, jos kehittelijät ovat toteuttaneet jotain toisin kuin hän on halunnut. Mahdolliset muutokset on vielä helppo ja kustannuksiltaan edullista ja työmäärältään vähäistä tehdä tässä vaiheessa. Prototyyppimenetelmä on hyvä myös silloin kun (asiakkaan) vaatimukset muuttuvat usein. </p><p>Kun asiakas on hyväksynyt kehityskierroksen esitetyn <a href="/wiki/Prototyyppi" title="Prototyyppi">prototyypin</a>, kehittelyä jatketaan spiraalin laajenevalla kehällä. Syvennetään ja laajennetaan suunnittelua. Kun kehitysprosessi on kiertänyt kokonaisen ympyrän, seuraavaa prototyyppiä esitellään asiakkaalle. Näin jatketaan iteratiivisesti, kunnes päädytään tuotteen lopulliseen kehitysversioon. Kun asiakas on hyväksynyt tuotteen, se on valmis. </p> <div class="mw-heading mw-heading3"><h3 id="RUP">RUP</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ohjelmistotuotanto&veaction=edit&section=6" title="Muokkaa osiota RUP" class="mw-editsection-visualeditor"><span>muokkaa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Ohjelmistotuotanto&action=edit&section=6" title="Muokkaa osion lähdekoodia: RUP"><span>muokkaa wikitekstiä</span></a><span class="mw-editsection-bracket">]</span></span></div> <p><a href="/wiki/RUP" title="RUP">RUP</a> (<i>Rational Unified Process</i>) perustuu peräkkäisiin iteraatioihin, joista jokainen iteraatio suunnitellaan vesiputousmallin mukaisesti. Kehittäminen jakautuu neljään vaiheeseen: aloitus, tarkennus, rakennus ja käyttöönotto. </p> <div class="mw-heading mw-heading3"><h3 id="Ketterät_menetelmät"><span id="Ketter.C3.A4t_menetelm.C3.A4t"></span>Ketterät menetelmät</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ohjelmistotuotanto&veaction=edit&section=7" title="Muokkaa osiota Ketterät menetelmät" class="mw-editsection-visualeditor"><span>muokkaa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Ohjelmistotuotanto&action=edit&section=7" title="Muokkaa osion lähdekoodia: Ketterät menetelmät"><span>muokkaa wikitekstiä</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Nopeasti muuttuvassa ympäristössä ennalta suunnittelun vaikeus on noussut suurimmaksi esteeksi perinteiselle vesiputousmallille. Iteratiivinen prosessi antaa mahdollisuuden muuttaa projektin kulkua ja suuntaa hallitusti kesken prosessin. Ohjelmisto ei useinkaan tule kerralla valmiiksi, ja monet ohjelmistotuotteet jatkavat kehitystään julkaisun jälkeenkin. Nopeimmin kehittyvillä ohjelmistotuotannon aloilla ja etenkin pienemmissä ohjelmistoprojekteissa on omaksuttu niin kutsuttuja <a href="/wiki/Ketter%C3%A4_ohjelmistokehitys" title="Ketterä ohjelmistokehitys">ketteriä ohjelmistoprosesseja</a>, jotka korostavat muutosten hallintaa ja nopeita iteraatiosyklejä. Periaate on suunnata ja korjata kehittelyä mahdollisimman aikaisessa vaiheessa. Virheellistä kehitystyötä on tehty silloin vasta mahdollisimman vähän ja kehittelyn resurssien (muun muassa aika- ja kustannusresurssit) hukkaaminen on mahdollisimman vähäistä. </p><p>Yksi uusimpia ketteriä menetelmiä on <a href="/wiki/Scrum" title="Scrum">Scrum</a>. </p> <div class="mw-heading mw-heading3"><h3 id="Muita_menetelmiä"><span id="Muita_menetelmi.C3.A4"></span>Muita menetelmiä</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ohjelmistotuotanto&veaction=edit&section=8" title="Muokkaa osiota Muita menetelmiä" class="mw-editsection-visualeditor"><span>muokkaa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Ohjelmistotuotanto&action=edit&section=8" title="Muokkaa osion lähdekoodia: Muita menetelmiä"><span>muokkaa wikitekstiä</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Muita ohjelmankehitysmenetelmiä on muun muassa <a href="/wiki/Suihkul%C3%A4hdemalli" title="Suihkulähdemalli">Suihkulähdemalli</a>. Menetelmässä ohjelma koodataan suoraan ja sen jälkeen luodaan dokumentointi. Varsinaista mallinnusta ja suunnittelua ei tässä menetelmässä ole. Suunnittelu tapahtuu koodaajan mielessä. Suihkulähdemalli soveltuu pienien (apu)ohjelmien tekoon. Laajempien ohjelmistojen suunnittelun hallinta ei onnistu suihkulähdemenetelmällä. </p><p>EVO-mallissa rakennetaan ensin ydinjärjestelmä, jota kehitellään edelleen seuraavissa projektin iteraatioissa. </p> <div class="mw-heading mw-heading3"><h3 id="Eri_tuotantomalleista">Eri tuotantomalleista</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ohjelmistotuotanto&veaction=edit&section=9" title="Muokkaa osiota Eri tuotantomalleista" class="mw-editsection-visualeditor"><span>muokkaa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Ohjelmistotuotanto&action=edit&section=9" title="Muokkaa osion lähdekoodia: Eri tuotantomalleista"><span>muokkaa wikitekstiä</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Vaikka yllä kuvatut vaiheet ovat enemmän tai vähemmän osana kaikkea ohjelmistotuotantoa, niin niitä voidaan soveltaa eri tavoin. Usein esitetty (ideaali)malli on nk. <i>vesiputousmalli</i>, missä kukin vaihe tehdään loppuun ja hyväksytetään ennen seuraavaan siirtymistä. Mallin heikkoutena on sen <i>utopistisuus</i> ainakin jossain määrin, ja lisäksi vesiputousmallissa syntyvä lopputuote tulee asiakkaan nähtäväksi vasta projektin loppuvaiheessa. Lisäksi havaitun virheen korjaaminen voidaan joutua tekemään iteratiivisesti edellisiin vaiheisiin. Se on aikaavievä ja kallis prosessi. </p><p><i>Prototyyppimalli</i> perustuu siihen ajatukseen, että suuri osa projektiin liittyvistä kysymyksistä ja ongelmista selviää vasta, kun tuote on ensimmäisen kerran tehty. Mallissa tehdäänkin alussa hyvin karkea ja erittäin paljonkin yksinkertaistettu malli nopeasti valmiiksi, johon myös asiakas voi tutustua. Prototyypin kautta asiakas osaa esittää tarkemmin vaatimuksiaan havaitessaan konkreettisesti, minkä tyyppinen myöhemmin syntyvä lopullinen tuote olisi. Toisaalta myös kehittäjät oppivat erinäisistä prototyypin valmistusvaiheessa esiintyneistä ongelmista ja rajoitteista, ja kykenevät siten kehittämään esimerkiksi paremman arkkitehtuurin lopulliseen versioon, joka tuotettaisiin esimerkiksi vesiputousmallin mukaisesti. </p><p>Prototyyppimallissa suuri kiusaus voi olla käyttää jo toteutettuja ohjelmistokomponentteja lopputuotteessa. Näin ei kuitenkaan tule tehdä, koska silloin menetetään prototyyppimallin perusidea. </p><p>Myös muita yleisiä malleja on kehitetty, kuten <i><a href="/w/index.php?title=Inkrementaalinen_malli&action=edit&redlink=1" class="new" title="Inkrementaalinen malli (sivua ei ole)">inkrementaalinen malli</a></i>, jossa ohjelmisto rakennetaan vesiputousmallin mukaisesti siten, että 1. versio on hyvin yksinkertainen toiminnoiltaan. Ensimmäiseen versioon on siis toteutettu vain kaikkein kriittisimmät tai eniten toivotuimmat toiminnot. Seuraavat sukupolvet lisäävät aina uusia ominaisuuksia. Jos jokainen sukupolvi sisältää vaiheet aina vesiputousmallin alusta asti, on kyseessä <i><a href="/w/index.php?title=Iteratiivinen_malli&action=edit&redlink=1" class="new" title="Iteratiivinen malli (sivua ei ole)">iteratiivinen malli</a></i>. Tällöin sukupolvea kutsutaan iteraatioksi. Niin sanotussa <i><a href="/wiki/Ketter%C3%A4_ohjelmistokehitys" title="Ketterä ohjelmistokehitys">ketterässä ohjelmistokehityksessä</a></i> uusia versioita tuotetaan usein, ja uusien ominaisuuksien tärkeysjärjestys arvioidaan uudestaan kunkin kierroksen jälkeen. </p><p>Ohjelmien suunnittelu voidaan ajatella spesifikaatioiden (määritysten) luomisena. Suunnittelussa edellinen vaihe luo spesifikaation, joka on syötteenä seuraavalle vaiheelle. Spesifikaatiot voidaan jaotella formaaleiksi ja informaaleiksi spesifikaatioiksi. Formaalit menetelmät ovat jäykkiä, mutta niiden käsittely on helppoa ja käsittely voidaan koneellistaa. Informaalien menetelmien ilmaisuvoima on hyvä, mutta käsittely monimutkaisempaa. </p><p>Formaalit menetelmät käyttävät matemaattisen eksakteja määritelmiä luotaessa, ja niiden tavoitteena on tuotettavan ohjelmiston oikeellisuus, esimerkiksi todistamalla jokin ohjelma tai sen käyttämä <a href="/wiki/Algoritmi" title="Algoritmi">algoritmi</a> oikein toimivaksi. Niissä ongelmana on kuitenkin niiden toteuttamisessa vaadittava matemaattinen pätevyys, sekä asiakkaiden suhteen helposti vaikeaselkoisuus. Toisaalta voidaan myös ajatella, että ongelma ohjelmien käsitettävyydestä vain siirtyy matematiikan puolelle – vaikka ohjelma olisikin todistettu oikeaksi, niin ei ole mitenkään itsestään selvää, että todistamisvaiheessa ei olisi virhettä, ja pitkästä matemaattisesta todistuksesta virheen etsiminen voi olla aivan yhtä vaikeaa (tai vaikeampaa) kuin sen itse ohjelmakoodista etsiminen. </p> <div class="mw-heading mw-heading2"><h2 id="Ohjelmiston_elinkaaren_vaiheet">Ohjelmiston elinkaaren vaiheet</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ohjelmistotuotanto&veaction=edit&section=10" title="Muokkaa osiota Ohjelmiston elinkaaren vaiheet" class="mw-editsection-visualeditor"><span>muokkaa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Ohjelmistotuotanto&action=edit&section=10" title="Muokkaa osion lähdekoodia: Ohjelmiston elinkaaren vaiheet"><span>muokkaa wikitekstiä</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Ohjelmiston elinkaari jakautuu kahteen pääluokkaan: kehitys ja ylläpito. Ohjelman kehitykseen kuuluvat <a href="/w/index.php?title=Vaatimusm%C3%A4%C3%A4rittely&action=edit&redlink=1" class="new" title="Vaatimusmäärittely (sivua ei ole)">vaatimusmäärittely</a>, ohjelmistosuunnittelu, toteutus, testaus, julkistus ja käyttöönotto. </p><p>Ennenaikainen-Alpha on teknologianäyte ohjelmiston yhdestä tai kahdesta ydintoiminnosta. Vaihe koostuu ennen kaikkea toimintojen suunnittelusta. Alpha on ohjelmiston kehityksen ensimmäinen vaihe, jonka aikana ohjelmisto suunnitellaan pääpiirteissään ja jonka aikana ohjelmiston toiminnot luodaan. Beta on vaihe, jonka aikana ohjelmiston toiminnallisuus on suunniteltu loppuun. Vaiheen aikana on tarkoitus viimeistellä toiminnot ja tuottaa ohjelmisto tilaan, jossa se kykenee toimimaan käytännön tilanteessa omillaan. </p> <div class="mw-heading mw-heading3"><h3 id="Vaatimusanalyysi">Vaatimusanalyysi</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ohjelmistotuotanto&veaction=edit&section=11" title="Muokkaa osiota Vaatimusanalyysi" class="mw-editsection-visualeditor"><span>muokkaa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Ohjelmistotuotanto&action=edit&section=11" title="Muokkaa osion lähdekoodia: Vaatimusanalyysi"><span>muokkaa wikitekstiä</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Vaatimusanalyysin eli vaatimusmäärittelyn tarkoituksena on selvittää ne ohjelmistotuotteelle asetetut <a href="/wiki/Ohjelmistovaatimukset" title="Ohjelmistovaatimukset">ohjelmistovaatimukset</a>, mitkä valmiin järjestelmän tulisi täyttää. Vaatimusanalyysin tarkoituksena ei ole ottaa millään tavoin kantaa siihen, <i>miten</i> nämä tavoitteet saavutetaan. Näin toimitaan siksi, että on edullisinta siirtää toteutusmenetelmiin liittyvät päätökset mahdollisimman myöhäiseen vaiheeseen. Tyypillisesti ohjelmiston tekninen toiminta muuttuu sen elinkaaren myötä monistakin syistä, ja muutosten tekeminen on sitä kalliimpaa taloudellisesti, mitä aikaisempaan vaiheeseen ne joudutaan kohdistamaan. </p><p>Toisinaan vaatimuksiin voi toki kuulua <i>rajoituksia</i>, jotka esimerkiksi sitovat toteutuksen tiettyyn <a href="/wiki/Ohjelmointikieli" title="Ohjelmointikieli">ohjelmointikieleen</a> esimerkiksi asiakkaan erityistarpeiden vuoksi. </p><p>Esimerkiksi ohjelmistotuotteelle asetettuja vaatimuksia voisivat olla seuraavat: ohjelmiston pitää kyetä numeeriseen sekä symboliseen laskentaan ja lukemaan käyttäjältä tarvittavat syötteet. Nyt huomattavaa on, että tässä vaatimuksessa ei ole kuvattu esimerkiksi sitä, millaisessa muodossa syöte tulee antaa, onko järjestelmä graafinen vai ei, pitääkö tiloja kyetä tallentamaan jne. Yksi suurimpia vaikeuksia vaatimusanalyysissä (kuin myös muissa vaiheissa) onkin huomata se, onko saatujen tietojen määrä riittävä, jotta seuraavaan vaiheeseen voidaan edetä. Sen vuoksi kukin vaiheista yleensä hyväksytetäänkin loppuvaiheessa, yleensä vähintäänkin ensimmäiset vaiheet myös asiakkaan kesken. </p><p>Vaatimusanalyysi tulee tehdä tiiviissä yhteistyössä ohjelmiston asiakkaan kanssa. Analyysi ei juurikaan muutu, vaikka asiakas olisi kuvitteellinen (esimerkiksi siksi, että tuotteella ei ole etukäteen tiedossa asiakasta). Analyysissä on tärkeää osata sivuuttaa turhat toteutustekniset vaatimukset – esimerkiksi asiakas saattaa toivoa laitteeseen kymmentä eri painonappia, vaikka parempi olisi nappien toiminnallisuudet toteuttava <a href="/wiki/Valikko" title="Valikko">valikko</a>. </p><p>Vaatimusanalyysi tuottaa lopputuloksenaan dokumentin <i>asiakasvaatimukset</i>. </p> <div class="mw-heading mw-heading3"><h3 id="Järjestelmäsuunnittelu"><span id="J.C3.A4rjestelm.C3.A4suunnittelu"></span>Järjestelmäsuunnittelu</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ohjelmistotuotanto&veaction=edit&section=12" title="Muokkaa osiota Järjestelmäsuunnittelu" class="mw-editsection-visualeditor"><span>muokkaa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Ohjelmistotuotanto&action=edit&section=12" title="Muokkaa osion lähdekoodia: Järjestelmäsuunnittelu"><span>muokkaa wikitekstiä</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Järjestelmäsuunnittelussa tarkastellaan <a href="/wiki/J%C3%A4rjestelm%C3%A4" class="mw-redirect" title="Järjestelmä">järjestelmien</a> välistä työnjakoa ja <a href="/wiki/J%C3%A4rjestelm%C3%A4integraatio" title="Järjestelmäintegraatio">integrointia</a> sekä <a href="/wiki/Laitteisto" class="mw-redirect" title="Laitteisto">laitteiston</a> ja <a href="/wiki/Ohjelmisto" title="Ohjelmisto">ohjelmiston</a> välistä työnjakoa. Järjestelmäsuunnittelussa voidaan päättää hajauttaa eri ohjelmistoja eri laitteille tai asentaa samaa ohjelmistoa usealle laitteelle. </p><p>Järjestelmäsuunnittelua voidaan tehdä esimerkiksi kahdella tasolla: </p> <ul><li>Järjestelmäkartan tasolla pohditaan mitä laitteita ja ohjelmistoja tarvitaan ja kuinka ne liittyvät toisiinsa.</li> <li>Yksittäisen laitteen tasolla päätetään muun muassa laitteistosta, <a href="/wiki/K%C3%A4ytt%C3%B6j%C3%A4rjestelm%C3%A4" title="Käyttöjärjestelmä">käyttöjärjestelmästä</a> ja ohjelmistoista, yhteyksistä ja <a href="/wiki/Tietoturva" title="Tietoturva">tietoturvasta</a>.</li></ul> <p>Järjestelmäsuunnittelu on tavallinen vaihe räätälöityjen ohjelmistojen tuotannossa. <a href="/wiki/Valmisohjelma" class="mw-redirect" title="Valmisohjelma">Valmisohjelmien</a> tuotannossa sitä ei yleensä tarvita. </p> <div class="mw-heading mw-heading3"><h3 id="Ohjelmistosuunnittelu">Ohjelmistosuunnittelu</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ohjelmistotuotanto&veaction=edit&section=13" title="Muokkaa osiota Ohjelmistosuunnittelu" class="mw-editsection-visualeditor"><span>muokkaa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Ohjelmistotuotanto&action=edit&section=13" title="Muokkaa osion lähdekoodia: Ohjelmistosuunnittelu"><span>muokkaa wikitekstiä</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Ohjelmistosuunnittelu koostuu kahdesta vaiheesta. Näistä ensimmäinen on <b>toiminnallinen määrittely</b>. Siinä kuvataan kaikki järjestelmän toteuttamat toiminnot ja liitännät järjestelmän ulkopuolelle. Vaiheen tuotoksena syntyvä <i>määrittelydokumentti</i> kuvaa siis mitä kaikkea järjestelmällä voi tehdä sekä miten <i>käyttäjä</i> voi ne tehdä. Järjestelmä <b>ei</b> kuvaa sitä, miten toiminnot tulee <i>toteuttaa</i>. Näin määrittelydokumentti kuvaa esimerkiksi tekstinkäsittelyohjelman eri näytöt, valikot ja niissä olevat asetukset ja kaikki käyttöliittymäkontrollit. Mikäli järjestelmä tuottaa tulosteita, niin määrittelydokumentin tulisi sisältää sekä visuaaliset että riittävät tekstuaaliset kuvaukset kaikista järjestelmän eri näytöistä. </p><p>Ideaalinen määrittelydokumentti on niin kattava, että teknisessä suunnittelussa tai sitä seuraavissa vaiheissa ei ole enää missään vaiheessa epäselvää, että miten ohjelman tulee toimia kussakin tilanteessa, miten tulosteet ja syöte on muotoiltu jne. Vaikka tähän on käytännössä mahdotonta päästä, niin on kuitenkin havaittu, että siihen tulee pyrkiä. </p><p>Toisaalta on myös tutkittu, että hyvä määrittelydokumentti ei saa olla liian vuolassanainen. 500 <a href="/wiki/ISO_216" title="ISO 216">A4</a>-sivua pitkä kaiken kattava määrittelydokumentti ohjelmasta, joka piirtää ainoastaan 2D-kuvaajia polynomi<a href="/wiki/Funktio" title="Funktio">funktioista</a> näytölle, on todennäköisesti aivan liian pitkä. Kuitenkin 100-sivuinen määrittelydokumentti mistään kunnollisesta tekstinkäsittelyohjelmasta on varmasti aivan liian lyhyt. </p><p>Tyypillinen ohjelmistoalan ongelma on se, että määrittelydokumentteja ei jakseta kirjoittaa. Jonkinlainen vaatimusanalyysi (yleensä hyvin epämuodollinen) saatetaan tehdä, mutta sen jälkeen aletaankin heti koodata ohjelmaa. Ajatellaan, että määrittelydokumentin kirjoittamiseen menevä aika ei ole verrannollinen siitä saatavaan hyötyyn. Kuitenkin asia on juuri päinvastoin, koska asioita on paljon helpompi muuttaa luonnollisella kielellä kirjoitetusta dokumentista kuin ohjelmakoodista, ja suoraan koodia kirjoittavat huomaavat hyvin pian tekevänsä määrittelyä samaan aikaan kuin kirjoittavat ohjelmaa. Näin ohjelma muodostuu <a href="/wiki/Ad_hoc" title="Ad hoc">ad hoc</a> -ratkaisujen varaan, ja isoista ohjelmista muodostuu rakenteellisesti hyvin vaikeaselkoisia ja sitä kautta erittäin virhealttiita rakennelmia. </p><p>Laajojen ohjelmistojen suunnittelun hallinta helpottuu, jos ohjelmisto jaetaan erilaisiin kerroksiin. Yksi tunnettu malli on <a href="/wiki/MVC-arkkitehtuuri" title="MVC-arkkitehtuuri">MVC-malli</a>, jossa käyttöliittymä erotetaan muista osista. Etuna on se, että esimerkiksi käyttöliittymän muuttaminen on helpompaa kun muutokset tulevat vain siihen osaan ohjelmansuunnittelussa. Toinen tunnettu kerrosmalli on kolmitasomalli, jossa tasoina ovat käyttöliittymä, liiketoimintakerros (businesslogiikka) ja tietokantakerros (tiedon tallennus). </p><p>Toiminnalliselle määrittelylle vastakohta on <i>tekninen määrittely</i>. <b>Tekninen määrittely</b> eli <b>arkkitehtuurisuunnittelu</b> seuraa toiminnallisen määrittelyn jälkeen, ja siinä ei enää tehdä valintoja tai päätöksiä siitä, millaisia ominaisuuksia laitteessa on – sen tarkoituksena on kuvata ohjelmiston tai ohjelman tekninen arkkitehtuuri tarkasti, joskaan ei vielä ohjelmakoodina. Syötteenä sille toimii toiminnallinen määrittely, ja se kuvaa ne ohjelmistokomponentit, jotka toteuttavat määrittelyn vaatimat toiminnot. </p><p>Tekniseen määrittelyyn sisältyy esimerkiksi käytetty ohjelmointikieli/kielet, ohjelmistokomponentit kuten kirjastot, ohjelmistokomponenttien rakenne ja keskinäinen hierarkia, käytetyt tietorakenteet ja niiden väliset <a href="/w/index.php?title=Sovellusrajapinta&action=edit&redlink=1" class="new" title="Sovellusrajapinta (sivua ei ole)">sovellusrajapinnat</a> jne. </p><p>Arkkitehtuurisuunnittelussa voidaan käyttää hyväksi <a href="/wiki/Suunnittelumalli" title="Suunnittelumalli">suunnittelumalleja</a> (<a href="/wiki/Englannin_kieli" title="Englannin kieli">engl.</a> <span lang="en"><i>design patterns</i></span>)<sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup>, jotka ovat valmiita ratkaisuja suunnitteluongelmiin (tehtäviin). Niiden etuna on tehokkuus ja toimintavarmuus. </p><p>Huomattavaa on, että ohjelmiston koosta ja monimutkaisuudesta riippuen dokumentti koostuu usean eri kerroksen kuvauksista. Esimerkiksi kompleksissa ohjelmistossa ensimmäisellä tasolla voi näkyä eri moduulit, mistä järjestelmä koostuu: <a href="/w/index.php?title=Palvelinohjelma&action=edit&redlink=1" class="new" title="Palvelinohjelma (sivua ei ole)">palvelinohjelma</a>-prosessit, <a href="/wiki/Asiakasohjelma" title="Asiakasohjelma">asiakasohjelma</a>-prosessit, tietovarastot sekä niiden liitynnät ympäristöön. Toisella tasolla kukin näistä komponenteista on pilkottu pienempiin osiin kuten luokkiin, ja niistä näkyy tarkemmin, mitä ulkoiset liitännät ovat (käytetty protokolla jne). Kolmannella tasolla on kuvattu luokkien metodit ja <a href="/wiki/Luokkamuuttuja" title="Luokkamuuttuja">luokkamuuttujat</a>, käytettyjen <a href="/wiki/Tietorakenne" title="Tietorakenne">tietorakenteiden</a> tyypit (merkkijono, kokonaisluku, <a href="/wiki/Liukuluku" title="Liukuluku">liukuluku</a>...) jne. </p> <div class="mw-heading mw-heading3"><h3 id="Toteutus">Toteutus</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ohjelmistotuotanto&veaction=edit&section=14" title="Muokkaa osiota Toteutus" class="mw-editsection-visualeditor"><span>muokkaa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Ohjelmistotuotanto&action=edit&section=14" title="Muokkaa osion lähdekoodia: Toteutus"><span>muokkaa wikitekstiä</span></a><span class="mw-editsection-bracket">]</span></span></div> <dl><dd><div class="disambig"><i>Pääartikkeli: <a href="/wiki/Ohjelmistokehitys" title="Ohjelmistokehitys">Ohjelmistokehitys</a></i></div></dd></dl> <p>Määrittelydokumentin valmistuttua toteutus voi alkaa. Toteutus käsittää lähinnä varsinaisen koodaamisen valitulla ohjelmointikielellä sekä tarvittavien oheiskomponenttien tuottamisen (käytetyt kuvat, äänet jne). Mikäli edelliset vaiheet on toteutettu kunnolla, niin toteutukseen menevä aika on noin 10–20 % koko ohjelmistoprojektiin käytetystä ajasta. Tämän vaiheen tuotoksena on siis ajettava ohjelmisto, mutta siinä on kuitenkin yleensä suhteellisen paljon toiminnallisia virheitä. </p><p>Ohjelmankehitysympäristöissä toteutusvaihe voi olla puoliautomaattinen. Kehitysympäristö osaa kehittää luoduista suunnitelmista ohjelmakoodin rungon, jossa <a href="/wiki/Luokkakaavio" title="Luokkakaavio">luokkakaaviosta</a> on johdettu valmiit koodit luokille, luokan tietojäsenille sekä metodirungot parametreineen. Se nopeuttaa huomattavasti koodaajan työtä kun hänen pitää lisätä vain metodien toiminnallinen sisältö koodeihin. </p> <div class="mw-heading mw-heading3"><h3 id="Testaus">Testaus</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ohjelmistotuotanto&veaction=edit&section=15" title="Muokkaa osiota Testaus" class="mw-editsection-visualeditor"><span>muokkaa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Ohjelmistotuotanto&action=edit&section=15" title="Muokkaa osion lähdekoodia: Testaus"><span>muokkaa wikitekstiä</span></a><span class="mw-editsection-bracket">]</span></span></div> <dl><dd><div class="disambig"><i>Pääartikkeli: <a href="/wiki/Ohjelmiston_testaaminen" title="Ohjelmiston testaaminen">Ohjelmiston testaaminen</a></i></div></dd></dl> <p>Alpha-testaus on ohjelmistokehityksen vaihe, jonka aikana tutkitaan luotujen toimintojen kykyä toimia oikein käytännön tilanteessa. Vaiheen aikana on tarkoitus kartoittaa myös ohjelmiston sisäinen koodi dokumentoituun muotoon. <a href="/wiki/Betatestaus" class="mw-redirect" title="Betatestaus">Beta-testausvaiheen</a> aikana ohjelmistosta etsitään ja korjataan pois mahdolliset <a href="/wiki/Ohjelmointivirhe" title="Ohjelmointivirhe">ohjelmointivirheet</a> eli bugit, joita on saattanut aiheutua mahdollisista Beta-vaiheen aikana tehdyistä muutoksista. Beta-testaus on ohjelmistonkehityksessä eräs eniten aikaa vaativista vaiheista. </p><p>Virheitä löytyy toteutuksen huolellisuudesta riippumatta käytännössä kaikista ohjelmistoista. Esimerkiksi yritykselle on erittäin tärkeää löytää virheet (ja korjata ne) itse sen sijaan, että asiakas löytää ne ja kertoo sitten huonoista kokemuksistaan muille. </p><p>Vaikka testaus onkin osana kaikkea ohjelmistokehitystä, niin sen harteille ei pidä sälyttää vastuuta lopputuotteen hyvästä laadusta. Laatuajattelun on oltava mukana aivan ensimmäisestä vaiheesta alkaen, sillä tutkitusti testattaessa ei löydetä kuitenkaan käytännössä koskaan kaikkia virheitä, ja myös virheiden korjaaminen aiheuttaa usein uusia virheitä. </p><p>Testaukseen kuuluu muun muassa testausmenetelmien suunnittelu, erilaisten testidokumenttien sekä <a href="/w/index.php?title=Testipenkki&action=edit&redlink=1" class="new" title="Testipenkki (sivua ei ole)">testipenkkien</a> laatiminen. Testitulosten mukaan ohjelmistoon tehdään tarvittavat muutokset – jos muutoksia pitää tehdä ylemmille tasoille kuten toiminnalliseen määrittelyyn, niin se on yleensä merkki koko projektin yli ulottuvasta heikosta laadusta. </p><p>Siinä missä toteutuksessa on tarkoituksena tehdä mahdollisimman virheetön ohjelmisto, testauksessa on tarkoitus löytää mahdollisimman paljon virheitä. Testaus vaatii siis testaajalta destruktiivisen eli hajottavan asenteen. Monet virheet vaativat korjaamista, joten hyvin suoritettu testaus aiheuttaa lisätöitä ohjelmiston toteuttajille. Tämän vuoksi on usein järkevää, että organisaatiossa testauksesta huolehtii eri yksikkö kuin toteutuksesta. Pienissä organisaatioissa tämä ei välttämättä onnistu, mutta mahdollisuuksien mukaan ohjelmoijat voivat kuitenkin testata toistensa valmistamat ohjelmistot tai niiden osat. </p><p>Ohjelmiston testaus voidaan jaotella myös muun muassa seuraaviin: </p> <ul><li><a href="/wiki/Yksikk%C3%B6testaaminen" title="Yksikkötestaaminen">Yksikkötestaaminen</a></li> <li><a href="/w/index.php?title=Integraatiotestaaminen&action=edit&redlink=1" class="new" title="Integraatiotestaaminen (sivua ei ole)">Integraatiotestaaminen</a></li> <li><a href="/w/index.php?title=Regressiotestaaminen&action=edit&redlink=1" class="new" title="Regressiotestaaminen (sivua ei ole)">Regressiotestaaminen</a></li> <li><a href="/w/index.php?title=Hyv%C3%A4ksynt%C3%A4testaaminen&action=edit&redlink=1" class="new" title="Hyväksyntätestaaminen (sivua ei ole)">Hyväksyntätestaaminen</a></li></ul> <div class="mw-heading mw-heading3"><h3 id="Julkaisu_tai_käyttöönotto"><span id="Julkaisu_tai_k.C3.A4ytt.C3.B6.C3.B6notto"></span>Julkaisu tai käyttöönotto</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ohjelmistotuotanto&veaction=edit&section=16" title="Muokkaa osiota Julkaisu tai käyttöönotto" class="mw-editsection-visualeditor"><span>muokkaa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Ohjelmistotuotanto&action=edit&section=16" title="Muokkaa osion lähdekoodia: Julkaisu tai käyttöönotto"><span>muokkaa wikitekstiä</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Julkaisuehdokkuudesta puhutaan kun ohjelmisto on saavuttanut tietyn toiminnallisen tilan, jossa kaikki ohjelmiston ominaisuudet toimivat lähes virheettömästi ja ohjelmisto on valmis julkaistavaksi. Useimmissa tapauksissa julkaisua ei kuitenkaan voi tapahtua, ennen kuin kaikki ohjelmistoa kehittävät tahot ovat siihen tyytyväisiä. Joskus ohjelmiston valmistuminen ajallaan on tärkeämpää kuin riittävä testaus, jolloin Julkaisuehdokkuus kyseenalaisesti ohitetaan. </p><p>Julkisesti saataville tarkoitetun ohjelmatuotteen valmistuttua se yleensä julkaistaan. Julkaistaessa kerätään ohjelman osat ja dokumentointi yhdeksi paketiksi sekä tiedotetaan uuden ohjelman tai ohjelmaversion saatavuudesta, lisenssiehdoista sekä ominaisuuksista. Näitä toimenpiteitä varten on olemassa työkaluja ja hallintajärjestelmiä. </p><p>Tuotantoon julkaisemista kutsutaan myös nimellä <i>kultaaminen</i>, joka tulee siitä, että alkuperäinen ohjelmiston Master-levy viedään monistettavaksi ja paketoitavaksi tehtaalle tai se valmistellaan <a href="/wiki/Internet" title="Internet">internet</a>-pohjaista levitystä varten. Ohjelmisto saatetaan kääntää eri kielille, lisäksi sen ohjekirjat kirjoitetaan ja tulostetaan. Myös markkinoinnin suunnittelu kuuluu osaksi tätä vaihetta. </p><p>Lisenssiehdot määräävät kaupalliset ja juridiset ehdot ohjelman jakelulle, asentamiselle ja käyttämiselle. Kaupallisen (ks. <a href="/wiki/Omisteinen_ohjelmisto" title="Omisteinen ohjelmisto">omisteinen ohjelmisto</a>) jakelun lisäksi on <a href="/wiki/Avoin_l%C3%A4hdekoodi" title="Avoin lähdekoodi">avoimen lähdekoodin</a> lisenssejä kuten <a href="/wiki/GNU_GPL" class="mw-redirect" title="GNU GPL">GNU GPL</a>. <a href="/wiki/Freeware" class="mw-redirect" title="Freeware">Freeware</a>-ohjelmistot ovat maksuttomia, mutta niiden lähdekoodi ei ole aina saatavilla. </p><p>Jos ohjelmisto on rakennettu tietylle asiakkaalle, julkaisun sijaan tehdään käyttöönotto. Käyttöönotossa ohjelmistosta valmistellaan asennettava kokonaisuus, joka sitten suunnitellusti <a href="/wiki/Asennus_(tietotekniikka)" title="Asennus (tietotekniikka)">asennetaan</a> määrätyille laitteille. Käyttöönottoon liittyy usein myös muun muassa laitteiston asennus ja valmistelu, tietoyhteyksien valmistelu, vanhojen tietojen konvertointi ja käyttäjien valmentaminen. </p> <div class="mw-heading mw-heading3"><h3 id="Ylläpito"><span id="Yll.C3.A4pito"></span>Ylläpito</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ohjelmistotuotanto&veaction=edit&section=17" title="Muokkaa osiota Ylläpito" class="mw-editsection-visualeditor"><span>muokkaa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Ohjelmistotuotanto&action=edit&section=17" title="Muokkaa osion lähdekoodia: Ylläpito"><span>muokkaa wikitekstiä</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Ohjelmien ja ohjelmistojen ylläpito ei kuulu enää ohjelmistotuotantoon eikä ohjelmien kehittelyyn vaiheena. Ylläpidon tarkoitus on pitää ohjelmisto toimintakuntoisena ja raportoida virheistä tuotannolle. Ylläpitoon kuuluu ohjelmien uusien versioiden päivitys vanhojen tilalle ja päivityksestä aiheutuvat muutostoimet. Ylläpito käsittää ne toimenpiteet, mitä asiakkaat tarvitsevat ollakseen tyytyväisiä ohjelmistotuotteeseen. Tyypillisesti ohjelmistojen katsotaan vanhenevan ennen pitkää, ja tarpeet myös muuttuvat; lisäksi laadukkaastakin ohjelmistotuotteesta löytyy yleensä vähintäänkin pieniä ohjelmistovirheitä, joten käyttäjät odottavat uusia versioita täyttämään muuttuvat tarpeet ja esiintyneet ongelmat. </p> <div class="mw-heading mw-heading3"><h3 id="Elinkaaren_loppu">Elinkaaren loppu</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ohjelmistotuotanto&veaction=edit&section=18" title="Muokkaa osiota Elinkaaren loppu" class="mw-editsection-visualeditor"><span>muokkaa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Ohjelmistotuotanto&action=edit&section=18" title="Muokkaa osion lähdekoodia: Elinkaaren loppu"><span>muokkaa wikitekstiä</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Ohjelma ei ”kuole” koskaan. Ohjelma voi tulla tarpeettomaksi kun </p> <ul><li>käyttöympäristö muuttuu siten, että ohjelmaa ei voida enää käyttää</li> <li>tulee uusi parempi menetelmä suorittaa ohjelman tekemät asiat</li> <li>ohjelman tekemien toimenpiteiden tarve loppuu</li> <li>ohjelman toiminnot yhdistetään uuteen ohjelmaan</li> <li>ohjelman käyttö ja kehittely loppuu.</li></ul> <div class="mw-heading mw-heading2"><h2 id="Ohjelmistotuotannon_työkalut"><span id="Ohjelmistotuotannon_ty.C3.B6kalut"></span>Ohjelmistotuotannon työkalut</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ohjelmistotuotanto&veaction=edit&section=19" title="Muokkaa osiota Ohjelmistotuotannon työkalut" class="mw-editsection-visualeditor"><span>muokkaa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Ohjelmistotuotanto&action=edit&section=19" title="Muokkaa osion lähdekoodia: Ohjelmistotuotannon työkalut"><span>muokkaa wikitekstiä</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Prosessia helpottamaan on kehitetty erilaisia työkaluja. Perustyökaluja ohjelmistotuotannossa ovat mallit, joiden avulla prosessin vaiheita voi hallita. Esim. vesiputousmallissa vaiheet suoritetaan yksi kerrallaan loppuun asti – testausvaiheesta ei voi palata analyysiin. </p><p>Muita ohjelmistotuotannon työkaluja ovat <a href="/wiki/UML" class="mw-redirect" title="UML">UML</a> ja CASE. UML (<i>Unified Modeling Language</i>, yhtenäistetty mallinnuskieli) auttaa visualisoimaan suunnitelmia. UML on kokoelma yksinkertaisia graafisia merkintöjä, kuten laatikoita ja nuolia, joilla on määrätty merkitys. UML on kehitetty <a href="/wiki/Olio-ohjelmointi" title="Olio-ohjelmointi">olio-ohjelmointiin</a>. UML-mallinnuksia voi tehdä esimerkiksi ohjelmilla MS Visio, Argo UML, Eclipseen asennettavalla liitännäisohjelmalla, NetBeans, yms. </p><p>CASE (Computer Aided Software Engineering, tietokoneavusteinen ohjelmistotuotanto) on ollut käytössä 1970-luvulta alkaen. CASE-työkalut ovat ohjelmia, joiden avulla voi organisoida ja visualisoida ohjelmistotuotannon prosesseja. Eri <a href="/wiki/Ohjelmointikieli" title="Ohjelmointikieli">ohjelmointikielille</a> ja -ympäristöille on omat CASE-työkalunsa. </p><p>Tunnettu ohjelmankehitysympäristö on <a href="/wiki/Eclipse_(IDE)" title="Eclipse (IDE)">Eclipse</a>. </p> <div class="mw-heading mw-heading2"><h2 id="Katso_myös"><span id="Katso_my.C3.B6s"></span>Katso myös</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ohjelmistotuotanto&veaction=edit&section=20" title="Muokkaa osiota Katso myös" class="mw-editsection-visualeditor"><span>muokkaa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Ohjelmistotuotanto&action=edit&section=20" title="Muokkaa osion lähdekoodia: Katso myös"><span>muokkaa wikitekstiä</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a href="/wiki/Ohjelmistoteollisuus" title="Ohjelmistoteollisuus">Ohjelmistoteollisuus</a></li> <li><a href="/wiki/Ketter%C3%A4_ohjelmistokehitys" title="Ketterä ohjelmistokehitys"> Ketterä ohjelmistokehitys</a></li> <li><a href="/wiki/Kriittinen_massa_(ohjelmistotuotanto)" title="Kriittinen massa (ohjelmistotuotanto)">Kriittinen massa</a></li> <li><a href="/wiki/Nopean_kehityksen_malli" title="Nopean kehityksen malli">Nopean kehityksen malli</a></li> <li><a href="/wiki/Ohjelmiston_laatu" title="Ohjelmiston laatu">Ohjelmiston laatu</a></li> <li><a href="/wiki/Suihkul%C3%A4hdemalli" title="Suihkulähdemalli">Suihkulähdemalli</a></li></ul> <div class="mw-heading mw-heading2"><h2 id="Lähteet"><span id="L.C3.A4hteet"></span>Lähteet</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ohjelmistotuotanto&veaction=edit&section=21" title="Muokkaa osiota Lähteet" class="mw-editsection-visualeditor"><span>muokkaa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Ohjelmistotuotanto&action=edit&section=21" title="Muokkaa osion lähdekoodia: Lähteet"><span>muokkaa wikitekstiä</span></a><span class="mw-editsection-bracket">]</span></span></div> <table style="" class="metadata plainlinks ambox ambox-content"> <tbody><tr> <td class="ambox-image"><div style="width:52px;text-align:center"> <span typeof="mw:File"><a href="/wiki/Tiedosto:Question_book-4.svg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/6/64/Question_book-4.svg/50px-Question_book-4.svg.png" decoding="async" width="50" height="39" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/6/64/Question_book-4.svg/75px-Question_book-4.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/6/64/Question_book-4.svg/100px-Question_book-4.svg.png 2x" data-file-width="262" data-file-height="204" /></a></span></div> </td> <td class="ambox-text"><b>Tähän artikkeliin tai sen osaan on <a href="/wiki/Wikipedia:Merkitse_l%C3%A4hteet" title="Wikipedia:Merkitse lähteet">merkitty lähteitä</a>, mutta niihin ei viitata.</b><br /><small>Älä poista mallinetta ennen kuin viitteet on lisätty. Voit auttaa Wikipediaa <a class="external text" href="https://fi.wikipedia.org/w/index.php?title=Ohjelmistotuotanto&action=edit">lisäämällä</a> artikkelille asianmukaisia <a href="/wiki/Wikipedia:Merkitse_l%C3%A4hteet#L.C3.A4hdeviitemallineet" title="Wikipedia:Merkitse lähteet">viitteitä</a>. Lähteettömät tiedot voidaan <a href="/wiki/Wikipedia:Tarkistettavuus" title="Wikipedia:Tarkistettavuus">kyseenalaistaa tai poistaa</a>.</small><br /> </td></tr></tbody></table> <ul><li><span class="kirjaviite" title="Kirjaviite">Haikala, Ilkka & Mikkonen, Tommi: <i>Ohjelmistotuotannon käytännöt</i>.  (12. uudistettu painos)  Helsinki:  Talentum, 2011.  <a href="/wiki/Toiminnot:Kirjal%C3%A4hteet/978-952-14-1754-2" title="Toiminnot:Kirjalähteet/978-952-14-1754-2">ISBN 978-952-14-1754-2</a> </span></li></ul> <div class="mw-heading mw-heading3"><h3 id="Viitteet">Viitteet</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ohjelmistotuotanto&veaction=edit&section=22" title="Muokkaa osiota Viitteet" class="mw-editsection-visualeditor"><span>muokkaa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Ohjelmistotuotanto&action=edit&section=22" title="Muokkaa osion lähdekoodia: Viitteet"><span>muokkaa wikitekstiä</span></a><span class="mw-editsection-bracket">]</span></span></div> <div id="viitteet-malline" class="viitteet-malline" style="list-style-type:decimal;"><ol class="references"> <li id="cite_note-spoforjb-1"><span class="mw-cite-backlink">↑ <a href="#cite_ref-spoforjb_1-0"><sup><i>a</i></sup></a> <a href="#cite_ref-spoforjb_1-1"><sup><i>b</i></sup></a></span> <span class="reference-text"><span class="verkkoviite" title="Verkkoviite">John Backus: <a rel="nofollow" class="external text" href="http://www.softwarepreservation.org/projects/FORTRAN/paper/p25-backus.pdf">FORTRAN Session</a> <small>(PDF)</small> Computer History Musem. Viitattu 10.2.2020. <span style="font-size: 0.95em; position: relative;">(englanniksi)</span></span></span> </li> <li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external free" href="http://www.bitsavers.org/magazines/Computers_And_Automation/196506.pdf">http://www.bitsavers.org/magazines/Computers_And_Automation/196506.pdf</a></span> </li> <li id="cite_note-bmorigin-3"><span class="mw-cite-backlink">↑ <a href="#cite_ref-bmorigin_3-0"><sup><i>a</i></sup></a> <a href="#cite_ref-bmorigin_3-1"><sup><i>b</i></sup></a></span> <span class="reference-text"><span class="verkkoviite" title="Verkkoviite"><a rel="nofollow" class="external text" href="https://bertrandmeyer.com/2013/04/04/the-origin-of-software-engineering/">The origin of “software engineering”</a> <i>bertrandmeyer.com</i>.  4.4.2013. Viitattu 28.10.2020. <span style="font-size: 0.95em; position: relative;">(englanniksi)</span> </span></span> </li> <li id="cite_note-4"><span class="mw-cite-backlink"><a href="#cite_ref-4">↑</a></span> <span class="reference-text"><span class="verkkoviite" title="Verkkoviite"><a rel="nofollow" class="external text" href="https://dl.acm.org/doi/10.1145/365758.3291288">President's Letter to the ACM Membership</a> <i>Communications of the ACM</i>.  elokuu 1966. <a href="/wiki/Digital_object_identifier" class="mw-redirect" title="Digital object identifier">doi</a>:<a rel="nofollow" class="external text" href="https://dx.doi.org/10.1145%2F365758.3291288">10.1145/365758.3291288</a>  Viitattu 28.10.2020. <span style="font-size: 0.95em; position: relative;">(englanniksi)</span></span></span> </li> <li id="cite_note-swrkcw-5"><span class="mw-cite-backlink"><a href="#cite_ref-swrkcw_5-0">↑</a></span> <span class="reference-text"><span class="verkkoviite" title="Verkkoviite">Krueger, Charles W.: <a rel="nofollow" class="external text" href="http://www-public.imtbs-tsp.eu/~gibson/Teaching/Teaching-ReadingMaterial/Krueger92.pdf">Software Reuse</a> <small>(PDF)</small> <i>public.imtbs-tsp.eu</i>. Viitattu 26.10.2020. <span style="font-size: 0.95em; position: relative;">(englanniksi)</span></span></span> </li> <li id="cite_note-6"><span class="mw-cite-backlink"><a href="#cite_ref-6">↑</a></span> <span class="reference-text"><span class="verkkoviite" title="Verkkoviite"><a rel="nofollow" class="external text" href="http://www.piksu.net/artikkeli/ohjelmistoteollisuus-suomen-nopeimmin-kasvava-vientisektori">Ohjelmistoteollisuus on Suomen nopeimmin kasvava vientisektori</a> Piksu. Viitattu 11.1.2017.</span></span> </li> <li id="cite_note-7"><span class="mw-cite-backlink"><a href="#cite_ref-7">↑</a></span> <span class="reference-text"><span class="verkkoviite" title="Verkkoviite"><a rel="nofollow" class="external text" href="https://www.tekes.fi/nyt/uutiset-2012/suomen-ohjelmistoteollisuus-edelleen-kasvussa/">Suomen ohjelmistoteollisuus edelleen kasvussa</a> Tekes. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20170118122739/https://www.tekes.fi/nyt/uutiset-2012/suomen-ohjelmistoteollisuus-edelleen-kasvussa/">Arkistoitu</a> 18.1.2017. Viitattu 12.1.2017.</span></span> </li> <li id="cite_note-8"><span class="mw-cite-backlink"><a href="#cite_ref-8">↑</a></span> <span class="reference-text"><span class="kirjaviite" title="Kirjaviite">Gamma, Erich.: <i>Design patterns : elements of reusable object-oriented software</i>.  Reading, Mass.:  Addison-Wesley, 1995.  31171684  <a href="/wiki/Toiminnot:Kirjal%C3%A4hteet/9780201633610" title="Toiminnot:Kirjalähteet/9780201633610">ISBN 9780201633610</a> </span></span> </li> </ol> </div> <div class="mw-heading mw-heading2"><h2 id="Kirjallisuutta">Kirjallisuutta</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ohjelmistotuotanto&veaction=edit&section=23" title="Muokkaa osiota Kirjallisuutta" class="mw-editsection-visualeditor"><span>muokkaa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Ohjelmistotuotanto&action=edit&section=23" title="Muokkaa osion lähdekoodia: Kirjallisuutta"><span>muokkaa wikitekstiä</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><span class="kirjaviite" title="Kirjaviite">Hong, Zhu: <i>Software Design Methodology: From Principles to Architectural Styles</i>.  Oxford:  Elsevier, 2005.  <a href="/wiki/Toiminnot:Kirjal%C3%A4hteet/0-7506-6075-9" title="Toiminnot:Kirjalähteet/0-7506-6075-9">ISBN 0-7506-6075-9</a>  <span style="font-size: 0.95em; position: relative;">(englanniksi)</span></span></li> <li><span class="kirjaviite" title="Kirjaviite">Pressman, Roger: <i>Software Engineering: a Practitioner's Approach</i>.  Upper Saddle River:  Prentice Hall, 2005.  <span style="font-size: 0.95em; position: relative;">(englanniksi)</span></span></li> <li><span class="kirjaviite" title="Kirjaviite">Sommerville, Ian: <i>Software Engineering</i>.  USA:  Addison-Wesley, 1992.  <a href="/wiki/Toiminnot:Kirjal%C3%A4hteet/0-201-56529-3" title="Toiminnot:Kirjalähteet/0-201-56529-3">ISBN 0-201-56529-3</a>  <span style="font-size: 0.95em; position: relative;">(englanniksi)</span></span></li> <li><span class="kirjaviite" title="Kirjaviite">Haikala, Ilkka & Märijärvi, Jukka: <i><a href="/wiki/Ohjelmistotuotanto_(kirja)" title="Ohjelmistotuotanto (kirja)">Ohjelmistotuotanto</a></i>.  Satku, 2000.  <a href="/wiki/Toiminnot:Kirjal%C3%A4hteet/951-762-769-6" title="Toiminnot:Kirjalähteet/951-762-769-6">ISBN 951-762-769-6</a> </span></li> <li><span class="kirjaviite" title="Kirjaviite">Brooks, Fred: <i><a href="/wiki/The_Mythical_Man-Month" title="The Mythical Man-Month">The Mythical Man-Month</a></i>.  Addison-Wesley, 1975.  <a href="/wiki/Toiminnot:Kirjal%C3%A4hteet/0-201-00650-2" title="Toiminnot:Kirjalähteet/0-201-00650-2">ISBN 0-201-00650-2</a> </span></li></ul> <div class="mw-heading mw-heading2"><h2 id="Aiheesta_muualla">Aiheesta muualla</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ohjelmistotuotanto&veaction=edit&section=24" title="Muokkaa osiota Aiheesta muualla" class="mw-editsection-visualeditor"><span>muokkaa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Ohjelmistotuotanto&action=edit&section=24" title="Muokkaa osion lähdekoodia: Aiheesta muualla"><span>muokkaa wikitekstiä</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><span typeof="mw:File"><span><img src="//upload.wikimedia.org/wikipedia/commons/thumb/4/4a/Commons-logo.svg/10px-Commons-logo.svg.png" decoding="async" width="10" height="13" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/4/4a/Commons-logo.svg/15px-Commons-logo.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/4/4a/Commons-logo.svg/20px-Commons-logo.svg.png 2x" data-file-width="1024" data-file-height="1376" /></span></span> Kuvia tai muita tiedostoja aiheesta <b><a href="https://commons.wikimedia.org/wiki/Category:Software_engineering" class="extiw" title="commons:Category:Software engineering">Ohjelmistotuotanto</a></b> <a href="https://commons.wikimedia.org/wiki/Etusivu" class="extiw" title="commons:Etusivu">Wikimedia Commonsissa</a></li></ul></div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Noudettu kohteesta ”<a dir="ltr" href="https://fi.wikipedia.org/w/index.php?title=Ohjelmistotuotanto&oldid=22800305">https://fi.wikipedia.org/w/index.php?title=Ohjelmistotuotanto&oldid=22800305</a>”</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Toiminnot:Luokat" title="Toiminnot:Luokat">Luokka</a>: <ul><li><a href="/wiki/Luokka:Ohjelmistotuotanto" title="Luokka:Ohjelmistotuotanto">Ohjelmistotuotanto</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">Piilotetut luokat: <ul><li><a href="/wiki/Luokka:L%C3%A4hdeviitteet_puuttuvat" title="Luokka:Lähdeviitteet puuttuvat">Lähdeviitteet puuttuvat</a></li><li><a href="/wiki/Luokka:Seulonnan_keskeiset_artikkelit" title="Luokka:Seulonnan keskeiset artikkelit">Seulonnan keskeiset artikkelit</a></li></ul></div></div> </div> </div> <div id="mw-navigation"> <h2>Navigointivalikko</h2> <div id="mw-head"> <nav id="p-personal" class="mw-portlet mw-portlet-personal vector-user-menu-legacy vector-menu" aria-labelledby="p-personal-label" > <h3 id="p-personal-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Henkilökohtaiset työkalut</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anonuserpage" class="mw-list-item"><span title="IP-osoitteesi käyttäjäsivu">Et ole kirjautunut</span></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Toiminnot:Oma_keskustelu" title="Keskustelu tämän IP-osoitteen muokkauksista [n]" accesskey="n"><span>Keskustelu</span></a></li><li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Toiminnot:Omat_muokkaukset" title="Luettelo tästä IP-osoitteesta tehdyistä muokkauksista [y]" accesskey="y"><span>Muokkaukset</span></a></li><li id="pt-createaccount" class="mw-list-item"><a href="/w/index.php?title=Toiminnot:Luo_tunnus&returnto=Ohjelmistotuotanto" title="On suositeltavaa luoda käyttäjätunnus ja kirjautua sisään. Se ei kuitenkaan ole pakollista."><span>Luo tunnus</span></a></li><li id="pt-login" class="mw-list-item"><a href="/w/index.php?title=Toiminnot:Kirjaudu_sis%C3%A4%C3%A4n&returnto=Ohjelmistotuotanto" title="On suositeltavaa kirjautua sisään. Se ei kuitenkaan ole pakollista. [o]" accesskey="o"><span>Kirjaudu sisään</span></a></li> </ul> </div> </nav> <div id="left-navigation"> <nav id="p-namespaces" class="mw-portlet mw-portlet-namespaces vector-menu-tabs vector-menu-tabs-legacy vector-menu" aria-labelledby="p-namespaces-label" > <h3 id="p-namespaces-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Nimiavaruudet</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-main" class="selected mw-list-item"><a href="/wiki/Ohjelmistotuotanto" title="Näytä sisältösivu [c]" accesskey="c"><span>Artikkeli</span></a></li><li id="ca-talk" class="mw-list-item"><a href="/wiki/Keskustelu:Ohjelmistotuotanto" rel="discussion" title="Keskustele sisällöstä [t]" accesskey="t"><span>Keskustelu</span></a></li> </ul> </div> </nav> <nav id="p-variants" class="mw-portlet mw-portlet-variants emptyPortlet vector-menu-dropdown vector-menu" aria-labelledby="p-variants-label" > <input type="checkbox" id="p-variants-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-variants" class="vector-menu-checkbox" aria-labelledby="p-variants-label" > <label id="p-variants-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">suomi</span> </label> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </nav> </div> <div id="right-navigation"> <nav id="p-views" class="mw-portlet mw-portlet-views vector-menu-tabs vector-menu-tabs-legacy vector-menu" aria-labelledby="p-views-label" > <h3 id="p-views-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Näkymät</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected mw-list-item"><a href="/wiki/Ohjelmistotuotanto"><span>Lue</span></a></li><li id="ca-ve-edit" class="mw-list-item"><a href="/w/index.php?title=Ohjelmistotuotanto&veaction=edit" title="Muokkaa tätä sivua [v]" accesskey="v"><span>Muokkaa</span></a></li><li id="ca-edit" class="collapsible mw-list-item"><a href="/w/index.php?title=Ohjelmistotuotanto&action=edit" title="Muokkaa tämän sivun lähdekoodia [e]" accesskey="e"><span>Muokkaa wikitekstiä</span></a></li><li id="ca-history" class="mw-list-item"><a href="/w/index.php?title=Ohjelmistotuotanto&action=history" title="Sivun aikaisemmat versiot [h]" accesskey="h"><span>Näytä historia</span></a></li> </ul> </div> </nav> <nav id="p-cactions" class="mw-portlet mw-portlet-cactions emptyPortlet vector-menu-dropdown vector-menu" aria-labelledby="p-cactions-label" title="Lisää valintoja" > <input type="checkbox" id="p-cactions-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-cactions" class="vector-menu-checkbox" aria-labelledby="p-cactions-label" > <label id="p-cactions-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Muut</span> </label> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </nav> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <h3 >Haku</h3> <form action="/w/index.php" id="searchform" class="vector-search-box-form"> <div id="simpleSearch" class="vector-search-box-inner" data-search-loc="header-navigation"> <input class="vector-search-box-input" type="search" name="search" placeholder="Hae Wikipediasta" aria-label="Hae Wikipediasta" autocapitalize="sentences" title="Hae Wikipediasta [f]" accesskey="f" id="searchInput" > <input type="hidden" name="title" value="Toiminnot:Haku"> <input id="mw-searchButton" class="searchButton mw-fallbackSearchButton" type="submit" name="fulltext" title="Hae sivuilta tätä tekstiä" value="Hae"> <input id="searchButton" class="searchButton" type="submit" name="go" title="Siirry sivulle, joka on tarkalleen tällä nimellä" value="Siirry"> </div> </form> </div> </div> </div> <div id="mw-panel" class="vector-legacy-sidebar"> <div id="p-logo" role="banner"> <a class="mw-wiki-logo" href="/wiki/Wikipedia:Etusivu" title="Etusivu"></a> </div> <nav id="p-navigation" class="mw-portlet mw-portlet-navigation vector-menu-portal portal vector-menu" aria-labelledby="p-navigation-label" > <h3 id="p-navigation-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Valikko</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Wikipedia:Etusivu" title="Siirry etusivulle [z]" accesskey="z"><span>Etusivu</span></a></li><li id="n-aboutsite" class="mw-list-item"><a href="/wiki/Wikipedia:Tietoja"><span>Tietoja Wikipediasta</span></a></li><li id="n-allarticles" class="mw-list-item"><a href="/wiki/Wikipedia:Selaa_luokittain"><span>Kaikki sivut</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Toiminnot:Satunnainen_sivu" title="Avaa satunnainen sivu [x]" accesskey="x"><span>Satunnainen artikkeli</span></a></li> </ul> </div> </nav> <nav id="p-interaction" class="mw-portlet mw-portlet-interaction vector-menu-portal portal vector-menu" aria-labelledby="p-interaction-label" > <h3 id="p-interaction-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Osallistuminen</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-help" class="mw-list-item"><a href="/wiki/Ohje:Sis%C3%A4llys" title="Ohjeita"><span>Ohje</span></a></li><li id="n-Kahvihuone" class="mw-list-item"><a href="/wiki/Wikipedia:Kahvihuone"><span>Kahvihuone</span></a></li><li id="n-currentevents" class="mw-list-item"><a href="/wiki/Wikipedia:Ajankohtaista" title="Taustatietoa tämänhetkisistä tapahtumista"><span>Ajankohtaista</span></a></li><li id="n-Tuoreet-odottavat-muutokset" class="mw-list-item"><a href="//fi.wikipedia.org/wiki/Toiminnot:Tuoreet_muutokset?damaging=&goodfaith=&hideliu=0&hideanons=0&userExpLevel=&hidemyself=0&hidebyothers=0&hidebots=1&hidehumans=0&hidepatrolled=1&hideunpatrolled=0&hideminor=0&hidemajor=0&hidepageedits=0&hidenewpages=0&hidecategorization=1&hideWikibase=1&hidelog=0&highlight=1&goodfaith__verylikelybad_color=c5&goodfaith__likelybad_color=c4&goodfaith__maybebad_color=c3&damaging__verylikelybad_color=c5&damaging__likelybad_color=c4&damaging__maybebad_color=c3"><span>Tuoreet odottavat muutokset</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Toiminnot:Tuoreet_muutokset" title="Luettelo tuoreista muutoksista [r]" accesskey="r"><span>Tuoreet muutokset</span></a></li><li id="n-sitesupport" class="mw-list-item"><a href="//donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_fi.wikipedia.org&uselang=fi" title="Tue meitä"><span>Lahjoitukset</span></a></li> </ul> </div> </nav> <nav id="p-tb" class="mw-portlet mw-portlet-tb vector-menu-portal portal vector-menu" aria-labelledby="p-tb-label" > <h3 id="p-tb-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Työkalut</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Toiminnot:T%C3%A4nne_viittaavat_sivut/Ohjelmistotuotanto" title="Lista sivuista, jotka viittaavat tänne [j]" accesskey="j"><span>Tänne viittaavat sivut</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Toiminnot:Linkitetyt_muutokset/Ohjelmistotuotanto" rel="nofollow" title="Viimeisimmät muokkaukset sivuissa, joille viitataan tältä sivulta [k]" accesskey="k"><span>Linkitettyjen sivujen muutokset</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Toiminnot:Toimintosivut" title="Näytä toimintosivut [q]" accesskey="q"><span>Toimintosivut</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Ohjelmistotuotanto&oldid=22800305" title="Ikilinkki tämän sivun tähän versioon"><span>Ikilinkki</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Ohjelmistotuotanto&action=info" title="Enemmän tietoa tästä sivusta"><span>Sivun tiedot</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=Toiminnot:Viittaus&page=Ohjelmistotuotanto&id=22800305&wpFormIdentifier=titleform" title="Tietoa tämän sivun lainaamisesta"><span>Viitetiedot</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Toiminnot:UrlShortener&url=https%3A%2F%2Ffi.wikipedia.org%2Fwiki%2FOhjelmistotuotanto"><span>Lyhennä URL-osoite</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Toiminnot:QrCode&url=https%3A%2F%2Ffi.wikipedia.org%2Fwiki%2FOhjelmistotuotanto"><span>Lataa QR-koodi</span></a></li> </ul> </div> </nav> <nav id="p-coll-print_export" class="mw-portlet mw-portlet-coll-print_export vector-menu-portal portal vector-menu" aria-labelledby="p-coll-print_export-label" > <h3 id="p-coll-print_export-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Tulosta/vie</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=Toiminnot:DownloadAsPdf&page=Ohjelmistotuotanto&action=show-download-screen"><span>Lataa PDF-tiedostona</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=Ohjelmistotuotanto&printable=yes" title="Tulostettava versio [p]" accesskey="p"><span>Tulostettava versio</span></a></li> </ul> </div> </nav> <nav id="p-wikibase-otherprojects" class="mw-portlet mw-portlet-wikibase-otherprojects vector-menu-portal portal vector-menu" aria-labelledby="p-wikibase-otherprojects-label" > <h3 id="p-wikibase-otherprojects-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Muissa hankkeissa</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="wb-otherproject-link wb-otherproject-commons mw-list-item"><a href="https://commons.wikimedia.org/wiki/Category:Software_engineering" hreflang="en"><span>Wikimedia Commons</span></a></li><li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q80993" title="Linkki yhdistettyyn keskustietovaraston kohteeseen [g]" accesskey="g"><span>Wikidata-kohde</span></a></li> </ul> </div> </nav> <nav id="p-lang" class="mw-portlet mw-portlet-lang vector-menu-portal portal vector-menu" aria-labelledby="p-lang-label" > <h3 id="p-lang-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Muilla kielillä</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-af mw-list-item"><a href="https://af.wikipedia.org/wiki/Sagteware-ingenieurswese" title="Sagteware-ingenieurswese — afrikaans" lang="af" hreflang="af" data-title="Sagteware-ingenieurswese" data-language-autonym="Afrikaans" data-language-local-name="afrikaans" class="interlanguage-link-target"><span>Afrikaans</span></a></li><li class="interlanguage-link interwiki-am mw-list-item"><a href="https://am.wikipedia.org/wiki/%E1%8B%A8%E1%88%B6%E1%8D%8D%E1%89%B5%E1%8B%8C%E1%88%AD_%E1%8A%A0%E1%88%A0%E1%88%AB%E1%88%AD" title="የሶፍትዌር አሠራር — amhara" lang="am" hreflang="am" data-title="የሶፍትዌር አሠራር" data-language-autonym="አማርኛ" data-language-local-name="amhara" class="interlanguage-link-target"><span>አማርኛ</span></a></li><li class="interlanguage-link interwiki-ar mw-list-item"><a href="https://ar.wikipedia.org/wiki/%D9%87%D9%86%D8%AF%D8%B3%D8%A9_%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A7%D8%AA" title="هندسة البرمجيات — arabia" lang="ar" hreflang="ar" data-title="هندسة البرمجيات" data-language-autonym="العربية" data-language-local-name="arabia" class="interlanguage-link-target"><span>العربية</span></a></li><li class="interlanguage-link interwiki-ast mw-list-item"><a href="https://ast.wikipedia.org/wiki/Inxenier%C3%ADa_del_software" title="Inxeniería del software — asturia" lang="ast" hreflang="ast" data-title="Inxeniería del software" data-language-autonym="Asturianu" data-language-local-name="asturia" class="interlanguage-link-target"><span>Asturianu</span></a></li><li class="interlanguage-link interwiki-az mw-list-item"><a href="https://az.wikipedia.org/wiki/Proqram_t%C9%99minat%C4%B1_m%C3%BCh%C9%99ndisliyi" title="Proqram təminatı mühəndisliyi — azeri" lang="az" hreflang="az" data-title="Proqram təminatı mühəndisliyi" data-language-autonym="Azərbaycanca" data-language-local-name="azeri" class="interlanguage-link-target"><span>Azərbaycanca</span></a></li><li class="interlanguage-link interwiki-id mw-list-item"><a href="https://id.wikipedia.org/wiki/Rekayasa_perangkat_lunak" title="Rekayasa perangkat lunak — indonesia" lang="id" hreflang="id" data-title="Rekayasa perangkat lunak" data-language-autonym="Bahasa Indonesia" data-language-local-name="indonesia" class="interlanguage-link-target"><span>Bahasa Indonesia</span></a></li><li class="interlanguage-link interwiki-ms mw-list-item"><a href="https://ms.wikipedia.org/wiki/Kejuruteraan_perisian" title="Kejuruteraan perisian — malaiji" lang="ms" hreflang="ms" data-title="Kejuruteraan perisian" data-language-autonym="Bahasa Melayu" data-language-local-name="malaiji" class="interlanguage-link-target"><span>Bahasa Melayu</span></a></li><li class="interlanguage-link interwiki-bn mw-list-item"><a href="https://bn.wikipedia.org/wiki/%E0%A6%B8%E0%A6%AB%E0%A6%9F%E0%A6%93%E0%A6%AF%E0%A6%BC%E0%A7%8D%E0%A6%AF%E0%A6%BE%E0%A6%B0_%E0%A6%AA%E0%A7%8D%E0%A6%B0%E0%A6%95%E0%A7%8C%E0%A6%B6%E0%A6%B2" title="সফটওয়্যার প্রকৌশল — bengali" lang="bn" hreflang="bn" data-title="সফটওয়্যার প্রকৌশল" data-language-autonym="বাংলা" data-language-local-name="bengali" class="interlanguage-link-target"><span>বাংলা</span></a></li><li class="interlanguage-link interwiki-bs mw-list-item"><a href="https://bs.wikipedia.org/wiki/Softversko_in%C5%BEenjerstvo" title="Softversko inženjerstvo — bosnia" lang="bs" hreflang="bs" data-title="Softversko inženjerstvo" data-language-autonym="Bosanski" data-language-local-name="bosnia" class="interlanguage-link-target"><span>Bosanski</span></a></li><li class="interlanguage-link interwiki-bg mw-list-item"><a href="https://bg.wikipedia.org/wiki/%D0%A1%D0%BE%D1%84%D1%82%D1%83%D0%B5%D1%80%D0%BD%D0%BE_%D0%B8%D0%BD%D0%B6%D0%B5%D0%BD%D0%B5%D1%80%D1%81%D1%82%D0%B2%D0%BE" title="Софтуерно инженерство — bulgaria" lang="bg" hreflang="bg" data-title="Софтуерно инженерство" data-language-autonym="Български" data-language-local-name="bulgaria" class="interlanguage-link-target"><span>Български</span></a></li><li class="interlanguage-link interwiki-ca mw-list-item"><a href="https://ca.wikipedia.org/wiki/Enginyeria_de_programari" title="Enginyeria de programari — katalaani" lang="ca" hreflang="ca" data-title="Enginyeria de programari" data-language-autonym="Català" data-language-local-name="katalaani" class="interlanguage-link-target"><span>Català</span></a></li><li class="interlanguage-link interwiki-cs mw-list-item"><a href="https://cs.wikipedia.org/wiki/Softwarov%C3%A9_in%C5%BEen%C3%BDrstv%C3%AD" title="Softwarové inženýrství — tšekki" lang="cs" hreflang="cs" data-title="Softwarové inženýrství" data-language-autonym="Čeština" data-language-local-name="tšekki" class="interlanguage-link-target"><span>Čeština</span></a></li><li class="interlanguage-link interwiki-cy mw-list-item"><a href="https://cy.wikipedia.org/wiki/Peirianneg_meddalwedd" title="Peirianneg meddalwedd — kymri" lang="cy" hreflang="cy" data-title="Peirianneg meddalwedd" data-language-autonym="Cymraeg" data-language-local-name="kymri" class="interlanguage-link-target"><span>Cymraeg</span></a></li><li class="interlanguage-link interwiki-da mw-list-item"><a href="https://da.wikipedia.org/wiki/Softwareudvikling" title="Softwareudvikling — tanska" lang="da" hreflang="da" data-title="Softwareudvikling" data-language-autonym="Dansk" data-language-local-name="tanska" class="interlanguage-link-target"><span>Dansk</span></a></li><li class="interlanguage-link interwiki-de mw-list-item"><a href="https://de.wikipedia.org/wiki/Softwaretechnik" title="Softwaretechnik — saksa" lang="de" hreflang="de" data-title="Softwaretechnik" data-language-autonym="Deutsch" data-language-local-name="saksa" class="interlanguage-link-target"><span>Deutsch</span></a></li><li class="interlanguage-link interwiki-el mw-list-item"><a href="https://el.wikipedia.org/wiki/%CE%9C%CE%B7%CF%87%CE%B1%CE%BD%CE%B9%CE%BA%CE%AE_%CE%BB%CE%BF%CE%B3%CE%B9%CF%83%CE%BC%CE%B9%CE%BA%CE%BF%CF%8D" title="Μηχανική λογισμικού — kreikka" lang="el" hreflang="el" data-title="Μηχανική λογισμικού" data-language-autonym="Ελληνικά" data-language-local-name="kreikka" class="interlanguage-link-target"><span>Ελληνικά</span></a></li><li class="interlanguage-link interwiki-en mw-list-item"><a href="https://en.wikipedia.org/wiki/Software_engineering" title="Software engineering — englanti" lang="en" hreflang="en" data-title="Software engineering" data-language-autonym="English" data-language-local-name="englanti" class="interlanguage-link-target"><span>English</span></a></li><li class="interlanguage-link interwiki-es mw-list-item"><a href="https://es.wikipedia.org/wiki/Ingenier%C3%ADa_de_software" title="Ingeniería de software — espanja" lang="es" hreflang="es" data-title="Ingeniería de software" data-language-autonym="Español" data-language-local-name="espanja" class="interlanguage-link-target"><span>Español</span></a></li><li class="interlanguage-link interwiki-eo mw-list-item"><a href="https://eo.wikipedia.org/wiki/Programara_in%C4%9Denierarto" title="Programara inĝenierarto — esperanto" lang="eo" hreflang="eo" data-title="Programara inĝenierarto" data-language-autonym="Esperanto" data-language-local-name="esperanto" class="interlanguage-link-target"><span>Esperanto</span></a></li><li class="interlanguage-link interwiki-eu mw-list-item"><a href="https://eu.wikipedia.org/wiki/Software_ingeniaritza" title="Software ingeniaritza — baski" lang="eu" hreflang="eu" data-title="Software ingeniaritza" data-language-autonym="Euskara" data-language-local-name="baski" class="interlanguage-link-target"><span>Euskara</span></a></li><li class="interlanguage-link interwiki-fa mw-list-item"><a href="https://fa.wikipedia.org/wiki/%D9%85%D9%87%D9%86%D8%AF%D8%B3%DB%8C_%D9%86%D8%B1%D9%85%E2%80%8C%D8%A7%D9%81%D8%B2%D8%A7%D8%B1" title="مهندسی نرمافزار — persia" lang="fa" hreflang="fa" data-title="مهندسی نرمافزار" data-language-autonym="فارسی" data-language-local-name="persia" class="interlanguage-link-target"><span>فارسی</span></a></li><li class="interlanguage-link interwiki-fr mw-list-item"><a href="https://fr.wikipedia.org/wiki/G%C3%A9nie_logiciel" title="Génie logiciel — ranska" lang="fr" hreflang="fr" data-title="Génie logiciel" data-language-autonym="Français" data-language-local-name="ranska" class="interlanguage-link-target"><span>Français</span></a></li><li class="interlanguage-link interwiki-ga mw-list-item"><a href="https://ga.wikipedia.org/wiki/Innealt%C3%B3ireacht_bogearra%C3%AD" title="Innealtóireacht bogearraí — iiri" lang="ga" hreflang="ga" data-title="Innealtóireacht bogearraí" data-language-autonym="Gaeilge" data-language-local-name="iiri" class="interlanguage-link-target"><span>Gaeilge</span></a></li><li class="interlanguage-link interwiki-gv mw-list-item"><a href="https://gv.wikipedia.org/wiki/Jeshaghteyrys_cooid_vog" title="Jeshaghteyrys cooid vog — manksi" lang="gv" hreflang="gv" data-title="Jeshaghteyrys cooid vog" data-language-autonym="Gaelg" data-language-local-name="manksi" class="interlanguage-link-target"><span>Gaelg</span></a></li><li class="interlanguage-link interwiki-gl mw-list-item"><a href="https://gl.wikipedia.org/wiki/Enxe%C3%B1ar%C3%ADa_de_software" title="Enxeñaría de software — galicia" lang="gl" hreflang="gl" data-title="Enxeñaría de software" data-language-autonym="Galego" data-language-local-name="galicia" class="interlanguage-link-target"><span>Galego</span></a></li><li class="interlanguage-link interwiki-glk mw-list-item"><a href="https://glk.wikipedia.org/wiki/%D9%86%D8%B1%D9%85%D8%A3%D9%81%D8%B2%D8%A7%D8%B1_%D9%9A_%D9%85%DB%8A%D9%87%D9%86%D8%AF%D8%B3%D9%8A" title="نرمأفزار ٚ مۊهندسي — gilaki" lang="glk" hreflang="glk" data-title="نرمأفزار ٚ مۊهندسي" data-language-autonym="گیلکی" data-language-local-name="gilaki" class="interlanguage-link-target"><span>گیلکی</span></a></li><li class="interlanguage-link interwiki-ko mw-list-item"><a href="https://ko.wikipedia.org/wiki/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4_%EA%B3%B5%ED%95%99" title="소프트웨어 공학 — korea" lang="ko" hreflang="ko" data-title="소프트웨어 공학" data-language-autonym="한국어" data-language-local-name="korea" class="interlanguage-link-target"><span>한국어</span></a></li><li class="interlanguage-link interwiki-ha mw-list-item"><a href="https://ha.wikipedia.org/wiki/Injiniyan_software" title="Injiniyan software — hausa" lang="ha" hreflang="ha" data-title="Injiniyan software" data-language-autonym="Hausa" data-language-local-name="hausa" class="interlanguage-link-target"><span>Hausa</span></a></li><li class="interlanguage-link interwiki-hi mw-list-item"><a href="https://hi.wikipedia.org/wiki/%E0%A4%B8%E0%A5%89%E0%A4%AB%E0%A5%8D%E0%A4%9F%E0%A4%B5%E0%A5%87%E0%A4%AF%E0%A4%B0_%E0%A4%85%E0%A4%AD%E0%A4%BF%E0%A4%AF%E0%A4%BE%E0%A4%A8%E0%A5%8D%E0%A4%A4%E0%A5%8D%E0%A4%B0%E0%A4%BF%E0%A4%95%E0%A5%80" title="सॉफ्टवेयर अभियान्त्रिकी — hindi" lang="hi" hreflang="hi" data-title="सॉफ्टवेयर अभियान्त्रिकी" data-language-autonym="हिन्दी" data-language-local-name="hindi" class="interlanguage-link-target"><span>हिन्दी</span></a></li><li class="interlanguage-link interwiki-hr mw-list-item"><a href="https://hr.wikipedia.org/wiki/Programsko_in%C5%BEenjerstvo" title="Programsko inženjerstvo — kroatia" lang="hr" hreflang="hr" data-title="Programsko inženjerstvo" data-language-autonym="Hrvatski" data-language-local-name="kroatia" class="interlanguage-link-target"><span>Hrvatski</span></a></li><li class="interlanguage-link interwiki-io mw-list-item"><a href="https://io.wikipedia.org/wiki/Injeniorarto_di_programaro" title="Injeniorarto di programaro — ido" lang="io" hreflang="io" data-title="Injeniorarto di programaro" data-language-autonym="Ido" data-language-local-name="ido" class="interlanguage-link-target"><span>Ido</span></a></li><li class="interlanguage-link interwiki-is mw-list-item"><a href="https://is.wikipedia.org/wiki/Hugb%C3%BAna%C3%B0arverkfr%C3%A6%C3%B0i" title="Hugbúnaðarverkfræði — islanti" lang="is" hreflang="is" data-title="Hugbúnaðarverkfræði" data-language-autonym="Íslenska" data-language-local-name="islanti" class="interlanguage-link-target"><span>Íslenska</span></a></li><li class="interlanguage-link interwiki-it mw-list-item"><a href="https://it.wikipedia.org/wiki/Ingegneria_del_software" title="Ingegneria del software — italia" lang="it" hreflang="it" data-title="Ingegneria del software" data-language-autonym="Italiano" data-language-local-name="italia" class="interlanguage-link-target"><span>Italiano</span></a></li><li class="interlanguage-link interwiki-he mw-list-item"><a href="https://he.wikipedia.org/wiki/%D7%94%D7%A0%D7%93%D7%A1%D7%AA_%D7%AA%D7%95%D7%9B%D7%A0%D7%94" title="הנדסת תוכנה — heprea" lang="he" hreflang="he" data-title="הנדסת תוכנה" data-language-autonym="עברית" data-language-local-name="heprea" class="interlanguage-link-target"><span>עברית</span></a></li><li class="interlanguage-link interwiki-sw mw-list-item"><a href="https://sw.wikipedia.org/wiki/Uundaji_bidhaa_pepe_za_tarakilishi" title="Uundaji bidhaa pepe za tarakilishi — swahili" lang="sw" hreflang="sw" data-title="Uundaji bidhaa pepe za tarakilishi" data-language-autonym="Kiswahili" data-language-local-name="swahili" class="interlanguage-link-target"><span>Kiswahili</span></a></li><li class="interlanguage-link interwiki-ku mw-list-item"><a href="https://ku.wikipedia.org/wiki/Endazyariya_nermalav%C3%AA" title="Endazyariya nermalavê — kurdi" lang="ku" hreflang="ku" data-title="Endazyariya nermalavê" data-language-autonym="Kurdî" data-language-local-name="kurdi" class="interlanguage-link-target"><span>Kurdî</span></a></li><li class="interlanguage-link interwiki-lo mw-list-item"><a href="https://lo.wikipedia.org/wiki/%E0%BA%A7%E0%BA%B4%E0%BA%AA%E0%BA%B0%E0%BA%A7%E0%BA%B0%E0%BA%81%E0%BA%B3%E0%BB%82%E0%BA%A5%E0%BA%8A%E0%BA%B5%E0%BA%8A%E0%BA%B5%E0%BB%81%E0%BA%AD%E0%BA%99" title="ວິສະວະກຳໂລຊີຊີແອນ — lao" lang="lo" hreflang="lo" data-title="ວິສະວະກຳໂລຊີຊີແອນ" data-language-autonym="ລາວ" data-language-local-name="lao" class="interlanguage-link-target"><span>ລາວ</span></a></li><li class="interlanguage-link interwiki-la mw-list-item"><a href="https://la.wikipedia.org/wiki/Ingeniaria_corporum_programmatum" title="Ingeniaria corporum programmatum — latina" lang="la" hreflang="la" data-title="Ingeniaria corporum programmatum" data-language-autonym="Latina" data-language-local-name="latina" class="interlanguage-link-target"><span>Latina</span></a></li><li class="interlanguage-link interwiki-lv mw-list-item"><a href="https://lv.wikipedia.org/wiki/Programmin%C5%BEenierija" title="Programminženierija — latvia" lang="lv" hreflang="lv" data-title="Programminženierija" data-language-autonym="Latviešu" data-language-local-name="latvia" class="interlanguage-link-target"><span>Latviešu</span></a></li><li class="interlanguage-link interwiki-lt mw-list-item"><a href="https://lt.wikipedia.org/wiki/Program%C5%B3_in%C5%BEinerija" title="Programų inžinerija — liettua" lang="lt" hreflang="lt" data-title="Programų inžinerija" data-language-autonym="Lietuvių" data-language-local-name="liettua" class="interlanguage-link-target"><span>Lietuvių</span></a></li><li class="interlanguage-link interwiki-hu mw-list-item"><a href="https://hu.wikipedia.org/wiki/Szoftverm%C3%A9rn%C3%B6ks%C3%A9g" title="Szoftvermérnökség — unkari" lang="hu" hreflang="hu" data-title="Szoftvermérnökség" data-language-autonym="Magyar" data-language-local-name="unkari" class="interlanguage-link-target"><span>Magyar</span></a></li><li class="interlanguage-link interwiki-mk mw-list-item"><a href="https://mk.wikipedia.org/wiki/%D0%98%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0_%D0%BD%D0%B0_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%81%D0%BA%D0%B0_%D0%BE%D0%BF%D1%80%D0%B5%D0%BC%D0%B0" title="Изработка на програмска опрема — makedonia" lang="mk" hreflang="mk" data-title="Изработка на програмска опрема" data-language-autonym="Македонски" data-language-local-name="makedonia" class="interlanguage-link-target"><span>Македонски</span></a></li><li class="interlanguage-link interwiki-ml mw-list-item"><a href="https://ml.wikipedia.org/wiki/%E0%B4%B8%E0%B5%8B%E0%B4%AB%E0%B5%8D%E0%B4%B1%E0%B5%8D%E0%B4%B1%E0%B5%8D%E2%80%8C%E0%B4%B5%E0%B5%86%E0%B4%AF%E0%B5%BC_%E0%B4%8E%E0%B4%9E%E0%B5%8D%E0%B4%9A%E0%B4%BF%E0%B4%A8%E0%B5%80%E0%B4%AF%E0%B4%B1%E0%B4%BF%E0%B4%99%E0%B5%8D" title="സോഫ്റ്റ്വെയർ എഞ്ചിനീയറിങ് — malajalam" lang="ml" hreflang="ml" data-title="സോഫ്റ്റ്വെയർ എഞ്ചിനീയറിങ്" data-language-autonym="മലയാളം" data-language-local-name="malajalam" class="interlanguage-link-target"><span>മലയാളം</span></a></li><li class="interlanguage-link interwiki-mwl mw-list-item"><a href="https://mwl.wikipedia.org/wiki/Angenharie_de_software" title="Angenharie de software — mirandeesi" lang="mwl" hreflang="mwl" data-title="Angenharie de software" data-language-autonym="Mirandés" data-language-local-name="mirandeesi" class="interlanguage-link-target"><span>Mirandés</span></a></li><li class="interlanguage-link interwiki-mn mw-list-item"><a href="https://mn.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC_%D1%85%D0%B0%D0%BD%D0%B3%D0%B0%D0%BC%D0%B6%D0%B8%D0%B9%D0%BD_%D0%B8%D0%BD%D0%B6%D0%B5%D0%BD%D0%B5%D1%80%D1%87%D0%BB%D1%8D%D0%BB" title="Програм хангамжийн инженерчлэл — mongoli" lang="mn" hreflang="mn" data-title="Програм хангамжийн инженерчлэл" data-language-autonym="Монгол" data-language-local-name="mongoli" class="interlanguage-link-target"><span>Монгол</span></a></li><li class="interlanguage-link interwiki-nl mw-list-item"><a href="https://nl.wikipedia.org/wiki/Software_engineering" title="Software engineering — hollanti" lang="nl" hreflang="nl" data-title="Software engineering" data-language-autonym="Nederlands" data-language-local-name="hollanti" class="interlanguage-link-target"><span>Nederlands</span></a></li><li class="interlanguage-link interwiki-ja mw-list-item"><a href="https://ja.wikipedia.org/wiki/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E5%B7%A5%E5%AD%A6" title="ソフトウェア工学 — japani" lang="ja" hreflang="ja" data-title="ソフトウェア工学" data-language-autonym="日本語" data-language-local-name="japani" class="interlanguage-link-target"><span>日本語</span></a></li><li class="interlanguage-link interwiki-no mw-list-item"><a href="https://no.wikipedia.org/wiki/Programvareutvikling" title="Programvareutvikling — norjan bokmål" lang="nb" hreflang="nb" data-title="Programvareutvikling" data-language-autonym="Norsk bokmål" data-language-local-name="norjan bokmål" class="interlanguage-link-target"><span>Norsk bokmål</span></a></li><li class="interlanguage-link interwiki-nn mw-list-item"><a href="https://nn.wikipedia.org/wiki/Programvareutvikling" title="Programvareutvikling — norjan nynorsk" lang="nn" hreflang="nn" data-title="Programvareutvikling" data-language-autonym="Norsk nynorsk" data-language-local-name="norjan nynorsk" class="interlanguage-link-target"><span>Norsk nynorsk</span></a></li><li class="interlanguage-link interwiki-or mw-list-item"><a href="https://or.wikipedia.org/wiki/%E0%AC%B8%E0%AC%AB%E0%AD%8D%E0%AC%9F%E0%AD%B1%E0%AD%87%E0%AC%B0_%E0%AC%87%E0%AC%9E%E0%AD%8D%E0%AC%9C%E0%AC%BF%E0%AC%A8%E0%AC%BF%E0%AD%9F%E0%AC%B0%E0%AC%BF%E0%AC%82" title="ସଫ୍ଟୱେର ଇଞ୍ଜିନିୟରିଂ — orija" lang="or" hreflang="or" data-title="ସଫ୍ଟୱେର ଇଞ୍ଜିନିୟରିଂ" data-language-autonym="ଓଡ଼ିଆ" data-language-local-name="orija" class="interlanguage-link-target"><span>ଓଡ଼ିଆ</span></a></li><li class="interlanguage-link interwiki-uz mw-list-item"><a href="https://uz.wikipedia.org/wiki/Dasturiy_ta%CA%BCminot_muhandisligi" title="Dasturiy taʼminot muhandisligi — uzbekki" lang="uz" hreflang="uz" data-title="Dasturiy taʼminot muhandisligi" data-language-autonym="Oʻzbekcha / ўзбекча" data-language-local-name="uzbekki" class="interlanguage-link-target"><span>Oʻzbekcha / ўзбекча</span></a></li><li class="interlanguage-link interwiki-ps mw-list-item"><a href="https://ps.wikipedia.org/wiki/%D8%AF_%D8%B3%D8%A7%D9%81%D9%BC%D9%88%D9%8A%D8%B1_%D8%A7%D9%86%D8%AC%D9%86%DB%8C%D8%B1%D9%8A" title="د سافټوير انجنیري — paštu" lang="ps" hreflang="ps" data-title="د سافټوير انجنیري" data-language-autonym="پښتو" data-language-local-name="paštu" class="interlanguage-link-target"><span>پښتو</span></a></li><li class="interlanguage-link interwiki-km mw-list-item"><a href="https://km.wikipedia.org/wiki/%E1%9E%9C%E1%9E%B7%E1%9E%9F%E1%9F%92%E1%9E%9C%E1%9E%80%E1%9E%98%E1%9F%92%E1%9E%98%E1%9E%95%E1%9F%92%E1%9E%93%E1%9F%82%E1%9E%80%E1%9E%91%E1%9E%93%E1%9F%8B" title="វិស្វកម្មផ្នែកទន់ — khmer" lang="km" hreflang="km" data-title="វិស្វកម្មផ្នែកទន់" data-language-autonym="ភាសាខ្មែរ" data-language-local-name="khmer" class="interlanguage-link-target"><span>ភាសាខ្មែរ</span></a></li><li class="interlanguage-link interwiki-pl mw-list-item"><a href="https://pl.wikipedia.org/wiki/In%C5%BCynieria_oprogramowania" title="Inżynieria oprogramowania — puola" lang="pl" hreflang="pl" data-title="Inżynieria oprogramowania" data-language-autonym="Polski" data-language-local-name="puola" class="interlanguage-link-target"><span>Polski</span></a></li><li class="interlanguage-link interwiki-pt mw-list-item"><a href="https://pt.wikipedia.org/wiki/Engenharia_de_software" title="Engenharia de software — portugali" lang="pt" hreflang="pt" data-title="Engenharia de software" data-language-autonym="Português" data-language-local-name="portugali" class="interlanguage-link-target"><span>Português</span></a></li><li class="interlanguage-link interwiki-kaa mw-list-item"><a href="https://kaa.wikipedia.org/wiki/Programmal%C4%B1q_injiniring" title="Programmalıq injiniring — karakalpakki" lang="kaa" hreflang="kaa" data-title="Programmalıq injiniring" data-language-autonym="Qaraqalpaqsha" data-language-local-name="karakalpakki" class="interlanguage-link-target"><span>Qaraqalpaqsha</span></a></li><li class="interlanguage-link interwiki-ro mw-list-item"><a href="https://ro.wikipedia.org/wiki/Inginerie_software" title="Inginerie software — romania" lang="ro" hreflang="ro" data-title="Inginerie software" data-language-autonym="Română" data-language-local-name="romania" class="interlanguage-link-target"><span>Română</span></a></li><li class="interlanguage-link interwiki-qu mw-list-item"><a href="https://qu.wikipedia.org/wiki/Llamp%27ukaq_k%27illikachay" title="Llamp'ukaq k'illikachay — ketšua" lang="qu" hreflang="qu" data-title="Llamp'ukaq k'illikachay" data-language-autonym="Runa Simi" data-language-local-name="ketšua" class="interlanguage-link-target"><span>Runa Simi</span></a></li><li class="interlanguage-link interwiki-ru mw-list-item"><a href="https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%B0%D1%8F_%D0%B8%D0%BD%D0%B6%D0%B5%D0%BD%D0%B5%D1%80%D0%B8%D1%8F" title="Программная инженерия — venäjä" lang="ru" hreflang="ru" data-title="Программная инженерия" data-language-autonym="Русский" data-language-local-name="venäjä" class="interlanguage-link-target"><span>Русский</span></a></li><li class="interlanguage-link interwiki-sco mw-list-item"><a href="https://sco.wikipedia.org/wiki/Saftware_ingineerin" title="Saftware ingineerin — skotti" lang="sco" hreflang="sco" data-title="Saftware ingineerin" data-language-autonym="Scots" data-language-local-name="skotti" class="interlanguage-link-target"><span>Scots</span></a></li><li class="interlanguage-link interwiki-sq mw-list-item"><a href="https://sq.wikipedia.org/wiki/Inxhinieria_Softuerike" title="Inxhinieria Softuerike — albania" lang="sq" hreflang="sq" data-title="Inxhinieria Softuerike" data-language-autonym="Shqip" data-language-local-name="albania" class="interlanguage-link-target"><span>Shqip</span></a></li><li class="interlanguage-link interwiki-si mw-list-item"><a href="https://si.wikipedia.org/wiki/%E0%B6%B8%E0%B7%98%E0%B6%AF%E0%B7%94%E0%B6%9A%E0%B7%8F%E0%B6%82%E0%B6%9C_%E0%B6%89%E0%B6%82%E0%B6%A2%E0%B7%92%E0%B6%B1%E0%B7%9A%E0%B6%BB%E0%B7%94_%E0%B7%81%E0%B7%92%E0%B6%BD%E0%B7%8A%E0%B6%B4%E0%B6%BA" title="මෘදුකාංග ඉංජිනේරු ශිල්පය — sinhala" lang="si" hreflang="si" data-title="මෘදුකාංග ඉංජිනේරු ශිල්පය" data-language-autonym="සිංහල" data-language-local-name="sinhala" class="interlanguage-link-target"><span>සිංහල</span></a></li><li class="interlanguage-link interwiki-simple mw-list-item"><a href="https://simple.wikipedia.org/wiki/Software_engineering" title="Software engineering — Simple English" lang="en-simple" hreflang="en-simple" data-title="Software engineering" data-language-autonym="Simple English" data-language-local-name="Simple English" class="interlanguage-link-target"><span>Simple English</span></a></li><li class="interlanguage-link interwiki-sd mw-list-item"><a href="https://sd.wikipedia.org/wiki/%D8%B3%D8%A7%D9%81%D9%BD_%D9%88%D9%8A%D8%A6%D8%B1_%D8%A7%D9%86%D8%AC%D9%86%D9%8A%D8%A6%D8%B1%D9%86%DA%AF" title="سافٽ ويئر انجنيئرنگ — sindhi" lang="sd" hreflang="sd" data-title="سافٽ ويئر انجنيئرنگ" data-language-autonym="سنڌي" data-language-local-name="sindhi" class="interlanguage-link-target"><span>سنڌي</span></a></li><li class="interlanguage-link interwiki-sk mw-list-item"><a href="https://sk.wikipedia.org/wiki/Softv%C3%A9rov%C3%A9_in%C5%BEinierstvo" title="Softvérové inžinierstvo — slovakki" lang="sk" hreflang="sk" data-title="Softvérové inžinierstvo" data-language-autonym="Slovenčina" data-language-local-name="slovakki" class="interlanguage-link-target"><span>Slovenčina</span></a></li><li class="interlanguage-link interwiki-ckb mw-list-item"><a href="https://ckb.wikipedia.org/wiki/%D8%A6%DB%95%D9%86%D8%AF%D8%A7%D8%B2%DB%8C%D8%A7%D8%B1%DB%8C%DB%8C_%D9%86%DB%95%D8%B1%D9%85%D8%A7%D9%85%DB%8E%D8%B1" title="ئەندازیاریی نەرمامێر — soranî" lang="ckb" hreflang="ckb" data-title="ئەندازیاریی نەرمامێر" data-language-autonym="کوردی" data-language-local-name="soranî" class="interlanguage-link-target"><span>کوردی</span></a></li><li class="interlanguage-link interwiki-sr mw-list-item"><a href="https://sr.wikipedia.org/wiki/%D0%98%D0%BD%D0%B6%D0%B5%D1%9A%D0%B5%D1%80%D0%B8%D0%BD%D0%B3_%D1%81%D0%BE%D1%84%D1%82%D0%B2%D0%B5%D1%80%D0%B0" title="Инжењеринг софтвера — serbia" lang="sr" hreflang="sr" data-title="Инжењеринг софтвера" data-language-autonym="Српски / srpski" data-language-local-name="serbia" class="interlanguage-link-target"><span>Српски / srpski</span></a></li><li class="interlanguage-link interwiki-sh mw-list-item"><a href="https://sh.wikipedia.org/wiki/Softversko_in%C5%BEenjerstvo" title="Softversko inženjerstvo — serbokroaatti" lang="sh" hreflang="sh" data-title="Softversko inženjerstvo" data-language-autonym="Srpskohrvatski / српскохрватски" data-language-local-name="serbokroaatti" class="interlanguage-link-target"><span>Srpskohrvatski / српскохрватски</span></a></li><li class="interlanguage-link interwiki-su mw-list-item"><a href="https://su.wikipedia.org/wiki/R%C3%A9kayasa_software" title="Rékayasa software — sunda" lang="su" hreflang="su" data-title="Rékayasa software" data-language-autonym="Sunda" data-language-local-name="sunda" class="interlanguage-link-target"><span>Sunda</span></a></li><li class="interlanguage-link interwiki-sv mw-list-item"><a href="https://sv.wikipedia.org/wiki/Programvaruutveckling" title="Programvaruutveckling — ruotsi" lang="sv" hreflang="sv" data-title="Programvaruutveckling" data-language-autonym="Svenska" data-language-local-name="ruotsi" class="interlanguage-link-target"><span>Svenska</span></a></li><li class="interlanguage-link interwiki-tl mw-list-item"><a href="https://tl.wikipedia.org/wiki/Inhenyeriyang_pang-software" title="Inhenyeriyang pang-software — tagalog" lang="tl" hreflang="tl" data-title="Inhenyeriyang pang-software" data-language-autonym="Tagalog" data-language-local-name="tagalog" class="interlanguage-link-target"><span>Tagalog</span></a></li><li class="interlanguage-link interwiki-ta mw-list-item"><a href="https://ta.wikipedia.org/wiki/%E0%AE%AE%E0%AF%86%E0%AE%A9%E0%AF%8D%E0%AE%AA%E0%AF%8A%E0%AE%B0%E0%AF%81%E0%AE%9F%E0%AF%8D_%E0%AE%AA%E0%AF%8A%E0%AE%B1%E0%AE%BF%E0%AE%AF%E0%AE%BF%E0%AE%AF%E0%AE%B2%E0%AF%8D" title="மென்பொருட் பொறியியல் — tamili" lang="ta" hreflang="ta" data-title="மென்பொருட் பொறியியல்" data-language-autonym="தமிழ்" data-language-local-name="tamili" class="interlanguage-link-target"><span>தமிழ்</span></a></li><li class="interlanguage-link interwiki-th mw-list-item"><a href="https://th.wikipedia.org/wiki/%E0%B8%A7%E0%B8%B4%E0%B8%A8%E0%B8%A7%E0%B8%81%E0%B8%A3%E0%B8%A3%E0%B8%A1%E0%B8%8B%E0%B8%AD%E0%B8%9F%E0%B8%95%E0%B9%8C%E0%B9%81%E0%B8%A7%E0%B8%A3%E0%B9%8C" title="วิศวกรรมซอฟต์แวร์ — thai" lang="th" hreflang="th" data-title="วิศวกรรมซอฟต์แวร์" data-language-autonym="ไทย" data-language-local-name="thai" class="interlanguage-link-target"><span>ไทย</span></a></li><li class="interlanguage-link interwiki-vi mw-list-item"><a href="https://vi.wikipedia.org/wiki/C%C3%B4ng_ngh%E1%BB%87_ph%E1%BA%A7n_m%E1%BB%81m" title="Công nghệ phần mềm — vietnam" lang="vi" hreflang="vi" data-title="Công nghệ phần mềm" data-language-autonym="Tiếng Việt" data-language-local-name="vietnam" class="interlanguage-link-target"><span>Tiếng Việt</span></a></li><li class="interlanguage-link interwiki-ti mw-list-item"><a href="https://ti.wikipedia.org/wiki/%E1%88%B6%E1%8D%8D%E1%89%B5%E1%8B%8C%E1%88%AD_%E1%88%9D%E1%88%85%E1%8A%95%E1%8B%B5%E1%88%B5%E1%8A%93" title="ሶፍትዌር ምህንድስና — tigrinja" lang="ti" hreflang="ti" data-title="ሶፍትዌር ምህንድስና" data-language-autonym="ትግርኛ" data-language-local-name="tigrinja" class="interlanguage-link-target"><span>ትግርኛ</span></a></li><li class="interlanguage-link interwiki-tr mw-list-item"><a href="https://tr.wikipedia.org/wiki/Yaz%C4%B1l%C4%B1m_m%C3%BChendisli%C4%9Fi" title="Yazılım mühendisliği — turkki" lang="tr" hreflang="tr" data-title="Yazılım mühendisliği" data-language-autonym="Türkçe" data-language-local-name="turkki" class="interlanguage-link-target"><span>Türkçe</span></a></li><li class="interlanguage-link interwiki-uk mw-list-item"><a href="https://uk.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BD%D0%B0_%D1%96%D0%BD%D0%B6%D0%B5%D0%BD%D0%B5%D1%80%D1%96%D1%8F" title="Програмна інженерія — ukraina" lang="uk" hreflang="uk" data-title="Програмна інженерія" data-language-autonym="Українська" data-language-local-name="ukraina" class="interlanguage-link-target"><span>Українська</span></a></li><li class="interlanguage-link interwiki-ur mw-list-item"><a href="https://ur.wikipedia.org/wiki/%D8%B3%D8%A7%D9%81%D9%B9_%D9%88%DB%8C%D8%A6%D8%B1_%D8%A7%D9%86%D8%AC%DB%8C%D9%86%D8%A6%D8%B1%D9%86%DA%AF" title="سافٹ ویئر انجینئرنگ — urdu" lang="ur" hreflang="ur" data-title="سافٹ ویئر انجینئرنگ" data-language-autonym="اردو" data-language-local-name="urdu" class="interlanguage-link-target"><span>اردو</span></a></li><li class="interlanguage-link interwiki-war mw-list-item"><a href="https://war.wikipedia.org/wiki/Inhenyeriya_hin_software" title="Inhenyeriya hin software — waray" lang="war" hreflang="war" data-title="Inhenyeriya hin software" data-language-autonym="Winaray" data-language-local-name="waray" class="interlanguage-link-target"><span>Winaray</span></a></li><li class="interlanguage-link interwiki-wuu mw-list-item"><a href="https://wuu.wikipedia.org/wiki/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B" title="软件工程 — wu-kiina" lang="wuu" hreflang="wuu" data-title="软件工程" data-language-autonym="吴语" data-language-local-name="wu-kiina" class="interlanguage-link-target"><span>吴语</span></a></li><li class="interlanguage-link interwiki-yi mw-list-item"><a href="https://yi.wikipedia.org/wiki/%D7%95%D7%95%D7%99%D7%99%D7%9B%D7%95%D7%95%D7%90%D7%A8%D7%92_%D7%90%D7%99%D7%A0%D7%96%D7%A9%D7%A2%D7%A0%D7%99%D7%A8%D7%99%D7%A2" title="ווייכווארג אינזשעניריע — jiddiš" lang="yi" hreflang="yi" data-title="ווייכווארג אינזשעניריע" data-language-autonym="ייִדיש" data-language-local-name="jiddiš" class="interlanguage-link-target"><span>ייִדיש</span></a></li><li class="interlanguage-link interwiki-zh-yue mw-list-item"><a href="https://zh-yue.wikipedia.org/wiki/%E8%BB%9F%E4%BB%B6%E5%B7%A5%E7%A8%8B" title="軟件工程 — kantoninkiina" lang="yue" hreflang="yue" data-title="軟件工程" data-language-autonym="粵語" data-language-local-name="kantoninkiina" class="interlanguage-link-target"><span>粵語</span></a></li><li class="interlanguage-link interwiki-zh mw-list-item"><a href="https://zh.wikipedia.org/wiki/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B" title="软件工程 — kiina" lang="zh" hreflang="zh" data-title="软件工程" data-language-autonym="中文" data-language-local-name="kiina" class="interlanguage-link-target"><span>中文</span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q80993#sitelinks-wikipedia" title="Muokkaa kieltenvälisiä linkkejä" class="wbc-editpage">Muokkaa linkkejä</a></span></div> </div> </nav> </div> </div> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> Sivua on viimeksi muutettu 13. marraskuuta 2024 kello 03.00.</li> <li id="footer-info-copyright">Teksti on saatavilla <a rel="nofollow" class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.fi">Creative Commons Attribution/Share-Alike</a> -lisenssillä; lisäehtoja voi sisältyä. Katso <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use/fi">käyttöehdot</a>.<br /> Wikipedia® on <a rel="nofollow" class="external text" href="https://wikimediafoundation.org/">Wikimedia Foundationin</a> rekisteröimä tavaramerkki.<br /> <a href="/wiki/Wikipedia:Artikkelien_ongelmat" title="Wikipedia:Artikkelien ongelmat">Ongelma artikkelissa?</a></li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Tietosuojakäytäntö</a></li> <li id="footer-places-about"><a href="/wiki/Wikipedia:Tietoja">Tietoja Wikipediasta</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikipedia:Vastuuvapaus">Vastuuvapaus</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Käytössäännöstö</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Kehittäjät</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/fi.wikipedia.org">Tilastot</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Evästekäytäntö</a></li> <li id="footer-places-mobileview"><a href="//fi.m.wikipedia.org/w/index.php?title=Ohjelmistotuotanto&mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobiilinäkymä</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> <script>(RLQ=window.RLQ||[]).push(function(){mw.log.warn("This page is using the deprecated ResourceLoader module \"codex-search-styles\".\n[1.43] Use a CodexModule with codexComponents to set your specific components used: https://www.mediawiki.org/wiki/Codex#Using_a_limited_subset_of_components");mw.config.set({"wgHostname":"mw-web.codfw.main-f69cdc8f6-k5cx6","wgBackendResponseTime":180,"wgPageParseReport":{"limitreport":{"cputime":"0.140","walltime":"0.227","ppvisitednodes":{"value":860,"limit":1000000},"postexpandincludesize":{"value":11844,"limit":2097152},"templateargumentsize":{"value":1019,"limit":2097152},"expansiondepth":{"value":14,"limit":100},"expensivefunctioncount":{"value":0,"limit":500},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":5816,"limit":5000000},"entityaccesscount":{"value":1,"limit":400},"timingprofile":["100.00% 167.793 1 -total"," 80.17% 134.524 4 Malline:Wikidata"," 44.72% 75.031 1 Malline:Commonscat-rivi"," 42.90% 71.984 1 Malline:Commons-rivi"," 22.62% 37.960 1 Malline:Viitteet"," 18.96% 31.807 7 Malline:Kirjaviite"," 11.19% 18.768 6 Malline:Verkkoviite"," 2.77% 4.654 1 Malline:Viitteetön"," 2.70% 4.528 1 Malline:K-en"," 2.67% 4.474 7 Malline:En"]},"scribunto":{"limitreport-timeusage":{"value":"0.015","limit":"10.000"},"limitreport-memusage":{"value":945031,"limit":52428800}},"cachereport":{"origin":"mw-web.eqiad.main-587f7d4878-rxpq4","timestamp":"20241120112032","ttl":2592000,"transientcontent":false}}});});</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"Ohjelmistotuotanto","url":"https:\/\/fi.wikipedia.org\/wiki\/Ohjelmistotuotanto","sameAs":"http:\/\/www.wikidata.org\/entity\/Q80993","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q80993","author":{"@type":"Organization","name":"Wikimedia-hankkeiden muokkaajat"},"publisher":{"@type":"Organization","name":"Wikimedia Foundation, Inc.","logo":{"@type":"ImageObject","url":"https:\/\/www.wikimedia.org\/static\/images\/wmf-hor-googpub.png"}},"datePublished":"2003-02-25T08:27:12Z","headline":"systemaattinen tietokoneohjelmien ja -ohjelmistojen valmistusprosessi"}</script> </body> </html>