视图之间的转换
转换BTW视图
软件构造中的转换类型:
软件系统的质量特性
外部和内部质量因素
外部质量因素:诸如速度或易用性之类的质量,其在软件产品中的存在或不存在可能被其用户检测到。
外部质量因素影响用户!:适用于软件产品的其他质量,如模块化或可读性,是内部因素,只有能够访问实际软件文本的开发人员才能感知。
适用于软件产品的其他质量,如模块化或可读性,是内部因素,只有能够访问实际软件文本的开发人员才能感知。
内部质量因素 影响 软件本身和它的开发者
最后,只有外部因素才重要
但是实现这些外部因素的关键在于内部因素:为了让用户享受可见的质量,设计者和实现者必须应用内部技术来确保隐藏的质量。
外部质量因素
1.正确性Correctness:正确性是软件产品执行其规范所定义的精确任务的能力。按照预先定义的“规约”执行。
正确性:最重要的质量指标
每一层保证自己的正确性,同时假设其下层是正确的
测试和调试:发现不正确、消除不正确
防御式编程:在写程序的时候就确保正确性
形式化方法:通过形式化验证发现问题
2.稳健性Robustness:健壮性是软件系统对异常情况做出适当反应的能力。
健壮性是对正确性的补充
正确性:软件的行为要严格的符合规约中定义的行为
健壮性:出现规约定义之外的情形的时候,软件要做出恰当的反应。
稳健性是确保如果出现这种情况,系统不会造成灾难性事件;它应该产生适当的错误消息,干净地终止执行,或者进入所谓的“优雅降级”模式。
健壮性:出现异常时不要“崩溃”
健壮性与“异常情况”有关,这意味着正常情况和异常情况的概念总是相对于某个特定的规范。
“normal”和“abnormal”是主观而非客观
未被specification覆盖的情况即为“异常情况”
如果您扩展了规范,以前异常的情况将变为正常情况—即使它们与您不希望发生的错误用户输入等事件相对应。
所谓的“异常”,取决于spec的范畴
3.可扩展性Extendibility:可扩展性是使软件产品适应规范变化的容易程度。对软件的规约进行修改,是否足够容易?
规模越大,扩展起来越不容易
–对于小型项目来说,改变通常不是一个困难的问题;但是,随着软件越来越大,它变得越来越难以适应。
–一个大型软件系统在其维护者看来往往是一个巨大的卡片屋,在这个房子里,拉出任何一个元素都可能导致整个大厦倒塌。
为什么要扩展:应对变化:传统方法没有充分考虑到变化,而是依赖于软件生命周期的理想视图,在这个视图中,最初的分析阶段冻结了需求,其余的过程都用于设计和构建解决方案。
两项原则对于提高可扩展性至关重要:
1。简约主义设计:简单的架构总是比复杂的架构更容易适应变化。
2.分离主义设计:模块自治性越强,一个简单的更改只影响一个模块或少数模块的可能性就越高,而不是引发整个系统的连锁反应。
4.可复用性Reusability:是软件元素为许多不同应用程序的构建服务的能力。一次开发,多次使用.
对可重用性的需求来自于对软件系统通常遵循相似模式的观察;应该能够利用这种共性,避免对以前遇到的问题重新提出解决办法。发现共性。
可重用的软件元素将适用于许多不同的开发。
5.兼容性:兼容性(兼容性) 是将软件元素与其他元素相结合的容易程度。不同的软件系统之间相互可容易的集成。
兼容性很重要,因为我们不会在真空中开发软件元素(真空): 他们需要相互交流。但他们经常在互动上遇到困难,因为他们对世界其他地方的假设相互矛盾。
6.高效性(性能Efficiency):效率是指软件系统对硬件资源的要求尽可能少的能力,例如处理器时间、内部和外部存储器占用的空间、通信设备使用的带宽。
性能毫无意义,除非有足够的正确性过度的优化导致软件不再适应变化和复用
过早优化是万恶之源
7.可移植性Portability:软件可方便的在不同的技术环
境之间移植。
8.易用性Ease of use:易用性(易用性) 是指不同背景和资格的人可以很容易地学会使用软件产品并应用它们来解决问题(容易学、安装、操作、监控)
结构简单,了解用户。
9.功能性(Functionality):功能是系统提供的可能性范围。
程序设计中一种不适宜的趋势,即软件开发者增加越来越多的功能,企图跟上竞争,其结果是程序极为复杂、不灵活、占用过多的磁盘空间。
10.及时性(Timeliness):及时性(及时性) 是指软件系统在用户需要时或之前发布的功能。