实用软件工程(张海藩)复习笔记

  • Post author:
  • Post category:其他





软件工程复习


(内容有出入,某些按自己理解简写)





1-2章

软件工程概述,可行性研究及需求分析

  1. 软件工程三要素:

    方法、过程和工具

  2. 软件工程研究的内容:

    方法与技术、工具与环境、管理技术、标准与规范

  3. 软件危机的主要原因是:

    软件本身的特点以及开发方法

  4. 软件生命周期:

    可行性研究,需求分析,软件设计,编码,软件测试,软件维护

  5. 软件生命周期模型:

    瀑布模型 模型简单,执行容易,但无法适应变更
    快速原型模型 完成的功能往往是最终产品能完成的功能的子集
    增量模型 将待开发的软件系统模块化和组件化
    螺旋模型 每个阶段前增加一个风险分析
    喷泉模型 体现面向对象软件开发过程迭代和无缝的特性
  6. 软件过程是软件开发活动的集合。

  7. 数据流图(DFD)是进行软件需求分析的常用工具,基本的图形符号是

    加工、数据流、数据存储和外部实体。

  8. 在需求分析中建模方法:

    数据流图(DFD),状态转换图(STD),实体关系图(ER),控制流图(CFD)

  9. 需求分析中主要描述手段:

    DFD,数据字典,加工说明

  10. 软件工程需求分析阶段:

    分析系统的数据要求,确定系统的功能需求,确定软件系统的性能要求

  11. 需求分析的主要方法有

    结构化分析方法(SA)

    ,考虑

    数据和处理

    的需求分析。

  12. 软件需求规格说明书的内容包括:

    对重要功能的描述,对数据的要求,软件的性能

  13. 需求规格说明书不可以作为

    软件可行性研究

    的依据。

  14. 软件危机的主要表现是

    软件产品的质量低劣,开发生产软件效率低下



第3-5章   软件设计,编码实现,测试和维护


  1. 面向数据流的软件设计模式可将

    数据流

    映射软件结构。

  2. 软件模块的独立性由

    内聚性和耦合性

    来衡量:

    内聚性:模块的功能强度(模块内各元素之间彼此结合得紧密程度)

    耦合性:模块间相连程度的度量。

    ​ 在软件设计时,应该提高模块的内聚程度,

    高内聚低耦合



    耦合程度

    小 —>大 : 数据,控制,公共,内容。

  3. Jackson方法是根据

    数据结构

    导出程序结构。

  4. 在面向数据流的软件设计方法中,一般将信息流分为

    变换流和事务流


  5. 软件实现



    软件设计

    的结构翻译成一种程序设计语言的代码。

  6. 软件测试的目的是为了发现软件的错误(

    找出软件中所有的错误是不可能的


  7. 白盒

    法又称为

    逻辑覆盖

    法,主要用于单元测试。

    ​ 白盒测试要对系统

    内部结构



    工作原理

    有一个清楚的了解。

    ​ 白盒测试有多种技术:代码检查法,基本路径测试,逻辑覆盖测试。

    ​ 白盒测试是根据程序的 内部逻辑 来设计测试用例的。

  8. 黑盒测试又称为

    功能测试

    ,主要关注功能的实现。

    ​ 黑盒测试又分为:等价类划分法,边界值分析法,错误推断法,因果图法,决策表法,场景法等。

  9. 下面给出黑盒测试与白盒测试的差别。

    黑盒测试 白盒测试
    不涉及程序结构 考察程序逻辑结构


    软件规格说明书

    生成测试用例


    程序结构信息

    生成测试用例
    可适用于从单元测试到系统验收测试 主要适用于单元测试和集成测试
    某些代码段得不到测试 对所有逻辑路径进行测试


    用户

    观点测试


    管理者角度

    测试
  10. 成功的测试需要在运行测试用例

    发现程序的错误

  11. 软件集成测试交给

    不属于该软件开发组的软件设计人员

    承担,可以提高集成测试的效果。

  12. 集成测试的主要方法有:渐增式测试方法,非渐增式测试方法。

  13. 软件测试的目的是

    尽可能

    发现软件中的错误,通常

    单元测试

    是代码编写阶段可进行的测试,它是整个

    测试工作的基础

  14. 单元测试不能完成的测试是

    系统功能

  15. 软件维护的副作用—

    修改软件而造成的错误

    (Bug越改越多)

  16. 影响软件可维护性的主要因素:

    可修改性,可测试性,可理解性

  17. 测试用例由

    输入数据



    预期输出结构

    两部分组成。


  18. 功能测试



    系统测试

    的主要内容,检查系统的功能、性能是否与需求规格说明相同。

  19. 划分模块虽然可以降低软件设计的复杂性和工作量,但是会增加软件成本。

  20. 软件设计说明书

    不是

    软件概要设计的主要成果。



第6-7章   面向对象和UML,面向对象软件设计和实现


  1. 面向对象技术中,对象是

    类的实例

    ,对象有三种成分:

    封装,属性,方法

  2. 面向对象特征:

    多态性,继承性,封装性,对象唯一性,抽象性。

  3. 面向对象模型主要包括: 对象模型(o)、动态模型(d)、功能模型(f)。


  4. 封装

    把对象的属性和操作结合在一起,构成一个独立的对象。

    内部信息对外界隐藏,外界只能通过接口与对象发生联系。

  5. 关联是建立



    之间的关系。

  6. 所有的对象可以成为各种对象类,每个对象类都定义了一组

    方法

  7. 通过执行对象的操作可以改变独享的属性,但它必须通过

    消息

    的传递。

  8. UML是软件开发中的一个重要工具,它主要应用于

    基于对象的面向对象方法

  9. UML图:

    • 用例图
    • 静态图:类图,对象图
    • 行为图:状态图,活动图
    • 交互图:顺序图,协作图
    • 实现图:构件图,部署图
UML 图 功能
用例图 从用户使用系统的角度描述系统功能的图形表达方法
类图 表达系统类及其相互联系的图(面向对象设计的核心)
对象图 对象是类的实例,对象间连接是类之间关联的实例
状态图 描述一个特定对象的所有可能状态和引起状态转换的事件
顺序图 描述对象之间的动态交互关系,着重表现对象间消息传递的

时间顺序
活动图 活动图描动作及动作间关系
协作图 描述相互协作的对象间的交互关系和链接关系
构件图 描述软件构件间的依赖关系
部署图 描述处理器、硬件设备和软件构件运行时的构架
  1. 面向对象分析首先要建立

    问题的对象模型

  2. 面向对象分析阶段建立的模型中,核心是

    对象

    (生活中也是)。

  3. 面向对象的动态模型中,每张状态图表示

    某一个类

    的动态行为。

  4. 动态模型着重于系统的逻辑控制,它包括

    事件追踪图



    状态图

  5. 对象模型的描述工具是

    对象图

  6. 功能模型中的

    数据流图(DFD)

    ,往往形成一个层次结构。

  7. 面向对象设计阶段的主要任务是

    系统设计



    对象设计

  8. 只有类的共有界面的成员才能成为使用类的操作,这是软件设计的

    信息隐藏

    原则。

  9. 对象的

    属性集合

    是它的特征表示。

  10. 面向对象程序设计语言不同于其他语言的主要特点是

    继承性

  11. 面向对象的测试与传统测试方法的主要区别是

    测试对象不同

  12. 面向对象分析与设计活动是一个多次

    反复迭代

    的过程。



第8章  软件工程管理


  1. 软件工程针对维护工作的主要目标是:提高软件的可维护性,降低维护的工作量。


  2. 度量

    的作用是为有效地、定量地进行软件工程过程管理。

  3. LOC和FP是两种不同的估算技术 ,两者对分解所需要的

    详细程度

    不同。

  4. 风险管理过程:

    规划,识别 ,评估

  5. 按照人家配置管理的原始指导思想,受控制的对象应该是

    软件配置项

  6. 常用的评估软件质量的因素:

    可理解性,可靠性,可维护性

  7. 基线是通过了

    正式复审



    软件配置项

    (基线形成前可以快速修改)。

  8. 使用软件时提出增加新功能就必须进行

    完善性

    维护。

  9. 软件文档不仅是软件开发各阶段的重要依据,也影响软件的可维护性。

  10. 影响软件维护的主要因素:

    可修改性,可测试性,可理解性

  11. CMM表示

    软件过程成熟度模型

    (Capability Maturity Model Integration)。


  12. 代码行技术

    是比较简单的估算软件规模的方法。



前面没有提到的一些重点问题


  1. 敏捷软件开发过程的核心价值观:
  • 个体与交互胜于流程与工具

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

  • 客户协作胜于合同谈判

  • 响应变化胜于遵循计划

  1. 如何理解需求分析的作用和重要性。 需求分析的难点在哪里?
  • 作用:避免需求中的错误,高效发开软件。

  • 重要性:能减少软件开发费用,提高软件质量,确保软件开发的正常进行。

  • 难点:

    • 用户和开发人员间存在交流障碍
    • 用户对需求的陈述不完整
  1. 简述结构化分析方法的基本思想,其建模方法有哪些?
  • 基本思想: 对于一个复杂的系统,按照其内部数据的流动和处理过程,采用“抽象”和“分解”的手段,首先“抽象”得到系统的高层逻辑模型,之后采用自顶向下逐步求精的方法,对系统逻辑模型逐层不断“分解”细化,直到不能再细化为止,即可得到系统最底层的详细逻辑模型。对系统结构化分析的成果通常采用数据流图和数据字典来表示。
  • 建模方法:数据流图(DFD),状态转换图(STD),实体关系图(ER),控制流图(CFD)。
  1. 简述软件设计的 7 条启发式规则?
  • 改进软件结构提高模块独立性
  • 模块规模应该适中
  • 深度、宽度、扇出和扇入应适当
  • 模块的作用域应该再控制域之内
  • 降低模块结构的复杂度
  • 设计单出入口的模块
  • 模块功能应能预测
  1. 要形成良好的编码风格可以从哪些方面做起?
  • 程序内部文档
  • 数据说明
  • 语句构造
  • I/O
  • 效率
  1. 在选择编程语言时,要考虑哪些因素?
  • 项目的应用范围
  • 用户的要求
  • 软件开发人员的爱好和能力
  • 系统的可移植性要求
  • 算法和数据结构的复杂性
  • 平台支持
  1. 面向对象设计的准则?
  • 模块化

  • 抽象

  • 信息隐藏

  • 弱耦合

  • 强内聚

  • 可重用

    1. 简述面向对象测试策略的特点。
    • 面向对象的单元测试
    • 面向对象的集成测试
    • 面向对象的确认测试
  1. 目前项目开发时常用的小组组织方法有哪些?
  • 民主制程序员组
  • 主程序员组
  • 现代程序员组。
  1. 简述软件文档的意义?合格的软件工程文档的特性?
  • 意义:在软件开发工作中具有突出的地位和相当的工作量。
  • 特性:

    • 及时性
    • 完整性
    • 实用性
    • 规范性
    • 结构化
    • 简洁性
  1. 什么是软件质量?软件质量保证措施有哪些?
  • 软件质量:软件与明确地和隐含地定义的需求相一致的程度。
  • 措施:

    • 正式技术复审
    • 程序正确性证明
  1. 什么是模块化?模块化有什么好处?
  • 模块化:开发具有独立功能而且和其他模块之间没有过多的相互作用的模块。
  • 好处:

    • 有效模块化的软件容易开发
    • 容易测试和维护



一些习题


  • 旅行社把预订机票的旅客信息(姓名、年龄、单位、身份证号码、旅行时间及目的地等)输入机票预订系统。系统为旅客安排航班,打印出取票通知单(附有应付的账款)。旅客在飞机起飞的前一天凭取票通知单交款取票,系统检验无误,输出机票给旅客。

    请画出系统的顶层数据流图、0 层数据流图。

在这里插入图片描述

  • 某高校学籍管理系统用于各个学院对每一位学生的入学、毕业、每学期考试成绩、升留级等事项进行处理,包括录入学生基本信息、存储学生基本情况例如,学生各科成绩等;查询学生各科成绩、单科成绩;打印学生名单、学生成绩单;统计班平均成绩、各科平均成绩;根据分数进行升留级处理等功能。 具体描述:

    学籍管理系统细分为录入、存储处理、查询处理,升留级处理和统计处理。

    (1)录入、存储处理首先对学生信息进行审查,如果是新生,则录入、存储新生的信息。并写入学生记录文件;否则,从学生成绩文件中读该学生的各科成绩,输出学生记录表及成绩单。

    (2)查询处理接收学生学号和课程号,并进行有效性检查,如无效,则拒绝接受;否则按照查询要求从学生成绩文件中读取成绩并打印成绩单。

    (3)升留级处理接收学生成绩,并从成绩标准文件中读取信息,判断该学生是否升级,形成升留级名单,并更新学生记录。

    (4)统计处理接收学生记录,根据统计选择进行班平均成绩和各科平均成绩的统计,形成相应的统计表。

    请画出该学籍管理系统的三层数据流图。

在这里插入图片描述

  • 某高校学生档案管理系统的主要功能有:

    (1)对学生档案信息的增加、删除和修改;

    (2)对学生信息的查询和打印;

    (3)对学生信息的统计和打印;

    (4)此外,本系统还应该能与其它系统共享部分数据。

    请画出此系统的顶层数据流图、0 层数据流图。

在这里插入图片描述

  • 某高校学生档案管理系统的主要功能有:

    (1)对学生档案信息的增加、删除和修改;

    (2)对学生信息的查询和打印;

    (3)对学生信息的统计和打印;

    (4)此外,本系统还应该能与其它系统共享部分数据。

    请设计出学生档案管理软件的系统结构图。

    在这里插入图片描述

  • 在自动饮料售货机中,除了买饮料的顾客,还有以下活动者:

    (1) 供应商,向自动饮料售货机添加饮料

    (2) 收银员,从自动饮料售货机收钱。

    后面两类人在使用自动饮料售货机时,都涉及打开和关闭该机器。请画出它们的用例图。

在这里插入图片描述

某校图书管理系统具有以下功能:

(1)借书:先为读者办理借书证,借书证上记录读者姓名、学号、所属系和班级等信息。

借书时根据读者的借书证查阅读者档案,若借书数目未超过规定数量,则办理借阅手续,修

改库存记录及读者档案;若超过规定数量则不予借阅。

(2)还书:根据读者书中的条形码,修改库存记录及读者档案,若借阅时间超过规定期限

则罚款。

(3)图书管理员还要定期生成订书清单,包括书名、图书代号、单价、数量等,根据需要

向供应商订购图书。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gEepZtWk-1605532629335)(C:\Users\77010\AppData\Roaming\Typora\typora-user-images\image-20201116193252020.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-32C8dxet-1605532629335)(C:\Users\77010\AppData\Roaming\Typora\typora-user-images\image-20201116193310618.png)]



版权声明:本文为Aatroy原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。