当前课程知识点:软件工程与软件自动化 >  第五章 软件自动化技术 >  5.3 文档自动化 >  文档自动化视频

返回《软件工程与软件自动化》慕课在线视频课程列表

文档自动化视频在线视频

下一节:测试自动化视频

返回《软件工程与软件自动化》慕课在线视频列表

文档自动化视频课程教案、知识点、字幕

嗨,大家好

今天我们来讨论文档自动化的话题

说到文档,没有人会否认文档的重要性

但是对于程序员来说,写文档真的是一件不爱干

却不得不干的事情

前面我们在讨论方法论的时候也说过

重型开发方法的一个重要特征就是中间产物很多

这个中间产物,主要就是指文档

所以敏捷方法强调,文档只写必要的文档

多余的文档对客户对开发人员都是一种负担

一个逼着看文档,一个逼着写文档,都不好受

从程序员角度来说,不爱写文档主要是觉得

写了白写,没人爱看

进一步分析,为什么没人爱看

是因为文档总过时,看了文档也和代码对不上

于是就不爱看了

那么如何解决这个问题呢?

团队管理者应该积极引入文档自动化技术

简化文档生成过程

减轻开发人员的文档编写负担

更重要的是,通过文档自动化技术

可以维持文档与设计模型和代码之间的一致性

保证文档的精确性和时效性

开发人员只需要维护单一源头

也就是设计模型或者代码

需要更新文档的时候,可以一键生成最新的文档

在早期软件开发活动中,设计和编码是分开的

由不同的人员使用不同的设计开发工具,各做各

程序员在编码的时候很容易就偏离设计

现在呢,大的IDE厂商在IDE中集成了多工种平台

架构师、设计师和程序员可以在同一个IDE中进
行设计和开发

从类图到代码,从UML模型到html文档,再加上
版本控制工具

不同工种人员之间的协作更加顺畅了

大家这里看到的是vs.net IDE中的together建模工

这是类图的鹰眼导航

这是设计文档的自动生成

Together的类图和代码之间实时双向同步功能

让文档的编写和生成不再是痛苦的事情

说到双向实时同步功能

不得不说这是一个十分让人兴奋的特性

之前的建模工具一般是单向手工生成的

画好类图之后,点击菜单,选择生成语言

问你选Java还是C++,然后生成对应的类的框架
代码

类图改动后,需要重新操作这个过程

或者你修改了代码,而类图还是原来的设计

这种代码单向生成功能往往比较鸡肋

食之无味,弃之可惜

当初为什么Borland公司会重金收购Together这家
小公司

就是看中了together的LiveSource实时双向同步技

这项技术有力的推动了软件自动化技术的发展

在实际开发中,无论你之前拥有多么漂亮的UML
模型图

在编码阶段都会出现偏差,无法保证模型和代码
同步

尤其是不同的开发人员使用不同开发工具的情况

这种情况更为严重

从某种意义上来说,UML模型,尤其是类图

它本身也是一种非常重要的文档

但是,在编码过程中,最开始的那个UML类图

已经过时了,没用了

如何从最新的代码中得到最新的类图呢?

这里的示例演示了如何简单的完成这一点

这个例子中结合使用了UMLGraph 和 Javadoc

生成了html格式UML类图

具体做法就是,在构建脚本中把代码中

我们想提取的那些Javadoc注释属性传递给
UmlGraphDoc

然后就会生成和代码一致的UML类图

这些操作被封装在脚本里

可以在持续集成中自动的跑起来

这样,你的每次构建,都会得到最新的文档

这些文档可以被自动发布到开发团队的内部网站

每个人随时都可以看到最新的文档

绝大多数的软件系统都会用数据库来存储数据

数据库设计和管理需要很多专业的知识和技能

一般的,我们采用数据库设计工具完成这些工 作

比如我们设计完ER图之后

通过ERWin之类的专业的数据库设计工具

画出逻辑视图和物理视图

确定实体和实体之间的关系

确定主键外键和字段属性等等

这些工具往往可以直接连接数据库

直接把这些物理视图转换成DDL代码,并在数据
库中执行

同时,可以导出为各种格式的数据词典文件作为
数据库设计的文档

这些操作很方便,也很强大

但是,这里依然存在同样的问题

就是文档生成的方向性问题

程序员在编程过程当中如果需要修改

数据库的某个表,表中的某个字段,怎么办?

怎么维护这些漂亮的原始设计

和实际数据库表结构的一致性呢?

如果手工维护,工作量巨大而且不能保证完全的
一致性

这个例子显示了如何从数据库中抽取

所需要的元素生成数据库文档

这个方案是众多方案中的一个,比较灵活

它结合了SchemaSpy、Ant 和 Javadoc

通过java Ant的任务调度调用了SchemaSpy

并传递了一些连接数据库必需的参数

如计算机名称或ip地址,端口号,用户名和密码
等等

最后生成html格式的数据库文档

这些文档反映了当前开发时刻最新的数据词典

同样的,这些配置脚本可以部署到持续集成的
流程中

每次代码变更进行重新构建的时候

就可以随时完成一次文档更新

确保数据库文档对所有开发者都是最新的,一致

用户的修改可以马上传递给所有的开发人员

下面再看一个代码文档化的例子

对程序员来说,代码注释是他们最常写的文档

因为这些注释无论是对开发者自己

还是对别人,都是非常有价值的

如何充分利用这些分散在代码各个角落的注释

是文档自动化的一个关注重点

俗话说,巧妇难为无米之炊

如果连注释都没有

自动化程度再高的工具也无法无中生有的生成文

因此,我们要鼓励程序员要多写注释,规范的写
注释

然后才有可能通过文档生成工具快速生成相关的
文档

节约程序员的时间,保持文档和代码的一致性

除了常规的行注释和块注释之外

Java和.net都有自己的更全面的注释格式

Java用javadoc,.net用Xml注释

其中xml注释也叫三斜杠注释

后面跟着xml注释的标签

.net编译器在编译的时候可以提取出这些注释项

生成xml文件,然后借助其他的处理工具

可以生成pdf,doc或html等各种各样易于阅读的
文档

这里给出了利用doxgen生成代码文档的脚本和示

这些脚本可以放到持续集成的流程中自动执行

到目前为止,你可能一直在想

自动生成技术文档固然不错

但是最头疼的可能是创建用户文档

在编写用户文档的时候

我们发现大量的时间都浪费在文档的复制粘贴上

对文档的排版更是麻烦

辛辛苦苦排好的文档

很快就因为软件的微小更新而不得不

从头到尾逐项检查和修改

以维持用户文档和软件之间的一致性

如果我们有了遗漏,交付之后用户的不满就可想
而知了

在这个示例当中,通过综合运用Ant、一个
DocBook XSL 文件

和 XSL样式对象来生成pdf格式的用户文件

这里使用XML和XSL将内容和格式隔离开

将文档所需要的文字,图片,甚至是视频片段等

保存在某个位置,形成一个单一的内容源

文档的局部更改就直接去单一源那里修改对应的
内容

不用关心其他内容

如果用户对格式不满意,只需要修改XSL格式模
板就可以了

好,文档自动化我们就讨论到这里,谢谢大家

软件工程与软件自动化课程列表:

第一章 软件工程基础

-1.1 软件工程的前生今世

--开篇阅读

--授课视频

-第一章 软件工程基础--1.1 软件工程的前生今世

-1.2 万变不离其宗

--授课视频1/3

--授课视频2/3

--授课视频3/3

-第一章 软件工程基础--1.2 万变不离其宗

-1.3 唯一不变的是变化

--授课视频1/3

--授课视频2/3

--授课视频3/3

--外部链接

-第一章 软件工程基础--1.3 唯一不变的是变化

-1.4 亡羊补牢为时不晚

--授课视频1/2

--授课视频2/2

-第一章 软件工程基础--1.4 亡羊补牢为时不晚

-扩展阅读与话题讨论

--扩展阅读

--话题讨论

第二章 敏捷开发

-2.1 方法论来源于恐惧

--授课视频

-第二章 敏捷开发--2.1 方法论来源于恐惧

-2.2 敏捷是什么

--授课视频

-第二章 敏捷开发--2.2 敏捷是什么

-2.3 典型敏捷开发方法

--SCRUM敏捷开发方法

--XP敏捷开发方法

-第二章 敏捷开发--2.3 典型敏捷开发方法

-2.4 敏捷不是万能药

--授课视频

-第二章 敏捷开发--2.4 敏捷不是万能药

-专家谈敏捷

--专家谈敏捷开发方法

-扩展阅读与话题讨论

--外部链接

--话题讨论

第三章 OO与UML

-3.1 面向对象核心概念和基本特性

--核心概念与基本特性

-第三章 OO与UML--3.1 面向对象核心概念和基本特性

-3.2 面向对象设计基本原则

--面向对象设计基本原则

-第三章 OO与UML--3.2 面向对象设计基本原则

-3.3 通用职责分配模式(GRASP)

--通用职责分配模式

-3.3 通用职责分配模式(GRASP)--作业

-3.4 从重构到模式

--模式和设计模式

-第三章 OO与UML--3.4 从重构到模式

-3.5 使用UML设计面向对象系统

--UML综述

-第三章 OO与UML--3.5 使用UML设计面向对象系统

-3.6 主要UML模型图绘制技巧

--UML用例图

--UML类图

--UML序列图绘制技巧

-第三章 OO与UML--3.6 主要UML模型图绘制技巧

-扩展阅读与话题讨论

--设计模式有毒么?

--话题讨论

第四章 对象模型分析

-4.1 案例简介

--书籍参考

--案例说明

-4.2 对象模型之一

--授课视频1/2

--授课视频2/2

-第四章 对象模型分析--4.2 对象模型之一

-4.3 对象模型之二

--授课视频1/2

--授课视频2/2

-第四章 对象模型分析--4.3 对象模型之二

-4.4 对象模型之交互

--授课视频

-第四章 对象模型分析--4.4 对象模型之交互

-扩展阅读与话题讨论

--图书推荐

--话题讨论

第五章 软件自动化技术

-5.1 软件自动化概述

--软件自动化概述

-第五章 软件自动化技术--5.1 软件自动化概述

-5.2 典型自动化方法和工具

--典型自动化工具视频

-第五章 软件自动化技术--5.2 典型自动化方法和工具

-5.3 文档自动化

--文档自动化视频

-第五章 软件自动化技术--5.3 文档自动化

-5.4 测试自动化

--测试自动化视频

--白盒测试工具VU的示例演示片段(版权属原作者)

--功能和性能自动化测试工具及简单应用演示

-第五章 软件自动化技术--5.4 测试自动化

-专家访谈

--北京理工大学刘辉教授谈软件自动化新进展

-扩展阅读与话题讨论

--各个开发阶段最流行的Java工具汇总

--话题讨论

第六章 CI/CD与DevOps

-6.1 持续集成

--持续集成视频1/2

--持续集成视频2/2

-第六章 CI/CD与DevOps--6.1 持续集成

-6.2 持续交付和部署

--持续交付和持续部署

-第六章 CI/CD与DevOps--6.2 持续交付和部署

-6.3 DevOps

--DevOps授课视频

-第六章 CI/CD与DevOps--6.3 DevOps

-专家访谈

--卓睿科技总架构师带来的精彩访谈

-扩展阅读与话题讨论

--DevOps专题

--话题讨论

第七章 软件质量保证

-7.1 质量和质量保证

--授课视频

-第七章 软件质量保证--7.1 质量和质量保证

-7.2 软件质量模型

--授课视频

-第七章 软件质量保证--7.2 软件质量模型

-7.3 SQA组织与职责

--授课视频

-第七章 软件质量保证--7.3 SQA组织与职责

-7.4 全面软件质量管理

--授课视频

-第七章 软件质量保证--7.4 全面软件质量管理

-专家访谈

--专家访谈

-扩展阅读与话题讨论

--外部链接

--话题讨论

第八章 软件过程改进

-8.1 软件过程综述

--授课视频

-第八章 软件过程改进--8.1 软件过程综述

-8.2 软件过程改进

--授课视频

-第八章 软件过程改进--8.2 软件过程改进

-8.3 能力成熟度模型

--授课视频

-第八章 软件过程改进--8.3 能力成熟度模型

-8.4 过程改进标准框架

--授课视频

-第八章 软件过程改进--8.4 过程改进标准框架

-扩展阅读与话题讨论

--敏捷和CMM矛盾么?

--话题讨论

第九章 软件复用

-9.1软件复用综述

--授课视频

-第九章 软件复用--9.1软件复用综述

-9.2 软件构件技术

--授课视频

-第九章 软件复用--9.2 软件构件技术

-9.3 软件复用实施

--授课视频

-第九章 软件复用--9.3 软件复用实施

-9.4 微服务架构

--授课视频

-第九章 软件复用--9.4 微服务架构

-扩展阅读与话题讨论

--微服务扩展

--话题讨论

文档提交处

-文档提交处--文档提交

文档自动化视频笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。