软件构造期末复习知识点整理

						                          软件构造期末复习
**软件构造的多维度视图和质量目标**

一、 软件构造的多维视图:
在这里插入图片描述
(1) Build-time, moment, and code-level view
源代码如何由函数、类、方法、接口等以及它们之间的依赖关系,三种相互相关的形式:
-词汇层面:面向词汇的源代码
-语法层面:面向语法的程序结构:例如,抽象语法树(AST)
-语义层面:面向语义的程序结构:例如,类图

抽象语法树(AST):将半结构化源代码表示为结构化树。
面向语义的程序结构:使用类图(UML)来描述接口、类、属性、方法和它们之间的关系。通常是图形化或形式化的。在设计阶段建模,并转换为源代码。它是在用户需求方面的面向对象分析和设计的结果。

(2) Build-time, period, and code-level view
描述“变化”随时间而变化的视图。代码变化:从一个版本到另一个版本添加、修改或删除到文件的行。

(3) Build-time, moment, and component-level view
源代码在物理上组织成文件,这些文件进一步由目录组织;文件被封装成包,逻辑上,组件和子系统。可重用模块以库的形式存在。

库存储在它们自己的磁盘文件中,收集一组可跨各种程序重用的代码函数。—开发人员并不总是构建一个可执行程序文件,而是将定制开发的软件和预构建的库加入到一个程序中。在构建时,库函数可以看作是标准语言的扩展,其使用方式与开发人员编写的函数相同。开发者像使用编程语言指令一样使用库中的功能。在编辑、构建和安装程序时,必须提供要搜索的库的列表。编程时和构建时,需告诉IDE和JVM在哪里寻找某些库。如果源代码中引用了函数,但开发人员未显式编写,则会搜索库列表以找到所需的函数。找到该函数后,会将相应的对象文件复制到可执行程序中。将库集成到可执行程序中的两种不同方法:(1)静态链接(2)动态链接

在静态链接中,库是单个对象文件的集合。在构建过程中,当链接器工具确定需要函数时,它从库中提取适当的对象文件并将其复制到可执行程序—库被拷贝进入代码形成整体、执行的时候无需提供库文件—库的对象文件与开发人员自己创建的任何对象文件完全相同。静态链接发生在生成时间内—最终是要加载到目标计算机上的一个可执行程序。创建最终可执行程序后,无法将程序与其库分离。

(4) Build-time, period, and component-level view

  1. 软件系统中的所有文件/包/组件/库如何随时间而变化?
  2. 软件配置项
  3. 版本

软件版本控制是为计算机软件的唯一状态分配唯一版本名或指定计算机软件的唯一版本号的过程。在给定的版本号类别内,这些数字通常按递增顺序分配,并与软件的新开发相对应。在细粒度级别上,修订控制通常用于跟踪增量不同版本的电子信息,无论这些信息是否是计算机软件。

(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
事件日志记录为系统管理员提供了对诊断和审计有用的信息。事件日志:系统层面—在开发周期中考虑将记录的不同事件类别以及事件消息中显示的详细信息。要为每类事件分配一个唯一的“代码”,以格式化和输出人类可读的消息。—这便于本地化,并使系统管理员能够更容易地获取有关所发生的问题的信息。

二、在视图之间的转换
在这里插入图片描述
三、软件系统的质量特性

  1. 外部质量因素:如速度或易用性,其用户可以检测到其在软件产品中的存在或缺失的质量。
  2. 适用于软件产品的其他质量,如模块化性或可读性,都是内部因素,只有能够访问实际软件文本的开发人员才能感知。
  3. 最后,只有外部因素才很重要。但是实现这些外部因素的关键在于内部因素:为了让用户享受可见的质量,设计者和实现者必须应用内部技术来确保隐藏的质量。

外部质量因素:
(1)正确性:正确性是软件产品执行其规范所定义的确切任务的能力。按照预先定义的“规约”执行
确保正确性的方法:测试和调试、防御性的编程、正式方法:“检查”、“保证”、“保证”
(2)鲁棒性:鲁棒性是指软件系统对异常情况作出适当反应的能力。鲁棒性是确保如果出现这种情况,系统不会导致灾难性事件;它应该产生适当的错误消息,干净地终止执行,或进入所谓的“优雅退化”模式。
(3)可扩展性:是使软件产品适应规范变化的方法。对于小程序来说,改变通常不是一个困难的问题;但随着软件的增长,它变得越来越难适应。一个大型软件系统通常将其维护者看作是一个巨大的卡片屋,在其中拔出任何一个元素都可能会导致整个大厦倒塌。我们需要可扩展性,因为在所有软件的基础上都有一些人类现象,因此变化无常。
提高可扩展性的两个原则:(1)设计简单性:简单的体系结构总是比复杂的体系结构更容易适应变化。(2)分散化:模块越自主,简单的变化只影响一个模块或少量模块的可能性就越高,而不是触发整个系统变化的连锁反应。分离主义设计
(4)可重用性:是软件元素用于构建许多不同应用程序的能力。一次开发,多次使用。对可重用性的需求来自于观察到,软件系统通常遵循类似的模式;应该可以利用这一共性,并避免对以前遇到的问题重新创建解决方案。
(5)兼容性:是将软件元素与其他元素相结合的易用之性。不同的软件系统之间相互可容易的集成的兼容性很重要,因为我们不在真空中开发软件元素:它们需要相互交互。但是他们经常遇到互动的困难,因为他们对世界其他地方做出了相互矛盾的假设。
(6)高效性:效率是软件系统对硬件资源提出尽可能少量需求的能力,例如处理器时间、内外存储器中占用的空间、通信设备中使用的带宽。
(7)可移植性:是指易于将软件产品转移到各种硬件和软件环境中。软件可方便的在不同的技术环境之间移植。可携性不仅解决了物理硬件的变化,而且更普遍的硬件软件机器,我们真正编程的机器,包括操作系统,窗口系统,如果适用,和其他基本工具。
(8)易用性:是指具有不同背景和资格的人易于学习使用软件产品并应用它们来解决问题。
(9)功能性:功能是一个系统提供的可能性的范围。
(10)及时性:是指软件系统在用户需要时或之前发布的能力。一个伟大的软件产品可能会完全错过它的目标。
(11)可验证性:是易于准备验收程序,特别是测试数据,以及在验证和操作阶段检测故障和跟踪故障到错误的程序。
(12)完整性:是软件系统保护其各种组件(程序、数据)免受未经授权访问和修改的能力。
(13)可修复性:是一种促进修复缺陷的能力。
(14)经济性:及时性的伴侣,是一个系统在分配预算下或低于分配预算下完成的能力。

内部质量因素:
源代码相关因素,如代码行(LOC)、周期复杂度等、体系结构相关因素,如耦合、内聚性。

四、软件建设的五大关键质量目标
(1)易于理解
(2)便宜开发
(3)易于扩展
(4)防漏洞
(5)高效运行

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 构件:是指语义完整,语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辨识的系统;结构上,它是语义描述通信接口和实现代码的复合体。2. 构件模型:是对构件本质特征的抽象描述。3. 构件组装:是指将库中的构件经适当修改后相互连接,或者将它们与当前开发项目中的软件元素相连接,最终构成新的目标软件。4. 软件体系结构:Hayes Roth认为软件体系结构是一个抽象的系统规范,主要包括用其行为来描述的功能构件和构件之间的相互连接、接口和关系。5. 面向服务体系结构(SOA):本质上是服务的集合,服务间彼此通信,这种通信可能是简单地数据传送,也可能是两个或更多的服务协调进行某些活动。6. 可靠性:是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统特性的基本能力。7. 可修改性:是指能够快速地以较高的性能价格比对系统进行变更的能力。通常以某些具体的变更为基准,通过考察这些变更的代价衡量可修改性。可修改性包括:可维护性、可扩展性、结构重组、可移植性。8. 敏感点:是一个或多个构件(和/或构件之间的关系)的特性。9. 权衡点:是影响多个质量属性的特性,是多个质量属性的敏感点。10. 软件产品线:就是在一个公共的软件资源集合基础上建立起来的共享同一个特性集合的系统集合。11. 框架:是封装了特定应用族抽象设计的抽象类的集合,框架又是一个模板,关键的方法和其他细节在框架实例中实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值