没有合适的资源?快使用搜索试试~ 我知道了~
首页模型到代码:无神秘空隙的代码生成实践
"Models to Code.pdf" 是一本专注于将可执行模型转换为实际运行代码的技术书籍。作者Leon Starr, Andrew Mangogna和Stephen Mellor通过实践方法,详细阐述了如何使用开放源代码工具链将详细的、平台无关的模型转化为解决实际应用问题的代码。这本书强调了模型的价值在于它们位于代码生产的核心路径上,避免构建仅作为代码表示的模型。 书中通过两个深入的案例研究,展示了如何使用可执行的UML模型,这些模型和生成的代码都经过了详尽的注释,以便读者理解关键原则。虽然书中以"C"语言作为实现语言,面向微型计算机类处理器进行代码生成,但作者鼓励读者将学习到的概念应用于自己的特定语言和平台,以提升建模和代码生成解决方案的效率。 "Model to Code"探讨了模型翻译和软件生成的各个方面,旨在消除从模型到代码过程中可能出现的神秘空白。它不仅涵盖了理论,还提供了具体的操作指南,包括版权信息和国际标准书号,表明这是一本权威的参考资料,适合那些希望优化软件开发流程,通过模型驱动开发提高生产力的专业人士。 本书强调了模型在软件开发中的核心作用,以及如何有效地利用模型进行代码生成,从而提高软件质量和开发效率。对于想要深入了解模型驱动开发(MDD)和代码自动化生成的IT专业人员,这本书提供了宝贵的指导和实践示例,有助于他们在软件工程实践中应用这些概念。
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/11186792/bg10.jpg)
About the Authors
Leon Starr has been developing real-time distributed and embedded
software with object-oriented, executable models since 1984. His models
have been used in fighter jets, factory material transport control systems,
ultrasound diagnostic and cardiac pacing systems, gas chromatography
and semiconductor wafer inspection systems, video postproduction
systems, and networked military battle simulators. He has taught
numerous courses on executable systems and data modeling to systems
engineers and software developers worldwide through his company Model
Integration, LLC (modelint.com) based in San Francisco, California. He
is the author of How to Build Shlaer-Mellor Object Models, How to Build
Class Models, Executable UML: A Case Study, and assorted papers at
uml.org and modeling-languages.com. He regularly assists project teams
who model complex requirements and generate code from those models
for challenging hardware and software platforms.
Andrew Mangogna has developed a number of open source tools,
including pycca, which we use in this book to specify Executable UML
models and translate them into code. He has also worked extensively
in the medical device community. For more than 30 years, Andrew has
been a hands-on builder of embedded software systems. He has worked
in application areas ranging from laboratory instrumentation, remote
data collection, and video special effects, to implantable medical devices.
Andrew has always had a special interest in applying more formal
techniques to the challenge of engineering software to create systems in
a cost-effective manner with demonstrable quality. Trained in the basics
of modeling by Stephen Mellor himself, he has successfully applied
executable modeling techniques and model translation to many projects
and has written several tools to help automate the translation process.
With a keen interest in technology and a practical realization of the
benefits of modeling, he has a mastery of mapping models to appropriate
implementation technology to obtain high-quality software systems.
xvii
![](https://csdnimg.cn/release/download_crawler_static/11186792/bg11.jpg)
xviii
■ About the Authors
Stephen Mellor is the primary author of Executable UML: A Foundation
for Model-Driven Architecture, as well as several other books on model-
driven software. He is a frequent speaker and a key contributor to many
modeling language standards established by the Object Management
Group (OMG).
![](https://csdnimg.cn/release/download_crawler_static/11186792/bg12.jpg)
Acknowledgments
Any substantial project always depends on the generous help of others. Friends, colleagues, and a host of
experiences have provided valuable service to Models to Code.
We all wish to thank Ed Seidewicz, our technical reviewer, for his many insightful and detailed
comments throughout the text. His eye for detail rooted out quite a few potential and devilishly subtle errors.
He passed many of our “tests” to see whether he was actually reading this stuff. We especially appreciate
his patience with us, as we are well aware that our opinions and experience are often at odds with current
practice in the greater UML community.
I want to express my heartfelt thanks to friends and colleagues who expressed early enthusiasm for
this project. This includes many of my colleagues at SAAB Aerospace here in Sweden. At the Por Que No?
taqueria in Portland, Oregon in March of 2016, Dan George and I had some amazing tacos, and I was
encouraged by his infectious comments and enthusiasm. Back here in Linköping, Sweden, my present home
base, I enjoyed many beers, laughs, and technical discussions with Nils Paulsson of SAAB at The Bishops
Arms pub. He also contributed helpful comments on early drafts (in both the writing and beer sense of the
word). Thanks also to my Scandinavian “agent” and good friend, Christer Andersson, for equal measures of
encouragement and pestering me to get this project over with so I could get back to doing “real” work. My
longtime friend and business partner, Michael M. Lee, has served many a quality margarita on my recurring
visits back to the Bay Area in California. I would like to thank the staff at Babbettes Kafferie in Linköping for
letting me use a corner of their cafe as my second office and keeping me well supplied with coffee, morning
buns, and warm conversation during the dark and cold Swedish winter days. Most important, though, I owe
a massive debt of gratitude to my wife, Kristina, who set me up with a beautiful home office and forbade me
from getting a new Xbox until the book was complete and for putting up with my writing throughout our
summer wedding plans. Along with Andrew’s superb project management skills, you can thank her the most
for this book making it to the shelves in 2017.
—Leon Starr
The many discussions over coffee and beer of modeling and its foundations with Paul Higham were
fundamental to a broader understanding of how all the pieces fit together. There were many people, such as
Melanie Gurunathan, Cary Campbell, and Thomas Brennan-Marquez, who actually used pycca to deliver
real products and whose feedback was essential. Finally, without the patience and support of my wife,
Marjorie Lane-Mangogna, it is hard to envision how this book could ever have happened. Few would have
the patience to deal with the blah, blah, blah chatter that surrounds someone immersed in writing on a
technical subject.
—Andrew Mangogna
xix
![](https://csdnimg.cn/release/download_crawler_static/11186792/bg13.jpg)
Foreword
I published my first book on requirements analysis and modeling back in 1997. It was based on my
experience working with teams to build complex, real-time, model-driven software. Like so many other
books on software modeling, I left the process of transforming the models into code as an exercise for the
student. Ha!
In fact, on actual projects, we were able to make this transformation, but it certainly wasn’t easy.
Worthwhile, yes. The models proved themselves again and again as being worth the effort. But the code
translation problem has never been trivial. We always required a small team dedicated to the translation task
running in parallel with the modeling effort. Note that this was not a waterfall approach, as modeling and
design were being accomplished simultaneously.
Over time, the tools and technology to bridge the path from models to code improved. Unfortunately,
they were locked up in proprietary solutions and expensive licensed products. This put me in an awkward
position when extolling the benefits of modeling to younger engineers. Getting them interested in the
benefits of modeling and a more promising style of model execution and code generation was easy. I would
then be confronted with the inevitable question, “That’s sounds great; how do I get started with this stuff?”
I then had to concede that, while you might toy around with the ideas on your own, you really needed to get
attached to a project that could fund the required tooling. Consequently, I didn’t want to write another book
without giving the reader a real path, any path, that took the models into running code without requiring the
purchase of any expensive tools.
Andrew and I have worked together on and off on various projects over the years. One of his early
translation systems extracted models from a tool called BridgePoint at the time (now xtUML) and
transformed those models directly into assembly language. Because of the specialized CPU, no sufficiently
optimal C compiler was available. It was a proprietary solution for a particular embedded device company,
but it was a compelling proof of concept. Abstract models could be compacted and reorganized directly to
the machine instruction level and run on specialized and limited resource hardware to yield the precise
behavior specified by the models.
Andrew has since moved on to build a number of open source translation systems of which one, pycca,
is used in this book. I eventually realized that these open source tools were the key to explaining how to
bridge the gap from models to code while providing an accessible solution to any interested party.
Thus began our latest book project. After coaxing Andrew to take part, and enticing the primary author
of Executable UML and Agile signatory, Stephen Mellor, to join in, we had the perfect mix of expertise.
As you read along, you may find that this is not an easy subject, and may require some hard work to
make it through. The reward is the ability to take executable models that solve real problems through to an
efficient implementation without destroying the models in the process. I want you to know that you are not
alone in this journey, and we’re more than happy to help if you have questions or run into obstacles. Feel
free to use our contact page at the end of the book. Happy reading!
—Leon Starr
Linköping, Sweden
March 15, 2017
xxi
![](https://csdnimg.cn/release/download_crawler_static/11186792/bg14.jpg)
xxii
■ Foreword
In conversations with colleagues who share a similar outlook about software development, the topic
invariably turns to why the practice of software development using models and translation is not more
widespread. Many reasons are offered, but usually the conversation trails off into consternation over an
industry that claims to want well-engineered software juxtaposed to the repeated practices that do not
deliver.
For my part, I have concluded that modeling and translation are hard because abstraction is hard
and requires practice to master. One need only look at the facial contortions of a young teenager when
initially exposed to the idea of variables in beginning algebra to understand that we are creatures first of the
immediate and concrete. Gone are the comforts of explicit numbers, and suddenly a new set of rules is in
place to cope with the idea that an arbitrary symbol, which doesn’t look anything like a numeral, can now
range over many values. The look is similar to that of a beginning programming student struggling to fix
firmly the difference between a variable and the value contained in the variable when the same symbol is
used for both and only context provides the distinction. Even though I have successfully produced software
systems using modeling and translation for many years, there are times when looking at pages of boxes and
arrows that it is hard to see how the gap between symbols on a page and running software will ever be filled.
It looks like a jump across the Grand Canyon to be attempted only by an extreme stunt rider equipped with a
magic, rocket-propelled vehicle.
The young algebra student, by working through many specific problems, does come to grasp the
underlying abstractions. Reasoning, and sometimes wrestling, with the concrete yields up the abstract.
In this book, we undertake to illustrate general principles of translating models into code by examining
specific examples. We practice a specific way to model requirements and translate to a specific type of target
platform using a specific programming language. We hold tightly to our tagline of “no mysterious gaps” in
our attempt to show, at each step along the way, exactly how the translated software is produced and runs.
We show lots of models and lots of code, confident in the awesome power of an individual to grasp the
abstractions embedded in the specifics.
There is a danger that some readers will look at the details of the platform or translation technique
and conclude that, because the specifics don’t match their interests or preferences, the idea of translating
models into programs is itself not generally applicable. In that case, we will have failed as authors to provide
the vision of model translation as a tangible engineering approach. But I am confident that there are readers
who will realize that symbols on a diagram can be made tangible as a running program (as tangible as
software ever is) and that obtaining code by translating models looks more like driving over a bridge than
jumping the Colorado river.
—Andrew Mangogna
Nipomo, California
March 15, 2017
剩余317页未读,继续阅读
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
处女座程序员的朋友
- 粉丝: 347
- 资源: 104
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- Hadoop生态系统与MapReduce详解
- MDS系列三相整流桥模块技术规格与特性
- MFC编程:指针与句柄获取全面解析
- LM06:多模4G高速数据模块,支持GSM至TD-LTE
- 使用Gradle与Nexus构建私有仓库
- JAVA编程规范指南:命名规则与文件样式
- EMC VNX5500 存储系统日常维护指南
- 大数据驱动的互联网用户体验深度管理策略
- 改进型Booth算法:32位浮点阵列乘法器的高速设计与算法比较
- H3CNE网络认证重点知识整理
- Linux环境下MongoDB的详细安装教程
- 压缩文法的等价变换与多余规则删除
- BRMS入门指南:JBOSS安装与基础操作详解
- Win7环境下Android开发环境配置全攻略
- SHT10 C语言程序与LCD1602显示实例及精度校准
- 反垃圾邮件技术:现状与前景
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)