Ingineria software este aplicarea unei abordări sistematice, disciplinate, măsurabile pentru dezvoltarea , operarea și întreținerea software-ului , precum și studiul acestor abordări; adică aplicarea disciplinei de inginerie la software ( ISO/IEC/IEEE 24765:2017 ) [1] .
Termenul de „inginerie software” a apărut pentru prima dată în 1968, la o conferință NATO și a avut scopul de a stimula căutarea de soluții la „ criza software -ului” care avea loc în acel moment . De atunci, a devenit profesia de inginer software și un domeniu de cercetare dedicat pentru a face software-ul mai bun, mai accesibil, mai bine susținut și mai rapid de dezvoltat.
Money Magazine și Salary.com au clasat ingineria software drept cel mai bun loc de muncă din America în 2006[ clarifica ]
Dezvoltarea software este legată de disciplinele informatică , managementul proiectelor și ingineria sistemelor .
Când primele computere digitale moderne au apărut la începutul anilor 1940, seturi de instrucțiuni executabile erau deja încorporate în mașină. Experții și-au dat seama rapid că această abordare nu este foarte convenabilă. Așa s-a născut „arhitectura programului stocat” sau arhitectura von Neumann . Astfel, împărțirea în „hardware” și „software” a început cu o abstractizare folosită pentru a rezolva problema complexității computaționale.
Primele limbaje de programare au început să apară în anii 1950, iar acesta a fost un alt pas important în abstractizare. Limbi majore, cum ar fi Fortran , Algol și Cobol , au fost lansate la sfârșitul anilor 1950 pentru a rezolva probleme științifice, algoritmice și, respectiv, de afaceri. Dijkstra a scris faimosul său articol „Go To Statement Considered Harmful ” în 1968, iar David Parnas a introdus conceptele cheie de modularitate și ascunderea informațiilor în 1972 pentru a ajuta programatorii să facă față sistemelor software din ce în ce mai complexe. Software-ul de sistem pentru controlul hardware numit „ sistem de operare ” a fost introdus de Unix în 1969. În 1967, limbajul Simula a introdus conceptul de paradigmă de programare orientată pe obiecte .
Aceste progrese în software-ul au fost întâmpinate cu o descoperire majoră în tehnologia computerelor. La mijlocul anilor 1970, a fost introdus microcalculatorul , permițând pasionaților să-și obțină propriul computer și să-și scrie propriile programe pentru el. Aceasta, la rândul său, a dat naștere computerelor personale (PC-uri) și Microsoft Windows . De asemenea, la mijlocul anilor 1980, concepte precum ciclul de viață al software-ului apar ca un fel de consens pentru dezvoltarea centralizată a software-ului. Sfârșitul anilor 1970 și începutul anilor 1980 au văzut apariția mai multor limbaje noi de programare orientate pe obiecte asemănătoare simulelor, inclusiv Smalltalk , Objective-C și C++ .
Software- ul open source , care a apărut la începutul anilor 1990, a dat naștere unui stil descentralizat de dezvoltare software.
Cerințele legale pentru licențierea și certificarea inginerilor software profesioniști variază în întreaga lume. În Marea Britanie, British Computer Society acordă licențe inginerilor de software și membrii societății pot deveni, de asemenea, „ingineri certificati” (C.Eng), iar în unele părți ale Canadei, cum ar fi Alberta, Ontario și Quebec, inginerii
În 2004, Biroul de Statistică al Muncii din SUA a numărat 760.840 de ingineri de software care lucrau în SUA. În aceeași perioadă, aproximativ 1,4 milioane de practicieni erau angajați în SUA în alte profesii mixte de inginerie. Datorită noutății sale relative ca domeniu formal de studiu, ingineria software este adesea predată ca parte a unui curriculum de informatică, iar mulți ingineri de software sunt bine versați în informatică.
Mulți ingineri de software lucrează ca angajați sau contractori. Ei lucrează în afaceri, agenții guvernamentale (civile sau militare) și organizații non-profit. Unii ingineri lucrează ca liber profesioniști . Unele organizații au specialiști pentru a îndeplini fiecare dintre sarcinile din procesul de dezvoltare a software-ului. Alții necesită un inginer de software care îndeplinește multe sau toate sarcinile simultan. În proiectele mari, oamenii se pot specializa doar într-un singur rol. La mici, oamenii pot prelua mai multe sau toate roluri în același timp.
Specializările includ: în industrie: analiști, arhitecți software , dezvoltatori , testeri , suport tehnic, analist intermediar, manager; în cercurile academice: profesori, cercetători.
Majoritatea inginerilor de software și programatorilor lucrează 40 de ore pe săptămână, iar aproximativ 15% dintre inginerii software și 11% dintre programatori au lucrat mai mult de 50 de ore pe săptămână în 2008. Leziunile în aceste profesii sunt rare. Cu toate acestea, ca și în cazul altor profesii care necesită mult timp în fața unui computer, oamenii din aceste profesii sunt mai predispuși la oboseală oculară, dureri de spate și afecțiuni ale mâinii și încheieturii mâinii, cum ar fi sindromul de tunel carpian .
Institutul de Inginerie Software oferă certificare în domenii specifice, cum ar fi securitatea, optimizarea proceselor și arhitectura software. Apple , IBM , Microsoft și alte companii fond[ clarifica ] examene proprii pentru certificare. Multe programe de certificare IT se concentrează pe tehnologii specifice și sunt gestionate de acești furnizori de tehnologie. Aceste programe de certificare sunt concepute în jurul locației în care vor fi angajați oamenii care folosesc aceste tehnologii.
Extensia de certificare „General Software Development Skills” este disponibilă prin diferite comunități profesionale. În 2006, IEEE a certificat peste 575 de profesioniști în software ca „Certified Software Development Professional” (CSDP). În 2008, au adăugat o certificare entry-level cunoscută sub numele de „Certified Software Development Associate” (CSDA). ACM a avut un program de certificare profesională la începutul anilor 1980, care a fost întrerupt din cauza lipsei de interes. ACM a luat în considerare, de asemenea, certificarea inginerilor de software profesioniști la sfârșitul anilor 1990, dar în cele din urmă a decis că o astfel de certificare nu era adecvată pentru practica profesională de dezvoltare de software.
Societatea de calcul britanică a dezvoltat o certificare profesională recunoscută legal numită Chartered IT Professional (CITP) și este disponibilă numai membrilor cu drepturi depline (MBCS). Inginerii de software sunt eligibili pentru calitatea de membru al Instituției de Inginerie și Tehnologie și se pot califica în consecință ca inginer autorizat . În Canada, Canadian Information Processing Society a dezvoltat, de asemenea, o certificare profesională recunoscută legal numită Information Systems Professional (ISP). În Ontario, Canada, inginerii de software care absolvă Consiliul canadian de acreditare a ingineriei (CEAB), promovează cu succes examenul de practică profesională (PPE) și au cel puțin 48 de luni de experiență de inginer software, sunt eligibili pentru a fi licențiați prin PEO. ” și pot deveni Ingineri Profesionişti (P.Eng).
Cunoștințele de programare sunt o condiție prealabilă pentru a deveni inginer software. În 2004, IEEE Computer Society a lansat SWEBOK , care a fost publicat ca standardul ISO/IEC 19759:2004, care descrie cantitatea de cunoștințe pe care cred că ar trebui să o dobândească un inginer de software calificat cu patru ani de experiență. Mulți oameni intră în această profesie după ce au absolvit sau au urmat o școală profesională. Curriculumul standard pentru Licența Internațională de Inginerie Software a fost definit de CCSE și actualizat în 2004. Un număr de universități au programe de inginerie software. Din 2010, au existat 244 de programe cu normă întreagă, 70 de cursuri online, 230 de programe de specialitate, 41 de programe de cercetare și 69 de programe de certificat în Statele Unite. În universitățile ruse există o zonă separată de formare 09.03.04 „Inginerie software”.
Pe lângă studiile superioare, multe companii finanțează stagii de practică pentru studenții care doresc să urmeze o carieră în tehnologia informației. Aceste practici pot arăta elevului provocări interesante din viața reală cu care se confruntă inginerii de software în fiecare zi. Experiență similară poate fi obținută prin serviciul militar în domeniul ingineriei software.
Principalele diferențe dintre ingineria software și alte discipline de inginerie, potrivit unor cercetători, sunt nivelul diferit al costurilor de producție. [2]
![]() | ||||
---|---|---|---|---|
|