Wat is COSMIC?

COSMIC is een methode om de functionele omvang van een informatiesysteem te meten. COSMIC is één van de door de ISO gecertificeerde methoden om de functionele omvang van een stuk software te meten conform ISO 14143 Functional Size Measurement. Een van de doelstellingen van COSMIC is toepasbaarheid ook in andere gebieden dan de administratieve automatisering, waar FPA oorspronkelijk voor ontworpen is. De methode COSMIC is net als FPA vrij van rechten te gebruiken. De methode COSMIC levert een andere meeteenheid dan de functiepunt, namelijk de COSMIC functiepunt (CFP). De omvang van een systeem wordt dus uitgedrukt in een aantal CFP’s. Productiviteitscijfers gebaseerd op COSMIC kunt u dus niet zonder meer vergelijken met productiviteitscijfers gebaseerd op FPA (en andersom). COSMIC meet de functionele omvang van een informatiesysteem door te kijken naar voor gebruikers herkenbare gegevensstromen (“data movements”). Elke data-movement die de grens van het informatiesysteem passeert levert één CFP op. Elke data-movement die naar een persistente opslag schrijft of die een persistente opslag leest levert ook één CFP op. CFP’s zijn een goede maat voor de functionele omvang van een systeem. Daardoor kan deze meeteenheid op diverse manieren worden benut. Een veelgebruikt toepassingsgebied van COSMIC is het begroten van systeemontwikkeling. De kosten voor het maken van een systeem zijn immers gerelateerd aan zijn omvang. Hoe groter het systeem, des te duurder het zal zijn. Uit eerdere ervaringen weet men hoeveel uur men gemiddeld nodig heeft om één CFP te realiseren: de norm. Omvang (aantal CFP) x norm (benodigde uren per CFP) levert een basis voor de projectbegroting. COSMIC is zowel voor nieuwbouw- als onderhoudsprojecten bruikbaar.

Alle COSMIC documenten zijn gratis te downloaden via de COSMIC-portal

Wat biedt COSMIC?

COSMIC is een ISO gecertificeerde methode voor het meten van de functionele omvang van software. Na het uitvoeren van een COSMIC analyse kan een uitspraak worden gedaan als: ‘Dit systeem is 932 COSMIC Functiepunten groot’. De omvang van een stuk software dient niet verward te worden met een begroting om deze software te realiseren. Om het verschil uit te leggen zou men een analogie met het verven van een muur kunnen gebruiken. De omvang (oppervlakte) van de muur is objectief te meten met een ISO gecertificeerde methode (b.v. met een meetlat). Hoeveel uur het gaat duren om de muur te verven is afhankelijk van een aantal factoren, zoals het gebruikte gereedschap (penseel, kwast of roller), de kwaliteit van de verf (in een keer dekkend, of meerdere ‘iteraties’) en de snelheid van de mensen die de muur moeten verven. De mogelijkheden die de functionele omvang biedt zijn onder andere de volgende.

Beter en eerder begroten.
Op grond van de functionele systeemspecificaties kan de systeemomvang (in aantal CFP) worden vastgesteld. Op basis van ervaringen in afgeronde projecten in het verleden bepaalt men de te verwachten productiviteit (uur/CFP) in een nieuw project. De omvang van het systeem (CFP) vermenigvuldigd met de te verwachten productiviteit (uur/CFP) geeft het aantal norm-uren voor de systeemontwikkeling.

Beter beheersen van projecten.
Wijzigingen in de systeemspecificaties kunnen in COSMIC functiepunten worden uitgedrukt, waardoor ze kwantificeerbaar en beheersbaar zijn. Beter communiceren tussen de betrokken partijen. Als twee personen op een ander aantal COSMIC functiepunten uitkomen, duidt dit op een andere interpretatie van het te bouwen systeem. Onduidelijke of onvolledige systeemspecificaties komen bij het maken van een COSMIC analyse beslist aan het licht.

Meten van de productiviteit.
Het aantal bestede uren gedeeld door het aantal gerealiseerde COSMIC functiepunten geeft de productiviteit van een project. Deze kan worden vergeleken met de norm. Verschillen kunnen worden geanalyseerd en kunnen leiden tot gerichte stuurmaatregelen voor toekomstige projecten.

Benchmarken.
Als de productiviteit bekend is, kan de prestatie van het project worden gebenchmarkt, bijvoorbeeld door gebruik te maken van de benchmark data van de International Software Benchmarking Standards Group (zie pagina met producten).

Meten van de kwaliteit van een systeem.
Het aantal fouten per COSMIC functiepunt per tijdseenheid is een kengetal voor de kwaliteit van een ontwikkeld systeem. Verbeteren van de kwaliteit van het ontwikkelproces. Door het terugdringen van miscommunicatie en stuurmaatregelen op grond van productiviteits- en kwaliteitsmetingen, zoals hierboven beschreven, kan de kwaliteit van het ontwikkelproces worden verbeterd.

Voor welk soort projecten is COSMIC geschikt?

COSMIC is zowel voor nieuwbouw- als onderhoudsprojecten bruikbaar. Bij onderhoud kan het gebeuren, dat voor het implementeren van bepaalde functionaliteit extra technische inspanning nodig is, omdat de ooit gekozen technische implementatie de wijziging bemoeilijkt. COSMIC geeft ook in deze gevallen aan hoeveel functionaliteit daadwerkelijk wordt geleverd. De extra benodigde technische aanpassingen komen tot uiting in aanpassing van de projectnorm voor het aantal benodigde uren per COSMIC functiepunt.

Hoe werkt COSMIC?

Het algemene COSMIC meetproces bestaat uit drie fasen. Het resultaat van het meetproces is een omvang uitgedrukt in ‘COSMIC Functie Punten’ (‘CFP’). Op deze pagina leest u – in vogelvlucht – wat deze fase inhouden. Samenhang van de drie fasen Fase 1: De Meetstrategie Fase 2: De Vertaalslag Fase 3: De Meetfase Samenhang van de drie fasen In schemavorm ziet u hoe deze fasen met elkaar in verband staan: cosmic_methode_groot FUR = Functional User Requirement:

Fase 1: De Meetstrategie
Voordat de meting wordt gestart moet de analist het met de sponsors van de meting eens zijn over de volgende aspecten:

1. Het doel van de meting
Het doel van de meting geeft aan waarom de meting wordt uitgevoerd en waarvoor de resultaten gebruikt gaan worden. Dit zal op zijn beurt niet alleen helpen om de overige drie parameters van de meetstrategie vast te stellen, maar ook, bijvoorbeeld, om de vereiste nauwkeurigheid van de meting vast te stellen.

2. De scope van de software die gemeten moet worden
De totale scope van de software die gemeten moet worden volgt uit het doel van de meting. De totale scope beschrijft welke software functionaliteit in de meting moet worden meegenomen (en welke wordt uitgesloten). Afhankelijk van het doel kan de totale scope worden opgedeeld in een aantal afzonderlijk stukken software functionaliteit waarbij elke van deze afzonderlijke stukken binnen zijn eigen scope wordt gemeten. Een dergelijke onderverdeling van de totale scope zou ten eerste nodig zijn als de totale scope software bevat die zich binnen meer dan één laag bevindt. Dit omdat ieder stuk te meten software zich volledig binnen één laag moet bevinden. Ten tweede zou een onderverdeling ook nodig kunnen zijn als het doel van de meting bijvoorbeeld het begroten van een software project betreft en de totale te meten software bestaat uit een aantal verschillende componenten die met verschillende technieken en/of technologieën worden ontwikkeld en/of op verschillende technische platforms worden geïmplementeerd, en/of door verschillende teams worden ontwikkeld.

3. De functionele gebruikers en de grens van ieder stuk te meten software
De functionele gebruikers van ieder stuk software kunnen worden vastgesteld aan de hand van de gegevensstromen die de software in en uit gaan, zoals impliciet of expliciet beschreven in de Functional User Requirements (FUR), waarbij met het doel van de meting rekening gehouden moet worden. De functionele gebruikers zijn de zenders en/of de beoogde ontvangers van de gegevens.

4. De granulariteit van de metingen
De granulariteit van de FUR van een stuk software waarop metingen normaal gesproken moeten worden uitgevoerd is de wijze waarop de functionele processen zijn vastgesteld en de onderverdeling in data movements is gedefinieerd. Als het doel is om de FUR te meten van een volledig gespecificeerd of een bestaand stuk software, dan is de granulariteit normaal gesproken duidelijk wanneer de functionele processen zijn geïdentificeerd.

Fase 2: De Vertaalslag
Deze stap betreft het identificeren van de verzameling van functionele processen van de software, waarvan de omvang gemeten wordt en uit het identificeren van gegevensgroepen (object of interest) die worden gebruikt. Een functioneel proces is een elementair onderdeel van een verzameling FUR, bestaande uit een unieke samenhangende en onafhankelijk uitvoerbare verzameling data movements. Het wordt getriggerd door een data movement (een Entry) van een functionele gebruiker die de software informeert dat de functionele gebruiker een triggering event heeft geïdentificeerd. Het is afgerond wanneer alles is uitgevoerd wat gedaan moet worden als reactie op het triggering event. Ieder ‘ding’ dat is geïdentificeerd vanuit het gezichtspunt van de Functional User Requirements. Het kan een fysiek ding zijn, maar ook een (deel van een) conceptueel object in de wereld van de functionele gebruiker, waarover de software gegevens moet verwerken en/of moet opslaan. In de COSMIC methode wordt de term ‘object of interest’ gebruikt om verwarring te voorkomen met termen die in specifieke software ontwikkelmethodieken worden gebruikt. De term refereert niet aan objecten zoals die worden gebruikt in object georiënteerde methoden.

Fase 3: De Meetfase
Als het type gebruikersfunctie (stap 1) en de complexiteit (stap 2) ervan bekend zijn, kan in de volgende matrix het aantal functiepunten voor die gebruikersfunctie worden vastgesteld: Identificeer de data movements (Entries, Exits, Reads en Writes) van ieder functioneel proces, die afhankelijk zijn van de geïdentificeerde gegevensgroepen die worden verplaatst.

E – Entry Een data movement die een gegevensgroep vanuit de functionele gebruiker, door de systeemgrens heen, in het functioneel proces brengt.
R – ReadEen data movement die een gegevensgroep vanuit de ‘persistente opslag’ leest en in het functionele proces plaatst.
W - WriteEen data movement die een gegevensgroep vanuit het functioneel proces wegschrijft naar de ‘persistente opslag’
X – Exit Een data movement die een gegevensgroep het functioneel proces, door de systeemgrens heen, naar de functionele gebruiker brengt.

cosmic_meetfase

De functionele omvang van een stuk software is rechtevenredig met het aantal aanwezige data movements. De meetstandaard, te weten 1 CFP (COSMIC Functie Punt) is bij conventie gedefinieerd als equivalent van één enkele data movement. De minimum omvang van een enkel functioneel proces is 2 CFP, omdat het kleinste functioneel proces tenminste één Entry moet hebben (als input) en óf een Exit (als output) of een Write. Verder is er geen bovengrens aan de functionele omvang van een functioneel proces en dus ook niet aan de functionele omvang van een stuk software.

cosmic voorbeeld

 

Op welke domeinen toepasbaar?

De COSMIC meetmethode is ontworpen om toepasbaar te zijn op de functionaliteit van software in de volgende domeinen: Administratieve informatiesystemen (‘Business Application Software’) ter ondersteuning van de bedrijfsadministratie, zoals bij banken, verzekeringsbedrijven, accountants, personeelssystemen, inkoop, distributie of productie. Deze software wordt vaak gekarakteriseerd als ‘rijk aan data’. Haar complexiteit wordt met name bepaald door de behoefte om grote hoeveelheden data te beheersen over gebeurtenissen in de echte wereld.

Real-time software, die als taak heeft om gebeurtenissen in de echte wereld bij te houden of te sturen. Voorbeelden hiervan zijn: software voor telefoonswitches, software die is ingebouwd in apparaten, zoals huishoudelijke apparaten, liften, automotoren, en vliegtuigen, met als doel het proces te sturen en het automatisch verzamelen van data en binnen het operating system van computers.

Hybriden van de bovenstaande types software zoals een real-time reserveringssysteem van een vliegmaatschappij of van een hotel.

Wanneer niet toepasbaar?

De COSMIC meetmethode is (nog) niet ontworpen om de functionele omvang te meten van rekenintensieve software, dus software die wordt gekarakteriseerd door complexe rekenkundige algoritmen en andere gespecialiseerde en complexe regels, zoals in expertsystemen, simulatie software, zelflerende software, weersvoorspelling systemen, etc., of systemen die continue variabelen verwerken zoals audio geluiden of video beelden zoals je die tegen komt binnen computer games, muziekinstrumenten en dergelijke. Ook meet de COSMIC methode geen aspecten van de functionaliteit zoals ‘complexiteit’.

Voor dit soort software is het echter mogelijk om lokale uitbreidingen van de COSMIC meetmethode te definiëren. In het Meethandboek wordt uitgelegd binnen welke context deze lokale uitbreidingen worden gebruikt.