Systems Modeling Language
Introduktion
Från Wikipedia: [...] Systems Modeling Language [...] är en UML-profil som bland annat lägger till några diagram till UML, till exempel ett diagram för kravhantering [...]. Jag försöker i den här texten diskutera vilka diagram som ingår i SysML, UML och även undersöka några som inte gör det. Men innan det gör vi en snabb analys av varför det är bra med diagram.
Men varför behöver man alla de här diagramtyperna som ingår i SysML, eller UML? Jo, för att med en formalism kan man förklara en reducerad version av verkligheten. Med en strukturerad syntax och semantik får man en abstraktion som kanske är lätta att jobba med än HELA verkligheten.
Man modellerar ofta från ett visst perspektiv, till exempel ett dataflödesperspektiv, ett funktionellt perspektiv, eller ur ett beteendeperspektiv. Detta är något jag gillar, och jag förordar att tänka först innan man välja modelltyp. Jag ritade nyligen ett slags informationsflödesdiagram för ett ganska komplext system - det blev pilar överallt, mellan databaser, användare, konfigurationsfiler och applikationer. Men när aktörerna väl är på plats och man ser pilar mellan dem inser man att varje del inte är så jobbig. Jag fick en överblick och kunde lätt hitta tre högriskområden som behöver vidare analys. Klockrent!
När jag skriver den här introduktionen har jag som mål med denna text att rikta in mig mer mot SysML av anledningarna (1) jag gillar krav och test mer än klassdiagram, (2) jag inbillar mig att jag kan mindre om SysML än om UML och (3) SysML hyllas i bland annat Boken Requirements Engineering Fundamentals.
Bakgrund
SysML har sina rötter i UML (Unified Modeling Language) som bland annat Ivar Jacobson (ni vet, svensken som uppfann användningsfallet, the use case, som modellform) var med och utvecklade på 1990-talet. 1997 tog OMG (Object Management Group) över UML och har hand om UML sedan dess. 2000 blev UML en ISO-standard och därmed en industristandard för att modellera mjukvarusystem. OMG kommer regelbundet med nya versioner av UML.
INCOSE (International Council on Systems Engineering) började anpassa UML för Systems Engineering 2001. 2004 kom det första utkastet och 2005 kom SysML 1.0a via OMG. 2007 1.0, och OMG kommer regelbundet med nya versioner.
I Wikipedias artikel om UML listas lite kritik UML fått utstå:
- För stor
- Svår att lära sig och använda
- Ojämnt och motsägande språk
- Dåligt stöd för filformat
- Vilken kardinalitet gäller?
- Exkluderande (utesluter till exempel dataflödesdiagram och strukturdiagram, och flödesdiagram ser inte ut "som man är van")
- Komplicerat (till exempel om man jämfört med DOT)
Jämfört med UML så ska SysML:
- vara mer anpassat för systemingenjörer
- ha färre diagramtyper (både en för- och en nackdel, kanske)
- ha mindre fokus på bara mjukvara
- två nya diagram tillkommer:
- kravdiagram
- parameterdiagram
- Bättre anpassad till IEEE 1471, som handlar om arkitektur för mjukvarusystem.
SysML's Fyra Pelare: Struktur, Beteende, Krav och Parametrar
En viktig del i SysML verkar vara att man enkelt vill kunna illustrera fyra aspekter av ett system. I OMG's tutorial för SysML har de en bra bild som visar detta. Den innehåller ett ABS system som exempel.
- Struktur Med ett block diagram visas vilka delar ABS'en består av (bland annat en processor och något som detekterar när man tappar greppet). Med ett inernt block diagram visas vad ett av komponenterna i sin tur består av.
- Beteende En tillståndsmaskin, ett sekvensdiagram och ett aktivitetsdiagram visar vad ABS'en gör när olika händelser inträffar.
- Krav Kravdiagramet visar hur olika krav hänger samman. Till exempel att anti-sladd systemet måste fungera för att uppfylla krav på bromssträcka.
- Parametrar Med ett parameterdiagram visar man hur själva fysiken hänger ihop. Till exempel att bromskraften påverkar inbromsningen, som påverkar hastigheten, som i sin tur påverkar bromssträckan.
Diagramtyper
Diagramtyper i SysML
SysML har diagram av två typer: beteende eller struktur, där kravdiagramet är lite av båda och hamnar i en tredje kategori. Här kommer citaten dels från Wikipedia och från OMG's SysML Tutorial:
- Behavior diagrams "Behavior diagrams emphasize what must happen in the system being modeled. Since behavior diagrams illustrate the behavior of a system [UML behavior diagrams] are used extensively to describe the functionality of software systems."
- Activity diagram - "specifies Controlled Sequence of Actions" (Wikipedia: [1])
- Sequence diagram - "provide representations of message based behavior [and] mechanisms for representing complex scenarios" (Wikipedia: [2])
- State machine diagram - "typically used to represent the life cycle of a block [and] support event-based behavior (generally asynchronous)" (Wikipedia: [3])
- Use Case Diagram - "provide means for describing basic functionality in terms of usages/goals of the system by actors" (Wikipedia: [4])
- Requirement Diagram - "Requirement Relationships Model the Content of a Specification"
- Structure diagrams "Structure diagrams emphasize the things that must be present in the system being modeled. Since structure diagrams represent the structure [UML structure diagrams] are used extensively in documenting the software architecture of software systems."
- Block Definition - "Block definition diagram describes the relationship among blocks (e.g., composition, association, specialization)"
- Internal Block - "Internal block diagram describes the internal structure of a block in terms of its properties and connectors [and] Specifies Interconnection of Parts"
- Parametric Diagram - "Parametrics [are] Used to express constraints (equations) between value properties [and] Parametric diagram represents the usage of the constraints in an analysis context [...] Parametrics Enable Integration of Engineering Analysis with Design Models"
- Package - "Package diagram is used to organize the model [and how the] Model can be organized in multiple ways." (Wikipedia: [5])
Diagramtyper i UML som inte finns i SysML
UML har en mängd diagram som är ganska väletablerad. Eftersom jag i denna text valt att fokusera på SysML, listar jag här det i UML som inte finns med i SysML. SysML har diagrammen block definition och internal block som nog fyller liknande funktioner som UMLs Component och Composit Structure Diagram (så dessa är inte med i listan nedanför).
- Structure diagrams
- Interaction diagrams "Interaction diagrams, a subset of behavior diagrams, emphasize the flow of control and data among the things in the system being modeled"
Bra diagramtyper som inte ingår i UML eller SysML
Jag har försökt fundera över bra diagramtyper som inte direkt är med i varken UML eller SysML. Jag har även kikat i både Boken Requirements Engineering och Boken Requirements Engineering Fundamentals. Här är några:
- Entity-Relation Diagram, eller ER Diagram (Wikipedia: [13]
- Data Flow Diagram (Wikipedia: [14])
- Control Flow Diagram (Wikipedia: [15])
- Processmodeller, eller kan kanske V-modellen ritas som en typ av kontroll eller dataflödesdiagram? (Wikipedia: [16])
- Function Model (Wikipedia: [17])
- Structure Chart (Wikipedia: [18])
- Flödesschema (Wikipedia: [19])
- Jämför även med DOT. (Wikipedia: [20])
Referenser/Se även
- Reqb Certified Professional For Requirements Engineering
- Boken Requirements Engineering av Elizabeth Hull et al
- Boken Requirements Engineering Fundamentals av Pohl och Rupp
- Boken Reqb Syllabus från REQB
- Wikipedia: [21] eller [22]
- SysML Open Source Specification Project: [23]
- The Official OMG SysML site: [24]
- Tutorial by Guillaume Finance [25]
- FAQ SysML Forum [26]
- OMG Systems Modeling Language Tutorial (pdf) [27]
Denna sida tillhör Kategori Test - typ.