西南科技大学软件构造理论复习

部分内容为参考本站博主文章,感谢支持!

1、P24第4题:软件如何分类,举例说明一种分类

按照功能划分

  • 系统软件

  • 支撑软件

  • 应用软件

2、P24第8题:对比瀑布模型、敏捷开发的特点,说明各自适合的软件类型

2.1、瀑布模型的特点及适合的软件类型 CSDN

2.1.1、特点

  • 阶段间具有顺序性和依赖性

  • 推迟实现的特点

  • 质量保证的观点

2.1.2、适合的软件类型

  • 需求清晰且不变动

  • 软件执行严格地顺序开发

2.2、敏捷开发地特点及适合的软件类型

2.2.1、特点

  • 个体和交互胜过过程和工具

  • 可以工作的软件胜过面面俱到的文档

  • 客户合作胜过合同谈判

  • 响应变化胜过遵循计划

2.2.2、适合的软件类型

  • 项目团队的人数不能太多

  • 项目经常发生变更

  • 高风险的项目实施

  • 开发人员可以参与决策

3、P24第10题:解释IEEE定义的软件构造以及主要内容

3.1、定义

按照指南,术语“软件构造”指的是通过编码、验证、单元测试、集成测试和调试的组合,详细地可创建可工作的,有意义的软件。

3.2、主要内容

  • 软件构造基础

    最小化复杂性,预计变化,为验证构造,复用,构造中的标准。

  • 管理构造

    生存周期模型中的构造,构造计划,构造度量

  • 实际考虑

    构造设计,构造语言,编码,构造测试,为复用构造,用复用构造,构造质量,集成。

  • 构造技术

    API设计和使用,面向对象/实时问题,问题化和通用化,断言,按契约设计,防御性编程,可执行模型,状态和表驱动的构造技术,

    实施配置与国际化,基于文法的输入处理,并发原语,中间件,分布式软件的构造方法,构造异构系统,性能分析与调优,平台标准,测试先行编程。

  • 软件构造工具

    开发环境,GUI,单元测试工具,性能优化、分析和切片工具。

4、P59第5题:模块化的基本原则?如何评价程序模块化?

4.1、模块化的基本原则 CSDN

  • 单一职责原则 即类的职能要单一: 遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使职责P2发生故障风险;同理,当修改T2时,也不会使职责P1发生故障风险

  • 里氏替换原则: 子类对象可以替换父类对象。子类不要增加父类没有的约束。这样会导致父类有些方法不能用。从而不能真正的实现 : 子类对象可以替换父类对象,如果子类重写了父类已实现的方法,那么子类调用的父类的方法就完全没用了,从而不是真正意义上的继承。

  • 依赖倒置原则: 高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。

  • 接口隔离原则: 在设计接口的时候,给每一个接口设计不多不少的方法,因为,如果设计的方法多了,当某个类通过接口来依赖某个类的时候,被依赖的那个类要实现的方法太多了,会造成那个类中大量的代码冗余,不可过少的原因是,接口太多,会让设计变复杂,且不便于管理。

  • 迪米特原则: 低耦合,高内聚,即类A与类B,如果没必要依赖吗,则代码尽量不要耦合,如果这两个类要产生通信,则创建一个中间的通信类C去与这两个类进行交互。但是这样的通信类要适量。

  • 开闭原则: 对实现封闭,对扩展开放。即当一个一个方法需要增加其他的功能,或者代码需要重构的时候,要扩展软件的行为,尽量不要去修改已有的代码。用抽象构建框架,方法的实现来扩展细节。

4.2、如何评价程序模块化

  • 优点:

    • 可维护性高

    • 架构清晰,灵活开发

    • 降低程序耦合性

    • 方便模块功能调试、升级以及模块间的组合分解

  • 缺点:

    • 损耗性能

    • 系统分层,调用链长

    • 模块间通信发送消息很消耗性能

5、P59第6题:解释模块内聚性的含义,对不同内聚进行说明

5.1、模块内聚化的含义(简单理解)

内聚化是指模块内部各成分之间的关联程度

5.2、内聚的分类 CSDN

  • 偶然内聚:指一个模块内的几个处理元素之间没有任何关系。

  • 逻辑内聚:指模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。

  • 时间内聚:把需要同时执行的动作组合在一起形成的模块。

  • 通信内聚:把模块内所有处理元素都在同一个数据结构上操作,或者指各处理使用相同的输入数据或者产生相同的输出数据。

  • 顺序内聚:指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一个功能元素的输出就是下一个功能元素的输入。

  • 功能内聚:是最强的内聚,指模块内所有元素共同完成一个功能,缺一不可。

  • 信息内聚:信息内聚模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。

6、P59第7题:解释模块耦合性的含义,对不同耦合进行说明

6.1、模块耦合性的含义

模块的耦合性是指系统内部与其他模块或者外部世界的关联程度

6.2、耦合的分类 CSDN

按照耦合性从高到低

  • 内容耦合:一个模块直接使用另一个模块的内部数据,或通过非正常入口转入另一个模块内部时,这种耦合关系就是内容耦合。

  • 公共耦合:指一组模块访问一个公共数据环境,如全局数据结构。

  • 外部耦合:指一组模块访问一个公共变量,这里指基本数据类型而不是数据结构(或者说对象)。

  • 控制耦合:指一个模块调用另一个模块时,传递的是控制变量,被调用模块通过该控制变量的值选择执行模块内某一功能。那么也就是说,被调用的模块应具有多个功能。

  • 标记耦合:耦合模块之间以数据结构传递(比如在java程序中,传递的就是一个对象)。

  • 数据耦合:耦合模块之间有调用关系,传递的是简单数据类型的值(比如在java程序中,传递的就是一个基本数据类型的值)。

  • 无直接耦合:指两个模块之间没有直接的关系,它们分别从属于不同模块的控制与调用,它们之间不传递任何信息。

7、P132第3题:什么是防御性编程?有哪些基本技术

7.1、什么是防御性编程 CSDN

防御性编程是一种细致、谨慎的编程方法。

7.2、基本技术

  • 处理错误

  • 使用异常

8、P169第3题:交互设计的8条黄金规则 CSDN

  • 力求一致性 例如网站首页需要和每一个下级页面保持一致的风格,导航都要放在屏幕的左上角,具有高度一致性的界面能给人清晰整洁的感觉。

  • 允许频繁使用快捷键 快捷键表示产品使用的灵活性和有效性,想想每次我们使用搜索引擎的时候是鼠标点击的搜索还是按的回车?

  • 提供明确的反馈 出现错误时要明确说出错误的含义,而且需要考虑用户能否理解,比如我们基本上都遇到过HTTP404错误,但绝大多数人能看懂么?

  • 设计对话,告诉用户任务已完成 要在用户完成某项任务或操作后进行提示。如果他们在做了很多操作后却得不到反馈,他们就无法知道自己是否达成目标。

  • 提供错误预防和简单的纠错功能 例如把某些当前不能点击的按钮设置为灰色,在系统执行时让用户在确认一下

  • 应该方便用户取消某个操作 大多数的应用软件都有撤销和恢复的功能,如果用户总是惧怕一失足成千古恨,那样的用户体验可想而知

  • 用户应掌握控制权 一般而言用户希望自己去控制系统交互,在执行任务中,用户应该可以随时中止或退出,而不是无奈的看着系统继续

  • 减轻用户记忆负担 我们应该尽可能帮助用户避免要求他们记住各种信息,例如各个菜单项之间的逻辑关联,更好的分类就会帮助用户找出哪个功能按钮在什么地方

9、P200第1题:什么是代码重构?代码重构有哪几个时机?

9.1、什么是代码重构(P171)

代码重构就是在不改变软件外部行为的前提下改善它的内部结构

9.2、代码重构的时机(P182)

  • 给程序增量地添加功能时

  • 定位错误时

  • 评审代码时

10、P200第2题:解释代码重构的三个最佳实践

  • 不要为了重构而重构

  • 为理解而做简略重构

  • 不要顾虑复查或者测试对代码的改动

11、大题看第八章(见数据库原理及应用课程)

  • 8
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值