Mens softwareteknik og konventionelle tekniske discipliner har forskellige fokus, deler de adskillige grundlæggende ligheder i deres processer:
1. Systematisk tilgang: Både softwareteknik og konventionel teknik anvender en systematisk og struktureret tilgang til problemløsning. De involverer at definere klare krav, designe løsninger, implementere dem, teste og validere resultaterne og til sidst implementere produktet eller systemet.
2. Vægt på krav og design: Begge felter lægger betydelig vægt på at definere og dokumentere klare krav og design, inden de går i gang med implementeringen. Dette sikrer, at det endelige produkt opfylder de ønskede specifikationer og undgår dyre omarbejdning senere i processen.
3. Iterativ udvikling: Både softwareteknik og konventionel teknik følger ofte en iterativ udviklingsmetode, hvor processen involverer cykler med planlægning, design, udvikling, test og forfining. Dette muliggør justeringer og forbedringer baseret på feedback og udviklende krav.
4. Kvalitetssikring og test: Begge felter indeholder streng kvalitetssikring og testprocedurer for at sikre pålidelighed, funktionalitet og ydeevne af det udviklede produkt eller system. Dette involverer forskellige niveauer af test, herunder enhedstest, integrationstest og systemtest.
5. Dokumentation og kommunikation: Detaljeret dokumentation og effektiv kommunikation er vigtige for både softwareteknik og konventionelle ingeniørprojekter. De sikrer, at hele teamet er opmærksom på projektets mål, fremskridt og eventuelle ændringer eller problemer, der er opstået.
6. Projektstyring og planlægning: Begge felter er afhængige af projektstyringsmetoder og værktøjer til at organisere, planlægge og spore udviklingsprocessen. Dette inkluderer definition af opgaver, tildeling af ansvar, overvågning af fremskridt og styring af risici.
7. Kontinuerlig forbedring: Både softwareteknik og konventionel teknik anerkender vigtigheden af kontinuerlig forbedring. Dette involverer analyse af projektdata, identificering af områder til forbedring og implementering af ændringer for at forbedre processer og resultater i fremtidige projekter.
Nøgleforskelle:
Mens lighederne er betydelige, er der afgørende forskelle mellem softwareteknik og konventionel teknik.
* håndgribelige vs. immaterielle produkter: Konventionel teknik handler med konkrete produkter, der kan bygges og inspiceres fysisk. Software Engineering fokuserer på den anden side på at oprette immaterielle produkter (software), der kun findes som kode og data.
* kompleksitet og fleksibilitet: Softwaresystemer har en tendens til at være mere komplekse og fleksible end mange konventionelle ingeniørprodukter. Dette kræver forskellige tilgange til design, udvikling og vedligeholdelse.
* Softwareudvikling og ændring: Softwareprodukter er ofte underlagt hyppige ændringer og opdateringer, der giver unikke udfordringer for softwareingeniører. Dette er mindre almindeligt inden for konventionel teknik, hvor produkter generelt er mere stabile.
Sammenfattende deler softwareingeniørprocessen et stærkt fundament med konventionelle ingeniørprocesser, der understreger systematisk problemløsning, kravanalyse, iterativ udvikling, kvalitetssikring og kontinuerlig forbedring. Imidlertid kræver de unikke egenskaber ved softwareudvikling specifikke tilpasninger og metodologier til at tackle de forviklinger ved oprettelse af software og udvikling.