Historien om mjukvaruteknik
Historia av |
---|
datorhårdvara |
programvara |
Datavetenskap |
Moderna koncept |
Efter land |
Tidslinje för datoranvändning |
Ordlista för datavetenskap |
Historien om mjukvaruteknik börjar på 1960-talet. Att skriva programvara har utvecklats till ett yrke som handlar om hur man bäst maximerar kvaliteten på programvaran och hur man skapar den. Kvalitet kan hänvisa till hur underhållsbar programvara är, till dess stabilitet, hastighet, användbarhet, testbarhet, läsbarhet, storlek, kostnad, säkerhet och antal brister eller "buggar", såväl som till mindre mätbara egenskaper som elegans, koncisitet och kund tillfredsställelse, bland många andra attribut. Hur man bäst skapar högkvalitativ mjukvara är ett separat och kontroversiellt problem som omfattar mjukvarudesignprinciper, så kallade "best practices" för att skriva kod, såväl som bredare hanteringsfrågor som optimal teamstorlek, process, hur man bäst levererar mjukvara i tid och så snabbt som möjligt, "kultur" på arbetsplatsen, anställningsmetoder och så vidare. Allt detta faller under den breda rubriken mjukvaruteknik .
Översikt
Utvecklingen av mjukvaruteknik är anmärkningsvärd inom ett antal områden:
- Framväxt som ett yrke: I början av 1980-talet hade mjukvaruteknik redan vuxit fram som ett gott yrke , för att stå bredvid datavetenskap och traditionell ingenjörskonst. [ citat behövs ]
-
Kvinnors roll : Före 1970 delegerade män som fyllde de mer prestigefyllda och bättre betalande maskinvaruteknikrollerna ofta skrivandet av mjukvara till kvinnor, och legender som Grace Hopper eller Margaret Hamilton fyllde många datorprogrammeringsjobb . Idag arbetar färre kvinnor inom mjukvaruteknik än inom andra yrken, en situation vars orsak inte är tydligt identifierad. Många akademiska och professionella organisationer [ vem? ] anser att denna situation är obalanserad och försöker hårt för att lösa den. - Processer: Processer har blivit en stor del av mjukvaruutveckling. De hyllas för sin potential att förbättra mjukvara men kritiseras skarpt för sin potential att begränsa programmerare. [ citat behövs ]
- Kostnad för hårdvara: Den relativa kostnaden för mjukvara kontra hårdvara har förändrats avsevärt under de senaste 50 åren. När stordatorer var dyra och krävde stor supportpersonal hade de få organisationer som köpte dem också resurserna att finansiera stora, dyra anpassade programvaruutvecklingsprojekt. Datorer är nu mycket fler och mycket kraftfullare, vilket har flera effekter på programvara. Den större marknaden kan stödja stora projekt för att skapa kommersiell programvara från hyllan, vilket görs av företag som Microsoft . De billiga maskinerna tillåter varje programmerare att ha en terminal som kan kompileras ganska snabbt . Programmen i fråga kan använda tekniker som sophämtning , vilket gör dem enklare och snabbare för programmeraren att skriva. Å andra sidan är många färre organisationer intresserade av att anställa programmerare för stora skräddarsydda mjukvaruprojekt, istället för att använda kommersiella hyllprogram så mycket som möjligt. [ citat behövs ]
1945 till 1965: Ursprunget
Förmodade ursprung för termen mjukvaruteknik inkluderar ett brev från 1965 från ACM-president Anthony Oettinger , föreläsningar av Douglas T. Ross vid MIT på 1950-talet. Margaret H. Hamilton "är personen som kom på idén att namnge disciplinen, mjukvaruteknik, som ett sätt att ge den legitimitet."
Natos vetenskapskommitté sponsrade två konferenser om mjukvaruteknik 1968 ( Garmisch , Tyskland - se konferensrapport ) och 1969, vilket gav fältet dess första uppsving. Många tror att dessa konferenser markerade den officiella starten för yrket mjukvaruteknik .
1965 till 1985: Programvarukrisen
Programvaruutveckling sporrades av den så kallade mjukvarukrisen på 1960-, 1970- och 1980-talen, som identifierade många av problemen med mjukvaruutveckling. Många projekt gick över budget och tidsplan. Vissa projekt orsakade skador på egendom. Några projekt orsakade förlust av människoliv. Programvarukrisen definierades ursprungligen i termer av produktivitet , men utvecklades för att betona kvalitet . Vissa använde termen mjukvarukris för att hänvisa till deras oförmåga att anställa tillräckligt med kvalificerade programmerare. [ citat behövs ]
- Kostnads- och budgetöverskridanden : Operativsystemet OS/360 var ett klassiskt exempel. Detta decennielånga projekt från 1960-talet producerade så småningom ett av de mest komplexa mjukvarusystemen på den tiden. OS/360 var ett av de första stora (1 000 programmerare [ citat behövs]) programvaruprojekt . Fred Brooks hävdar i The Mythical Man-Month att han gjorde ett mångmiljonmisstag att inte utveckla en sammanhängande arkitektur innan utvecklingen påbörjades.
- Egendomsskada: Programvarudefekter kan orsaka skada på egendom. Dålig mjukvarusäkerhet tillåter hackare att stjäla identiteter, vilket kostar tid, pengar och rykte. [ citat behövs ]
- Liv och död: Programvarudefekter kan döda. Inbyggda system som används i strålbehandlingsmaskiner bevisar förmågan att misslyckas så katastrofalt att de administrerade dödliga doser av strålning till patienter. De mest kända av dessa misslyckanden är Therac-25 -incidenterna.
Peter G. Neumann har fört en samtida lista över programvaruproblem och katastrofer. Mjukvarukrisen har hållits bort, eftersom det är psykologiskt extremt svårt att förbli i krisläge under en utdragen period (mer än 20 år). Ändå förblir programvara – särskilt inbäddad programvara i realtid – riskabel och är genomgående, och det är avgörande att inte ge efter för självbelåtenhet. Under de senaste 10–15 åren Michael A. Jackson skrivit mycket om mjukvaruteknikens natur, har identifierat huvudkällan till dess svårigheter som bristande specialisering och har föreslagit att hans problemramar utgör grunden för en "normal praxis". av programvaruteknik, en förutsättning om programvaruteknik ska bli en ingenjörsvetenskap.
1985 till 1989: " No Silver Bullet "
I decennier var det avgörande för forskare och företag som tillverkade mjukvaruverktyg att lösa programkrisen. Kostnaden för att äga och underhålla programvara på 1980-talet var dubbelt så dyr som att utveckla programvaran. [ citat behövs ]
- Under 1990-talet ökade kostnaderna för ägande och underhåll med 30 % under 1980-talet.
- 1995 visade statistik att hälften av de undersökta utvecklingsprojekten var i drift, men inte ansågs framgångsrika.
- Det genomsnittliga mjukvaruprojektet överskrider sitt schema med hälften.
- Tre fjärdedelar av alla stora mjukvaruprodukter som levereras till kunden är fel som antingen inte används alls, eller inte uppfyller kundens krav.
Mjukvaruprojekt
Till synes utbasunerades varje ny teknik och praxis från 1970-talet till 1990-talet som en silverkula för att lösa programvarukrisen. Verktyg, disciplin, formella metoder , process och professionalism utropades som silverkulor: [ citat behövs ]
- Verktyg: Särskilt betonades verktyg: strukturerad programmering , objektorienterad programmering , CASE -verktyg som ICL:s CADES CASE-system, Ada , dokumentation och standarder hyllades som silverkulor.
- Disciplin: Vissa förståsigpåare hävdade att programvarukrisen berodde på bristen på disciplin hos programmerare.
- Formella metoder: Vissa trodde att om formella ingenjörsmetoder skulle tillämpas på mjukvaruutveckling, så skulle produktion av mjukvara bli en lika förutsägbar industri som andra teknikgrenar. De förespråkade att alla program skulle vara korrekta.
- Process: Många förespråkade användningen av definierade processer och metoder som Capability Maturity Model .
- Professionalism: Detta ledde till arbetet med en etik, licenser och professionalism.
1986 publicerade Fred Brooks sin No Silver Bullet -artikel och hävdade att ingen enskild teknik eller praxis någonsin skulle göra en 10-faldig förbättring av produktiviteten inom 10 år. [ citat behövs ]
Debatten om silverkulor rasade under det följande decenniet. Förespråkare för Ada , komponenter och processer fortsatte att argumentera i flera år att deras favoritteknik skulle vara en silverkula. Skeptiker höll inte med. Så småningom accepterade nästan alla att ingen silverkula någonsin skulle hittas. Ändå dyker påståenden om silverkulor upp då och då, även idag. [ citat behövs ]
Vissa [ vem? ] tolka [ varför? ] ingen silverkula som betyder att mjukvaruutveckling misslyckades. [ förtydligande behövs ] Men med ytterligare läsning fortsätter Brooks med att säga: "Vi kommer säkert att göra betydande framsteg under de kommande 40 åren; en storleksordning över 40 år är knappast magisk ..." [ citat behövs ]
Sökandet efter en enda nyckel till framgång fungerade aldrig. Alla kända tekniker och metoder har bara gjort stegvisa förbättringar av produktivitet och kvalitet. Ändå finns det inga silverkulor för något annat yrke heller. Andra tolkar ingen silverkula som ett bevis på att mjukvaruteknik äntligen har mognat och insett att projekt lyckas på grund av hårt arbete. [ citat behövs ]
Det kan dock också sägas att det faktiskt finns en rad silverkulor idag, inklusive lättviktsmetoder (se " Projektledning "), kalkylarkräknare, anpassade webbläsare , sökmotorer på plats, rapportgeneratorer för databas, integrerad design -testkodningsredigerare med minne/skillnader/ångra, och specialbutiker som genererar nischad mjukvara, såsom informationswebbplatser, till en bråkdel av kostnaden för helt anpassad webbplatsutveckling. Ändå verkar området mjukvaruteknik vara för komplext och mångsidigt för att en enda "silverkula" ska kunna förbättra de flesta problem, och varje fråga står bara för en liten del av alla programvaruproblem. [ citat behövs ]
1990 till 1999: Internets framträdande plats
Internets framväxt ledde till en mycket snabb ökning av efterfrågan på internationella informationsdisplay/e-postsystem på World Wide Web. Programmerare var tvungna att hantera illustrationer, kartor, fotografier och andra bilder, plus enkel animering, i en takt som aldrig tidigare skådats, med få välkända metoder för att optimera bildvisning/lagring (som användningen av miniatyrbilder). [ citat behövs ]
Tillväxten av webbläsaranvändning, som körs på HyperText Markup Language (HTML), förändrade sättet på vilket informationsvisning och hämtning organiserades. De utbredda nätverksanslutningarna ledde till tillväxten och förebyggandet av internationella datavirus på MS Windows-datorer, och den enorma spridningen av spam-e-post blev en stor designfråga i e-postsystem, vilket översvämmade kommunikationskanaler och krävde halvautomatisk förhandsgranskning . Nyckelordssökningssystem utvecklades till webbaserade sökmotorer och många programvarusystem måste designas om för internationell sökning, beroende på sökmotoroptimering (SEO) . Mänskliga översättningssystem för naturliga språk behövdes för att försöka översätta informationsflödet till flera främmande språk, med många programvarusystem som designades för flerspråkig användning, baserat på designkoncept från mänskliga översättare. Typiska datoranvändarbaser gick från hundratals eller tusentals användare till, ofta, många miljoner internationella användare. [ citat behövs ]
2000 till 2015: Lättviktsmetoder
Med den ökande efterfrågan på mjukvara i många mindre organisationer ledde behovet av billiga mjukvarulösningar till tillväxten av enklare, snabbare metoder som utvecklade mjukvara som körs, från krav till implementering, snabbare och enklare. Användningen av rapid-prototyping utvecklades till hela lätta metoder , såsom Extreme Programming (XP), som försökte förenkla många områden inom mjukvaruteknik, inklusive kravinsamling och tillförlitlighetstestning för det växande, stora antalet små mjukvarusystem. Mycket stora mjukvarusystem använde fortfarande starkt dokumenterade metoder, med många volymer i dokumentationsuppsättningen; Men mindre system hade en enklare, snabbare alternativ metod för att hantera utveckling och underhåll av mjukvaruberäkningar och algoritmer, informationslagring/hämtning och visning. [ citat behövs ]
Aktuella trender inom mjukvaruutveckling
Mjukvaruteknik är en ung disciplin och utvecklas fortfarande. Riktningarna i vilka mjukvaruteknik utvecklas inkluderar: [ citat behövs ]
Aspekter
Aspekter hjälper mjukvaruingenjörer att hantera kvalitetsattribut genom att tillhandahålla verktyg för att lägga till eller ta bort standardkod från många områden i källkoden . Aspekter beskriver hur alla objekt eller funktioner ska bete sig under särskilda omständigheter. Till exempel kan aspekter lägga till felsökning , loggning eller låsning av alla objekt av speciell typ. Forskare arbetar för närvarande med att förstå hur man använder aspekter för att utforma kod för allmänt bruk. Relaterade begrepp inkluderar generativ programmering och mallar .
Experimentell
Experimentell mjukvaruteknik är en gren av mjukvaruteknik som är intresserad av att utarbeta experiment på programvara, att samla in data från experimenten och att utforma lagar och teorier från dessa data. Förespråkare av denna metod förespråkar att programvarans natur är sådan att vi kan föra fram kunskapen om programvara endast genom experiment. [ citat behövs ]
Programvaruprodukter
Programvaruprodukter, alias produktfamiljsteknik, är ett systematiskt sätt att producera familjer av mjukvarusystem, istället för att skapa en rad helt individuella produkter. Denna metod betonar omfattande, systematisk, formell kodåteranvändning , för att försöka industrialisera mjukvaruutvecklingsprocessen.
Konferensen Future of Software Engineering (FOSE), som hölls på ICSE 2000, dokumenterade det senaste inom SE år 2000 och listade många problem som skulle lösas under det kommande decenniet. FOSE-spåren vid ICSE 2000- och ICSE 2007-konferenserna hjälper också till att identifiera det senaste inom mjukvaruutveckling. [ citat behövs ]
Programvaruteknik idag
Yrket försöker definiera sin gräns och innehåll. Software Engineering Body of Knowledge SWEBOK har lagts fram som en ISO-standard under 2006 (ISO/IEC TR 19759). [ citat behövs ]
År 2006 bedömde Money Magazine och Salary.com mjukvaruteknik som det bästa jobbet i Amerika när det gäller tillväxt, lön, stressnivåer, flexibilitet i timmar och arbetsmiljö, kreativitet och hur lätt det är att komma in och avancera inom området.
Deldiscipliner
Artificiell intelligens
En mängd olika plattformar har tillåtit olika aspekter av AI att utvecklas, allt från expertsystem som Cyc till djupinlärning till robotplattformar som Roomba med öppet gränssnitt. De senaste framstegen inom djupa artificiella neurala nätverk och distribuerad datoranvändning har lett till en spridning av programvarubibliotek, inklusive Deeplearning4j , TensorFlow , Theano och Torch .
En studie från McKinsey Global Institute från 2011 fann en brist på 1,5 miljoner högutbildade data- och AI-proffs och chefer och ett antal privata bootcamps har utvecklat program för att möta denna efterfrågan, inklusive gratisprogram som The Data Incubator eller betalprogram som General Assembly .
språk
Tidig symbolisk AI inspirerade Lisp och Prolog , som dominerade tidig AI-programmering. Modern AI-utveckling använder ofta vanliga språk som Python eller C++ , eller nischspråk som Wolfram Language .
Framstående figurer i mjukvaruteknikens historia
- Charles Bachman (1924–2017) är särskilt känd för sitt arbete inom området databaser .
- László Bélády (1928–2021) chefredaktör för IEEE Transactions on Software Engineering på 1980-talet.
- Fred Brooks (född 1931) mest känd för att ha hanterat utvecklingen av OS/360 .
- Peter Chen (född 1947) känd för utvecklingen av entitet-relationsmodellering .
- Edsger W. Dijkstra (1930–2002) utvecklade ramverket för en form av strukturerad programmering.
- David Parnas (född 1941) utvecklade konceptet att information gömmer sig i modulär programmering .
- Michael A. Jackson (född 1936) metodolog inom mjukvaruteknik ansvarig för JSP-metoden för programdesign; JSD metod för systemutveckling (med John Cameron); och Problem Frames-metod för att analysera och strukturera mjukvaruutvecklingsproblem.
- Richard Stallman skapade GNU-systemverktygen och förespråkade fri programvara.
Se även
externa länkar
- Muntlig historieintervju med Bruce H. Barnes , Charles Babbage Institute , University of Minnesota. Barnes beskriver National Science Foundation (NSF) och dess stöd till forskning inom teoretisk datavetenskap , datorarkitektur , numeriska metoder och mjukvaruteknik och utvecklingen av nätverk.
- Muntlig historieintervju med Laszlo A. Belady , Charles Babbage Institute , University of Minnesota.