fSysML: Foundational Executable SysML for Cyber- Physical System Modeling Omar Badreddin1, Vahdat Abdelzad2, Timothy C. Lethbridge3, Maged Elaasar4 1 University of Texas, El Paso El Paso, Texas, U.S.A obbadreddin@UTEP.edu 2 EECS, University of Ottawa, Ottawa, Ontario, Canada v.abdelzad@uottawa.ca 3 EECS, University of Ottawa, Ottawa, Ontario, Canada tcl@eecs.uottawa.ca 4 Modelware Solutions, La Canada Flintridge, CA 91011, USA melaasar@gmail.com Abstract. System engineers are heavy users of modeling and design languages such as SysML. These design languages enable them to design, refine, verify, and test systems early in development. On the other hand, and especially with the emergence of agile methodologies, design and development activities in software engineering are intermingled and performed in iterations. Modern sys- tems, however, exhibit increasing interdependence between software and physi- cal components. Hence, there is a growing need to develop design languages that can bridge the gap between system and software engineering communities. This paper proposes fSysML, a foundational and executable subset of SysML geared towards facilitating the development of modern Cyber-Physical Sys- tems. fSysML defines both a surface syntax for a SysML subset, and an execut- able semantics that is directly mapped to a modern object-oriented language. fSysML is demonstrated by the development of a self-adaptive system from the healthcare domain. Keywords: SysML · UML · Cyber-Physical Systems · Self-Adaptive Systems · Textual Language. 1 Introduction Cyber-Physical Systems (CPS) are integrations of computation, networking, and physical processes [1]. Software and networks monitor and control the physical pro- cesses, with feedback loops where physical processes affect computations and vice versa [2]. One of the key characteristics of such systems is their close integration and interdependence of both software and hardware components. Software and hardware components are typically developed following different development processes and methodologies. One key distinction is propensity to change. In the software world, change is embraced and can influence many aspects of development. While in the physical world, it is costly and cannot be accommodated without significant cost. As a result, software and systems engineers have different perspectives regarding design and development activities. System engineers adopt modeling and design whole-heartedly, and do not typically require modeling languages to be executable. In fact, execution for a systems engineer often refers to execution of a simulation or model-based testing. System engineers rely on precise and elaborate models to test and verify systems before the commencement of development activity. Moreover, design models are the gold standard against which any development artifact needs to be tested. Software engineers, on the other hand, utilize more integrated approaches and work iteratively and incrementally. Modern agile software development processes encourage the delivery of an executable artifact at every iteration. These partially complete software systems are used to discover additional requirements, and feed into planning, scheduling and staffing management. With the emergence of CPSs, there is an emerging need for platform and design languages that can accommodate both system and software development processes. In this paper, we address this emerging need by introducing fSysML; foundational SysML for CPSs. fSysML defines a textual surface language for a subset of SysML and integrates this subset with an executable subset of UML. The result is a language that can define many aspects of CPS properties, including Blocks, Requirements, Goals, Users, Use Cases, as well as behavioral and compositional aspects. We demonstrate fSysML using the design of a self-adaptive system from the healthcare domain. Self-adaptive systems demonstrate further interdependencies between both software and physical components, making it ideal for the demonstration of fSysML. This paper is organized as follows. We introduce the motivation and significance of this research in Section 2. A background on self-adaptive systems, system model- ing and MDE is introduced in Section 3. Section 4 introduces a running example fol- lowed by detailed explanation of fSysML in Section 5. The language grammar and related work are covered in Section 6 and 7 respectively. Finally, we conclude with a discussion of future work and conclusion. 2 Motivation and Significance The authors of this paper are actively collaborating with a national aerospace agency and are investigating a roadmap for adoption of Model Driven Engineering (MDE) paradigm. From early stages of the investigation, the researchers observed a signifi- cant discrepancy between system and software engineers. The bulk of the develop- ment effort in the system engineering side is closely related to development of various types of design models. Key approvals, certifications, and testing are performed against system models. Software is treated as a black-box component with elaborate behavioral specification. The software engineers use design models sparingly and typically target development of an executable artifact. Systems engineers reported on their need for a textual syntax, equivalent to the visual representation, of their SysML models. The rationale is that text can be ver- sioned and merged more effectively along with the software artifacts. Furthermore, it maybe easier to manipulate and layout textual artifacts than visual models, particular- ly as models become large and complex. More importantly, such a textual language will facilitate collaboration and integration between system and software engineers. This observation has motivated the research presented in this paper; namely, the de- velopment of a textual SysML language that can enable effective collaboration be- tween both software and system engineers. 2.1 Significance There is a recognized conflict between MDE and agile methodologies [12]. MDE promotes upfront designs, where models become the key development artifacts. Ag- ile, on the other hand, promotes shorter development cycles by focusing on delivering executable partial systems. This conflict becomes even more prominent in the devel- opment of CPSs. Solving this conflict has the potential to significantly improve the development practices of CPSs. More importantly, it can help resolve a long-standing challenge in the software engineering community; namely, the limited adoption of MDE practices [13]. There is significant evidence that software engineers do not in fact adopt UML and modeling as much as desired [1, 6]. Studies of software engineers in the wild suggest multitude of limitations with MDE methodologies including: 1) challenges with ver- sioning and merging of models [5] 2) limitations with model inter-changeability and portability [6] 3) inadequacy of MDE in development of small systems [7], 4) lack of adequate support for model based collaboration [8]. 3 Background In this section, we introduce background on system and software modeling, and self- Adaptive systems. 3.1 Model Driven Software Engineering The Object Management Group (OMG) has adopted a vision where models become the key development artifacts, from which executable elements can be generated. The premise includes improved productivity and quality of software systems. UML has emerged as the de facto modeling notation in software engineering and has been well evaluated academically. Since UML is a general-purpose modeling notation, not all of its elements have well-defined execution semantics. This has resulted in numerous challenges for the development of precise models. As a result, OMG has defined a subset of UML with defined semantics called Foundational UML (fUML) [9]. Action Language for Foun- dational UML (ALF) is an executable language that defines actions for fUML [10]. ALF has been designed to look like modern object-oriented languages to facilitate adoption by software engineers. fUML and ALF’s emergence has in part informed and influenced the development of fSysML. 3.2 System Modeling The landscape of system modeling is more complex. System engineers use a wider variety of modeling notations and design languages. System designs are used not only to test and verify the system, but also to derive the cost and schedule associated with its development. In this paper, we use SysML as the representative system design language, but the approach proposed in this paper can be applicable beyond SysML. SysML borrows many notations from UML; this includes use case modeling, struc- tural modeling, and behavioral modeling using a variant of UML state machines. SysML adds additional design notation to model requirements, blocks and compo- nents, and system parameters. 3.3 Self-Adaptive Systems Self–adaptive systems have the unique property of dynamically adapting to changes in environment, operating context, or changes in system goals or priorities [18]. Self- adaptation strategies are typically implemented at the architecture level by identifying adaptation strategies and mechanisms for dynamic applications of such strategies at run time [17]. Whether a specific strategy is effective or not is typically measured by measuring the quantified outcome or performance of the entire system. Such quantita- tive evaluation is typically performed at runtime [19]. Self-adaptation is realized by identifying and implementing a number of adaptation strategies or tactics. Tactics application is performed in response to an external change in the operating environment or deterioration in system performance, and aims at improving one or more of the system’s goals. Take for example a web server that is supposed to service user requests. The system’s goals may include speedy responses, and to keep the number of time-out requests to a minimum. At peak hours when per- formance declines, the web-server may apply a performance tactic such as load shar- ing with a back-up server. 4 Running Example To demonstrate fSysML, we use a self-adaptive monitoring system from the healthcare domain. The monitoring system reports on patients key vital signs in real time and notifies specific caregivers when certain conditions are present. The overall goal of the system is to speed patient discharge from the Heart Unit and reduce per- patient costs; while at the same time maintaining a low re-admission rate and high patient satisfactions (Appendix – Goal Model). Amongst the monitored vital signs, the heart rate and oxygen level are measured by embedded sensors. These sensors produce a continuous stream of data. The system analyzes the data on the fly and stores data points only when certain rules succeed. The system behavior is driven in part by readings from these sensors (Appendix 1– Behavior Model). The next section elaborates on this example further by highlighting key language elements. 5 fSysML Overview fSysML targets system and software engineers in an integrated manner. As such, it supports system and software modeling with little or no distinction. In the following sections we will illustrate the language elements focusing on system modeling. 5.1 System Goals and Objectives The language supports the definition of key system goals. A goal can be measured by physical elements (such as a sensor) or by a combination of elements that can be quantified by a Key Performance Indicator (KPI). Goals can be broken down into sub-goals. In this case, two goals can both contribute to a higher-level goal through an “AND” or an “OR” contribution. “And” contribution means the lower satisfaction of the sub-goals is transferred to the super goal, while OR contribution means the higher satisfaction is transferred to the super goal. Contributions may also be associated with a weight. Listing 1 is an fSysML snippet that describes the system goals. A visual depiction of System Goal is illustrated in the Appendix 1. goal Discharged { contributesTo PatientSatisfaction{0.7}; stakeholder Patient, Physician; } goal NormalHeartRate { contributesTo Discharge{0.5}; stakeholder Patient, Physician; KPI heartRateMeasurement threshold = 50; failureLimit = 0; correctiveAction = heartRateTreatment; } goal NormalBloodOxygenLevel { contributesTo Discharge{0.5}; stakeholder Patient, Physician; KPI bloodOxygenMeasurement threshold = 25; failureLimit = 0; correctiveAction = oxygenTreatment; } goal LowCost { contributesTo PatientSatisfaction{0.3}; stakeholder Patient, Physician; } softGoal PatientSatisfaction { stakeholder Patient, Physician; decompositionType = 'and'; } Listing 1. System Goals and Goal Compositions 5.2 System Failure and Failure Tolerance Not all system goals need to succeed at all times. For example, if an oxygen- supplying system is not connected to a patient, then oxygen concentration levels need not be above a threshold. Some goals can fail sometimes without repercussions, and some goals cannot fail at all. This is defined by modeling the failure limit. A failure limit of one means that if a goal fails once, an adaptive action must be taken (adaptive actions are discussed later). Similarly, a failure limit of two means that a goal can fail twice over a specified period of time without repercussions (i.e, associated adaptive action will be applied after the second goal failure occurrence). A failure limit of zero means that a specific goal should not be allowed to fail at all. In such a case, the sys- tem must apply rules to take precautionary actions if the goal trends towards failure. 5.3 Adaptive Actions A goal failure, even if permitted, may or may not trigger an adaptive action. An adap- tive action is defined by a set of instructions (or tactics) with the aim of eliminating or reducing the reoccurrence of goal failure. The effectiveness of a particular adaptive action is measured by 1) the satisfaction of the goal immediately connected to the adaptive action element and 2) the top-level system goal satisfaction. Adaptive ac- tions are defined algorithmically using ALF. 5.4 Scenarios (Processes) and Tasks A scenario or a process is a sequence of tasks that can take place in a defined se- quence. The sequence can be dependent on conditions or actions that can occur at run time. fSysML supports the definition of scenarios, join and fork control flows. As shown in the following example (Listing 2), the scenario Triage contributes to the goal Discharge. In this scenario, if a treatment is required, then the path along the treatment task is taken. Otherwise, the path along discharge task is taken. task Treat { form DischargeForm { actor Physician; date mandatory; dependsOn TreatmentForm; } time optional; Patient.firstName mandatory; task Discharge { Patient.lastName mandatory; actor Physician; Physician.firstName mandatory; dependsOn DischargeForm; } Physician.lastName mandatory; .. } task OxygenTreatment { actor Physician; } form TreatmentForm { date mandatory; task HeartRateTreatment { time mandatory; actor Physician; Patient.firstName mandatory; form TreatementForm; } Patient.lastName mandatory; Patient.diagnosis mandatory; scenario Triage { Patient.diagnosisCode mandatory; satisfies Discharged; Physician.firstName mandatory; [needsTreatment]? Physician.lastName mandatory; {Treat}:{Discharge}; } Physician.employeeID mandatory;} Listing 2. Tasks and Scenarios 5.5 Behavioral Modeling fSysML defines a textual syntax for UML state machines to define system behavior. The state machine subset supported by fSysML includes states, events, guards, transi- tions, actions, entry, do, and exit activities. At the top level of the state machine in Listing 3, the system is functioning under one of two states, Normal and Abnormal. In both states, the streams of sensor data is received and analyzed. If data streams show abnormalities, the system continues to monitor but is now functioning under the abnormal state. While in the Abnormal state, the system may itself trigger some corrective actions to try to remedy the defi- ciencies. If successful, the system may return to the Normal state. These behavioral elements specify the behavior of some system components or Blocks (discussed in the next subsection). In this example, we illustrate the behavioral modeling for the moni- tor control unit. The state machine syntax is an extension of Umple’s state machine modeling syn- tax [15]. Umple is a model oriented UML Action Language. We extended Umple’s syntax, rather than extending ALF’s syntax for two reasons; 1) ALF’s state machine syntax is under development and has not been standardized to date, and 2) ALF’s syntax is declarative (the syntax declares states and transitions in a linear fashion). We found Umple’s syntax to have better comprehension based on the feedback from our system engineer collaborators. // From BDD : block HR_Sensor { block ControlUnit { parts: .. protective_housing, .. mount_assembly, block HR_Sensor { sensor_module, // behavioral definition electronics_assembly, state Normal { display region HR_Sensing { values: NormalRate { dimension: Size entry/{ updateDisplay();} power: Width do{monitor_HR(); field_of_sensing: int analyze_HR_Rule();} orientation: int Abnormal_HR_Detected->Abnormal_HR;} flow_ports: } in_ligh_in: Light region Dormant { .. } sensor_IO: Sensor_interface } standard_ports: state Abnormal { .. } } } control: Sensor_signal } Listing 3. Behavioral Model Listing 4. Block Definition 5.6 System Block Definitions and Component Modeling Block Definition Diagrams (BDD) are an important part of system modeling [11]. fSysML models physical aspects of the system following SysML specifications, but in a way to facilitate its integration with other aspects of software modeling. Listing 4 illustrates a block definition for the Hear Rate Sensor. Listing 5 illustrates the compo- sition of the Monitoring Unit, of which the Heart rate Sensor is a part of. A block has four groups of properties; namely, parts, values, flow ports and stand- ard ports. The Block Definition Diagram (BDD) describes composition relationships denoted by --- (Listing 5). For example, HR_Sensor is composed of three External Wirings, one enclosure and one battery. The syntax for blocks and block definitions is different than the rest of fSysML syntax. For example, dimension is of type size. One would expect that the type would precede the name of the attribute such as follows: values { size dimension; } This choice of syntax may in fact look unusual for a software engineer. This choice in fSysML was influenced by 1) SysML visual diagrams, and 2) system engineers’ preferences. 5.7 Users, Actors and User Groups fSysML defines users of the systems, and user groups that can share a common char- acteristics, such as access privilege. A specific instance of a user is referred to as an Actor. Users, Actors and User Groups can participate in a scenario, and may be as- signed to tasks. Users and Actors need not be a human actor, but can be any other subsystem or a block. bdd MonitoringComponent { actor Patient { bdd HR_Sensor { int patientID; 1 --- 3 External_Wiring; string firstName; 1 --- 1 Enclosure; string lastName; 1 --- 1 Battery; } int diagnosisCode; } bdd Oxygen_Sensor { .. } .. actor CareProvider; { .. int current_heart_rate; bdd Enclosure { int target_heart_rate; 1 --- 1 front_housing; int current_blood_oxygen; 1 --- 1 back_housing; int target_blood_oxygen; } 1 --- 2 secure_strap; .. actor Physician { .. int employeeID; } } .. } Listing 5. Block Definition Modeling Listing 6. System Actors 6 Language Grammar fSysML is developed using Xtext [16], a platform for DSL development. The gram- mar is defined using a BNF-like syntax. Listing 7 illustrates key languages elements, some of which has been discussed in previous sections. Here, we briefly discuss the elements that have not been presented in the previous sections. The language supports tagging model elements. Tagged values appear between curly brackets and may have typed data elements. Tagging is useful when engineers want to analyze a subset of the system elements. For example, a subset of system elements may be selected for regression testing, or for measuring overhead costs. A Soft Goal is similar to a Goal, except that a Soft Goal typically refers to a non- functional aspect of the system. Nevertheless, a Soft Goal may still be quantified us- ing a KPI. A scenario may itself contain other scenarios. fSysML treats a task as a unitary action that cannot be further broken down. fSysML: elements+=(Actor|Usergroup|KPI|Goal|Softgoal|stateMachine|Block|BDD)*; Contribution: contributesTo' (goals += [Goal]|goals += [Softgoal])'{'weight = INT'};'; TaggedValue: 'taggedValue' '=' '{'(ID '=' Datatype',')*(ID '=' Datatype)'}'; KPI: 'KPI' name=ID'{'(TaggedValue)?(goals_contributed_to +=Contribution)*'};'; Goal: 'Goal' name = ID '{'(TaggedValue)? (goals_contributed_to += Contribution)* ('Stakeholder' actors += [Actor]';')+ (('KPI' indicators += [KPI]';')* | ('SoftGoal' softgoals += [Softgoal]';')*)('decompositionType' '=' dType=DecompositionType';')? '};' ; Softgoal: 'SoftGoal' name = ID '{'(TaggedValue)? (goals_contributed_to += Contribu- tion)+ ('Stakeholder' actors += [Actor]';')+ (('KPI' indicators += [KPI]';')* | ('SoftGoal' softgoals += [Softgoal]';')*) '};'; Task: 'Task' name = ID '{'(TaggedValue)? 'Actor' actor += [Actor]';' ('Form' forms += [Form]';')* '}' ; Scenario: 'Scenario' name = ID '{'('satisfy' satisfied_goals += [Goal])+('depends' de- pendent_forms += [Form])+ (tasks += [Task]'->')+ ('['boolean'], {'ss_one+=SubScenario'},{'ss_two+=SubScenario'}'|(tasks += [Task]';') ; SubScenario: (tasks += [Task]'->')+ ('['boolean'],{'ss_one+=SubScenario'}, {'ss_two+=SubScenario'}'|(tasks += [Task]';') ; Listing 7. Part of fSysML Grammar 7 Related Work There has been numerous and growing trend in supporting textual UML modeling. Such approaches have materialized in a number of tools. textUML supports a library and an API for creating UML diagrams using Java syntax [22]. tUML is another tool that supports both visual and textual modeling of UML [23]. tUML allows engineers to mix-in code elements along with the textual UML models. Key goal of tUML is to facilitate the quick and easy manipulation of sketchy UML models. PlantUML is a textual and verbose modeling tool that focuses on flexibility [24]. Actions in Plan- tUML supports unstructured textual elements that do not comply with a meta-model. fSysML extents the standard SysML language with goal modeling. This is used to help assess adaptive actions effectiveness. Laleau et al [21] have proposed an ap- proach to combine SysML with requirement modeling that includes extending SysML with Goal Modeling. Their approach entails formal specifications of Goals using B language [20]. Vahdat et al [25] have proposed a textual Goal Modeling using the GRL standard [26]. Vahdat’s approach follows GRL standard strictly to facilitate transformations between the textual and visual manifestation. fSysML goal models are designed specifically to support self-adaptation by quantifying adaptive actions at various levels of goals hierarchy. Manzoor [27] and Derler [31] proposed a Domain Specific Language (DSL) for modeling of self-adaptive System. Their approach treats self-adaptation as a special type of requirements (requirements under uncertainty). The proposed DSL integrates elements of RELAX [29], a requirement engineering language for self-adaptive sys- tems, into the proposed DSL. Recognizing the heterogeneity in cyber-physical and self-adaptive systems, Heinzemann et al [28] have proposed a development process that spans the multiple disciplines involved in the development of such systems. The proposed process focuses on the integration control engineering and software engi- neering. fSysML is well suited for such integrated processes. 8 Future Work and Conclusion Cyber-Physical Systems exhibit greater interplay between both physical elements and software elements, with significant feedback loops and shared controls. Development of such systems requires both software and system engineers to collaborate. Where modern software engineers follow an iterative and incremental processes, system engineers adopt disciplined design-oriented processes. To facilitate the development of Cyber-Physical Systems, we propose a design lan- guage that encompass the following key properties. 1) Enables the design and model- ing of both physical and software elements. This is achieved by defining a subset of SysML and specifying a surface textual syntax for that subset. The result is integrated with a textual syntax for modeling of software elements. 2) Eliminates to the greatest extent possible the distinction between physical and software elements. This is achieved by defining a uniform language for both types of elements. 8.1 Parametric and Constraints modeling Parametric modeling definition in the language is ongoing. Parametric modeling for systems supports trade-off analysis, model based testing, and typically supports the definition and execution of system level constraints. We are investigating the use of a language such as OCL [14] to help define constraints and parametric aspects of system modeling. These investigations include introducing an OCL or an OCL-like syntax as a unit test in fSysML. This requires that parameters that are used in para- metric modeling must be defined in fSysML structural models, or as part of Block Definition modeling. 8.2 Environment, Risks, and Uncertainty CBS function in an environment exhibiting continuous properties with many sources of uncertainties. How to effectively model risks and uncertainties and present it as integral elements in the language is yet to be investigated. Effective modeling of these elements contributes to addressing key state-of-the-art research challenges, in- cluding 1) model testing of cyber-physical systems under uncertainties [32], 2) model based analytics of CBS [33], among others. 8.3 System Requirements Modeling System requirements is another area of ongoing investigations. In SysML, re- quirements are defined in a hierarchical fashion. A requirement may have attributes such as an ID and text, and may be related to one or more modeling elements. To implement this in fSysML, we must introduce new concepts, such as satisfies (or isSatisfiedBy), contributesTo (or contributedToBy), and realize (or realizedBy). The- se concepts will relate requirement elements to various system and software model elements. Semantics of such concepts must have implications to testing and analysis activities. For example, a change of a model element should be reflected to all related elements in requirements. Unit testing should cover all requirements contribute to relationships and other modeling elements. References 1. Shi, Jianhua, et al. "A survey of cyber-physical systems." Wireless Communications and Signal Processing (WCSP), 2011 International Conference on. IEEE, 2011. 2. Lee, Edward A., and Sanjit A. Seshia. "Introduction to Embedded Systems, A cyber phys- ical approach”. First Edition, (2014). 3. Mohagheghi, Parastoo, et al. "An empirical study of the state of the practice and ac- ceptance of model-driven engineering in four industrial cases." Empirical Software Engi- neering 18.1 (2013): 89-116. 4. Petre, Marian. "“No shit” or “Oh, shit!”: responses to observations on the use of UML in professional practice." Software & Systems Modeling 13.4 (2014): 1225-1235. 5. Badreddin, Omar, Timothy C. Lethbridge, and Andrew Forward. "A novel approach to versioning and merging model and code uniformly." 2nd International Conference on Model-Driven Engineering and Software Development (MODELSWARD), 2014. IEEE, 2014. 6. Huang, Shihong, Vaishali Gohel, and Sam Hsu. "Towards interoperability of UML tools for exchanging high-fidelity diagrams." 25th Annual ACM international Conference on Design of Communication. ACM, 2007. 7. Stevens, Perdita. "Small-scale XMI programming: a revolution in UML tool use?" Auto- mated Software Engineering 10.1 (2003): 7-21. 8. Dobing, Brian, and Jeffrey Parsons. "How UML is used." Communications of the ACM 49.5 (2006): 109-113. 9. Lazar, Codrut Lucian, et al. "Using a fUML Action Language to construct UML models." Symbolic and Numeric Algorithms for Scientific Computing (SYNASC), 2009 11th Inter- national Symposium on. IEEE, 2009. 10. Badreddin, Omar, Timothy C. Lethbridge, and Andrew Forward. "Investigation and evalu- ation of UML Action Languages." 2nd International Conference on Model-Driven Engi- neering and Software Development (MODELSWARD), 2014 . IEEE, 2014. 11. Huang, Edward, Randeep Ramamurthy, and Leon F. McGinnis. "System and simulation modeling using SysML." 39th conference on Winter simulation: 40 years! The best is yet to come. IEEE Press, 2007. 12. Hailpern, Brent, and Peri Tarr. "Model-driven development: The good, the bad, and the ugly." IBM systems journal 45.3 (2006): 451. 13. Forward, Andrew, Omar Badreddin, and Timothy C. Lethbridge. "Perceptions of software modeling: a survey of software practitioners." 5th workshop from code centric to model centric: evaluating the effectiveness of MDD (C2M: EEMDD). 2010. 14. Warmer, Jos B., and Anneke G. Kleppe. "The Object Constraint Language: Precise Mod- eling With UML (Addison-Wesley Object Technology Series)." (1998). 15. Badreddin, Omar. "Umple: a model-oriented programming language." Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering-Volume 2. ACM, 2010. 16. Eysholdt, Moritz, and Heiko Behrens. "Xtext: implement your language faster than the quick and dirty way." Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion. ACM, 2010. 17. Oreizy, Peyman, Michael M. Gorlick, Richard N. Taylor, Dennis Heimbigner, Gregory Johnson, Nenad Medvidovic, Alex Quilici, David S. Rosenblum, and Alexander L. Wolf. "An architecture-based approach to self-adaptive software." IEEE Intelligent systems 14, no. 3 (1999): 54-62. 18. De Lemos, R., Giese, H., Müller, H. A., Shaw, M., Andersson, J., Litoiu, M., ... & Weyns, D. (2013). Software engineering for self-adaptive systems: A second research roadmap. In Software Engineering for Self-Adaptive Systems II (pp. 1-32). Springer Berlin Heidelberg. 19. Aziz B, Arenas A, Bicarregui J, Ponsard C, Massonet P (2009) From goal-oriented re- quirements to are Event-B specifications. In: First Nasa formal method symposium (NFM 2009), Moffett Field, California, USA. 20. Calinescu, R., Ghezzi, C., Kwiatkowska, M., & Mirandola, R. (2012). Self-adaptive soft- ware needs quantitative verification at runtime. Communications of the ACM, 55(9), 69- 77. 21. Laleau, R., Semmak, F., Matoussi, A., Petit, D., Hammad, A., & Tatibouet, B. (2010). A first attempt to combine SysML requirements diagrams and B. Innovations in Systems and Software Engineering, 6(1-2), 47-54. 22. Chaves, R. 2009. "TextUML". http://abstratt.github.io/textuml/readme.html 23. Jouault, Frédéric, and Jérôme Delatour. "Towards Fixing Sketchy UML Models by Lever- aging Textual Notations: Application to Real-Time Embedded Sys-tems." OCL@ MoD- ELS. 2014. 24. PlantUML modeling tool. Available online: http://plantuml.com/. 25. Abdelzad, Vahdat, Daniel Amyot, and Timothy C. Lethbridge. "Adding a Textual Syntax to an Existing Graphical Modeling Language: Experience Report with GRL." International SDL Forum. Springer International Publishing, 2015. 26. Heaven, William, and Emmanuel Letier. "Simulating and optimising design decisions in quantitative goal models." 2011 IEEE 19th International Requirements Engineering Con- ference. IEEE, 2011. 27. Whittle, Jon, et al. "RELAX: a language to address uncertainty in self-adaptive systems requirement." Requirements Engineering 15.2 (2010): 177-196. 28. Heinzemann, C., Sudmann, O., Schäfer, W., & Tichy, M. (2013, May). A discipline- spanning development process for self-adaptive mechatronic systems. In Proceedings of the 2013 International Conference on Software and System Process (pp. 36-45). ACM. 29. Ahmad, Manzoor. "First step towards a domain specific language for self-adaptive sys- tems." In 2010 10th Annual International Conference on New Technologies of Distributed Systems (NOTERE), pp. 285-290. IEEE, 2010. 30. Whittle, Jon, et al. "RELAX: a language to address uncertainty in self-adaptive systems requirement." Requirements Engineering 15.2 (2010): 177-196. 31. Derler, Patricia, Edward A. Lee, and Alberto Sangiovanni Vincentelli. "Modeling cyber– physical systems." Proceedings of the IEEE 100.1 (2012): 13-28. 32. Briand, Lionel, Shiva Nejati, Mehrdad Sabetzadeh, and Domenico Bianculli. "Testing the untestable: model testing of complex software-intensive systems." In Proceedings of the 38th International Conference on Software Engineering Companion, pp. 789-792. ACM, 2016. 33. Sharma, Abhishek B., Franjo Ivančić, Alexandru Niculescu-Mizil, Haifeng Chen, and Guofei Jiang. "Modeling and analytics for cyber-physical systems in the age of big data." ACM SIGMETRICS Performance Evaluation Review 41, no. 4 (2014): 74-77. APPENDICES Appendix 1: Behavioral Model Appendix 2: Goal Model