kvalitetskravsedit

oavsett tillvägagångssätt för utveckling måste det slutliga programmet uppfylla vissa grundläggande egenskaper. Följande egenskaper är bland de viktigaste:

  • tillförlitlighet: hur ofta resultaten av ett program är korrekta. Detta beror på konceptuell korrekthet av algoritmer och minimering av programmeringsfel, såsom misstag i resurshantering (t.ex. buffertspill och rasförhållanden) och logiska fel (t. ex. division med noll eller off-by-one fel).,
  • robusthet: hur väl ETT program förutser problem på grund av fel (inte buggar). Detta inkluderar situationer som felaktiga, olämpliga eller korrupta data, avsaknad av nödvändiga resurser som minne, operativsystemtjänster och nätverksanslutningar, användarfel och oväntade strömavbrott.
  • användbarhet: ergonomin i ett program: den lätthet med vilken en person kan använda programmet för sitt avsedda ändamål eller i vissa fall även oförutsedda ändamål. Sådana problem kan göra eller bryta sin framgång även oavsett andra problem., Detta innebär ett brett utbud av textuella, grafiska och ibland hårdvaruelement som förbättrar tydligheten, intuitiviteten, sammanhållningen och fullständigheten hos ett programs användargränssnitt.
  • portabilitet: utbudet av datorhårdvara och operativsystem plattformar där källkoden för ett program kan sammanställas / tolkas och köras., Detta beror på skillnader i programmeringsmöjligheter som tillhandahålls av de olika plattformarna, inklusive hårdvara och operativsystem resurser, förväntat beteende av hårdvara och operativsystem, och tillgången på plattformsspecifika kompilatorer (och ibland bibliotek) för språket i källkoden.
  • underhåll: den lätthet med vilken ett program kan ändras av dess nuvarande eller framtida utvecklare för att göra förbättringar eller anpassningar, åtgärda buggar och säkerhetshål, eller anpassa den till nya miljöer., God praxis under den inledande utvecklingen gör skillnad i detta avseende. Denna kvalitet kanske inte är direkt uppenbar för slutanvändaren, men det kan väsentligt påverka ödet för ett program på lång sikt.
  • effektivitet / prestanda: mått på systemresurser ett program förbrukar (processortid, minnesutrymme, långsamma enheter som diskar, nätverksbandbredd och till viss del även användarinteraktion): ju mindre desto bättre. Detta inkluderar också noggrann hantering av resurser, till exempel rengöring av temporära filer och eliminering av minnesläckor., Detta diskuteras ofta under skuggan av ett valt programmeringsspråk. Även om språket verkligen påverkar prestanda, kan även långsammare språk, som Python, utföra program direkt från ett mänskligt perspektiv. Hastighet, resursanvändning och prestanda är viktiga för program som flaskhals systemet, men effektiv användning av programmerare tid är också viktigt och är relaterad till kostnad: mer hårdvara kan vara billigare.,

läsbarhet av källkoden

i datorprogrammering hänvisar läsbarhet till den lätthet med vilken en mänsklig läsare kan förstå syftet, kontrollflödet och driften av källkoden. Det påverkar kvalitetsaspekterna ovan, inklusive bärbarhet, användbarhet och viktigast underhåll.

läsbarhet är viktigt eftersom programmerare spenderar merparten av sin tid på att läsa, försöka förstå och ändra befintlig källkod, snarare än att skriva ny källkod. Oläsbar kod leder ofta till buggar, ineffektivitet och duplicerad kod., En studie visade att några enkla läsbarhetsomvandlingar gjorde koden kortare och drastiskt minskade tiden för att förstå den.

Efter en konsekvent programmeringsstil hjälper ofta läsbarhet. Läsbarhet är dock mer än bara programmeringsstil. Många faktorer, som har lite eller inget att göra med datorns förmåga att effektivt sammanställa och utföra koden, bidrar till läsbarhet. Några av dessa faktorer inkluderar:

  • olika indragsstilar (blanktecken)
  • sönderdelning
  • namngivningskonventioner för objekt (t.ex. variabler, klasser, procedurer etc.,)

presentationsaspekterna av detta (t.ex. indrag, raster, färgmarkering och så vidare) hanteras ofta av källkodsredigeraren, men innehållsaspekterna återspeglar programmerarens talang och färdigheter.

olika visuella programmeringsspråk har också utvecklats med avsikt att lösa läsbarhetsproblem genom att anta icke-traditionella metoder för kodstruktur och visning. Integrerade utvecklingsmiljöer (IDEs) syftar till att integrera all sådan hjälp. Tekniker som kod refactoring kan förbättra läsbarhet.,

Algorithmic complexityEdit

det akademiska området och ingenjörspraxis för datorprogrammering är båda i stor utsträckning intresserade av att upptäcka och implementera de mest effektiva algoritmerna för en viss problemklass. För detta ändamål klassificeras algoritmer i order med så kallad stor o-notation, som uttrycker resursanvändning, såsom exekveringstid eller minnesförbrukning, när det gäller storleken på en ingång., Expertprogrammerare är bekanta med en mängd väletablerade algoritmer och deras respektive komplexitet och använder denna kunskap för att välja algoritmer som passar bäst för omständigheterna.

Schackalgoritmer som ett exempelredigera

”programmera en dator för att spela schack” var en 1950 papper som utvärderade en ”minimax” algoritm som är en del av historien om algoritmisk komplexitet; en kurs på IBM: s Deep Blue (schackdator) är en del av datavetenskap läroplanen vid Stanford University.,

Metodologiesedit

det första steget i de flesta formella mjukvaruutvecklingsprocesser är kravanalys, följt av testning för att bestämma värdemodellering, implementering och misslyckande eliminering (felsökning). Det finns många olika tillvägagångssätt för var och en av dessa uppgifter. Ett tillvägagångssätt som är populärt för kravanalys är Använd Fallanalys. Många programmerare använder former av smidig mjukvaruutveckling där de olika stadierna av formell mjukvaruutveckling är mer integrerade i korta cykler som tar några veckor i stället för år., Det finns många metoder för mjukvaruutveckling processen.

populära modelleringstekniker inkluderar objektorienterad analys och Design (OOAD) och modelldriven arkitektur (MDA). Unified Modeling Language (UML) är ett samlingsnamn som används för både OOAD och MDA.

en liknande teknik som används för databasdesign är Entity-Relationship Modeling (er-modellering).

implementeringstekniker inkluderar imperativa språk (objektorienterade eller procedurmässiga), funktionella språk och logiska språk.,

mäta språk usageEdit

Huvudartikel: mäta programmeringsspråk Popularitet

det är mycket svårt att avgöra vad som är de mest populära moderna programmeringsspråk., Metoder för att mäta programmeringsspråk popularitet inkluderar: räkna antalet jobbannonser som nämner språket, antalet sålda böcker och kurser som undervisar språket (detta överskattar betydelsen av nyare språk) och uppskattningar av antalet befintliga kodrader skrivna på språket (detta underskattar antalet användare av affärsspråk som COBOL).

vissa språk är mycket populära för vissa typer av applikationer, medan vissa språk används regelbundet för att skriva många olika typer av applikationer., Till exempel är COBOL fortfarande starkt i företagsdatacenter ofta på stora stordatorer, Fortran i tekniska applikationer, skriptspråk i webbutveckling och C i inbäddad programvara. Många applikationer använder en blandning av flera språk i sin konstruktion och användning. Nya språk är i allmänhet utformade kring syntaxen för ett tidigare språk med ny funktionalitet tillsatt, (till exempel C++ lägger objektorientering till C, och Java lägger till minneshantering och bytekod till C++, men som ett resultat förlorar effektivitet och förmågan att manipulera låg nivå).,

DebuggingEdit

den första kända faktiska fel som orsakade ett problem i en dator var en mal, instängd i en Harvard stordator, inspelad i en loggbok post daterad september 9, 1947. ”Bug” var redan en vanlig term för en programvarufel när denna bugg hittades.

Huvudartikel: felsökning

felsökning är en mycket viktig uppgift i mjukvaruutvecklingsprocessen eftersom fel i ett program kan få betydande konsekvenser för användarna., Vissa språk är mer benägna att vissa typer av fel eftersom deras specifikation inte kräver kompilatorer att utföra så mycket kontroll som andra språk. Användning av ett statiskt kodanalysverktyg kan hjälpa till att upptäcka några möjliga problem. Normalt är det första steget i Felsökning att försöka reproducera problemet. Detta kan vara en icke-trivial uppgift, till exempel som med parallella processer eller några ovanliga programfel. Dessutom kan specifik användarmiljö och användningshistorik göra det svårt att reproducera problemet.,

Efter att felet har återgetts kan programmets inmatning behöva förenklas för att göra det lättare att felsöka. Till exempel, när en bugg i en kompilator kan göra det krascha när man tolkar någon stor källfil, kan en förenkling av testfallet som resulterar i endast några rader från den ursprungliga källfilen vara tillräcklig för att reproducera samma krasch. Trial-and-error / divide-and-conquer behövs: programmeraren kommer att försöka ta bort vissa delar av det ursprungliga testfallet och kontrollera om problemet fortfarande finns., När du felsöker problemet i ett GUI kan programmeraren försöka hoppa över viss användarinteraktion från den ursprungliga problembeskrivningen och kontrollera om återstående åtgärder är tillräckliga för att buggar ska visas. Skript och breakpointing är också en del av denna process.

felsökning görs ofta med IDEs som Eclipse, Visual Studio, Xcode, KDevelop, NetBeans och Code::block. Fristående felsökare som GDB används också, och dessa ger ofta mindre av en visuell miljö, vanligtvis med hjälp av en kommandorad. Vissa textredigerare som Emacs tillåter GDB att anropas via dem, för att ge en visuell miljö.,

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *