Szoftvermérnökség
A szoftverfejlesztés mérnöki megközelítést alkalmaz.[1][2][3] A gyakorló szakember, a szoftverfejlesztő a mérnöki tervezési folyamatot alkalmazza szoftverek fejlesztésére.
A programozó és kódoló kifejezések lefedik a szoftverfejlesztő fogalmát, de ezek csak a tipikus szoftverfejlesztési munkaterhelés építési aspektusát jelzik.[4]
A szoftverfejlesztő alkalmazza a szoftverfejlesztés folyamatát,[1][5] amely magában foglalja a szoftverrendszerek meghatározását, megvalósítását, tesztelését, kezelését és karbantartását, valamint magának a szoftverfejlesztés folyamatának fejlesztését is.
Története
[szerkesztés]Az 1960-as évektől kezdve, a szoftverfejlesztést külön mérnöki szakterületként ismerték el.
A szoftverfejlesztés fejlődését küzdelemnek tekintették. Nehéz volt lépést tartani a hardverrel, ami sok problémát okoz a szoftverfejlesztőknek. A problémák között szerepelt olyan szoftver, amely túllépte a költségvetést, túllépte a határidőt, kiterjedt hibakeresést és karbantartást igényel, és sikertelenül elégítette ki a fogyasztók igényeit, vagy nem is készült el.
1968-ban a NATO megtartotta az első Szoftvermérnökségi konferenciát, ahol a szoftverekkel kapcsolatos problémák kerültek előtérbe: irányelveket és legjobb gyakorlatokat dolgoztak ki a szoftverfejlesztéshez.[6]
A szoftverfejlesztés kifejezés eredetét különböző forrásokhoz kötik. A kifejezés először megjelent az "Computers and Automation" 1965. júniusi számában, egy vállalatok által kínált szolgáltatások listájában,[7] és formálisan többek között az ACM elnökének, Anthony A. Oettinger, 1966. augusztusi levelében is felbukkant az ACM (9.Kötet, 8.Szám) "levél az ACM tagjaihoz" című folyóiratban.[8][9] Ehhez társul egy 1968-as NATO-konferencia címe is, amelyet Friedrich L. Bauer professzor tartott.[10] Margaret Hamilton leírta a "szoftverfejlesztés" fegyelmét az Apollo-küldetések során, hogy legitimitást adjon annak, amit csinálnak.[11] Akkoriban „ szoftverválságnak ” számítottak.[12][13] A 40. Nemzetközi Szoftvermérnökségi Konferencia (ICSE 2018) Frederick Brooks[14] és Margaret Hamilton plenáris ülésein ünnepli a „Szoftvermérnökség” 50. évfordulóját.[15]
1984-ben, a Software Engineering Institute (SEI) szövetségi finanszírozású kutatási és fejlesztési központként jött létre, amelynek központja a Carnegie Mellon Egyetem campusán található, Pittsburgh-ben (Pennsylvania, Egyesült Államok).[16] Watts Humphrey megalapította a SEI Software Process Programot, amelynek célja a szoftvermérnökségii folyamat megértése és menedzselése..[16] A bevezetett Process Maturity Levels lett a Capability Maturity Model Integration for Development(CMMI-DEV), amely meghatározta, hogy az Egyesült Államok kormánya hogyan értékeli a szoftverfejlesztő csapat képességeit.
A szoftverfejlesztési területen a modern, általánosan elfogadott legjobb gyakorlatokat az ISO/IEC JTC 1/SC 7 alkalmazottként gyűjtötte össze, és Szoftverfejlesztési Tudástár (SWEBOK) címen publikálták.[5] A szoftverfejlesztést az egyik fő számítástechnikai tudományágnak tekintik.[17]
Terminológia
[szerkesztés]Meghatározás
[szerkesztés]A szoftverfejlesztés figyelemre méltó definíciói a következők:
- "A tudományos és technológiai ismeretek, módszerek és tapasztalatok szisztematikus alkalmazása szoftverek tervezésére, megvalósítására, tesztelésére és dokumentálására" – The Bureau of Labor Statistics – IEEE Systems and Software Engineering – Vocabulary[18]
- "Szisztematikus, fegyelmezett, számszerűsíthető megközelítés alkalmazása a szoftver fejlesztésére, üzemeltetésére és karbantartására" – IEEE Standard Glossary of Software Engineering Terminology[19]
- "egy mérnöki tudományág, amely a szoftvergyártás minden aspektusával foglalkozik" – Ian Sommerville[20]
- „megbízható és valódi gépeken hatékonyan működő szoftverek gazdaságos beszerzése érdekében megalapozott tervezési elvek kialakítása és alkalmazása” – Fritz Bauer[21]
- "a számítástechnika egyik ága, amely összetett számítógépes programok tervezésével, megvalósításával és karbantartásával foglalkozik" – Merriam-Webster[22]
- " ” nemcsak a kód írását foglalja magában, hanem az összes olyan eszközt és folyamatot, amelyet a szervezet a kód felépítésére és karbantartására használ. [...] A szoftverfejlesztést úgy is felfoghatjuk, mint „idővel integrált programozást”. ' – Szoftverfejlesztés a Google-nál[23]
A kifejezést kevésbé formálisan is használták:
- mint informális kortárs kifejezés a tevékenységek széles körére, amelyeket korábban számítógépes programozásnak és rendszerelemzésnek neveztek;[24]
- mint a számítógép-programozás gyakorlatának minden aspektusára vonatkozó tág fogalom, szemben a számítógép-programozás elméletével, amelyet formálisan a számítástechnika egyik altudományaként tanulmányoznak;[25]
- mint a számítógépes programozás egy sajátos megközelítésének támogatását testesítő kifejezés, amely azt sürgeti, hogy mérnöki tudományágként kezeljék, nem pedig művészetként vagy mesterségként, és támogatja az ajánlott gyakorlatok kodifikációját.[26]
Etimológia
[szerkesztés]Margaret Hamilton a "szoftverfejlesztő" kifejezést népszerűsítette munkája során az Apollo program-ban. A "fejlesztő" kifejezést azért használták, hogy elismerjék, hogy a munkát ugyanolyan komolyan kell venni, mint más hozzájárulásokat a technológia fejlődéséhez. Hamilton részletezi a kifejezés használatát:
Amikor először kitaláltam a kifejezést, még senki sem hallott róla, legalábbis a mi világunkban. Ez egy folyamatos vicc volt sokáig. Szerettek viccelni a radikális elképzeléseimmel. Emlékezetes nap volt, amikor az egyik legelismertebb hardverguru mindenkinek elmagyarázta egy értekezleten, hogy egyetért velem abban, hogy a szoftverkészítés folyamatát is mérnöki tudományágnak kell tekinteni, akárcsak a hardvereknél. Nem azért, mert önmagában elfogadta az új "kifejezést", hanem azért, mert kiérdemeltük az ő és a többiek elfogadását a teremben, mint egy saját jogán mérnöki területet..[27]
Alkalmasság
[szerkesztés]Egyes kommentátorok élesen eltérően vélekednek a szoftverfejlesztés meghatározásáról vagy annak legitimitásáról, mint mérnöki diszciplínáról. David Parnas azt mondta, hogy a szoftvermérnökség valójában a mérnöki munka egyik formája.[28][29] Steve McConnell szerint nem az, de annak kellene lennie.[30] Donald Knuth szerint a programozás művészet és tudomány is.[31] Edsger W. Dijkstra azt állította, hogy az Egyesült Államokban félreértelmezték a szoftverfejlesztés és a szoftvermérnök kifejezéseket.[32]
Munkaterhelés
[szerkesztés]Követelményelemzés
[szerkesztés]A követelmények tervezése a szoftverkövetelmények előhívásáról, elemzéséről, specifikációjáról és érvényesítéséről szól. A szoftverkövetelmények lehetnek funkcionálisak, nem funkcionálisak vagy tartományiak.
A funkcionális követelmények az elvárt viselkedéseket írják le (pl. kimenetek). A nem funkcionális követelmények olyan kérdéseket határoznak meg, mint a hordozhatóság, biztonság, karbantarthatóság, megbízhatóság, skálázhatóság, teljesítmény, újrafelhasználhatóság és rugalmasság. Ezek a következő típusokba sorolhatók: interfész korlátozások, teljesítmény korlátozások (például válaszidő, biztonság, tárolókapacitás stb.), működési korlátozások, életciklus korlátozások (karbantarthatóság, hordozhatóság stb.), és gazdasági korlátozások. A nem funkcionális követelmények meghatározásához ismerni kell a rendszer vagy a szoftver működését. A tartomány követelmények egy adott kategória vagy projekt tartományának sajátosságaival foglalkoznak.[33]
Tervezés
[szerkesztés]A szoftvertervezés a szoftver magas szintű tervezési folyamatát jelenti. A tervezés gyakran szintekre osztható:
- Az interfész tervezése megtervezi a rendszer és környezete közötti interakciót, valamint a rendszer belső működését
- Az építészeti tervezés megtervezi a rendszer fő összetevőit; beleértve a felelősségeiket, tulajdonságaikat és a köztük lévő interfészeket.
- Részletes tervezési tervek belső elemek; beleértve tulajdonságaikat, kapcsolataikat, algoritmusaikat és adatszerkezeteiket.[34]
Építkezés
[szerkesztés]A szoftverkészítés[1][5] jellemzően programozást (más néven kódolást), egység tesztet, integrációs tesztelést és hibakeresést foglal magában a tervezés megvalósítása érdekében. A „szoftvertesztelés kapcsolódik a hibakereséshez, de különbözik tőle”[5] Ebben a fázisban a tesztelést általában a programozó végzi, azzal a céllal, hogy ellenőrizze, hogy a kód a terveknek megfelelően működik-e, és hogy megállapítsa, mikor kész a kód a következő szintű tesztelésre.
Tesztelés
[szerkesztés]A szoftvertesztelés[1][5] egy empirikus, technikai vizsgálat, amelynek célja, hogy információt nyújtson az érdekelt felek számára a tesztelt szoftver minőségéről.
Ha külön tárgyaljuk a készítéstől, a tesztelést jellemzően tesztfejlesztők vagy minőségbiztosítási szakemberek végzik, nem pedig azok a programozók, akik írták a kódot. A tesztelés rendszerszinten történik, és a szoftver minőségének egyik aspektusának tekinthető.
Programelemzés
[szerkesztés]A programelemzés a számítógépes programok elemzési folyamata, figyelembe véve olyan szempontokat, mint a teljesítmény, a robusztusság és a biztonság.
Karbantartás
[szerkesztés]A szoftverkarbantartás[1][5] a szoftver támogatását jelenti a kiadás után. Ez magában foglalhatja, de nem korlátozódik a következőkre: hibajavítás, optimalizálás, a fel nem használt és eldobott funkciók törlése, valamint a meglévő funkciók javítása.
Általában a karbantartás a projekt költségeinek körülbelül 40-80%-át teszi ki, ezért a karbantartásra való fókuszálás csökkentheti a fejlesztési költségeket.[35]
Oktatás
[szerkesztés]A számítógépes programozás ismerete előfeltétele a szoftvermérnökké válásnak. 2004-ben az IEEE Computer Society elkészítette a SWEBOK-ot, amely ISO/IEC Technical Report 1979:2005 néven jelent meg, és leírja azt az ismeretanyagot, amelyet négy éves tapasztalattal rendelkező, diplomás szoftvermérnök ajánlanak.[36] Sok szoftverfejlesztő egyetemi diploma megszerzésével vagy szakképző iskolában végzett képzéssel lép be a szakmába. Az IEEE Computer Society és a Association for Computing Machinery Számítástechnikai Tantervek Közös Munkacsoportja egy szabványos nemzetközi tantervet határozott meg az egyetemi szoftverfejlesztői diplomák számára, és 2014-ben frissítették.[17] Számos egyetem kínál szoftvermérnök szakokat; 2010-ben az Egyesült Államokban 244 egyetemi Szoftverfejlesztő alapképzés, 70 online program, 230 mesterképzés, 41 doktori képzés és 69 tanúsítványprogram volt elérhető.
Az egyetemi képzések mellett sok vállalat gyakornoki programokat is támogat azon diákok számára, akik informatikai karriert szeretnének folytatni. Ezek a gyakornoki programok valódi, érdekes feladatokkal ismertetik meg a diákokat, amelyekkel a szoftverfejlesztők nap mint nap találkoznak. Hasonló tapasztalatokat lehet szerezni a szoftverfejlesztő katonai szolgálat során is.
Szoftvermérnök szakok
[szerkesztés]A mai szakemberek fele informatikai tudományok, információs rendszerek vagy informatikai technológia területen szerzett diplomával rendelkezik.[forrás?][citation needed]
Egyre több szakember rendelkezik szoftvermérnöki diplomával. 1987-ben, a Department of Computing Imperial College Londonnál bemutatta az első hároméves szoftvermérnökséget a Bachelor's degree-t az Egyesült Királyságban és a világon; a következő évben, a University of Sheffield hasonló programot hozott létre.[37] 1996-ban, a Rochester Institute of Technology létrehozta az első szoftvermérnök alapképzési programot az Egyesült Államokban, azonban, nem kapta meg az ABET akkreditációt 2003-ig,de ugyanebben az évben a Rice University, Clarkson University, Milwaukee School of Engineering and Mississippi State University megszerezték a sajátjukat.[38] 1997-ben az indiai Coimbatore-ban található PSG College of Technology volt az első, amely ötéves integrált mesterképzést indított szoftvermérnöki területen.[forrás?]
Azóta sok egyetemen bevezették a szoftvermérnöki alapképzést. Egy standard nemzetközi tanterv az alapképzésben tanuló szoftvermérnök hallgatók számára is létezik az SE2004-et, az Association for Computing Machinery és az IEEE Computer Society finanszírozásával. 2004-ben az Egyesült Államokban mintegy 50 egyetem kínált szoftvermérnöki diplomát, amely számítástechnikai és mérnöki alapelveket és gyakorlatokat egyaránt tanított. Az első szoftvermérnöki mesterképzés-t a Seattle-i Egyetem-en alapították 1979-ben. Azóta több egyetemen is elérhetővé váltak a diplomás szoftvermérnöki képzések. Hasonlóképpen Kanadában, a Kanadai Professzionális Mérnökök Tanácsának Kanadai Mérnöki Akkreditációs Tanácsa (CEAB) számos szoftvermérnöki programot elismert.
1998-ban az Amerikai Haditengerészeti Posztgraduális Iskola (NPS) hozta létre a világ első szoftvermérnöki doktori programját. [forrás szükséges] Emellett számos online haladó szoftvermérnöki diploma jelent meg, például a California State University, Fullerton Informatikai és Fejlesztő Tanszékén keresztül kínált Mesterképzés Szoftverfejlesztői Tudományokban (MSE). Steve McConnell úgy véli, hogy mivel a legtöbb egyetem inkább informatikát tanít, mint szoftverfejlesztést, hiány van az igazi szoftverfejlesztőkből. Az IEEE megbízta az ETS (École de technologie supérieure) Egyetemet és az UQAM (Université du Québec à Montréal) Egyetemet a Szoftverfejlesztői Tudáskör (SWEBOK) kidolgozásával, amely egy ISO szabvánnyá vált, és leírja a szoftverfejlesztő által ismert tudástartományt.[5]
Szakma
[szerkesztés]Különböző országokban világszerte eltérőek a szakmai szoftvermérnökök engedélyezésére vagy tanúsítására vonatkozó jogi követelmények. Egyes területeken, például az Egyesült Királyságban, nincs jogszabályi követelmény vagy engedélyezés a Szoftvermérnök foglalkozási cím használatához. Kanadában bizonyos területeken, például Albertában, Brit Columbia-ban, Ontario-ban,[39] És Quebec-ben a szoftvermérnökök viselhetik a Professional Engineer (P.Eng) és/vagy az Information Systems Professional (I.S.P.) címeket. Európában a Szoftvermérnökök szerezhetik meg az Európai Mérnök (EUR ING) szakmai címet. A Szoftvermérnökök szakmai minősítést is szerezhetnek Chartered Engineer néven a British Computer Society-n keresztül.
Az Egyesült Államokban az NCEES 2013-ban kezdte el kínálni a Szoftvermérnök számára a Szakmai Mérnök vizsgát, lehetővé téve ezzel a Szoftvermérnökök licenszelve és elismertté válását.[40] Az NCEES részvétel hiánya miatt 2019 áprilisa után befejezte a vizsgát.[41] A kötelező engedélyezésről jelenleg még mindig nagy vita folyik, és ellentmondásosnak tartják.[42][43]
Az IEEE Computer Society és az ACM, a két fő, az Egyesült Államokban működő szoftvermérnöki szakmai szervezet kiadványokat jelentet meg a szoftvermérnöki szakma számára. Az IEEE Guide to the Software Engineering Body of Knowledge – 2004 Version, vagy SWEBOK, meghatározza a területet, és leírja, hogy az IEEE milyen ismereteket vár el egy gyakorló szoftvermérnöktől. A legújabb SWEBOK v3 egy frissített verzió, és 2014-ben adták ki.[5] Az IEEE továbbá terjeszti a "Szoftvermérnöki etikai kódexet" is.[44]
Foglalkoztatás
[szerkesztés]A 2022-es becslések szerint világszerte mintegy 26,9 millió szakmai szoftvermérnök van, ami növekedést jelent a 2016-os 21 millióhoz képest.[45][46]
Sok szoftvermérnök alkalmazottként vagy alvállalkozóként dolgozik. A szoftvermérnökök vállalatokkal, kormányügynökségekkel (polgári vagy katonai), valamint nonprofit szervezetekkel együttműködnek. Néhány szoftvermérnök szabadúszóként dolgozik saját maga számára. Néhány szervezet szakembereket alkalmaz minden feladatra a szoftverfejlesztési folyamatban. Más szervezetek azt követelik, hogy a szoftvermérnökök sok vagy mindegyik feladatot végezzenek. Nagy projektekben az emberek gyakran csak egy szerepre specializálódnak. Kis projektekben az emberek gyakran egyszerre több vagy minden szerepet betöltik. Sok cég gyakornokokat alkalmaz, gyakran egyetemi vagy főiskolai hallgatókat a nyári szünetben, vagy külső gyakorlatra. A szakmai specializációk közé tartoznak az elemzők, építészek, fejlesztők, tesztelők, műszaki támogatás, köztes szoftver elemzők, projektmenedzserek, szoftvertermékmenedzserek, oktatók és kutatók.
Jelenleg a szoftvermérnökök és programozók általában heti 40 órát dolgoznak, de a 2008-as adatok szerint a szoftvermérnökök mintegy 15 százaléka és a programozók mintegy 11 százaléka dolgozott hetente több mint 50 órát. Lehetséges sérülések előfordulása ezekben a foglalkozásokban lehetséges, mivel más munkavállalókhoz hasonlóan, akik hosszú időt töltenek ülve egy számítógép előtt és gépelnek a billentyűzeten, a mérnökök és programozók hajlamosak lehetnek szemfáradtságra, hátfájásra, valamint kéz- és csuklóproblémákra, például karpálisám-szindróma.[47]
Egyesült Államok
[szerkesztés]Az Amerikai Munkaügyi Statisztikai Hivatal (BLS) 2018-ban 1 365 500 szoftverfejlesztőt regisztrált munkahelyeken az Egyesült Államokban. Mivel a szoftvermérnöki tanulmányok viszonylag új területnek számítanak, a formális oktatást gyakran részeként tanítják a számítástechnika szakirányú tananyagának, és sok szoftvermérnök számítástechnika szakos diplomával rendelkezik. A BLS becslése szerint 2014-től 2024-ig a számítógépes szoftvermérnöki terület 17%-kal nőne. Ez kevesebb, mint a BLS 2012-től 2022-ig tartó becslése, amely 22%-os növekedést jósolt a szoftvermérnöki területen. Továbbá ez kevesebb, mint a 2010-től 2020-ig tartó BLS 30%-os becslése. Ennek a trendnek köszönhetően az állások növekedése nem lesz olyan gyors, mint az elmúlt évtizedben, mivel az Egyesült Államokban a számítógépes szoftvermérnökökre vonatkozó állásokat inkább olyan országok számára szervezik ki, mint India és más külföldi országok. Emellett az Egyesült Államok Munkaügyi Statisztikai Hivatala (BLS) Foglalkoztatási Kilátásai a Számítógépes Programozók számára a BLS szakmai kilátásai szerint 2016-tól 2026-ig -7%-os csökkenést jósol, majd további -9%-os csökkenést 2019-től 2029-ig, -10%-os csökkenést 2021-től 2031-ig, majd egy további -11%-os csökkenést 2022-től 2032-ig. Mivel a számítógépes programozást bárhonnan elvégezhetik a világon, a vállalatok néha olyan országokban alkalmaznak programozókat, ahol alacsonyabbak a bérek. Továbbá, az évek során a nők részvétele sok szoftverterületen csökkent a más mérnöki területekhez képest. Ráadásul további aggodalomra ad okot, hogy az Mesterséges Intelligencia legújabb fejlesztései hogyan befolyásolhatják a jövő generációk Szoftvermérnökökre irányuló keresletét. Azonban ez a trend a jövőben megváltozhat vagy lassulhat, ahogy sok jelenlegi szoftvermérnök az amerikai piacon elhagyja a szakmát vagy kikerül a piacról a következő évtizedekben.[48]
Tanúsítvány
[szerkesztés]A Software Engineering Institute tanúsítványokat kínál bizonyos témákban, mint például a biztonság, a folyamatfejlesztés és a szoftverarchitektúra.[49] Az IBM, a Microsoft és más vállalatok is támogatják saját tanúsítási vizsgálataikat. Sok IT- tanúsítási program meghatározott technológiákra irányul, és ezeket a technológiákat gyártók kezelik.[50] Ezek a tanúsítási programok azokhoz az intézményekhez igazodnak, amelyek alkalmaznak embereket, akik ezeket a technológiákat használják.
Szélesebb körű szoftvermérnöki készségek általános tanúsítása elérhető különböző szakmai szervezetek által. 2006-ra vonatkozóan az IEEE több mint 575 szoftverszakértőt minősített tanúsított szoftverfejlesztő szakembernek. (CSDP).[51] 2008-ban hozzáadtak egy bevezető szintű tanúsítást, a Certified Software Development Associate (CSDA) nevet viselőt.[52] Az 1980-as évek elején az ACM-nek professzionális tanúsítási programja volt,</link>, amely érdeklődés hiánya miatt leállt. Az ACM és az IEEE Computer Society együtt vizsgálta a szoftvermérnökök szakmérnökké történő engedélyezésének lehetőségét a 90-es években, de végül úgy döntöttek, hogy az ilyen típusú engedélyezés nem megfelelő a szoftvermérnöki szakma ipari gyakorlatához.[42] John C. Knight és Nancy G. Leveson kiegyensúlyozottabb elemzést nyújtott be az engedélyezési kérdésről 2002-ben.[43]
Az Egyesült Királyságban a British Computer Society kifejlesztett egy jogilag elismert szakmai tanúsítványt Chartered IT Professional (CITP) néven, amely a teljes képesítéssel rendelkező tagok (MBCS) számára elérhető. A szoftvermérnökök jogosultak lehetnek a British Computer Society vagy Institute of Engineering and Technology tagságára, és így ezen intézmények bármelyikén keresztül jogosultak lehetnek a Chartered Engineer státusz megszerzésére. Kanadában a Canadian Information Processing Society jogilag elismert szakmai tanúsítványt fejlesztett ki Information Systems Professional (ISP) néven.[53] A kanadai Ontarióban azok a szoftvermérnökök jogosultak engedélyre, akik a Kanadai Mérnöki Akkreditációs Tanács (CEAB) által akkreditált programban végeztek, sikeresen teljesítették a PEO (Professzionális mérnökök Ontario) szakmai gyakorlati vizsgáját (PPE) és legalább 48 hónapos elfogadható mérnöki tapasztalattal rendelkeznek. a Professional Engineers Ontario-n keresztül, és lehet Professional Engineers P.Eng.[54] A PEO nem ismeri el az online vagy távoktatást, és nem tekinti az informatikai tudományi programokat egyenértékűnek a szoftvermérnöki programokkal, annak ellenére, hogy hatalmas az átfedés a kettő között. Ez vitákat váltott ki, és egy tanúsítványháborút indított el. Emellett a professzióhoz tartozó P.Eng tulajdonosok száma rendkívül alacsony. A területen dolgozó szakemberek túlnyomó többsége informatikai tudományokban szerzett diplomát, nem szoftvermérnöki diplomát. Mivel a nem szoftvermérnöki diplomával rendelkezők számára nehéz a tanúsítvány megszerzése, a legtöbben soha nem is próbálkoznak vele.
A globalizáció hatása
[szerkesztés]Az kiszervezés kezdeti hatása, valamint a fejlődő harmadik világ országaiban viszonylag alacsonyabb humánerőforrás-költségek az észak-amerikai és európai vállalatok szoftverfejlesztési tevékenységeinek tömeges áttelepüléséhez vezettek India és később Kína, Oroszország és más fejlődő országok felé. Ennek az állásnak vannak hiányosságai, főleg a távolság/időzóna különbség miatt, ami megakadályozza a humán interakciót az ügyfelek és a fejlesztők között, valamint a tömeges munkahelyátadás miatt. Ez negatív hatással volt a szoftvermérnöki szakma számos vonatkozására. A fejlett világban egyes tanulók például elkerülik a szoftverfejlesztéssel kapcsolatos oktatást, mert félnek az offshore kszervezéstől (más országokból importálnak szoftvertermékeket vagy szolgáltatásokat), valamint attól, hogy külföldi vízummunkások kiszorítják őket.[55] Bár a statisztikák jelenleg nem mutatnak veszélyt magát a szoftverfejlesztést; a kapcsolódó karrier, úgy tűnik, hogy a számítógépes programozás érintett.[56] Mindazonáltal az offshore és közeli források intelligens kihasználásának képessége a napkövető munkafolyamat révén számos szervezet általános működési képességét javította.[57] Amikor az észak-amerikaiak elhagyják a munkát, az ázsiaiak éppen dolgozni érkeznek. Amikor az ázsiaiak elhagyják a munkát, akkor pedig az európaiak érkeznek dolgozni. Ez folyamatos lehetőséget biztosít az üzletkritikus folyamatok emberi felügyeletére 24 órán át, túlórák nélkül vagy kulcsfontosságú emberi erőforrásokat megzavarva, alvási mintázatok nélkül.
A globális kiszervezésnek több előnye is van, azonban a globális – és általánosan elosztott – fejlesztés súlyos nehézségekbe ütközhet a fejlesztők közötti távolság miatt. Ennek oka az, hogy ezen távolság típusának kulcsfontosságú elemeit földrajzi, időbeli, kulturális és kommunikációs tényezők jelentik (ideértve a különböző nyelvek és dialektusok használatát az angol különböző helyszínein)[58] Az elmúlt 15 évben kutatások folytak a globális szoftverfejlesztés területén, és széleskörű releváns munka jelent meg, amely rávilágít a komplex tevékenység előnyeire és problémáira. A szoftverfejlesztés más vonatkozásaihoz hasonlóan ezen és a kapcsolódó területeken is folyik a kutatás.
Díjak
[szerkesztés]A szoftverfejlesztés területén különféle díjak vannak:
- Az ACM SIGSOFT Kiemelkedő Kutatási Díj olyan személyeknek választották ki, akik „ jelentős és tartós kutatási hozzájárulást tettek a szoftverfejlesztés elméletéhez vagy gyakorlatához”.[59]
- További ACM SIGSOFT díjak.[60]
- A Codie-díj, a Szoftver- és Információipari Szövetség által évente kiadott díj a szoftveripar szoftverfejlesztésében nyújtott kiválóságért.
- Harlan Mills-díj az információs tudományok elméletéhez és gyakorlatához nyújtott, a szoftverfejlesztésre összpontosító hozzájárulásáért.
- Az ICSE legbefolyásosabb papírjainak díja.[61]
- Jolt Award, szintén a szoftveripar számára.
- Stevens-díj Wayne Stevens emlékére.
Kritika
[szerkesztés]Néhányan a licenszelt, tanúsított és kodifikált tudástartalmakat hívják segítségül, hogy elterjesszék a mérnöki tudást és éretté tegyék a területet.[62]
Néhányan azt állítják, hogy a szoftvermérnöki fogalom olyannyira új, hogy ritkán értik meg, és széles körben félreértelmezik, ideértve a szoftvermérnöki tankönyveket, cikkeket és a programozók és szakemberek közösségeit is.[63]
Néhányan azt állítják, hogy a szoftvermérnöki legfőbb problémája az, hogy megközelítései nem eléggé empirikusak, mivel a megközelítések valós világban történő validálása általában hiányzik vagy nagyon korlátozott, így a szoftvermérnöki gyakran úgy értelmeződik, mint amely csak egy "elméleti környezetben" lehetséges.[64]
Edsger Dijkstra, a mai szoftverfejlesztés számos fogalmának megalkotója, Edsger Dijkstra, egészen haláláig, 2002-ig elutasította a "szoftvermérnöki" fogalmat, azzal érvelve, hogy ezek a kifejezések rossz analógiák az általa a számítástechnika "radikális újdonságának" nevezett kifejezésekkel kapcsolatban.
Hivatkozások
[szerkesztés]- ↑ a b c d e Abran et al. 2004
- ↑ ACM: Computing Degrees & Careers. ACM, 2007. (Hozzáférés: 2010. november 23.)
- ↑ Laplante, Phillip. What Every Engineer Should Know about Software Engineering. Boca Raton: CRC (2007). ISBN 978-0-8493-7228-5. Hozzáférés ideje: 2011. január 21.
- ↑ Programmers: Stop Calling Yourselves Engineers. The Atlantic, 2015. november 5.
- ↑ a b c d e f g h szerk.: Pierre Bourque: Guide to the Software Engineering Body of Knowledge Version 3.0 (SWEBOK). IEEE Computer Society (2014. november 4.)
- ↑ The history of coding and software engineering (amerikai angol nyelven). www.hackreactor.com. (Hozzáférés: 2021. május 6.)
- ↑ Computers and Automation: The Computer Directory and Buyers' Guide, 1965. bitsavers.org. (Hozzáférés: 2023. július 15.)
- ↑ Oettinger (1966). „President's Letter to the ACM Membership”. Commun. ACM 9, 545–546. o, Kiadó: Association for Computing Machinery. DOI:10.1145/365758.3291288. ISSN 0001-0782.
- ↑ The origin of "software engineering", 2013. április 4. (Hozzáférés: 2017. november 17.)
- ↑ Randall: The 1968/69 NATO Software Engineering Reports. (Hozzáférés: 2017. november 17.)
- ↑ Lori Cameron: Margaret Hamilton: First Software Engineer. Tech News. IEEE Computer Society, 2008. október 5.
- ↑ Ian Sommerville. Software Engineering, 10th, Pearson Education Limited (2015. március 24.). ISBN 978-0-13-394303-0
- ↑ Randell: The 1968/69 NATO Software Engineering Reports. Brian Randell's University Homepage. The School of the Computer Sciences, Newcastle University, 2001. augusztus 10. (Hozzáférés: 2008. október 11.) „The idea for the first NATO Software Engineering Conference, and in particular that of adopting the then practically unknown term "software engineering" as its (deliberately provocative) title, I believe came originally from Professor Fritz Bauer.”
- ↑ 2018 International Conference on Software Engineering celebrating its 40th anniversary, and 50 years of Software engineering: ICSE 2018 – Plenary Sessions – Fred Brooks. YouTube, 2018. május 31. (Hozzáférés: 2018. augusztus 9.)
- ↑ 2018 International Conference on Software Engineering celebrating its 40th anniversary, and 50 years of Software engineering: ICSE 2018 – Plenary Sessions – Margaret Hamilton. YouTube, 2018. május 31. (Hozzáférés: 2018. augusztus 9.)
- ↑ a b Linda Hutz Pesante (2003. január 1.). „Software engineering institute (SEI)”. Encyclopedia of Computer Science, Chichester, West Sussex, UK, 1611–1613. o, Kiadó: John Wiley and Sons Ltd.. „"(1) The institute was competitively awarded to Carnegie Mellon in December 1984 by the US Department of Defense (DoD) to improve the state of the practice of software engineering. ... (2) the SEI moves mature solutions of proven value into widespread use; examples include the Capability Maturity Model (CMM) ..."”
- ↑ a b Joint Task Force on Computing Curricula, IEEE Computer Society, Association for Computing Machinery. Software Engineering 2014: Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering, A Volume of the Computing Curricula Series. IEEE Computer Society and Association for Computing Machinery (2015. február 23.)
- ↑ Systems and software engineering – Vocabulary, ISO/IEC/IEEE std 24765:2010(E), 2010.
- ↑ IEEE Standard Glossary of Software Engineering Terminology, IEEE std 610.12-1990, 1990.
- ↑ Sommerville, Ian. 1.1.2 What is software engineering?, Software Engineering, 8th, Harlow, England: Pearson Education, 7. o. [1982] (2007). ISBN 978-0-321-31379-9 „Software engineering is an engineering discipline that is concerned with all aspects of software production from the early stages of system specification to maintaining the system after it has gone into use. In this definition, there are two key phrases:
1. Engineering discipline Engineers make things work. They apply theories, methods and tools where these are appropriate [...] Engineers also recognize that they must work to organizational and financial constraints. [...]
2. All aspects of software production Software engineering is not just concerned with the technical processes of software development but also with activities such as software project management and with the development of tools, methods and theories to support software production.” - ↑ „Software Engineering”. Information Processing 71, 530–538. o.
- ↑ Definition of SOFTWARE ENGINEERING (angol nyelven). www.merriam-webster.com. (Hozzáférés: 2019. november 25.)
- ↑ Winters, Titus. Preface, Programming Over Time, Software Engineering at Google. O'Reilly Media, Inc., xix–xx, 6–7. o. (2020). ISBN 978-1-492-08279-8 „We propose that “software engineering” encompasses not just the act of writing code, but all of the tools and processes an organization uses to build and maintain that code over time. What practices can a software organization introduce that will best keep its code valuable over the long term? How can engineers make a codebase more sustainable and the software engineering discipline itself more rigorous?”
- ↑ Akram I. Salah: Engineering an Academic Program in Software Engineering. 35th Annual Midwest Instruction and Computing Symposium, 2002. április 5. (Hozzáférés: 2006. szeptember 13.): "For some, software engineering is just a glorified name for programming. If you are a programmer, you might put 'software engineer' on your business card—never 'programmer' though."
- ↑ Mills, Harlan D., J. R. Newman, and C. B. Engle, Jr., "An Undergraduate Curriculum in Software Engineering," in Deimel, Lionel E.. Software Engineering Education: SEI Conference 1990, Pittsburgh, Pennsylvania, USA, April 2–3,.... Springer (1990). ISBN 978-0-387-97274-9,p. 26: "As a practical matter, we regard software engineering as the necessary preparation for the practicing, software development and maintenance professional. The Computer Scientist is preparing for further theoretical studies..."
- ↑ Barbara Kitchevnham (2005. november 4.). „Realising evidence-based software engineering”. ACM SIGSOFT Software Engineering Notes 30 (4), 1–3. o. DOI:10.1145/1082983.1083175. „"We believe that software engineering can only advance as an engineering discipline by moving away from its current dependence upon advocacy and analysis, ..."”
- ↑ Lawrence, Snyder. Fluency with information technology : skills, concepts, & capabilities, [Seventh edition] (2017). ISBN 978-0134448725. OCLC 960641978
- ↑ Parnas (1998). „Software Engineering Programmes are not Computer Science Programmes”. Annals of Software Engineering 6, 19–37. o. DOI:10.1023/A:1018949113292., p. 19: "Rather than treat software engineering as a subfield of computer science, I treat it as an element of the set, {Civil Engineering, Mechanical Engineering, Chemical Engineering, Electrical Engineering...}."
- ↑ Parnas (1998). „Software Engineering Programmes are not Computer Science Programmes”. Annals of Software Engineering 6, 19–37. o. DOI:10.1023/A:1018949113292., p. 20: "This paper argues that the introduction of accredited professional programs in software engineering, programmes that are modelled on programmes in traditional engineering disciplines will help to increase both the quality and quantity of graduates who are well prepared, by their education, to develop trustworthy software products."
- ↑ McConnell, Steve. Professional Software Development: Shorter Schedules, Better Projects, Superior Products, Enhanced Careers. Boston, MA: Addison-Wesley (2003. augusztus 1.). ISBN 0-321-19367-9, p. 39: "In my opinion, the answer to that question is clear: Professional software development should be engineering. Is it? No. But should it be? Unquestionably, yes. "
- ↑ Knuth (1974). „Computer Programming as an Art”. Communications of the ACM 17 (12), 667–673. o. DOI:10.1145/361604.361612.Transcript of the 1974 Turing Award lecture.
- ↑ Dijkstra: There is still a war going on (manuscript Austin, 3 December 1993). E. W. Dijkstra Archive. The University of Texas at Austin, Department of Computer Sciences, 2004. november 23. (Hozzáférés: 2007. február 17.) „When the term was coined in 1968 by F.L. Bauer of the Technological University of Munich, I welcomed it. [...] I interpreted the introduction of the term "software engineering" as an apt reflection of the fact that the design of software systems was an activity par excellence for the mathematical engineer. [...]. As soon the term arrived in the USA, it was relieved of all its technical content. It had to be so for in its original meaning it was totally unacceptable [...] In the meantime, software engineering has become an almost empty term, as was nicely demonstrated by Data General who overnight promoted all its programmers to the exalted rank of "software engineer"!”
- ↑ Software Engineering | Classification of Software Requirements (amerikai angol nyelven). GeeksforGeeks, 2018. június 19. (Hozzáférés: 2021. május 6.)
- ↑ Software Engineering | Software Design Process (amerikai angol nyelven). GeeksforGeeks, 2019. május 24. (Hozzáférés: 2021. május 6.)
- ↑ What is Software Maintenance? Definition of Software Maintenance, Software Maintenance Meaning. The Economic Times. (Hozzáférés: 2021. május 6.)
- ↑ szerk.: Alain Abran: Chapter 1: Introduction to the Guide, Guide to the Software Engineering Body of Knowledge [archivált változat]. IEEE Computer Society [2004] (2005. november 4.). Hozzáférés ideje: 2010. szeptember 13. [archiválás ideje: 2016. május 9.] „The total volume of cited literature is intended to be suitable for mastery through the completion of an undergraduate education plus four years of experience.”
- ↑ Cowling, A. J. 1999. The first decade of an undergraduate degree program in software engineering. Ann. Softw. Eng. 6, 1–4 (Apr. 1999), 61–90.
- ↑ ABET Accredited Engineering Programs, 2007. április 3. [2010. június 19-i dátummal az eredetiből archiválva]. (Hozzáférés: 2007. április 3.)
- ↑ (Hiba: Érvénytelen idő.) „Professional Engineers Ontario's approach to licensing software engineering practitioners”., IEEE.
- ↑ NCEES Software Engineering Exam Specifications. [2013. augusztus 27-i dátummal az eredetiből archiválva]. (Hozzáférés: 2012. április 1.)
- ↑ NCEES discontinuing PE Software Engineering exam. National Council of Examiners for Engineering and Surveying, 2018. március 13. (Hozzáférés: 2018. augusztus 6.)
- ↑ a b Barbara Simons: Past ACM Presidents Reflect on Their Service to ACM. Association for Computing Machinery. (Hozzáférés: 2024. május 18.) „After the panels’ recommendations were submitted, ACM Council concluded that the framework of a licensed professional engineer, originally developed for civil engineers, does not match the professional industrial practice of software engineering and would preclude many of the most qualified software engineers from becoming licensed.”
- ↑ a b John C. Knight (2002. november 1.). „Should software engineers be licensed?”. Communications of the ACM 45 (11), 87–90. o. DOI:10.1145/581571.581601.
- ↑ 'Software Engineering Code of Ethics'. [2015. január 23-i dátummal az eredetiből archiválva]. (Hozzáférés: 2012. március 25.)
- ↑ Labs: How Many Programmers are there in the World and in the US? [2023]. Qubit Labs, 2022. november 29. (Hozzáférés: 2023. február 7.)
- ↑ Global Developer Population and Demographic Study 2016 V2. Evans Data Corporation. (Hozzáférés: 2017. január 19.)
- ↑ Computer Software Engineers and Computer Programmers. (Hozzáférés: 2009. december 17.)
- ↑ Computer Programmers : Occupational Outlook Handbook: : U.S. Bureau of Labor Statistics. [2019. május 3-i dátummal az eredetiből archiválva]. (Hozzáférés: 2017. január 17.)
- ↑ SEI certification page. Sei.cmu.edu. (Hozzáférés: 2012. március 25.)
- ↑ Wyrostek: The Top 10 Problems with IT Certification in 2008. InformIT, 2008. március 14. (Hozzáférés: 2009. március 3.)
- ↑ IEEE Computer Society: 2006 IEEE computer society report to the IFIP General Assembly. (Hozzáférés: 2007. április 10.)
- ↑ IEEE: CSDA. (Hozzáférés: 2010. április 20.)
- ↑ Canadian Information Processing Society: I.S.P. Designation. (Hozzáférés: 2007. március 15.)
- ↑ Professional Engineers Ontario: Welcome to PEO's website. Peo.on.ca. (Hozzáférés: 2012. március 25.)
- ↑ Thibodaux: As outsourcing gathers steam, computer science interest wanes. Computerworld.com, 2006. május 5. (Hozzáférés: 2016. december 6.)
- ↑ Robert Mullins: Software developer growth slows in North America: Study shows Asia will lead in software developer jobs by 2010. InfoWorld, 2007. március 13.
- ↑ Gartner Magic Quadrant. Cognizant.com. [2008. szeptember 20-i dátummal az eredetiből archiválva]. (Hozzáférés: 2012. március 25.)
- ↑ Casey (2010. augusztus 20.). „Virtual software team project management”. Journal of the Brazilian Computer Society 16 (2), 83–96. o. DOI:10.1007/s13173-010-0013-3.
- ↑ Outstanding Research Award. SIGSOFT. (Hozzáférés: 2024. április 1.)
- ↑ David Lo (SIGSOFT Awards Chair): SIGSOFT Awards 2024. ACM SIGSOFT Blog, 2024. január 17. (Hozzáférés: 2024. április 1.)
- ↑ ICSE Most Influential Paper Award. ACM SIGSOFT
- ↑ Donald J. Bagert (1999. április 1.). „Viewpoint: taking the lead in licensing software engineers”. Communications of the ACM 42 (4), 27–29. o. DOI:10.1145/299157.299163.
- ↑ Barry Boehm (September–October 2002). „Software engineering is a value-based contact sport”. IEEE Software 19, 95–96. o. DOI:10.1109/MS.2002.1032863.
- ↑ Barry Boehm (September–October 2002). „Software engineering is a value-based contact sport”. IEEE Software 19, 95–96. o. DOI:10.1109/MS.2002.1032863.
Fordítás
[szerkesztés]Ez a szócikk részben vagy egészben a Software engineering című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.
További irodalom
[szerkesztés]- szerk.: Pierre Bourque: Guide to the Software Engineering Body of Knowledge Version 3.0 (SWEBOK). IEEE Computer Society (2014. november 4.)
- Roger S. Pressman. Software Engineering: A Practitioner's Approach, 8th, McGraw-Hill (2014. január 23.). ISBN 978-0-07-802212-8
- Ian Sommerville. Software Engineering, 10th, Pearson Education Limited (2015. március 24.). ISBN 978-0-13-394303-0
- Jalote, Pankaj. An Integrated Approach to Software Engineering, 3rd, Springer [1991] (2005). ISBN 978-0-387-20881-7
- Bruegge, Bernd. Object-oriented software engineering : using UML, patterns, and Java, 3rd, Prentice Hall (2009). ISBN 978-0-13-606125-0
- Oshana, Robert. Software engineering for embedded systems : methods, practical techniques, and applications, Second, Kidlington, Oxford, United Kingdom (2019. június 21.). ISBN 978-0-12-809433-4
Külső linkek
[szerkesztés]- Pierre Bourque; Richard E. Fairley, szerk. (2004). Útmutató a Software Engineering Body of Knowledge 3.0-s verziójához (SWEBOK), https://www.computer.org/web/swebok/v3. IEEE Computer Society.
- A nyílt rendszermérnöki és szoftverfejlesztési életciklus keretrendszer Archiválva 2010. július 18-i dátummal a Wayback Machine-ben.
- Carnegie Mellon Szoftvermérnöki Intézet