Software er et program eller et sæt programmer, der indeholder instruktioner, der giver den ønskede funktionalitet. Engineering er processen med at designe og bygge noget, der tjener et bestemt formål og finder en omkostningseffektiv løsning på problemer.
Indholdsfortegnelse
- Hvad er Software Engineering?
- Nøgleprincipper for Software Engineering
- Vigtigste egenskaber ved software engineering
- Dobbeltrolle af software
- Mål for Software Engineering
- Program vs softwareprodukt
- Fordele ved Software Engineering
- Ulemper ved Software Engineering
- Spørgsmål til praksis
- Ofte stillede spørgsmål om Software Engineering
Hvad er Software Engineering?
Software Engineering er processen med at designe, udvikle, teste og vedligeholde software. Det er en systematisk og disciplineret tilgang til softwareudvikling, der sigter mod at skabe høj kvalitet, pålidelig og vedligeholdelig software.
- Software engineering omfatter en række forskellige teknikker, værktøjer og metoder, herunder kravanalyse, design, test og vedligeholdelse.
- Det er et felt i hastig udvikling, og nye værktøjer og teknologier udvikles konstant for at forbedre softwareudviklingsprocessen.
- Ved at følge principperne for softwareudvikling og bruge de passende værktøjer og metoder, kan softwareudviklere skabe høj kvalitet, pålidelig og vedligeholdelig software, der opfylder brugernes behov.
- Software Engineering bruges hovedsageligt til store projekter baseret på softwaresystemer frem for enkelte programmer eller applikationer.
- Hovedmålet med Software Engineering er at udvikle softwareapplikationer til forbedring af kvalitet, budget og tidseffektivitet.
- Software Engineering sikrer, at den software, der skal bygges, skal være konsistent, korrekt, også på budget, til tiden og inden for de krævede krav.
Nøgleprincipper for Software Engineering
- Modularitet : Opdeling af softwaren i mindre, genanvendelige komponenter, der kan udvikles og testes uafhængigt.
- Abstraktion : Skjuler implementeringsdetaljerne for en komponent og eksponerer kun den nødvendige funktionalitet for andre dele af softwaren.
- Indkapsling : Samling af et objekts data og funktioner i en enkelt enhed og beskyttelse af et objekts interne tilstand mod eksterne modifikationer.
- Genanvendelighed : Oprettelse af komponenter, der kan bruges i flere projekter, hvilket kan spare tid og ressourcer.
- Vedligeholdelse : Regelmæssig opdatering og forbedring af softwaren for at rette fejl, tilføje nye funktioner og løse sikkerhedssårbarheder.
- Afprøvning : Bekræftelse af, at softwaren opfylder kravene og er fri for fejl.
- Design mønstre : Løsning af tilbagevendende problemer i softwaredesign ved at levere skabeloner til at løse dem.
- Agile metoder: Brug af iterative og trinvise udviklingsprocesser, der fokuserer på kundetilfredshed, hurtig levering og fleksibilitet.
- Kontinuerlig integration og implementering: Løbende integration af kodeændringerne og implementering af dem i produktionsmiljøet.
Vigtigste egenskaber ved software engineering
Software Engineering er en systematisk, disciplineret, kvantificerbar undersøgelse og tilgang til design, udvikling, drift og vedligeholdelse af et softwaresystem. Der er fire hovedattributter ved softwareteknologi.
- Effektivitet: Det giver et effektivt mål for et softwareprodukts ressourcebehov.
- Pålidelighed: Det sikrer, at produktet vil levere de samme resultater, når det bruges i lignende arbejdsmiljø.
- Genanvendelighed: Denne egenskab sikrer, at modulet kan bruges i flere applikationer.
- Vedligeholdelse: Det er softwarens evne til nemt at blive ændret, repareret eller forbedret med skiftende krav.
Dobbeltrolle af software
Der er en dobbeltrolle af software i branchen. Den første er som et produkt, og den anden er som et redskab til at levere produktet. Vi vil diskutere dem begge.
1. Som et produkt
- Det leverer computerpotentiale på tværs af hardwarenetværk.
- Det gør det muligt for hardwaren at levere den forventede funktionalitet.
- Det fungerer som en informationstransformer, fordi det producerer, administrerer, erhverver, ændrer, viser eller transmitterer information.
2. Som et køretøj til levering af et produkt
- Det giver systemfunktionalitet (f.eks. lønsystem).
- Det styrer anden software (f.eks. et operativsystem).
- Det hjælper med at bygge anden software (f.eks. softwareværktøjer).
Mål for Software Engineering
- Vedligeholdelse: Det burde være muligt for softwaren at udvikle sig til at imødekomme skiftende krav.
- Effektivitet: Softwaren bør ikke gøre spild af computerenheder såsom hukommelse, processorcyklusser osv.
- Rigtighed: Et softwareprodukt er korrekt, hvis de forskellige krav specificeret i SRS-dokument er blevet korrekt implementeret.
- Genanvendelighed: Et softwareprodukt har god genanvendelighed, hvis produktets forskellige moduler nemt kan genbruges til at udvikle nye produkter.
- Testbarhed: Her letter softwaren både opstillingen af testkriterier og evalueringen af softwaren i forhold til disse kriterier.
- Pålidelighed: Det er en egenskab ved softwarekvalitet. I hvilket omfang et program kan forventes at udføre sin ønskede funktion over en vilkårlig tidsperiode.
- Portabilitet: I dette tilfælde kan softwaren overføres fra et computersystem eller miljø til et andet.
- Tilpasningsevne: I dette tilfælde tillader softwaren forskellige systembegrænsninger, og brugeren skal være tilfreds ved at foretage ændringer i softwaren.
- Interoperabilitet: Mulighed for 2 eller flere funktionelle enheder til at behandle data i samarbejde.
Program vs softwareprodukt
| Parametre | Program | Software produkt |
|---|---|---|
| Definition vikas diviakirti | Et program er et sæt instruktioner, der gives til en computer for at udføre en bestemt opgave. | Software er, når et program gøres tilgængeligt for kommerciel virksomhed og er korrekt dokumenteret sammen med dets licensering. Softwareprodukt = Program + Dokumentation + Licens. |
| Stadier involveret | Program er et af de stadier, der er involveret i udviklingen af softwaren. | Softwareudvikling følger normalt en livscyklus, som involverer forundersøgelse af projektet, kravindsamling, udvikling af en prototype, systemdesign, kodning og test. |
Fordele ved Software Engineering
Der er flere fordele ved at bruge en systematisk og disciplineret tilgang til softwareudvikling, såsom:
- Forbedret kvalitet: Ved at følge etablerede softwareingeniørprincipper og -teknikker kan softwaren udvikles med færre fejl og højere pålidelighed.
- Øget produktivitet: Brug af moderne værktøjer og metoder kan strømline udviklingsprocessen, hvilket giver udviklere mulighed for at være mere produktive og færdiggøre projekter hurtigere.
- Bedre vedligeholdelse: Software, der er designet og udviklet ved hjælp af sund softwareteknik, er nemmere at vedligeholde og opdatere over tid.
- Reducerede omkostninger: Ved at identificere og adressere potentielle problemer tidligt i udviklingsprocessen kan softwareudvikling hjælpe med at reducere omkostningerne ved at rette fejl og tilføje nye funktioner senere.
- jeg Øget kundetilfredshed: Ved at involvere kunderne i udviklingsprocessen og udvikle software, der opfylder deres behov, kan software engineering være med til at øge kundetilfredsheden.
- Bedre teamsamarbejde: Ved at bruge agile metoder og kontinuerlig integration muliggør softwareudvikling bedre samarbejde mellem udviklingsteams.
- Bedre skalerbarhed : Ved at designe software med skalerbarhed for øje, kan software engineering være med til at sikre, at software kan håndtere et stigende antal brugere og transaktioner.
- Bedre sikkerhed: Ved at følge Software Development Life Cycle (SDLC) og udfører sikkerhedstest, kan softwareudvikling hjælpe med at forhindre sikkerhedsbrud og beskytte følsomme data.
Sammenfattende tilbyder software engineering en struktureret og effektiv tilgang til softwareudvikling, som kan føre til software af højere kvalitet, som er nemmere at vedligeholde og tilpasse til skiftende krav. Dette kan være med til at forbedre kundetilfredsheden og reducere omkostningerne, samtidig med at det fremmer et bedre samarbejde mellem udviklingsteams.
Ulemper ved Software Engineering
Selvom Software Engineering tilbyder mange fordele, er der også nogle potentielle ulemper at overveje:
- Høje forudgående omkostninger: Implementering af en systematisk og disciplineret tilgang til softwareudvikling kan være ressourcekrævende og kræve en betydelig investering i værktøjer og uddannelse.
- Begrænset fleksibilitet: At følge etablerede software engineering principper og metoder kan være rigid og kan begrænse evnen til hurtigt at tilpasse sig skiftende krav.
- Bureaukratisk : Software Engineering kan skabe et miljø, der er bureaukratisk, med en masse processer og papirarbejde, som kan bremse udviklingsprocessen.
- Kompleksitet : Med stigningen i antallet af værktøjer og metoder kan softwareudvikling være kompleks og vanskelig at navigere i.
- Begrænset kreativitet: Fokus på struktur og proces kan kvæle kreativitet og innovation blandt udviklere.
- Høj indlæringskurve: Udviklingsprocessen kan være kompleks, og den kræver meget læring og træning, hvilket kan være udfordrende for nye udviklere.
- Stor afhængighed af værktøjer: Softwareudvikling afhænger i høj grad af værktøjerne, og hvis værktøjerne ikke er korrekt konfigureret eller ikke er kompatible med softwaren, kan det forårsage problemer.
- Høj vedligeholdelse : Softwareudviklingsprocessen kræver regelmæssig vedligeholdelse for at sikre, at softwaren kører effektivt, hvilket kan være dyrt og tidskrævende.
Sammenfattende kan softwareudvikling være dyrt og tidskrævende, og det kan begrænse fleksibilitet og kreativitet. Men fordelene ved forbedret kvalitet, øget produktivitet og bedre vedligeholdelse kan opveje omkostningerne og kompleksiteten. Det er vigtigt at afveje fordele og ulemper ved at bruge software engineering og afgøre, om det er den rigtige tilgang til et bestemt softwareprojekt.
Spørgsmål til praksis
1. Et softwarekonfigurationsstyringsværktøj hjælper i [GATE CS 2004]
(EN) holde styr på tidsplanen baseret på den nåede milepæl
rdbms
(B) vedligeholde forskellige versioner af de konfigurerbare elementer
(C) styre arbejdskraftfordelingen ved at ændre projektstrukturen
(D) alle de ovenstående
Løsning: Korrekt svar er (B).
2. Hvilket af følgende udsagn er/er sandt? [UGC NET CSE 2018]
P: Software Reengineering er at foretrække for softwareprodukter med høj fejlrate, dårligt design og/eller dårlig kodestruktur.
Q: Software Reverse Engineering er processen med at analysere software med det formål at gendanne dets design og kravspecifikation.
(EN) Kun P
funktioner i c
(B) Hverken P eller Q
(C) Kun Q
(D) Både P og Q
Løsning: Korrekt svar er (D).
3. Diagrammet, der hjælper med at forstå og repræsentere brugerkrav til et softwareprojekt, der bruger UML (Unified Modeling Language), er: [GATE CS 2004]
(EN) Entitetsforholdsdiagram
(B) Implementeringsdiagram
(C) Dataflowdiagram
(D) Brug Case Diagram
Løsning: Korrekt svar er (D).
Ofte stillede spørgsmål om Software Engineering
Hvad er Software Re-Engineering?
Flere år: Software Re-Engineering er dybest set en proces med softwareudvikling, der hjælper med at opretholde kvaliteten af systemet.
2. Angiv nogle livscyklusmodeller for softwareudvikling?
Flere år: Nogle af softwareudviklingens livscyklusmodeller er nævnt nedenfor.
- Vandfaldsmodel
- Big-Bang model
- Spiral model
- Iterativ model
- V-model
3. Hvad er verifikation og validering i softwareteknologi?
Flere år: Verifikation refererer til det sæt af aktiviteter eller funktioner, der kontrollerer, om softwaren har implementeret den korrekte funktion eller ej.
c++ opdelt strengValidering refererer til et sæt af aktiviteter, der sikrer, at softwaren er bygget i henhold til kundens krav.
For mere, se Verifikation og validering i Software Engineering .