SEPA päiväkirja. Aihe: Suunnittelumallit Tekijät: Tuukka Laakso ja Antti Kettunen Ryhmä: Neptune T Ohjelmistoprojekti I

Samankaltaiset tiedostot
SEPA päiväkirja. Aihe: Suunnittelumallit Tekijät: Tuukka Laakso ja Antti Kettunen

SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T

T Ohjelmistokehitysprojekti I Tekninen Määrittely

Valppaan asennus- ja käyttöohje

T SEPA - päiväkirja: Design Patterns. ETL työkalu

T Ohjelmistokehitysprojekti I Tekninen Määrittely

SEPA - Design Patterns

T SEPA - päiväkirja: Design Patterns. ETL työkalu

Hirviö. Design Patterns

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A Kandidaatintyö ja seminaari

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

SEPA diary. Dokumentti: SEPA_diary_PK_HS.doc Päiväys: Projekti: AgileElephant Versio: V0.3

Liite 1: KualiKSB skenaariot ja PoC tulokset. 1. Palvelun kehittäjän näkökulma. KualiKSB. Sivu 1. Tilanne Vaatimus Ongelma jos vaatimus ei toteudu

ohjelman arkkitehtuurista.

Amazon Web Services (AWS) on varmaankin maailman suosituin IaaS-tarjoaja. Lisäksi se tarjoaa erilaisia PaaS-kategoriaan kuuluvia palveluita.

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton

Ohjelmistotuotanto. Luento

SEPA päiväkirja. Aihe: Staattiset menetelmät Tekijät: Mikko Halttunen 58198B, Mikko Närjänen 58122B Ryhmä: Neptune T Ohjelmistoprojekti I


T Henkilökohtainen harjoitus: FASTAXON

Analyysi on tulkkaamista

Graafinen käyttöliittymä, osa 1

Järjestelmäarkkitehtuuri (TK081702) Web Services. Web Services

Ohjelmistojen suunnittelu

T Ohjelmistojen määrittely- ja suunnittelumenetelmät

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS Ti Kandidaatintyö ja seminaari

Uudelleenkäytön jako kahteen

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:

AJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML

Suunnittelumalleja, MVC. Juha Järvensivu 2008

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

Järjestelmäarkkitehtuuri (TK081702)

T Ohjelmistokehitysprojekti I - Iteraatiosuunnitelma (I2)

opiskelun suunnittelujärjestelmä, kurki ja ilmo käyttävät kaikki samaa tietokantaa, ja uusi järjestelmä tulee osaksi tätä.

Hirviö. Design Patterns

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

T Tietojenkäsittelyopin ohjelmatyö Hirviöryhmä loppukatselmointi. Hirviö. Projektikatselmointi

P e d a c o d e ohjelmointikoulutus verkossa

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2016

Tik Ohjelmistoprojektien Hallinta

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

Web-palvelu voidaan ajatella jaettavaksi kahteen erilliseen kokonaisuuteen: itse palvelun toiminnallisuuden toteuttava osa ja osa, joka mahdollistaa k

PUSH palvelut mobiilikehityksessä: Android ja Windows phone 7. Pauli Kettunen

Good Minton Sulkapalloliiton Kilpailujärjestelmä SEPA: Heuristinen arviointi

CQRS, -ES, PACS, DICOM, WTF?

Viestinvälitysarkkitehtuurit

T Ohjelmistojen määrittely- ja suunnittelumenetelmät Harjoitustyöraportti TNT - Tarkistetaan Ne Tentit Arkkitehtuuri- ja suunnittelumalli

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat

Ohjelmointi 1 / syksy /20: IDE

Tik Harjoitustyö

Liiketoimintasovellusten modernisointi - Anna sovelluksillesi uusi elämä. Sofor varmistaa investointiesi tehokkaan hyödyntämisen

Arkkitehtuuri. Ylätason sovellusarkkitehtuuri

Olio-ohjelmointi Johdanto suunnittelumalleihin. 1. Yleistä

Arkkitehtuurien tutkimus Outi Räihä. OHJ-3200 Ohjelmistoarkkitehtuurit. Darwin-projekti. Johdanto

Viestinvälitysarkkitehtuurit Lähtökohta:

Älysopimusten kehittäminen. Sopimus suuntautunut ohjelmointi

Tik Harjoitustyö

Ohjelmistotekniikan menetelmät, suunnittelumalleja

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

Matkailutoimialan aamu Design Hill, Halikko Riikka Niemelä

Projektityö: Mobiiliajopäiväkirja. Mikko Suomalainen

Tapahtuipa Testaajalle...

Järjestelmäarkkitehtuuri (TK081702) Lähtökohta. Integroinnin tavoitteet

Järjestelmäarkkitehtuuri (TK081702) Avoimet web-rajapinnat

SEPA päiväkirja. BetaTeam. Juho Mäkinen, 57796V, Jari Leppä, 42710V, Versio Pvm Tekijä Kuvaus

Loppuraportti. Virtuaali-Frami, CAVE-ohjelmisto. Harri Mähönen projektiassistentti Seinäjoen ammattikorkeakoulu. Versio

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä

Tarjolla tänää: Ohjelmiston toteutuksesta. Kuinka tulla hyväksi ohjelmoijaksi? CRC-kortit. Testilähtöinen kehittäminen JOT2007. Uudelleenrakentaminen

1 Sisällysluettelo 2 Johdanto 3 Menetelmän käyttö

T harjoitustyö, kevät 2012

Tekoälykokeiluprojekti. Henkilökohtaisen kalenterin optimointi tekoälyllä Skycode Oy (ent. Suomen Mediatoimisto Oy)

Ohjelmistojen mallintaminen, mallintaminen ja UML

Sisällys. Ratkaisumallien historia. Ratkaisumalli. Ratkaisumalli [2] Esimerkki: Composite [2] Esimerkki: Composite. Jaakko Vuolasto 25.1.

Logistiikkapalvelu. uusia työkaluja markkinointiin

Ylläpitodokumentti. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Tekninen suunnitelma - StatbeatMOBILE

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }

Aikuisopiskelijan viikko - Viitekehys alueellisten verkostojen yhteistyöhön

Antitammirobotti. Antti Meriläinen Martin Pärtel 29. toukokuuta 2009

Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus

Tavallisen videomainoksen sijasta Ruudussa voidaan mainostauolla esittää dynaamisia spotteja.

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VII Suunnittelumallit Adapter ja Composite

Raportti Tapahtumia kaikille! -oppaasta tehdystä kyselystä

Tiedonsiirto- ja rajapintastandardit

CT50A2601 Käyttöjärjestelmät Androidin ja Symbianin vertailu Seminaarityö

Ohjelmistojen mallintaminen. Luento 11, 7.12.

S11-09 Control System for an. Autonomous Household Robot Platform

T Refaktorointi

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

T Ohjelmistojen määrittely- ja suunnittelumenetelmät Harjoitustyöraportti TNT - Tarkistetaan Ne Tentit Analyysimalli

Projektisuunnitelma. (välipalautukseen muokattu versio) Vesiprosessin sekvenssiohjelmointi ja simulointiavusteinen testaus

Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta. Hajautuksen hyötyjä

Transkriptio:

SEPA päiväkirja Aihe: Suunnittelumallit Tekijät: Tuukka Laakso ja Antti Kettunen Ryhmä: Neptune T-76.4110 Ohjelmistoprojekti I

1. Johdanto...3 2. Menetelmän käyttö...4 3. Kokemukset ja muutokset...5 4 Yhteenveto...9

1. Johdanto SEPAn aiheenamme meillä on suunnittelumallit (design patterns). Lähtökohdaksi otimme Craig Larmanin kirjasta "Applying UML and Patterns" löytyvät Gang-of- Four suunnittelumallit adapter, factory, singleton, strategy, composite, facade, abstract factory, observer/publish-subscribe ja proxy. Kyseinen kirja oli kurssimateriaalina kurssilla Ohjelmistojen määrittely- ja suunnittelumenetelmät, joten mallien kuvaukset löytyvät myös kurssin prujuista. Tämä on hyödyksi, koska ryhmästämme osa on kyseisen kurssin suorittanut, joten heillekin nämä mallit ovat ainakin nimeltä tuttuja. Aiheen valitsimme yksinkertaisesti siitä syystä, että se sopii meille ja projektiin hyvin. Suunnittelumalleja olisi joka tapauksessa jouduttu käyttämään ja on luontevinta, että pääarkkitehti on mukana suunnittelumalleista tehtävässä SEPAssa. Suunnittelumallien lähteet: Larman, Craig. Applying UML and patterns: an introduction to objectoriented analysis and design and iterative development, 3rd ed., 2005

2. Menetelmän käyttö Suunnittelumallien käyttö painottuu pääosin järjestelmän arkkitehtuurin sekä matalamman tason suunnitteluun että toteutusteknologioiden valintaan. Myös koodikatselmoinnit ja refaktorointi voivat tuoda esiin tarvetta suunnittelumallien soveltamiselle. Pääarkkitehdilla on suurin vastuu suunnittelumallien soveltamisessa, joten hänellä on vahvin kokemus ja tieto kyseisestä menetelmästä. Tätä varten olemme koonneet muutaman referenssiteoksen aiheesta. Pääarkkitehti sekä myös muut suunnitteluun osallistuvat kehittäjät tutustuvat järjestelmän kannalta merkittäviin suunnittelumalleihin sekä hyviksi havaittuihin menetelmiin ja tilanteisiin joissa malleja kannattaa käyttää. Suunnittelun edetessä ja kun tarvittavat teknologiat on saatu päätettyä, välitetään kehittäjille tietoa tehdyistä valinnoista ja miksi niihin päädytty. Kehittäjät pystyvät aloittamaan tutustumisen teknologioihin ja sen sisältämiin suunnittelumalleihin, joita pyrimme tuomaan esiin mm. wikissä. Järjestelmästä laaditut suunnitelmat ja UML-kaaviot dokumentoivat kehittäjille suunnittelumallien käyttöä. Lisäksi toteutusteknologiat sisältävät usein monia suunnittelumalleja ja ajavat automaattisesti käyttämään niitä. Teknologioiden oikeaoppinen käyttö on siis tärkeää, joten Wikiin kootaan materiaalia, vinkkejä ja ratkotaan ongelmia niille varatuilla sivuilla. Suunnittelumallien käyttöä pyritään kontrolloimaan pääarkkitehdin aktiivisella osallistumisella kehittäjien kohtaamien ongelmien ratkomiseen sekä koodikatselmoineilla. Suunniteltaessa järjestelmää huomioitavaa on ainakin mallien ylisoveltamisen välttäminen. Käytetään niitä vain kun voidaan saavuttaa merkittävää hyötyä jatkossa modulaarisuuden tms. osalla ja tällä on kyseisessä järjestelmän osassa jotain merkitystä.

3. Kokemukset ja muutokset 3.1 Iteraatio 1 3.1.1 Kehittäjille suunnattu kysely suunnittelumalleista Iteraatio 1:n lopuksi kehittäjille lähetettiin sähköpostitse seuraava kysely: 1. Käytitkö design patterneja suunnitellessasi ohjelmaa? 2. Missä ja mitä design patterneja käytit? 3. Miten design patternin tarve tuli esiin? 4. Kuinka kauan käytit aikaa sopivan design patternin etsimiseen? 5. Mitä laatuatribuutteja (testattavuus yms.) design patternin avulla parannettiin? 6. Koitko että design patternien käytöstä oli hyötyä suunnittelussa ja/tai ohjelmoinnissa? 7. Olisitko käyttänyt design patterneja ilman että käytäntö oli "pakollinen"? Kehittäjistä kaikki mainitsivat käyttäneensä suunnittelumalleja. Simulaattorin kehittäjät kertoivat käyttäneensä luokkarakenteen suunnittelussa Facadea ja Strategyä. TetraConnection-paketin kehittäjä Markku Huttunen kertoi suunnittelumallien käytöstä seuraavasti: "Luokka MessageTransferer toimii eräänlaisena Julkisivuna eli Facadena. Se kokoaa ja piilottaa osan alijärjestelmän tarjoamista toiminnallisuuksista ja pyrkii näin tarjoamaan yksinkertaisemman rajapinnan corelle. Tavallaan luokan MessageHandler voitaisiin ajatella toimivan eräänlaisena Sovittimena eli Adapterina. Se kääntää EPA:n ymmärtämiä viestejä Valppaan ymmärtämään muotoon ja päinvastoin. Luokat MessageHandler ja MessageTransferer tekevät myös tarkkailua siinä määrin, että MessageHandler luokassa hoidetaan istunnon uudelleen loggaaminen ja MessageTransferer luokassa luodaan uusi istunto jos vanha on jo ehtinyt vanheta. Toisaalta koska tämä tarkkailu tapahtuu vain viestejä lähetettäessä/vastaanotettaessa, joka tapahtuu coresta käsin, on vähän kyseenalaista voidaanko sanoa Tarkkailija(Observer) design patternia käytettäneen." Kehittäjien mielestä suunnittelumallien käyttö oli itsestään selvää ja suurin tarve malleille oli rajapinnoissa. Kukaan kehittäjistä ei raportoinut käyttäneensä sopivan suunnittelumallin etsimiseen juurikaan aikaa. Malleja sovellettiin joko "siinä sivussa" tai tajuttiin vasta myöhemmin että mallia oli käytetty, joten kehittäjät kokivat vaikeaksi erotella nimenomaan suunnittelumallien etsimiseen käytettyä aikaa. Laatuattribuuteista kehittäjät kokivat parantaneensa käytettävyyttä, ylläpidettävyyttä, siirrettävyyttä, tehokkuutta ja testattavuutta.

Kaikki kehittäjät kokivat suunnittelumallien käytön hyödylliseksi ja olisivat käyttäneet suunnittelumalleja myös ilman SEPAa. 3.1.2 Suunnittelumallien käytön analyysi 3.1.2.1 Valpas Valppaan toteuttamiseen valittiin avoimen lähdekoodin komponentit Spring, Hibernate ja Quartz. Komponentit toivat mukanaan omat mallinsa, jotka tiedettiin suunnittelumallien kannalta toimiviksi. Spring mahdollistaa olioiden kytkemisen toisiinsa koskematta lähdekoodiin ja se tarjoaa olioiden instantiointiin singleton ja tehdastyyppiset tavat. Tähän mennessä tarvitsimme tosin vain singletoneja. Laitteidenvalvontapalvelin Laitteidenvalvontapalvelimen arkkitehtuurissa otettiin huomioon mahdolliset vaihtoehtoiset käyttöliittymät tarjoten palvelimen toimintoihin RMI-rajapinnat. Käytimme näiden toteuttamiseen Springin tarjoamia proxy-tehtaita, jolloin ainoaksi työksi jäi irrottaa erilleen RMI:n yli käytettävistä palveluista niiden rajapinnat. Rajapinnat muodostettiin ConfigurationFacadeBeanista sekä DeviceFacadeBeanista, jotka tarjoavat selkeät palvelut Valppaan ohjaamiseen. Proxy-suunnittelumallia käytimme lisäksi transaktioiden hallintaan käyttäen Springin TransactionInterceptoria, joka toimii näkymättömänä proxynä varsinaisen tietokantaa käyttävän objektin välissä. Transaktiot on määritelty deklaratiivisesti ja niiden käyttö ei näy itse koodissa. Tietokannan saanti on toteutettiin käyttäen Hibernatea sekä Springin tarjoamia luokkia sen käyttöön. Luokat abstrahoivat kannan käytön muulta sovellukselta tietokannan aksessointiolioilla (DAO suunnittelumalli). Tällä saavutetaan joustavuutta, jos kantaa joudutaan vaihtamaan tai Hibernaten käyttö ei enää ole soveliasta. Lisäksi laitteiden valvonnassa on käytetty tarkkailija-suunnittelumallia, joka helpottaa tulevassa iteraatiossa vikatilanteista ilmoittavien komponenttien toteutuksessa. Lisäksi TETRA-verkossa EPA:n avulla viestiminen on abstrahoitu viestintää suorittavan julkisivun (Facade) taakse. Tällä saadaan koottua mm. Apache Axis:sta ja EPA:sta riippuvat osat yhteen paikkaan ja muulle sovellukselle tarjotaan laitteiden valvonnan kannalta riittävä, mutta yksinkertainen rajapinta. Valppaan komentorivikäyttöliittymä Komentorivikäyttöliittymä on pyritty toteuttamaan helposti laajennettavaksi. Tämä on saavutettu käyttämällä tehdassuunnittelumallia komentoparserien luontiin, jolloin varsinaisen parserin ei tarvitse tietää mitkä komennot ovat mahdollisia. Lisäksi parsitusta datasta luodaan komentoja, jotka välitetään niitä suorittavalle luokalle käyttäen viestin tai tässä tapauksessa komennon edelleen lähettämistä (Double Dispatch). Ratkaisu on hieman kömpelö, sillä komentoja suorittavan luokan rajapintaa joudutaan laajentamaan lisättäessä komentoja ja lisäksi se sen koko paisuu tarpeettoman suureksi. Jatkossa olisi syytä siirtää suoritus itse komentoihin ja käyttää

niiden luomiseen vaikka tehdasta, joka yhdistää tarvittavat Valppaan komponentit niihin. 3.1.2.2 Simulaattori Simulaattorissa puhelimen ohjaus käyttämällä sarjaporttia abstrahoitiin omaan julkisivuunsa. Tällä päästiin simulaattorin muissa osissa eroon turhista yksityiskohdista ja viestintä sarjaportin välityksellä on mahdollisimman yksinkertaista. Simulaattorin toteutuksessa tuli vastaan ongelmia käyttöjärjestelmien kanssa ja jouduttiin käyttämään eri kirjastoja eri käyttöjärjestelmissä. Julkisivu helpotti kirjaston vaihtamista. 3.1.2.3 Analysaattori Analysaattorissa suunnittelumallien käyttö rajoittui käyttöliittymään, joka toteutettiin Swingillä. Swing perustuu MVC-suunnittelumalliin, jonka ideana on erottaa käyttöliittymäkomponenttien malli, näkymä ja ohjauslogiikka toisistaan. Lisäksi toteutuksessa käytettiin tarkkailijoita kuuntelemaan komponenttien tapahtumia. MVC:n ja Swingin hyödyt Analysaattorissa rajoittuivat suurimmaksi osaksi käyttöliittymän rakentamisen helppouteen ja nopeuteen. Analysaattoria ei ole tarkoitus jatkokehittää, joten MVC:n kehittyneemmät edut tuskin tulevat ilmi. 3.2 Iteraatio 2 3.2.1 Suunnittelumallien käytön analyysi 3.2.1.1 Valpas Web-käyttöliittymä Toisen iteraation ainut suunnittelumallien kannalta merkittävä tehtävä oli webkäyttöliittymän kehittäminen. Alkuperäisessä arkkitehtuurissa päätimme käyttää liittymän suunnittelemiseen jotain MVC-pohjaista frameworkiä. Koska valitsimme Springin tukemaan Valppaan toteutusta ja käytimme sitä siinä erittäin tehokkaasti ottaen huomioon kehittäjien kokemuksen aiheesta, päätimme jatkaa samoilla linjoilla myös web-käyttöliittymän kanssa. Lisäksi käytimme Struts-tilesiä käyttöliittymän erillisten komponenttien rakentamiseen. Springin MVC osoittautui sopivan kevyeksi ja antoi paljon liikkumavapautta toteutukseen. Spring ei ota kantaa käytettävään view-teknologiaan, mutta päätimme käyttää JSP-sivuja ja JSTL:ää. Pyrimme mahdollisimman puhtaasti erottamaan datan näyttämisen sen käsittelystä, joten JSP-sivuissa on pyritty käyttämään mahdollisimman vähän logiikkaa. Mallina käytimme suoraan Valppaan transferobjekteja ja logiikka on sisällytetty kontrollerien toteutuksiin. Lisäksi määritimme, että käyttöliittymässä kaikki tilaa muuttavat operaatiot tehdään POST-metodilla ja muut GET-metodilla. Tähän ei kuitenkaan aivan päästy sillä konsepti ei ollut kaikissa kohtaa täysin selvä kehittäjille. Lisäksi käytimme ns. redirect after post - suunnittelumallia lomakkeiden kanssa estämään ylimääräiset lähetykset ja näistä johtuvat väärät tilamuutokset.

Laitteidenvalvontapalvelin Ensimmäisessä iteraatiossa laitteiden valvonnassa käytetty tarkkailija-suunnittelumalli ei osoittautunut hyödylliseksi sillä asiakkaan haluamia vaatimuksia muutettiin realistisemmiksi ja vähemmän merkittäviä toimintoja karsittiin. Tosin GSMmuistutusten toteutus oli pöydällä vielä loppumetreille ja se oltaisiin voitu toteuttaa käyttäen suunniteltua rajapintaa. Muu laitteidenvalvontapalvelimen kehitys painottui lähinnä refaktorointiin ja bugien korjaukseen. 3.2.2.2 Analysaattori Analysaattoriin toteutettiin I2:ssa joitakin käyttäjän elämää helpottavia lisätoiminnallisuuksia. Koska kyseessä olivat käyttöliittymäkomponentit, jotka toteutettiin Swingillä, käytettiin edelleenkin MVC-mallia ja tarkkailijoita, eivätkä kokemukset muuttuneet iteraatio 1:stä. 3.2.2.3 Simulaattori Simulaattorin osalta iteraatio 2:ssa keskityttiin lähinnä bugikorjauksiin. Pieniä lisäominaisuuksia myös toteutettiin, mutta suunnittelumallien osalta uusia kokemuksia ei tullut.

4 Yhteenveto Yhteenvetona voidaan todeta, että SEPAn aihe oli hyödyllinen, mutta SEPAn teko aiheesta osoittautui kohtuullisen hankalaksi. Tämä siitä syystä että projektin aikana oli hyvin vaikea erottaa milloin teki SEPAa, milloin "normaalia" suunnittelua, joka teki kokemusten keräämisen hieman hankalaksi. Lisäksi aihe oli sen verran tuttu kaikille, että varsinaista hyötyä SEPAsta ei ollut, koska suurin osa tiesi jo etukäteen mitä suunnittelumallit ovat ja miten niitä käytetään, ja todennäköisesti olisivat käyttäneet suunnittelumalleja muutenkin. SEPAn ansiosta myös tuli kiinnitettyä huomiota siihen, millaisia suunnittelumalleja valmiissa komponenteissa, kuten Springissä ja Swingissä, on käytetty. Tästä ei kuitenkaan projektille suoraa lisäarvoa tullut, koska näitä komponentteja olisi käytetty myös ilman SEPAa. SEPAn hyödyksi voi lukea, että kaikki kuitenkin varmasti kiinnittivät huomiota suunnittelumallien käyttöön. Ehkä ilman SEPAa suunnittelumalleja ei olisi käytetty yhtä paljon ja yhtä hyödyllisesti, joka taas olisi saattanut aiheuttaa vaikeuksia projektin etenemiselle varsinkin toisessa iteraatiossa, kun "vanhan" koodin päälle piti rakentaa uusia ominaisuuksia. Suunnittelumallien käyttö selkeytti luokkatason arkkitehtuuria, kun luokan nimestä pystyi päättelemään, mitä mallia luokassa oli käytetty (esimerkiksi luokka DeviceFacade oli julkisivu).