Jump to content

Inxhinieria e softuerit

Nga Wikipedia, enciklopedia e lirë
(Përcjellë nga Inxhinieria Softuerike)

Inxhinieria e softuerit është një fushë brenda shkencës kompjuterike e fokusuar në projektimin, zhvillimin, testimin dhe mirëmbajtjen e aplikacioneve softuerike. Ai përfshin zbatimin e parimeve inxhinierike dhe ekspertizën e programimit kompjuterik për të zhvilluar sisteme softuerike që plotësojnë nevojat e përdoruesve.[1][2][3][4]

Termat programues dhe kodues mbivendosen inxhinier softuerësh, por ato nënkuptojnë vetëm aspektin e ndërtimit të ngarkesës tipike të inxhinierit të softuerit.[5]

Një inxhinier softuerësh zbaton një proces zhvillimi softuerësh,[1] që përfshin përcaktimin, zbatimin, testimin, menaxhimin dhe mirëmbajtjen e sistemeve të softuerit dhe krijimin dhe modifikimin e procesit të zhvillimit.

Duke filluar në vitet 1960, inxhinieria e softuerit u njoh si një fushë e veçantë e inxhinierisë.

Zhvillimi i inxhinierisë softuerike u pa si një sfide. Problemet përfshinin softuer që kishin tejkaluar buxhetin, tejkaluar afatet, kërkonte korrigjimin dhe mirëmbajtjen e gjerë dhe plotësonte pa sukses nevojat e konsumatorëve ose nuk ishte përfunduar asnjëherë.

Në vitin 1968, NATO mbajti konferencën e parë të inxhinierisë softuerike ku u trajtuan çështjet që lidhen me softuerin. U krijuan udhëzime dhe praktika më të mira për zhvillimin e softuerit.[6]

Origjina e termit inxhinieri softuerike i është atribuar burimeve të ndryshme. Termi u shfaq në një listë shërbimesh të ofruara nga kompanitë në qershorin e vitit 1965 çështja e "Computers and Automation"[7] dhe ishte përdor më formalisht në gushtin e vitit 1966 të Communications of the ACM (Vëllimi 9, numri 8), në një "Letër të Presidentit drejtuar Anëtarëve të ACM", të shkruar nga Anthony A. Oettinger.[8][9] Ajo shoqërohet gjithashtu me titullin e një konference të NATO-s në vitin 1968 nga Profesor Friedrich L. Bauer .[10] Margaret Hamilton përshkroi disiplinën e "inxhinierisë së softuerit" gjatë misioneve Apollo për t'i dhënë legjitimitet asaj që po bënin.[11] Në atë kohë u perceptua se kishte një "krizë softuerike ".[12][13] Konferenca e 40-të Ndërkombëtare për Inxhinierinë Softuerike (ICSE 2018) feston 50 vjetorin e "Inxhinierisë Softuerike" me fjalimet kryesore të Sesioneve Plenare të Frederick Brooks[14] dhe Margaret Hamilton.[15]

Në vitin 1984, Instituti i Inxhinierisë së Softuerit (SEI) u krijua si një qendër kërkimore dhe zhvillimi e financuar nga qeveria me seli në kampusin e Universitetit Carnegie Mellon në Pittsburgh, Pensilvani, Shtetet e Bashkuara te Amerikës. Watts Humphrey themeloi Programin e Procesit të Softuerit SEI, që synon kuptimin dhe menaxhimin e procesit të inxhinierisë softuerike. Nivelet e Maturitetit të Procesit të prezantuara u bënë Integrimi i Modelit të Maturitetit të Kapacitetit për Zhvillim (CMMI-DEV), i cili përcaktoi se si qeveria e SHBA vlerëson aftësitë e një ekipi të zhvillimit të softuerit.

Praktikat më të mira moderne, përgjithësisht të pranuara për inxhinierinë e softuerit janë mbledhur nga nënkomiteti ISO/IEC JTC 1/SC 7 dhe janë publikuar si Trupi i Njohurive i Inxhinierisë Softuerike (SWEBOK).[16] Inxhinieria e softuerit konsiderohet si një nga disiplinat kryesore të informatikës.[17]

Definicionet e shquara të inxhinierisë softuerike përfshijnë:

  • Zbatimi sistematik i njohurive, metodave dhe përvojës shkencore dhe teknologjike në projektimin, zbatimin, testimin dhe dokumentimin e softuerit." – Byroja e Statistikave të Punës – IEEE Systems and software engineering – Vocabulary
  • "Zbatimi i një qasjeje sistematike, të disiplinuar, të matshme për zhvillimin, funksionimin dhe mirëmbajtjen e softuerit."- IEEE Standard Glossary of Software Engineering Terminology
  • "Një disiplinë inxhinierike që ka të bëjë me të gjitha aspektet e prodhimit të softuerit." – Ian Sommerville [18]
  • "Krijimi dhe përdorimi i parimeve të shëndosha inxhinierike për të përftuar ekonomikisht softuer që është i besueshëm dhe funksionon me efikasitet në makina reale." – Fritz Bauer [19]
  • "Një degë e shkencës kompjuterike që merret me projektimin, zbatimin dhe mirëmbajtjen e programeve kompjuterike komplekse." – Merriam-Webster [20]
  • " Inxhinieria e softuerit" përfshin jo vetëm aktin e shkrimit të kodit, por të gjitha mjetet dhe proceset që përdor një organizatë për të ndërtuar dhe mirëmbajtur atë kod me kalimin e kohës. […] Inxhinieria e softuerit mund të mendohet si "programim i integruar me kalimin e kohës''- Inxhinier Softuerësh në Google [21]

Termi është përdorur gjithashtu më pak formalisht:

  • si termi bashkëkohor informal për gamën e gjerë të aktiviteteve që më parë quheshin programim kompjuterik dhe analiza e sistemeve,[22]
  • si term i gjerë për të gjitha aspektet e praktikës së programimit kompjuterik, në krahasim me teorinë e programimit kompjuterik, e cila është studiuar zyrtarisht si një nëndisiplinë e shkencës kompjuterike, [23]
  • si term që mishëron mbrojtjen e një qasjeje specifike ndaj programimit kompjuterik, një që kërkon që ai të trajtohet si një disiplinë inxhinierike dhe jo si një art apo zanat, dhe mbron kodifikimin e praktikave të rekomanduara.[24]

Margaret Hamilton promovoi termin "inxhinieri softuerike" gjatë punës së saj në programin Apollo . Termi "inxhinieri" u përdor për të pranuar se puna duhet marrë po aq seriozisht sa kontributet e tjera drejt perparimit të teknologjisë. Hamilton detajon përdorimin e saj të termit:

Kur për herë të parë dola me termin, askush nuk kishte dëgjuar për të më parë, të paktën në botën tonë. Ishte një shaka e vazhdueshme për një kohë të gjatë. Atyre u pëlqente të më tallnin për idetë e mia radikale. Ishte një ditë e paharrueshme kur një nga ekspertët më të respektuar të harduerit u shpjegoi të gjithëve në një takim se ishte dakord me mua që procesi i ndërtimit të softuerit duhet të konsiderohet gjithashtu një disiplinë inxhinierike, ashtu si me harduerin. Jo për shkak të pranimit të tij të "termit" të ri në vetvete, por sepse ne kishim fituar pranimin e tij dhe të të tjerëve në dhomë si në një fushë inxhinierike më vete.[25]

Përshtatshmëria

[Redakto | Redakto nëpërmjet kodit]

Komentuesit individualë nuk kanë rënë dakord ashpër se si të përkufizohet inxhinieria e softuerit ose legjitimiteti i saj si një disiplinë inxhinierike. David Parnas ka thënë se inxhinieria e softuerit është, në fakt, një formë e inxhinierisë.[26][27] Steve McConnell ka thënë se nuk është, por duhet të jetë.[28] Donald Knuth ka thënë se programimi është një art dhe një shkencë.[29] Edsger W. Dijkstra pohoi se termat inxhinieri softuerike dhe inxhinieri i softuerit janë keqpërdorur në Shtetet e Bashkuara.[30]

Ngarkesa e punës

[Redakto | Redakto nëpërmjet kodit]

Analiza e kërkesave

[Redakto | Redakto nëpërmjet kodit]

Inxhinieria e kërkesave ka të bëjë me nxjerrjen, analizën, specifikimin dhe validimin e kërkesave për softuer . Kërkesat e softuerit mund të jenë funksionale, jofunksionale ose të fushës.

Kërkesat funksionale përshkruajnë sjelljet e pritshme (dmth. rezultatet). Kërkesat jofunksionale specifikojnë çështje si protabiliteti, siguria, mirëmbajtja, besueshmëria, shkallëzueshmëria, performanca, ripërdorimi dhe fleksibiliteti. Ato klasifikohen në llojet e mëposhtme: kufizimet e ndërfaqes, kufizimet e performancës (të tilla si koha e përgjigjes, siguria, hapësira e ruajtjes, etj.), kufizimet e funksionimit, kufizimet e ciklit të jetës (mirëmbajtja, portabilitet, etj.) dhe kufizimet ekonomike. Njohuria se si funksionon sistemi ose softueri është e nevojshme kur bëhet fjalë për specifikimin e kërkesave jofunksionale. Kërkesat e fushës kanë të bëjnë me karakteristikat e një kategorie ose domeni të caktuar projektesh.[31]

Dizajni i softuerit është procesi i krijimit të planeve të nivelit të lartë për softuerin. Dizajni ndonjëherë ndahet në nivele:

  • Dizajni i ndërfaqes planifikon ndërveprimin midis një sistemi dhe mjedisit të tij, si dhe funksionimin e brendshëm të sistemit.
  • Dizajni arkitektonik planifikon komponentët kryesorë të një sistemi, duke përfshirë përgjegjësitë e tyre, vetitë dhe ndërfaqet ndërmjet tyre.
  • Planet e detajuara të projektimit të elementeve të brendshëm, duke përfshirë vetitë, marrëdhëniet, algoritmet dhe strukturat e të dhënave të tyre.[32]

Ndërtimi i softuerit zakonisht përfshin programimin (a.k.a. kodimi), testimin e njësisë, testimin e integrimit dhe korrigjimin në mënyrë që të zbatohet dizajni.[1] "Testimi i softuerit është i lidhur, por i ndryshëm nga … korrigjimi". Testimi gjatë kësaj faze në përgjithësi kryhet nga programuesi dhe me qëllim të verifikimit që kodi sillet siç është projektuar dhe për të ditur se kur kodi është gati për nivelin e ardhshëm të testimit.

[ citim i nevojshëm ]

Testimi i softuerit është një hetim empirik, teknik i kryer për t'u ofruar palëve të interesuara informacion në lidhje me cilësinë e softuerit në provë.[1]

Kur përshkruhet veçmas nga ndërtimi, testimi zakonisht kryhet nga inxhinierë testimi ose sigurimi i cilësisë në vend të programuesve që e kanë shkruar atë. Ai kryhet në nivel sistemi dhe konsiderohet një aspekt i cilësisë së softuerit.

Analiza e programit

[Redakto | Redakto nëpërmjet kodit]

Analiza e programit është procesi i analizimit të programeve kompjuterike në lidhje me një aspekt të tillë si performanca, qëndrueshmëria dhe siguria.

Mirëmbajtja e softuerit i referohet mbështetjes së softuerit pas lëshimit. Mund të përfshij, por nuk kufizohet në: korrigjimin e gabimeve, optimizimin, fshirjen e veçorive të papërdorura dhe të hedhura, dhe përmirësimin e veçorive ekzistuese.[1]

Zakonisht, mirëmbajtja zë 40% deri në 80% të kostos së projektit.[33]

Njohja e programimit kompjuterik është një parakusht për t'u bërë inxhinier softuerësh. Në vitin 2004, Shoqëria Kompjuterike IEEE prodhoi SWEBOK, i cili është botuar si Raport Teknik ISO/IEC 1979:2005, duke përshkruar tërësinë e njohurive që ata rekomandojnë të zotërohen nga një inxhinier i diplomuar softuerësh me përvojë katërvjeçare.[34] Shumë inxhinierë softuerësh hyjnë në profesion duke marrë një diplomë universitare ose duke u trajnuar në një shkollë profesionale. Një kurrikul standarde ndërkombëtare për diploma universitare të inxhinierisë softuerike u përcaktua nga Task Forca e Përbashkët për Kurrikulat e Informatikës së Shoqërisë Kompjuterike IEEE dhe Shoqatës për Makineri Kompjuterike dhe u përditësua në 2014.[17] Një numër universitetesh kanë programe të diplomës për Inxhinieri Softuerësh; Që prej 2010, kishte 244 programe në kampus Bachelor të Inxhinierisë Softuerike, 70 programe Online, 230 programe të nivelit Master, 41 programe të nivelit të doktoraturës dhe 69 programe të nivelit të certifikatës në Shtetet e Bashkuara.

Përveç arsimit universitar, shumë kompani sponsorizojnë praktika për studentët që dëshirojnë të ndjekin karrierë në teknologjinë e informacionit. Këto praktika mund ta prezantojnë studentin me detyrat e botës reale që inxhinierët tipik të softuerit hasin çdo ditë. Përvoja e ngjashme mund të fitohet përmes shërbimit ushtarak në inxhinieri softuerike.

Programet e diplomës për inxhinieri softuerike

[Redakto | Redakto nëpërmjet kodit]

Gjysma e të gjithë praktikuesve sot kanë diploma në shkenca kompjuterike, sisteme informacioni ose teknologji informacioni .[nevojitet citimi][ citim i nevojshëm ] Një numër i vogël, por në rritje i praktikantëve kanë diploma të inxhinierisë softuerike. Në vitin 1987, Departamenti i Informatikës në Imperial College London prezantoi diplomën e parë trevjeçare në botë për inxhinieri softuerike; në vitin e ardhshëm, Universiteti i Sheffield krijoi një program të ngjashëm. Në vitin 1996, Instituti i Teknologjisë Rochester themeloi programin e parë të diplomës për inxhinieri softuerike në Shtetet e Bashkuara; megjithatë, ajo nuk mori akreditimin ABET deri në vitin 2003, të njëjtin vit me Universitetin Rice, Universitetin Clarkson, Shkollën e Inxhinierisë Milwaukee dhe Universitetin Shtetëror të Mississippi .[35] Në vitin 1997, Kolegji i Teknologjisë PSG në Coimbatore, Indi ishte i pari që filloi një diplomë pesëvjeçare të integruar Master Shkencor në Inxhinieri Softuerësh.[nevojitet citimi]

Që atëherë, diploma universitare të inxhinierisë softuerike janë krijuar në shumë universitete. Një kurrikulë standarde ndërkombëtare për diploma universitare të inxhinierisë softuerike, SE2004, u përcaktua nga një komitet drejtues midis 2001 dhe 2004 me financim nga Shoqata për Makineri Kompjuterike dhe Shoqëria Kompjuterike IEEE . Që prej 2004, rreth 50 universitete në SHBA ofrojnë diploma të inxhinierisë softuerike, të cilat mësojnë parimet dhe praktikat e shkencave kompjuterike dhe inxhinierisë. Diploma e parë master në inxhinieri softuerike u krijua në Universitetin e Seattle në 1979. Që atëherë, diploma të diplomuara për inxhinieri softuerike janë vënë në dispozicion nga shumë universitete të tjera. Po kështu në Kanada, Bordi Kanadez i Akreditimit të Inxhinierisë (CEAB) i Këshillit Kanadez të Inxhinierëve Profesionistë ka njohur disa programe të inxhinierisë softuerike.

Në vitin 1998, Shkolla Postdiplomike Detare e SHBA-së (NPS) themeloi programin e parë të doktoraturës në Inxhinieri Softuerike në botë.[ citim i nevojshëm ] Për më tepër, shumë diploma të avancuara në internet në Inxhinieri Softuerësh janë shfaqur si diploma Master i Shkencave në Inxhinieri Softuerësh (MSE) e ofruar përmes Departamentit të Shkencave Kompjuterike dhe Inxhinierisë në Universitetin Shtetëror të Kalifornisë, Fullerton . Steve McConnell mendon se për shkak se shumica e universiteteve mësojnë shkenca kompjuterike në vend të inxhinierisë softuerike, ka mungesë të inxhinierëve të vërtetë softuerësh. Universiteti ETS (École de technologie supérieure) dhe UQAM (Université du Québec à Montréal) u mandatuan nga IEEE për të zhvilluar Trupin e Njohurive të Inxhinierisë së Softuerit ( SWEBOK ), i cili është bërë një standard ISO që përshkruan trupin e njohurive të mbuluara nga një inxhinier softuerësh.[36]

Kërkesat ligjore për licencimin ose certifikimin e inxhinierëve profesionistë të softuerit ndryshojnë në mbarë botën. Në MB, nuk ka asnjë kërkesë licencimi ose ligjore për të marrë ose përdorur titullin e punës së inxhinierëve të softuerit. Në disa zona të Kanadasë, si Alberta, British Columbia, Ontario, dhe Quebec, inxhinierët e softuerit mund të mbajnë përcaktimin Professional Engineer (P.Eng) dhe/ose përcaktimin Professional i Sistemeve të Informacionit (ISP). Në Evropë, Inxhinierët e Softuerit mund të marrin titullin profesional Inxhinier Evropian (EUR ING). Inxhinierët e Softuerit gjithashtu mund të kualifikohen profesionalisht si Inxhinier i Kartës përmes Shoqërisë Britanike të Kompjuterëve.

Në Shtetet e Bashkuara, NCEES filloi të ofroj një provim Inxhinieri Profesional për Inxhinieri Softuerësh në 2013, duke lejuar kështu që Inxhinierët e Softuerit të licencohen dhe të njihen.[37] NCEES përfundoi provimin pas prillit 2019 për shkak të mungesës së pjesëmarrjes.[38] Licencimi i detyrueshëm aktualisht është ende i debatuar gjerësisht dhe perceptohet si i diskutueshëm.[39][40]

Shoqëria e Kompjuterëve IEEE dhe ACM, dy organizatat kryesore profesionale me bazë në SHBA të inxhinierisë softuerike, publikojnë udhëzues për profesionin e inxhinierisë softuerike. Udhëzuesi i IEEE për Trupin e Njohurive të Inxhinierisë Softuerike – Versioni 2004, ose SWEBOK, përcakton fushën dhe përshkruan njohuritë që IEEE pret që një inxhinier softuerësh praktikues të ketë. Versioni më aktual është SWEBOK v4.[41] IEEE gjithashtu shpall një "Kodi i Etikës së Inxhinierisë Softuerike".[42]

Ka rreth 26.9 milionë inxhinierë profesionistë softuerësh në botë që nga viti 2022, nga 21 milionë në 2016.[43][44]

Shumë inxhinierë softuerësh punojnë si punonjës ose kontraktorë. Inxhinierët e softuerit punojnë me biznese, agjenci qeveritare (civile ose ushtarake) dhe organizata jofitimprurëse. Disa inxhinierë softuerësh punojnë për veten e tyre si përkthyes të pavarur . Disa organizata kanë specialistë për të kryer secilën nga detyrat në procesin e zhvillimit të softuerit . Organizatat e tjera kërkojnë që inxhinierët e softuerit të bëjnë shumë ose të gjitha. Në projektet e mëdha, njerëzit mund të specializohen vetëm në një rol. Në projekte të vogla, njerëzit mund të plotësojnë disa ose të gjitha rolet në të njëjtën kohë. Shumë kompani punësojnë praktikantë, shpesh studentë të universitetit ose kolegjit gjatë një pushimi veror, ose të jashtëm. Specializimet përfshijnë analistët, arkitektët, zhvilluesit, testuesit, mbështetjen teknike, analistët e programeve të mesme, menaxherët e projekteve, menaxherët e produkteve softuerike, edukatorët dhe studiuesit .

Shumica e inxhinierëve dhe programuesve të softuerit punojnë 40 orë në javë, por rreth 15% e inxhinierëve të softuerit dhe 11% e programuesve punonin më shumë se 50 orë në javë në vitin 2008.[45] Lëndimet e mundshme në këto profesione janë të mundshme, sepse ashtu si punëtorët e tjerë që kalojnë periudha të gjata të ulur para një terminali kompjuteri duke shtypur në tastierë, inxhinierët dhe programuesit janë të ndjeshëm ndaj tendosjes së syve, shqetësimit të shpinës, trombozës, obezitetit dhe problemeve të duarve dhe kyçeve të kyçit të dorës sindromi i tunelit.[46]

Shtetet e Bashkuara

[Redakto | Redakto nëpërmjet kodit]

Byroja Amerikane e Statistikave të Punës (BLS) numëroi 1,365,500 zhvillues softuerësh që mbanin punë në SHBA në 2018.[47] Për shkak të risive të tij relative si fushë studimi, arsimi formal në inxhinierinë e softuerit shpesh mësohet si pjesë e një kurrikule të shkencave kompjuterike dhe shumë inxhinierë softuerësh mbajnë diploma të shkencave kompjuterike.[48] BLS vlerëson nga viti 2023 në 2033 se inxhinieria e softuerit kompjuterik do të rritet me 17%.[49] Kjo është më pak nga vlerësimi i BLS nga 2022 në 2032 prej 25% për inxhinierinë e softuerit.[49][50] Dhe, është më poshtë nga vlerësimi i tyre 30% 2010 deri në 2020 BLS.[51] Për shkak të kësaj tendence, rritja e vendeve të punës mund të mos jetë aq e shpejtë sa gjatë dekadës së fundit, pasi punët që do të kishin shkuar për inxhinierët e softuerëve kompjuterikë në Shtetet e Bashkuara, në vend të kësaj do t'u jepeshin inxhinierëve të programeve kompjuterike në vende të tilla si India dhe vende të tjera të huaja.[52][45] Përveç kësaj, BLS Job Outlook për Programuesit Kompjuterikë, Byroja e Statistikave të Punës në SHBA (BLS) Occupational Outlook parashikon një rënie prej -7% nga 2016 në 2026, një rënie të mëtejshme prej -9% nga 2019 në 2029, një rënie prej – 10% nga 2021 në 2031.[52] dhe më pas një rënie prej -11% nga 2022 në 2032.[52] Meqenëse programimi kompjuterik mund të bëhet nga kudo në botë, kompanitë ndonjëherë punësojnë programues në vende ku pagat janë më të ulëta.[52][53][54] Për më tepër, raporti i grave në shumë fusha softuerike ka qenë gjithashtu në rënie gjatë viteve në krahasim me fusha të tjera inxhinierike.[55] Pastaj ekziston shqetësimi shtesë se përparimet e fundit në Inteligjencën Artificiale mund të ndikojnë në kërkesën për gjeneratat e ardhshme të Inxhinierëve të Softuerit.[56][57][58][59][60][61][62] Megjithatë, kjo prirje mund të ndryshoj ose të ngadalësohet në të ardhmen pasi shumë inxhinierë aktualë të softuerit në tregun amerikan ikin nga profesioni ose plaken nga tregu në dekadat e ardhshme.[52]

Instituti i Inxhinierisë së Softuerit ofron çertifikime për tema specifike si siguria, përmirësimi i procesit dhe arkitektura e softuerit .[63] IBM, Microsoft dhe kompani të tjera gjithashtu sponsorizojnë provimet e tyre të certifikimit. Shumë programe të certifikimit të TI-së janë të orientuara drejt teknologjive specifike dhe menaxhohen nga shitësit e këtyre teknologjive.[64] Këto programe certifikimi janë të përshtatura për institucionet që do të punësonin njerëz që përdorin këto teknologji.

Në Mbretërinë e Bashkuar Britanike, Shoqëria Britanike e Kompjuterëve ka zhvilluar një certifikim profesional të njohur ligjërisht të quajtur Chartered IT Professional (CITP), i disponueshëm për anëtarët plotësisht të kualifikuar ( MBCS ). Inxhinierët e softuerit mund të kualifikohen për anëtarësim në Shoqërinë Britanike të Kompjuterëve ose Institucionin e Inxhinierisë dhe Teknologjisë dhe kështu të kualifikohen për t'u konsideruar për statusin e Inxhinierit të Kartës përmes secilit prej këtyre institucioneve. Në Kanada, Shoqëria Kanadeze e Përpunimit të Informacionit ka zhvilluar një certifikim profesional të njohur ligjërisht të quajtur Informativ Systems Professional (ISP) .[65] Në Ontario, Kanada, Inxhinierët e Softuerit që diplomohen nga një program i akredituar i Bordit Kanadez të Akreditimit të Inxhinierisë (CEAB), përfundojnë me sukses Provimin e Praktikës Profesionale të PEO ( Professional Engineers Ontario ) (PPE) dhe kanë të paktën 48 muaj përvojë të pranueshme inxhinierike, kanë të drejtë të licencohen përmes Inxhinierëve Profesionistë në Ontario dhe mund të bëhen Inxhinierë Profesionistë P. Ing.[66] Megjithatë, PEO nuk njeh asnjë edukim online ose në distancë; dhe nuk i konsideron programet e Shkencave Kompjuterike si ekuivalente me programet e inxhinierisë softuerike pavarësisht nga mbivendosja e jashtëzakonshme midis të dyjave. Kjo ka ndezur polemika dhe një luftë certifikimi. Gjithashtu ka mbajtur jashtëzakonisht të ulët numrin e mbajtësve të P.Eng për këtë profesion. Shumica dërrmuese e profesionistëve që punojnë në këtë fushë kanë një diplomë në CS, jo në SE. Duke pasur parasysh rrugën e vështirë të certifikimit për mbajtësit e diplomave jo-SE, shumica nuk shqetësohen kurrë për të ndjekur licencën.

Ndikimi i globalizimit

[Redakto | Redakto nëpërmjet kodit]

Ndikimi fillestar i kontraktimit dhe kostoja relativisht më e ulët e burimeve njerëzore ndërkombëtare në vendet në zhvillim të botës së tretë çoi në një migrim masiv të aktiviteteve të zhvillimit të softuerit nga korporatat në Amerikën e Veriut dhe Evropë në Indi dhe më vonë: Kina, Rusia dhe vende të tjera në zhvillim. Kjo qasje kishte disa të meta, kryesisht diferenca e distancës/zonës kohore që pengoi ndërveprimin njerëzor midis klientëve dhe zhvilluesve dhe transferimin masiv të punës. Kjo pati një ndikim negativ në shumë aspekte të profesionit të inxhinierisë softuerike. Për shembull, disa studentë në botën e zhvilluar shmangin arsimin në lidhje me inxhinierinë softuerike për shkak të frikës së kontraktimit në det të hapur (importimi i produkteve ose shërbimeve softuerike nga vende të tjera) dhe për t'u zhvendosur nga punëtorët e huaj të vizave .[67] Megjithëse statistikat aktualisht nuk tregojnë një kërcënim për vetë inxhinierinë e softuerit; një karrierë e lidhur, programimi kompjuterik duket se është prekur.[68] Megjithatë, aftësia për të shfrytëzuar me zgjuarsi burimet në det të hapur dhe afër bregut nëpërmjet rrjedhës së punës pas diellit ka përmirësuar aftësinë e përgjithshme operacionale të shumë organizatave.[69] Kur amerikanët e veriut largohen nga puna, aziatikët sapo vijnë në punë. Kur aziatikët largohen nga puna, evropianët vijnë në punë. Kjo siguron një aftësi të vazhdueshme për të pasur mbikëqyrje njerëzore mbi proceset kritike për biznesin 24 orë në ditë, pa paguar kompensim jashtë orarit ose pa ndërprerë një burim kryesor njerëzor, modelet e gjumit.

Ndërsa kontraktimi global ka disa avantazhe, zhvillimi global – dhe përgjithësisht i shpërndarë – mund të përballet me vështirësi serioze që rrjedhin nga distanca midis zhvilluesve. Kjo është për shkak të elementeve kyç të kësaj distancë, të cilat janë identifikuar si gjeografike, kohore, kulturore dhe komunikuese (që përfshin përdorimin e gjuhëve dhe dialekteve të ndryshme të anglishtes në vende të ndryshme).[70] Kërkime janë kryer në fushën e zhvillimit global të softuerit gjatë 15 viteve të fundit dhe është botuar një trup i gjerë punimesh përkatëse që theksojnë përfitimet dhe problemet që lidhen me këtë aktivitet kompleks. Ashtu si me aspektet e tjera të inxhinierisë softuerike, kërkimet janë në vazhdim në këtë dhe fusha të lidhura.

Ka çmime të ndryshme në fushën e inxhinierisë softuerike

  • Çmimi ACM-AAAI Allen Newell – SHBA. Ky çmim jepet për kontributet gjatë karrierës që kanë gjerësi brenda shkencave kompjuterike, ose që lidhin shkencat kompjuterike me disiplina të tjera. Çmimi BCS Lovelace. Ky çmim jepet për individët që kanë dhënë kontribute të jashtëzakonshme në kuptimin ose përparimin e fushës së informatikës. Çmimi ACM SIGSOFT për Kërkime të Shkëlqyera, jepet për individë që kanë bërë "kontribute kërkimore të rëndësishme dhe të qëndrueshme në teorinënë ose praktikë e inxhinierisë softuerike."[71]
  • Më shumë Çmime ACM SIGSOFT.[72]
  • Çmimi Codie, një çmim vjetor i lëshuar nga Shoqata e Industrisë së Softuerit dhe Informacionit për përsosmërinë në zhvillimin e softuerit brenda industrisë së softuerit.
  • Çmimin Harlan Mills për "kontributet në teorinë dhe praktikën e shkencave të informacionit, të fokusuara në inxhinierinë e softuerit".
  • Çmimi i letrës më me ndikim ICSE.[73]
  • Çmimi Jolt, gjithashtu për industrinë e softuerit.
  • Çmimi Stevens dhënë në kujtim të Wayne Stevens.

Disa kërkojnë licencimin, certifikimin dhe krijimin e grupeve të njohurive të kodifikuara si mekanizma për të shpërndarë njohuritë inxhinierike dhe për të avancuar fushën.

Disa pretendojnë se koncepti i inxhinierisë së softuerit është kaq i ri saqë shpesh kuptohet gabimisht, dhe interpretohet gabim gjerësisht, përfshirë në librat shkollorë të inxhinierisë së softuerit, artikuj dhe midis komuniteteve të programuesve dhe mjeshtrave.

Disa pretendojnë se një çështje thelbësore me inxhinierinë e softuerit është se qasjet e saj nuk janë mjaft empirike, pasi verifikimi i këtyre qasjeve në botën reale është zakonisht i munguar ose shumë i kufizuar, dhe për këtë arsye inxhinieria e softuerit shpesh interpretohet gabimisht si diçka e mundshme vetëm në një "mjedis teorik."

Shihni gjithashtu

[Redakto | Redakto nëpërmjet kodit]

Studioni dhe praktikoni

[Redakto | Redakto nëpërmjet kodit]
  1. ^ a b c d e Abran et al. 2004
  2. ^ ACM (2007). "Computing Degrees & Careers" (në anglisht). ACM. Arkivuar nga origjinali më 17 qershor 2011. Marrë më 2010-11-23.
  3. ^ Laplante, Phillip (2007). What Every Engineer Should Know about Software Engineering (në anglisht). Boca Raton: CRC. ISBN 978-0-8493-7228-5. Marrë më 2011-01-21.
  4. ^ "What Does a Software Engineer Do?" (në anglisht). coursera. 31 tet 2022.
  5. ^ Bourque, Pierre; Fairley, Richard E. (Dick), red. (2014). Guide to the Software Engineering Body of Knowledge Version 3.0 (SWEBOK) (në anglisht). IEEE Computer Society.
  6. ^ "The history of coding and software engineering". www.hackreactor.com (në anglishte amerikane). none. Arkivuar nga origjinali më 24 mars 2022. Marrë më 2021-05-06.
  7. ^ "Computers and Automation: The Computer Directory and Buyers' Guide, 1965" (PDF). bitsavers.org (në anglisht). none. Marrë më 15 korrik 2023.
  8. ^ Oettinger, A. G. (1966). "President's Letter to the ACM Membership". Commun. ACM (në anglisht). none. 9: 545–546. doi:10.1145/365758.3291288. ISSN 0001-0782.
  9. ^ "The origin of "software engineering"" (në anglisht). none. 4 prill 2013. Marrë më 17 nëntor 2017.
  10. ^ Randall, Brian. "The 1968/69 NATO Software Engineering Reports" (në anglisht). none. Marrë më 17 nëntor 2017.
  11. ^ Lori Cameron (5 tetor 2008). "Margaret Hamilton: First Software Engineer". Tech News (në anglisht). IEEE Computer Society.
  12. ^ Ian Sommerville (24 mars 2015). Software Engineering (në anglisht) (bot. 10th). Pearson Education Limited. ISBN 978-0-13-394303-0.
  13. ^ Randell, Brian (10 gusht 2001). "The 1968/69 NATO Software Engineering Reports". Brian Randell's University Homepage (në anglisht). The School of the Computer Sciences, Newcastle University. Marrë më 2008-10-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.
  14. ^ 2018 International Conference on Software Engineering celebrating its 40th anniversary, and 50 years of Software engineering (31 maj 2018). "ICSE 2018 – Plenary Sessions – Fred Brooks". YouTube (në anglisht). none. Marrë më 9 gusht 2018.{{cite web}}: Mirëmbajtja CS1: Emra shifrorë: lista e autorëve (lidhja)
  15. ^ 2018 International Conference on Software Engineering celebrating its 40th anniversary, and 50 years of Software engineering (31 maj 2018). "ICSE 2018 – Plenary Sessions – Margaret Hamilton". YouTube (në anglisht). none. Marrë më 9 gusht 2018.{{cite web}}: Mirëmbajtja CS1: Emra shifrorë: lista e autorëve (lidhja)
  16. ^ Bourque, Pierre; Fairley, Richard E. (Dick), red. (2014). Guide to the Software Engineering Body of Knowledge Version 3.0 (SWEBOK) (në anglisht). IEEE Computer Society.
  17. ^ a b Joint Task Force on Computing Curricula, IEEE Computer Society, Association for Computing Machinery (23 shkurt 2015). Software Engineering 2014: Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering (PDF). A Volume of the Computing Curricula Series (në anglisht). IEEE Computer Society and Association for Computing Machinery.{{cite book}}: Mirëmbajtja CS1: Emra të shumëfishtë: lista e autorëve (lidhja)
  18. ^ Sommerville, Ian (2007). "1.1.2 What is software engineering?". Software Engineering (në anglisht) (bot. 8th). Harlow, England: Pearson Education. fq. 7. 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.
  19. ^ "Software Engineering". Information Processing (në anglisht). none. 71: 530–538.
  20. ^ "Definition of SOFTWARE ENGINEERING". www.merriam-webster.com (në anglisht). none. Marrë më 2019-11-25.
  21. ^ Winters, Titus; Manshrec, Tom; Wright, Hyrum (2020). "Preface, Programming Over Time". Software Engineering at Google (në anglisht). O'Reilly Media, Inc. fq. xix–xx, 6–7. ISBN 978-1-4920-8279-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?
  22. ^ Akram I. Salah (2002-04-05). "Engineering an Academic Program in Software Engineering" (PDF) (në anglisht). 35th Annual Midwest Instruction and Computing Symposium. Marrë më 2006-09-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."
  23. ^ Mills, Harlan D., J. R. Newman, and C. B. Engle, Jr., "An Undergraduate Curriculum in Software Engineering," in Deimel, Lionel E. (1990). Software Engineering Education: SEI Conference 1990, Pittsburgh, Pennsylvania, USA, April 2–3,... (në anglisht). Springer. 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..."
  24. ^ Barbara Kitchevnham; David Budgen; Pearl Brereton; Stephen Linkman (2005). "Realising evidence-based software engineering". ACM SIGSOFT Software Engineering Notes (në anglisht). none. 30 (4): 1–3. 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, ...
  25. ^ Lawrence, Snyder (2017). Fluency with information technology : skills, concepts, & capabilities (në anglisht) (bot. [Seventh edition]). NY, NY. ISBN 978-0-13-444872-5. OCLC 960641978.
  26. ^ Parnas, David L. (1998). "Software Engineering Programmes are not Computer Science Programmes". Annals of Software Engineering (në anglisht). none. 6: 19–37. 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,....}."
  27. ^ Parnas, David L. (1998). "Software Engineering Programmes are not Computer Science Programmes". Annals of Software Engineering (në anglisht). none. 6: 19–37. 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."
  28. ^ McConnell, Steve (gusht 2003). Professional Software Development: Shorter Schedules, Better Projects, Superior Products, Enhanced Careers (në anglisht). Boston, MA: Addison-Wesley. 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. "
  29. ^ Knuth, Donald (1974). "Computer Programming as an Art" (PDF). Communications of the ACM (në anglisht). none. 17 (12): 667–673. doi:10.1145/361604.361612.Transcript of the 1974 Turing Award lecture.
  30. ^ Dijkstra, Edsger W; transcribed by Mario Béland (23 nëntor 2004). "There is still a war going on (manuscript Austin, 3 December 1993)". E. W. Dijkstra Archive (në anglisht). The University of Texas at Austin, Department of Computer Sciences. Marrë më 17 shkurt 2007. 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"!
  31. ^ "Software Engineering | Classification of Software Requirements". GeeksforGeeks (në anglishte amerikane). 2018-06-19. Marrë më 2021-05-06.
  32. ^ "Software Engineering | Software Design Process". GeeksforGeeks (në anglishte amerikane). none. 2019-05-24. Marrë më 2021-05-06.
  33. ^ "What is Software Maintenance? Definition of Software Maintenance, Software Maintenance Meaning". The Economic Times (në anglisht). none. Marrë më 2021-05-06.
  34. ^ Alain Abran; James W. Moore; Pierre Bourque; Robert Dupuis; Leonard L. Tripp, red. (2005). "Chapter 1: Introduction to the Guide". Guide to the Software Engineering Body of Knowledge (në anglisht). IEEE Computer Society. Arkivuar nga origjinali më 2016-05-09. Marrë më 2010-09-13. 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.
  35. ^ "ABET Accredited Engineering Programs" (në anglisht). none. prill 3, 2007. Arkivuar nga origjinali më 19 qershor 2010. Marrë më 3 prill 2007.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  36. ^ Bourque, Pierre; Fairley, Richard E. (Dick), red. (2014). Guide to the Software Engineering Body of Knowledge Version 3.0 (SWEBOK) (në anglisht). IEEE Computer Society.
  37. ^ "NCEES Software Engineering Exam Specifications" (PDF) (në anglisht). none. Arkivuar nga origjinali (PDF) më 2013-08-27. Marrë më 2012-04-01.
  38. ^ "NCEES discontinuing PE Software Engineering exam" (në anglisht). National Council of Examiners for Engineering and Surveying. 13 mars 2018. Marrë më 6 gusht 2018.
  39. ^ Barbara Simons. "Past ACM Presidents Reflect on Their Service to ACM". Celebrating 75 Years of Advancing Computing as a Science & Profession (në anglisht). Association for Computing Machinery. Marrë më 18 maj 2024. 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.
  40. ^ John C. Knight; Nancy G. Leveson (1 nëntor 2002). "Should software engineers be licensed?". Communications of the ACM (në anglisht). none. 45 (11): 87–90. doi:10.1145/581571.581601.
  41. ^ Bourque, Pierre; Fairley, Richard E. (Dick), red. (2014). Guide to the Software Engineering Body of Knowledge Version 3.0 (SWEBOK) (në anglisht). IEEE Computer Society.
  42. ^ "Software Engineering Code of Ethics" (PDF) (në anglisht). none. Arkivuar nga origjinali (PDF) më 23 janar 2015. Marrë më 2012-03-25.
  43. ^ Labs, Qubit (29 nëntor 2022). "How Many Programmers are there in the World and in the US? [2023]". Qubit Labs (në anglisht). none. Marrë më 7 shkurt 2023.
  44. ^ "Global Developer Population and Demographic Study 2016 V2" (në anglisht). Evans Data Corporation. Marrë më 19 janar 2017.
  45. ^ a b Rosenthal, Rachel (4 gusht 2020). "Tech Companies Want You to Believe America Has a Skills Gap". Bloomberg (në anglisht). none. Marrë më 8 tetor 2021.
  46. ^ "Computer Software Engineers and Computer Programmers" (në anglisht). none. Marrë më 2009-12-17.
  47. ^ "Software Developers". Occupational Outlook Handbook (në anglisht). U. S. Bureau of labor Statistics. 4 shtator 2019. Marrë më 11 dhjetor 2019.
  48. ^ "Computing Disciplines and Majors" (PDF) (në anglisht). Association for Computing Machinery. Marrë më 6 shtator 2019.
  49. ^ a b "Software Developers: Occupational Outlook Handbook" (në anglisht). U.S. Bureau of Labor Statistics.
  50. ^ "Computer Software Engineer" (në anglisht). Bureau of Labor Statistics. 19 mars 2010. Arkivuar nga origjinali më korrik 26, 2013. Marrë më 20 korrik 2012.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  51. ^ "Software Developers" (në anglisht). Bureau of Labor Statistics. 8 janar 2014. Marrë më 21 korrik 2012.
  52. ^ a b c d e "Computer Programmers : Occupational Outlook Handbook: : U.S. Bureau of Labor Statistics" (në anglisht). none. Arkivuar nga origjinali më 3 maj 2019. Marrë më 17 janar 2017.
  53. ^ "Archive By Publication : Beyond the Numbers: U.S. Bureau of Labor Statistics". www.bls.gov (në anglisht). none.
  54. ^ "The Soon-to-Be-Extinct Embedded Software Engineer". designnews.com (në anglisht). 10 maj 2018.
  55. ^ "hp's Developer Portal | HP International Women's Week: Women in Computer Science dropping since 1980s". developers.hp.com (në anglisht). none.
  56. ^ "Software engineer jobs in danger due to ChatGPT-like tools? Here's what Google CEO Sundar Pichai has to say". Business Today (në anglisht). none. 2023-04-06. Marrë më 2023-05-12.
  57. ^ "ChatGPT could make these jobs obsolete" (në anglishte amerikane). 2023-01-25. Marrë më 2023-05-12.
  58. ^ Kay, Grace. "Software engineers are panicking about being replaced by AI". Business Insider (në anglishte amerikane). none. Marrë më 2023-05-12.
  59. ^ Fowler, Gary. "Council Post: How Will ChatGPT Affect Jobs?". Forbes (në anglisht). none. Marrë më 2023-05-12.
  60. ^ Ito, Aki. "ChatGPT spells the end of coding as we know it". Business Insider (në anglishte amerikane). Marrë më 2023-05-12.
  61. ^ Zinkula, Aaron Mok, Jacob. "ChatGPT may be coming for our jobs. Here are the 10 roles that AI is most likely to replace". Business Insider (në anglishte amerikane). none. Marrë më 2023-05-12.{{cite web}}: Mirëmbajtja CS1: Emra të shumëfishtë: lista e autorëve (lidhja)
  62. ^ Cohen, Mikaela (15 prill 2023). "These are the tech jobs most threatened by ChatGPT and A.I." CNBC (në anglisht). Marrë më 2023-05-12.
  63. ^ "SEI certification page" (në anglisht). Sei.cmu.edu. Marrë më 2012-03-25.
  64. ^ Wyrostek, Warren (14 mars 2008). "The Top 10 Problems with IT Certification in 2008". InformIT (në anglisht). none. Marrë më 2009-03-03.
  65. ^ Canadian Information Processing Society. "I.S.P. Designation" (në anglisht). none. Marrë më 2007-03-15.
  66. ^ "Professional Engineers Ontario: Welcome to PEO's website" (në anglisht). Peo.on.ca. Marrë më 2012-03-25.
  67. ^ Thibodaux, Patrick (2006-05-05). "As outsourcing gathers steam, computer science interest wanes" (në anglisht). Computerworld.com. Marrë më 2016-12-06.
  68. ^ Robert Mullins (13 mars 2007). "Software developer growth slows in North America: Study shows Asia will lead in software developer jobs by 2010". InfoWorld. Software Development (në anglisht). none.
  69. ^ "Gartner Magic Quadrant" (PDF) (në anglisht). Cognizant.com. Arkivuar nga origjinali (PDF) më 20 shtator 2008. Marrë më 2012-03-25.
  70. ^ Casey, Valentine (2010-08-20). "Virtual software team project management". Journal of the Brazilian Computer Society (në anglisht). none. 16 (2): 83–96. doi:10.1007/s13173-010-0013-3. S2CID 14383734.
  71. ^ "Outstanding Research Award". SIGSOFT (në anglisht). none. Marrë më 1 prill 2024.
  72. ^ David Lo (SIGSOFT Awards Chair); Thomas Zimmermann (SIGSOFT Chair) (17 janar 2024). "SIGSOFT Awards 2024". ACM SIGSOFT Blog (në anglisht). none. Marrë më 1 prill 2024.
  73. ^ "ICSE Most Influential Paper Award" (në anglisht). ACM SIGSOFT.