Programvaruintelligens
Software Intelligence är insikt i det inre fungerande och strukturella tillståndet hos mjukvarutillgångar som produceras av programvara som är utformad för att analysera databasstruktur , mjukvaruramverk och källkod för att bättre förstå och kontrollera komplexa mjukvarusystem i IT- miljöer. På samma sätt som Business Intelligence (BI) produceras Software Intelligence av en uppsättning mjukvaruverktyg och tekniker för utvinning av data och programvarans inre struktur. Slutresultat produceras automatiskt och matar en kunskapsbas som innehåller teknisk dokumentation och gör den tillgänglig för alla för att användas av affärs- och mjukvaruintressenter för att fatta välgrundade beslut, mäta effektiviteten hos programvaruutvecklingsorganisationer, kommunicera om mjukvarans hälsa, förhindra programvarukatastrofer.
Historia
Software Intelligence har använts av Kirk Paul Lafler, en amerikansk ingenjör, entreprenör och konsult, och grundare av Software Intelligence Corporation 1979. Då var det främst relaterat till SAS verksamhet , där han varit expert sedan 1979.
I början av 1980-talet deltog Victor R. Basili i olika artiklar som beskriver en metodik för att samla in giltiga programvarutekniska data relaterade till programvaruutveckling, utvärdering av programvaruutveckling och variationer. År 2004 började olika programvaruleverantörer inom mjukvaruanalys använda termerna som en del av deras produktnamn och marknadsföringsstrategi.
Sedan 2010 definierade Ahmed E. Hassan och Tao Xie Software Intelligence som en " praxis som erbjuder programvaruutövare uppdaterad och relevant information för att stödja deras dagliga beslutsprocesser och Software Intelligence bör stödja beslutsprocesser under hela livet ett mjukvarusystem ". De fortsätter genom att definiera Software Intelligence som en " stark inverkan på modern mjukvarupraxis " för de kommande decennierna.
Förmågor
På grund av komplexiteten och det breda utbudet av komponenter och ämnen som ingår i programvaran, härleds mjukvaruintelligens från olika aspekter av programvara:
- Programvarusammansättning är konstruktionen av programkomponenter. Komponenter härrör från programvarukodning, såväl som integrationen av källkoden från externa komponenter: öppen källkod, komponenter från tredje part eller ramverk. Andra komponenter kan integreras med hjälp av applikationsprogrammeringsgränssnitt anrop till bibliotek eller tjänster.
- Programvaruarkitektur hänvisar till strukturen och organisationen av element i ett system, relationer och egenskaper bland dem.
- Programvarufel anger problem som kan orsaka säkerhet, stabilitet, motståndskraft och oväntade resultat. Det finns ingen standarddefinition av mjukvarubrister men den mest accepterade är från The MITER Corporation där vanliga brister är katalogiserade som Common Weakness Enumeration .
- Programvarubetyg bedömer programvarans attribut. Historiskt sett har klassificeringen och terminologin för attribut härletts från ISO 9126-3 och den efterföljande ISO 25000:2005 kvalitetsmodellen.
- Mjukvaruekonomi hänvisar till resursutvärdering av programvara i förflutna, nutid eller framtid för att fatta beslut och styra.
Komponenter
Mjukvaruintelligensplattformarnas funktioner inkluderar ett ökande antal komponenter:
- Kodanalysator för att fungera som informationsbas för andra Software Intelligence-komponenter som identifierar objekt skapade av programmeringsspråket, externa objekt från öppen källkod , tredjepartsobjekt, ramverk , API eller tjänster
- Grafisk visualisering och ritning av den inre strukturen hos den övervägda mjukvaruprodukten eller applikationen inklusive beroenden, från datainsamling (automatiserad och realtidsdatainsamling, slutanvändarinmatningar) upp till datalagring, de olika lagren i programvaran och kopplingen mellan alla element.
- Navigeringsmöjligheter inom komponenter och effektanalysfunktioner
- Lista över brister, arkitektur- och kodningsbrott, mot standardiserade bästa praxis, molnblockerare som förhindrar migrering till en molnmiljö och oseriösa datasamtal som innebär programvarans säkerhet och integritet
- Betyg eller poäng för struktur- och mjukvarukvaliteten i linje med branschstandarder som OMG , CISQ eller SEI som bedömer tillförlitlighet, säkerhet, effektivitet, underhållbarhet och skalbarhet till moln eller andra system.
- Mätvärden som kvantifierar och uppskattar mjukvaruekonomi inklusive arbetsinsats, dimensionering och teknisk skuld
- Branschreferenser och benchmarking som möjliggör jämförelser mellan analysresultat och industristandarder
Användaraspekt
Vissa överväganden måste göras för att framgångsrikt integrera användningen av Software Intelligence- system i ett företag. I slutändan måste Software Intelligence-systemet accepteras och användas av användarna för att det ska kunna tillföra värde till organisationen. Om systemet inte tillför mervärde till användarnas uppdrag, använder de det helt enkelt inte som M. Storey sade 2003.
På kodnivå och systemrepresentation måste Software Intelligence-system tillhandahålla en annan abstraktionsnivå: en abstrakt vy för att designa, förklara och dokumentera och en detaljerad vy för att förstå och analysera mjukvarusystemet.
På styrningsnivån täcker användaracceptansen för Software Intelligence olika områden relaterade till systemets inre funktion såväl som systemets output. Den omfattar dessa krav:
- Omfattande: saknad information kan leda till ett felaktigt eller olämpligt beslut, liksom det är en faktor som påverkar användarens acceptans av ett system.
- Exakt: noggrannheten beror på hur uppgifterna samlas in för att säkerställa rättvisa och obestridliga åsikter och bedömningar.
- Exakt: precision bedöms vanligtvis genom att jämföra flera mätningar från samma eller olika källor.
- Skalbar: bristande skalbarhet i mjukvaruindustrin är en kritisk faktor som leder till misslyckande.
- Trovärdigt: resultat måste litas på och tros på.
- Utplaceringsbar och användbar.
Ansökningar
Software intelligence har många applikationer i alla verksamheter som rör mjukvarumiljön, oavsett om det är programvara för proffs, privatpersoner eller inbäddad programvara. Beroende på kopplingen och användningen av komponenterna kommer ansökningarna att relatera till:
- Förändring och modernisering: enhetlig dokumentation och ritning av alla inre komponenter, extern kod integrerad eller anrop till interna eller externa komponenter i programvaran
- Motståndskraft och säkerhet: mätning mot industristandarder för att diagnostisera strukturella brister i en IT-miljö. Överensstämmelsevalidering avseende säkerhet, specifika föreskrifter eller tekniska frågor.
- Beslutsfattande och styrning: Tillhandahålla analyser om själva programvaran eller intressenter som är involverade i utvecklingen av programvaran, t.ex. produktivitetsmätning för att informera affärs- och IT-ledare om framsteg mot affärsmål. Utvärdering och benchmarking för att hjälpa företags- och IT-ledare att fatta välgrundade, faktabaserade beslut om programvara.
Marknad
Software Intelligence är en disciplin på hög nivå och har successivt vuxit och täcker de applikationer som anges ovan. Det finns flera marknader som driver behovet av det:
- Application Portfolio Analysis (APA) som syftar till att förbättra företagets prestanda
- Software Assessment för att producera programvara KPI och förbättra kvalitet och produktivitet
- Säkerhets- och resiliensåtgärder och validering av programvara
- Mjukvaruutveckling eller äldre modernisering, för vilken ritning av mjukvarusystemen behövs eller verktyg som förbättrar och underlättar modifieringar