Brian McClelland, Daniel Tellier, M. Millman, Katerina Go, Alice Balayan, M. Munje, Kyle Dewey, Nhut Ho, K. Havelund, M. Ingham
{"title":"面向分层状态机的系统程序设计语言","authors":"Brian McClelland, Daniel Tellier, M. Millman, Katerina Go, Alice Balayan, M. Munje, Kyle Dewey, Nhut Ho, K. Havelund, M. Ingham","doi":"10.1109/smc-it51442.2021.00010","DOIUrl":null,"url":null,"abstract":"In flight applications, Hierarchical State Machines (HSMs) are often used for writing simulation and control software, including that of the Curiosity rover. At the Jet Propulsion Laboratory (JPL), multiple domain-specific languages have been developed specifically for writing HSM-based software, and these have been used in practice. However, we observe that the existing languages developed have significant issues with one or more of usability, performance, and safety, making them problematic for HSM-based development. To address these concerns, we are taking lessons learned from these languages and developing a new programming language named Proteus. Proteus builds HSM support directly into the language, and permits complex HSMs to be defined which communicate with each other. Proteus is designed with a look and feel similar to C/C++, making it usable and approachable for JPL software engineers. Proteus itself compiles to C++, allowing it to fit easily into existing development toolchains, making it amenable to embedded real-time systems. To ensure that Proteus will be of use to its target audience, it is being iteratively developed through a series of prototypes which are regularly evaluated by key JPL stakeholders, ensuring Proteus always stays on track. While Proteus is still very young in its development, we demonstrate its basic viability on an example utilizing multiple independent HSMs communicating with each other, and a relevant execution trace. In the future, we plan to apply Proteus to larger HSMs taken from real flight applications, and many additional relevant features are planned.","PeriodicalId":292159,"journal":{"name":"2021 IEEE 8th International Conference on Space Mission Challenges for Information Technology (SMC-IT)","volume":"10 19","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2021-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"4","resultStr":"{\"title\":\"Towards a Systems Programming Language Designed for Hierarchical State Machines\",\"authors\":\"Brian McClelland, Daniel Tellier, M. Millman, Katerina Go, Alice Balayan, M. Munje, Kyle Dewey, Nhut Ho, K. Havelund, M. Ingham\",\"doi\":\"10.1109/smc-it51442.2021.00010\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"In flight applications, Hierarchical State Machines (HSMs) are often used for writing simulation and control software, including that of the Curiosity rover. At the Jet Propulsion Laboratory (JPL), multiple domain-specific languages have been developed specifically for writing HSM-based software, and these have been used in practice. However, we observe that the existing languages developed have significant issues with one or more of usability, performance, and safety, making them problematic for HSM-based development. To address these concerns, we are taking lessons learned from these languages and developing a new programming language named Proteus. Proteus builds HSM support directly into the language, and permits complex HSMs to be defined which communicate with each other. Proteus is designed with a look and feel similar to C/C++, making it usable and approachable for JPL software engineers. Proteus itself compiles to C++, allowing it to fit easily into existing development toolchains, making it amenable to embedded real-time systems. To ensure that Proteus will be of use to its target audience, it is being iteratively developed through a series of prototypes which are regularly evaluated by key JPL stakeholders, ensuring Proteus always stays on track. While Proteus is still very young in its development, we demonstrate its basic viability on an example utilizing multiple independent HSMs communicating with each other, and a relevant execution trace. In the future, we plan to apply Proteus to larger HSMs taken from real flight applications, and many additional relevant features are planned.\",\"PeriodicalId\":292159,\"journal\":{\"name\":\"2021 IEEE 8th International Conference on Space Mission Challenges for Information Technology (SMC-IT)\",\"volume\":\"10 19\",\"pages\":\"0\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2021-07-01\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"4\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"2021 IEEE 8th International Conference on Space Mission Challenges for Information Technology (SMC-IT)\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.1109/smc-it51442.2021.00010\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"2021 IEEE 8th International Conference on Space Mission Challenges for Information Technology (SMC-IT)","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1109/smc-it51442.2021.00010","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
Towards a Systems Programming Language Designed for Hierarchical State Machines
In flight applications, Hierarchical State Machines (HSMs) are often used for writing simulation and control software, including that of the Curiosity rover. At the Jet Propulsion Laboratory (JPL), multiple domain-specific languages have been developed specifically for writing HSM-based software, and these have been used in practice. However, we observe that the existing languages developed have significant issues with one or more of usability, performance, and safety, making them problematic for HSM-based development. To address these concerns, we are taking lessons learned from these languages and developing a new programming language named Proteus. Proteus builds HSM support directly into the language, and permits complex HSMs to be defined which communicate with each other. Proteus is designed with a look and feel similar to C/C++, making it usable and approachable for JPL software engineers. Proteus itself compiles to C++, allowing it to fit easily into existing development toolchains, making it amenable to embedded real-time systems. To ensure that Proteus will be of use to its target audience, it is being iteratively developed through a series of prototypes which are regularly evaluated by key JPL stakeholders, ensuring Proteus always stays on track. While Proteus is still very young in its development, we demonstrate its basic viability on an example utilizing multiple independent HSMs communicating with each other, and a relevant execution trace. In the future, we plan to apply Proteus to larger HSMs taken from real flight applications, and many additional relevant features are planned.