Förslaget till specifikationssprÄket SysML godkÀndes nyligen av OMG. Det innebÀr att det slutliga standardiseringsarbetet nu Àr igÄng pÄ allvar. Alan Moore frÄn Artisan Software Tools arbetade som specifikationsarkitekt under utvecklingsarbetet och han beskriver hÀr sprÄket och dess anvÀndningsomrÄden.
Hela artikeln i PDF-format.
I början av april lĂ€mnade ”SysML Merge Team” (SMT) under ledning av Sanford Friedentahl frĂ„n Lockheed Martin Corp in förslaget till SysML v1.0 till OMG (Object Management Group) för genomgĂ„ng och godkĂ€nnande. I slutet av april godkĂ€ndes förslaget enhĂ€lligt av OMG.
Bakgrunden till SysML Àr en förfrÄgan (Request for Proposal9 frÄn OMG och INCOSE (the International Council on Systems Engineering) om en specialversion av UML 2, anpassad för systemingenjörernas speciella behov.
Den SysML-specifikation som nu godkÀnts Àr ett resultat av ett mycket ovanligt samarbete mellan nÄgra av de största verktygstillverkarna, ledande anvÀndare, myndigheter och professionella organisationer. Att skapa SysML-specifikationen har varit ett gigantiskt arbete, dÀr över 100 manÄrs arbete lagts ner.
SysML Àr ett visuellt modelleringssprÄk som utvidgar UML 2.0 för att stödja specifikation, analys, konstruktion, verifiering och validering av komplexa system. Specifikationen skall kunna hantera hÄrdvara, mjukvara, data, personal, procedurer etc. SysML ÄteranvÀnder ett subset av UML 2-koncept och diagram och lÀgger till en del nya diagram och uppstÀllningar som lÀmpar sig för systemmodellering.
Ett av mĂ„len för SysML var att Ă„teranvĂ€nda sĂ„ mycket som möjligt av UML 2 och undvika Ă€ndringar, utom dĂ€r det var helt nödvĂ€ndigt. SMT definierade ett subset av UML 2 som kallades UML4SysML, dĂ€r man plockade bort i sammanhanget onödiga delar ur UML. SysML-profilen anvĂ€nde sedan UML4SysML som referens-metamodell. I SysML Ă„teranvĂ€nds mĂ„nga UML-diagram, andra har modifierats och bara tvĂ„ diagram Ă€r helt nya (Requirement Diagram och Parametric Diagram). Den hĂ€r artikeln kommer framför allt att fokusera de hĂ€r tvĂ„ nya diagrammen och det nya strukturella konceptet ”Block”.
Krav i SysML
Ett av de tvĂ„ grundlĂ€ggande tillĂ€ggen i SysML Ă€r stödet för krav. <>-stereotypen utvidgar en klass till att ocksĂ„ specificera det textuella ”shall”-uttrycket och fĂ„nga den kravidentifikation (requirement Id) som ofta anvĂ€nds för integration med externa kravhanteringssystem. UMLs ”containment relationship” anvĂ€nds för att bryta ner ett krav till sina delkrav. Ett krav relateras till andra modelleringsartefakter via en uppsĂ€ttning av stereotypade beroenden. Beroendena <> och <> beskriver hur krav hĂ€rleds frĂ„n andra krav och hur kraven tillfredsstĂ€lls av respektive konstruktion. <> visar lĂ€nken frĂ„n ett testfall till det eller de krav som verifieras.
TvÄ sena tillÀgg var UMLs beroende <>, som anvÀnds för att indikera att ett modellelement i SysML Àr en förfining av ett textuellt krav, och <>, som anvÀnds för att ÄteranvÀnda en del standardkrav inom den befintliga kravhierarkin.
Det generiska ”rationale”-konceptet kan anvĂ€ndas av kravmodelleraren för att identifiera stödjande information som ger en bas för hĂ€rledda krav, en ”design rationale” eller nĂ„got annat modelleringsbeslut.
Bara ett kravs mest grundlÀggande attribut tÀcks av SysML-specifikationen. Mer specialiserade kravtyper kan anges genom att specialisera <>-stereotypen. Typiska exempel pÄ det Àr operationella krav, funktionella krav, grÀnssnittskrav, styrkrav, prestandakrav, fysiska krav och lagringskrav.
Dessa stereotyper kan begrĂ€nsa vilken typ av modellelement som kan tillfredsstĂ€lla kravet. Till exempel kanske ett prestandakrav bara kan tillfredsstĂ€llas av ett ”Constraint Block”, tillsammans med en associerad tolerans och/eller sannolikhetsdistribution. Ett funktionellt krav kanske kan tillfredsstĂ€llas av en aktivitet eller en klassoperation. En (icke-normativ) uppsĂ€ttning av sĂ„dana specialiserade stereotyper finns i appendix C i SysML-specifikationen.
Kravmodellen kan visas i en grafisk trĂ€dstruktur eller i tabulerat format. Det grafiska formatet kallas ”Requirements Diagram” och ett exempel pĂ„ det visas i fig 1.
VĂ€nstra sidan av fig 1 visar kravflödet nedĂ„t för ett destillationssystem. Beroendet <> Ă€r grĂ€nssnittet frĂ„n ett anvĂ€ndarkrav (Produce Distilled Water) till ett systemkrav (Boil Water). ”Produce Distilled Water” spĂ„ras uppĂ„t till ett originaldokument (Customer Brochure) och förfinas av anvĂ€ndarfall (Distill Water), som innehĂ„ller mer detaljerade anvĂ€ndarscenarier, kanske med sekvensdiagram.
”Boil Water” bryts ner i underkrav som visar andra relationer. Beroendet <> visar att kokaren (Boiler) förser systemet med den nödvĂ€ndiga ”Boiler”-funktionaliteten. Beroendet <> frĂ„n testfallet ”Boiler Test” anvĂ€nds för att verifiera kravet ”Boiler Power”. Kravet ”Safety Cut Off” Ă€r en kopia av ett standardiserat sĂ€kerhetskrav. Varje krav har en unik ID, som visas vid id#-etiketten. Kravets ”shall-statement” visas i en avdelning med namnet ”txt” i den undre delen av klassboxen.
Det format som visas hĂ€r Ă€r bara ett av ett antal möjligheter. ”Ergonomic Profiling” kan anvĂ€ndas för att modifiera formatet sĂ„ att det passar lĂ€saren. De exakta möjligheterna för den typen av finess beror pĂ„ vilket verktyg som anvĂ€nds.
Block
Den viktigaste strukturella utvidgningen i SysML Ă€r ”Block”, vilket utvidgar ”UML Structured Class”. Det hĂ€r Ă€r en generell hierarkisk struktureringsmekanism som abstraherar bort mycket av de mjukvaruspecifika detaljer som finns i UMLs strukturerade klasser.
Block kan representera valfri nivĂ„ av systemhierarkin, inklusive toppnivĂ„n, subsystem eller logiska eller fysiska komponenter av ett system eller dess omgivning. Ett ”Block” i SysML beskriver ett system som en uppsĂ€ttning delar och förbindningar mellan dem som tillĂ„ter kommunikation och andra former av samband.
Portar (Ports) Ă€r en speciell typ av komponent som ger access till en intern struktur frĂ„n utsidan av ett kompositobjekt. Det anvĂ€nds nĂ€r blocket anvĂ€nds inom en större struktur. Dock kan i SysML, till skillnad frĂ„n i UML, sĂ„ kallade ”deep-nested”-förbindelser dras direkt till interna element om sĂ„ behövs. Detta har visat sig vara nödvĂ€ndigt för att beskriva fysiska system, som ofta inte bara beskrivs som svarta lĂ„dor. Det finns tvĂ„ typer av portar, ”Service Ports” som hanterar klient-server-kommunikationen och ”Flow Ports”, som definierar flödet in och ut frĂ„n ett block.
TvĂ„ diagram anvĂ€nds för att beskriva förhĂ„llanden mellan block. ”Block Definition Diagram” (bdd) liknar ett vanligt klassdiagram och anvĂ€nds för att beskriva förhĂ„llanden som existerar mellan block. ”Internal Block Diagram” (ibd) anvĂ€nds för att beskriva de interna funktionerna hos ett block. Ett exempel pĂ„ en ibd visas i fig 2.
Figuren visar den interna strukturen hos ”Distiller”-blocket. Blocket har tvĂ„ delar, hx, en vĂ€rmevĂ€xlare (Heat Exchanger) och bl, en kokare (Boiler). De bĂ€gge Ă€r sammankopplade för att tillĂ„ta material och energi att flyta mellan dem och (via anslutningen till sin ”parent”) till externa system. hx och bl har vardera ett antal flödesportar som beskriver vad som kan flöda in och ut. Dessa Ă€r anslutna till andra kompatibla portar för att möjliggöra de flöden som krĂ€vs i det hĂ€r sammanhanget. Pilarna representerar poster, vilket visar de flöden som faktiskt upptrĂ€der i systemet och vilka egenskaper som kan anvĂ€ndas i parametriska modeller (som visas i fig 3).
De olika avdelningarna i ”hx” och ”bl” visar vĂ€rden för olika viktiga funktions- och prestandaparametrar i blocken.
Parametriska modeller
Parametriska modeller anvĂ€nds för att beskriva systemegenskaper och deras förhĂ„llanden till varandra. För att stödja den hĂ€r typen av modellering introducerades en ny strukturell egenskap kallad ”ConstraintBlock” i SysML. Ett ConstraintBlock definierar en uppsĂ€ttning parametrar och ett eller fler uttryck som beskriver hur en förĂ€ndring av en parameteters invĂ€rde pĂ„verkar vĂ€rdet hos andra parametrar. Som standard Ă€r de hĂ€r parametrarna icke-direktionella och har inget begrepp om kausalitet. Dessa ConstraintBlocks kopplas sedan via sina parametrar till systemegenskaper för att skapa systembegrĂ€nsningar. Eftersom block Ă€r Ă„teranvĂ€ndbara kan nya ConstraintBlock byggas genom att Ă„teranvĂ€nda mera primitiva block, till exempel grundlĂ€ggande matematiska operatorer.
SysML definierar ocksÄ en modell med typvÀrden som kan hantera enheter och dimensioner. Dessa typvÀrden kan sedan anvÀndas för att skriva parametrar i parametriska modeller.
ConstraintBlocks kan anvĂ€ndas för matematiska ekvationer, som t ex F=m*a=dv/dt’, eller statistiska vĂ€rden.
Ett specialiserat diagram, ”Parametric Diagram”, introducerades för att underlĂ€tta en parametrisk utgĂ„ngspunkt.
Det Ă€r en specialiserad version av ett internt blockdiagram som begrĂ€nsar diagramelementen till att bara representera ConstraintBlocks, deras parametrar och blockegenskaperna som de kopplas till. BĂ„de parametrar och egenskaper kan representeras som smĂ„ ”pin-liknande” lĂ„dor för att göra diagrammen mera skalbara.
Ett exempel pÄ ett parametriskt diagram visas i fig 3. HÀr beskrivs begrÀnsningarna i vÀtskeflöde genom destillatorblocket (Distiller). Noderna till höger representerar flödena i fig 2 och de fem begrÀnsningarna visar hur parametrarna hos de olika generella och specifika ekvationerna kopplas till egenskaper hos flödena för att driva igenom flödesbegrÀnsningarna. En del av ekvationerna visas som bifogade noter, men man kan ocksÄ visa en ytterligare avdelning i begrÀnsningens symbol. Observera att flödets egenskaper har typer med definierade enheter.
Kontinuerliga system
SysML har dessutom utvidgningar för att beskriva distribuerade flöden av material, energi eller information genom ett system. Dessa utvidgningar tillÄter modelleraren att lÀgga in restriktioner om hur snabbt poster kan röra sig rund kanterna av en aktivitet eller in och ut ur beteendenas parametrar. Diskreta eller kontinuerliga flöden förenas under flödeshastighet, pÄ samma sÀtt som man normalt sett gör i matematiska modeller av kontinuerliga förÀndringar.
Alan Moore, VP Product Strategy, Artisan Software Tools