目录
1 Multi-dimensional software views
2 Software construction: Transformation between views
3 Quality properties of software systems
一.软件构造的多维视图和质量目标
·从三个维度看软件系统的构成
·用什么样的模型/视图描述软件系统
·将“软件构造”看做“不同视图之间的转换”
我们进行软件构造的时候要先搞清楚:软件构造的对象是什么,如何刻画;
然后再关注如何构造。
·软件构造中应该考虑的重要指标
·如果达不到指标会有的后果
·面向质量指标的软件构造技术
我们不仅要搞清楚“要构造的结果是什么”,还要理解清楚“构造的结果如何才算好”。
软件构造的多维视角:
按阶段划分:构造时/运行时视图
按动态性划分:时刻/阶段视图
按按构造对象的层次划分:代码/构件视图
1 Multi-dimensional software views
多维软件视图
Moment View维度关注特定时刻的软件形态,Period view关注软件形态随时间的变化。
(1)Build-time, moment, and code-level view关注的是原地阿妈如何在程序模块中,例如函数,类,方法,接口中的逻辑架构,在词汇,语法,语义层面进行分析。
(2)Build-time, period, and code-level view关注的是代码随时间的变化过程。
(3) Build-time, moment, and component-level view关注可重用模块被封装为库,文件被封装到包中。
(4) Build-time, period, and component-level view关注各项软件实体随时间如何变化。
(5) Run-time, moment, and code-level view关注代码快照图,也就是描述程序运行时,某一时刻内存里变量层面的状态。
(6) Run-time, period and code-level view关注UML 中的序列图:程序单元(对象)之间的交互
(7) Run-time, moment, and component-level view关注UML 中的部署图。
(8) Run-time, period, and component-level view关注系统层面的事件日志。
2 Software construction: Transformation between views
从无到有代码:编程;对编写的代码进行审查和静态分析;
从编码到组件:设计ADT和OOP;重用代码和维护程序;
从构建到运行:部署安装;集成测试
从时间点到时间段:版本控制,加载,动态链接,转储,分析,记录,并发
3 Quality properties of software systems
外部质量因素影响用户,内部质量因素影响软件本身和它的开发者。
外部质量取决于内部质量。
(1)正确性 保证正确,进行测试和调试来发现并消除不正确。进行防御式编程,在写程序的时候就确保正确性;通过形式化验证来发现问题。
(2)健壮性 程序出现异常时不要崩溃。健壮性是对正确性的补充;软件的行为要严格的符合规约中定义的行为,出现规约定义之外情况的时候,软件要做出恰当的反应。
(3)可扩展性 对软件进行简约主义设计和分离主义设计。
(4)可复用性 一次开发多次使用;发现代码之间的共性。
(5)兼容性 不同软件系统之间相互可容易地集成。难点:保持设计的同构性。
(6)效率 性能毫无意义,除非有 足够的正确性;对性能的关注要与其他质量属性进行折中。
(7)可移植性 软件可以方便的在不同的技术环境之间移植。
(8)易用性 软件容易学,能够安装,操作,监控;给用户提供详细的指南,了解用户需求。
(9)功能性 功能过多会导致易用性降低。
(10)及时性 及时性就是软件系统在用户需要的时候及时发布的特性。
(其他)完整性,可验证性,可修复性,经济性......
内部质量因素
可读性,可理解性,清晰性,大小
折中处理
如果不引入各种保护措施怎么获得完整性?这将不可避免的妨碍易用性。
正确的软件开发过程中,开发者应该将不同质量因素之间如何做出折中的设 计决策和标准明确的写下来。
虽然需要折中,但“正确性”绝不能与其他质量因素折中!!
五个关键因素
▪Elegant and beautiful code :容易理解
▪ Design for/with reuse :开发成本低
▪ Low complexity :意欲改变,易于扩展
▪ Robustness and correctness 减少bug
▪ Performance and efficiency 提高运行效率