南京工程学院 实用软件工程 复习总结

第一章

第一节

  1. 软件危机特征,表现:软件产品质量低劣,软件生产率低下
  2. 软件工程的目标:以较少的投资获取高质量的软件
  3. 软件工程分为两大类技术:软件开发技术,软件管理技术

第二节

  1. 软件包括程序和文档
  2. 软件按功能划分:系统软件、支持软件、应用软件
  3. 软件的生命周期 (时期阶段输出)
    屏幕捕获_2022_05_16_14_03_36_904
  4. 软件工程三要素:方法,工具,过程

第三节

  1. 软件开发模型(软件过程模型)

    1. 瀑布模型(结构化)(记住输出)

      屏幕捕获_2022_05_16_14_08_29_560

      优点:比较容易管理

      缺点:不适用于需求不明确的情况

    2. 增量模型,非整体开发模型

      优点:比较灵活

      缺点:容易盲目乐观和无限循环

    3. 原型模型是循环模型(解答题)

      适用于前沿的开发,可能导致忽略一些功能

    4. 螺旋模型是瀑布模型和增量模型的结合,加入了风险分析,适用于大型开发,风险度高的软件开发

    5. 喷泉模型,面向对象

    6. 智能模型(结构化)

第四节

  1. 结构化开发方法:
    1. 结构化程序设计方法 SP (structured program)
    2. 结构化设计方法 SD(structured design)
    3. 结构化分析方法 SA(structured analysis)
  2. 面向对象的开发:
    1. OOA (Object-Oriented Analysis)面向对象的分析
    2. OOD (Object-Oriented Design) 面向对象的设计
    3. OOP (Object-Oriented Program) 面向对象的程序设计
  3. 敏捷软件开发:以为核心

作业判断题10RCP,RSP划掉不看

第二章

第一节

  1. 软件需求的困难:

    1. 应用领域的广泛性
    2. 非功能性需求建模技术的缺乏
    3. 沟通上的困难
  2. 软件需求的分类

    image-20220517092959362

    划分为两类是用户需求和系统需求

    三类是功能需求、非功能需求和领域需求

第二节

  1. 需求工程的过程(图重要):

    image-20220517093215061

第三节

  1. 软件需求难以获取的原因
    1. 缺乏领域知识
    2. 存在默认的知识
    3. 存在多个知识源
    4. 客户可能的偏见
  2. 需求抽取的方法(和特点):
    1. 面谈法:简要而直接,简单的需求获取技术。
    2. 问卷调查法: 是对面谈法的补充
    3. 需求专题讨论会(最有效,最有力):有利于培养高效团队
    4. 原型化方法:对于试验性、探索性的项目效果好,强调开发人员与用户的不断交互
    5. 面向用例的方法:从用户角度来观察和分析系统应该具有的功能

第四节

  1. 画dfd图(数据流图)(大题

    用文字写出:实体,处理,数据存储,数据流

    再去画图,方便给分

  2. SA法(结构化分析方法)的基本思想:分解和抽象

  3. SA法的描述方法有哪些:

    1. DFD图(最重要)
    2. 数据词典
    3. 结构化语言,判定表和判定树
  4. 数据流图基本符号

    image-20220517094918931
  5. 面向对象的分析方法,Use case图画法

    1. 识别执行者
    2. 识别用例
    3. 识别用例和用例的关系

第四章

  1. 需求验证的内容
    1. 有效性检查
    2. 一致性检查
    3. 完备性检查
    4. 可验证性检查
  2. 需求管理最重要的是需求变更管理

第五节

  1. DFD图例子,参考ppt2.5。DFD图要求顶层和一层

  2. DFD图的基本原则

    1. 数据守恒和数据封闭原则
    2. 加工分解原则
    3. 子图和父图平衡
    4. 合理使用文件
  3. 数据词典条目

    1. 数据流条目
    2. 文件条目
    3. 数据项条目
    4. 加工条目
  4. 如何画use case 模型

    image-20220517100123269

作业

  1. 加工小说明针对dfd
  2. 判定表可以描述组合条件
  3. dfd图需求分析阶段

第三章

第二节 软件体系结构设计

以下优缺点了解

  1. 仓库模型:利于大数据的共享(最大的特点)
    1. 优点:
      1. 数据由一个子系统产生,并且被其他一些子系统共享
      2. 共享数据能得到有效的管理,各子系统之间不需要通过复杂的机制来传递共享数据。
      3. 一个子系统不必关心其他的子系统是如何使用它产生的数据的。
      4. 所有的子系统都拥有一致的基于中央数据仓库的数据视图。
    2. 缺点:
      1. 各子系统必须有一致的数据视图
      2. 一个子系统发生了改变,它产生的数据结构也可能发生改变。为了其他共享的目的,数据翻译系统会被用到。但这种翻译的代价是很高的
      3. 中央数据仓库和各子系统拥有的数据库必须有相同的关于备份、安全、访问控制和恢复的策略
      4. 集中式的控制使数据和子系统的分布变得非常困难甚至成为不可能。
  2. 层次模型:如SOA网络7层模型,tcp/ip 4层模型
    1. 适合增量的软件开发
  3. 分布式模型 C/S B/S
    1. 优点
      1. 资源共享
      2. 开放性高
      3. 可伸缩性好
      4. 容错能力强
      5. 透明性高
    2. 缺点
      1. 复杂性
      2. 安全性(难以保证)
      3. 可管理性(困难)
      4. 不可预知性,主要指系统的响应时间
  4. 云计算模型:
    1. 三种服务模式:软件即服务(SaaS),平台即服务(PaaS),基础架构即服务(IaaS)
    2. 部署模型
      1. 公有云
      2. 私有云
      3. 混合云
    3. 雾计算适用于大数据共享
  5. 模块
    1. 划分:目的是将系统分而治之,不是越细越好
    2. 特点,划分原则:低耦合(数据耦合),高内聚(功能内聚)

第三节

  1. OOA
  2. OOD
  3. OOP

第四节

  1. 详细设计描述工具中常用的描述方法工具:
    1. 程序流程图
    2. N-S图
    3. PAD图
    4. PDL语言
    5. 判定表,判定树

第五节

  1. 用户界面设计的任务
    1. 建立用户模型
    2. 建立任务模型
    3. 确定用户界面类型
  2. 用户界面设计的原则(判断题,不背,了解)
    1. 争取保持一致性。
    2. 满足普遍可用性的需求。
    3. 提供信息反馈。
    4. 设计对话框已产生结束信息。
    5. 预防错误。
    6. 允许动作回退。
    7. 支持内部控制点。
    8. 减轻短期记忆负担。
  3. 不要用颜色表示信息

第六节

  1. MVC:
    1. M:模型
    2. V:视图
    3. C:控制器

第四章

第一节

  1. OOA,OOD,OOP以对象为中心构造系统

第二节

  1. UML:统一建模语言

第三节

  1. use case模型:
    1. 确定执行者:人、硬件、系统
    2. 确定用例:功能
    3. 用例之间的关系,extend ,include
    4. 可以看ppt后面的例子,练一练画图

第四节 静态模型

  1. 类之间的关系:

    1. 关联关系

      1. 常规关联
      2. 多元关联
      3. 有序关联
      4. 受限关联
      5. 或关联
      6. 关联类
    2. 聚集关系(会区分

      1. 共享聚集:松散的,空心菱形表示
      2. 组合聚集:紧密的聚集,实心菱形表示
    3. 泛化关系

      1. 例子记住:

        image-20220517111758079

        overlapping,disjoin 有交集/无交集

        complete/incomplete 完全泛化/不完全泛化

  2. 包图

    1. UML包又称为子系统

    2. 包与包之间的关系

      1. 依赖关系

        image-20220517112221278
      2. 泛化关系:表示通用包和专用包的关系(不叫父包和子包)

        image-20220517112230923

第五节 动态建模(重要)

  1. 消息

    1. 简单消息
    2. 同步消息
    3. 异步消息
  2. 状态图

    1. 状态

      1. 初态

      2. 终态

      3. 中间状态

      4. 复合状态

        image-20220517112626289
    2. 事件(了解)

      1. 某条件为真
      2. 收到来自外部对象的信号
      3. 收到来自外部对象的某个操作中的员工调用
      4. 状态迁移上的时间表达式
    3. 例子:

      image-20220517193331229
      image-20220517193359453
  3. 顺序图

    1. 虚线表示生命线(或时间轴)

    2. 矩形表示被激活

    3. 例子:

      image-20220517193518307
  4. 活动图

    1. 同步线

      image-20220517192400453
    2. 泳道(用于区分对象)

      image-20220517192334142
  5. 合作图

    1. 阿拉伯数字有先后顺序

    2. 字母没有先后顺序

    3. 例:

      image-20220517195822205
  6. 以上四种图要会画

第六节

  1. 实现模型
    1. 构件图:逻辑结构
    2. 配置图:物理结构

总结

  1. UML静态建模:
    1. 用例图
    2. 类图
    3. 对象图
    4. 包图
    5. 构件图
    6. 配置图
  2. 动态建模:
    1. 状态图
    2. 顺序图
    3. 合作图
    4. 活动图

第五章

第一节

  1. 区分语言
    1. 低级语言:包括机器语言和汇编语言
    2. 高级语言:其他
  2. 语言选择准则(了解)(能说2-3点)
    1. 项目的应用领域、
    2. 算法和计算复杂性
    3. 算法和计算复杂性
    4. 性能因素
    5. 数据结构的复杂性
    6. 软件开发人员的知识水平以及心理因素

第六节

  1. 软件复用不是代码复用
  2. 软件复用包括:测试信息的复用,分析结果的复用,测试结果的复用,代码的复用
  3. 可复用构建标准
    1. 功能上的独立性与完整性
    2. 较高的通用性
    3. 较高的灵活性
    4. 严格的质量保障
    5. 较高的标准化程度

第六章 软件测试

第一节

  1. 软件测试的基本原则
    1. 尽量不由程序设计者进行测试
    2. 关键是注重测试用例的选择
    3. 充分注意测试中的群集现象
  2. 软件测试方法分类:静态分析,动态测试
  3. 静态分析
    1. 桌前检查
    2. 代码会审
    3. 步行检查
      1. 调用图
      2. 数据流分析图
  4. 动态测试方法
    1. 白盒法:分析内部逻辑结构
    2. 黑盒法:分析外部特性(功能)

第二节 白盒法

  1. 白盒法测试用例选择覆盖标准由弱到强为:

    语句覆盖,判定覆盖,条件覆盖,判定条件覆盖,条件组合覆盖

    条件覆盖包含语句覆盖,不包含判定覆盖

    条件组合覆盖包含所有的

  2. 会选择测试用例(见ppt)

第三节 黑盒法

  1. 黑盒法包括

    1. 等价分类法
    2. 边值分析法
    3. 错误推测法
    4. 因果图法
  2. 等价分类法

    1. 关键是划分等价类
    2. 一个测试用例可能覆盖多个有效等价类
    3. 一个测试用例只能覆盖一个无效等价类
  3. 边值分析法

    记住四个例子:

    image-20220517202643567
  4. 因果图法,会画

    image-20220517203131343
    image-20220517203147640
    image-20220517203159103
    image-20220517202856646

第四节 软件测试的策略

  1. 软件测试的策略包括:
    1. 单元测试
    2. 集成测试
    3. 确认测试
    4. 系统测试
  2. 单元测试
    1. 模块
      1. 驱动模块:模拟主查询
      2. 桩模块:子程序
    2. 白盒法主要用在单元测试,其他测试以黑盒法为主
  3. \alpha测试是由开发机构和用户完成的
  4. \beta测试是用户完成的

第六节 面向对象的测试

  1. <u>面向对象的测试特点主要反应在测试对象和内容的不同</u>
  2. 面向对象的测试的特点:
    1. 可以在没有代码的情况下进行测试,全周期的,需求和设计也是可以测试的
  3. 面向对象的测试策略(注意和[软件测试策略](# 第四节 软件测试的策略)的区别)
    1. 模型测 试
    2. 类测试
    3. 交互测试
    4. 系统测试
    5. 验收和发布测试

第七章 软件维护

第一节

  1. 运维的四种类型
    1. 完善性维护(最重要)
    2. 纠错性维护
    3. 适应性维护
    4. 预防性维护
  2. 维护的副作用
    1. 修改代码的副作用
    2. 修改数据的副作用
    3. 修改文档的副作用

第四节

  1. 软件可维护性包括(了解)
    1. 可理解性
    2. 可靠性:正确执行的概率
    3. 可测试性
    4. 可修改性
    5. 可移植性
    6. 效率
    7. 可使用性:易于使用(和可靠性区分)

第五节

  1. 逆向工程抽取包括
    1. 过程抽取
    2. 界面抽取
    3. 数据抽取
  2. 抽取是逆向工程的核心

第八章 软件项目管理

第二节

  1. 进度计划的工具(记)
    1. 进度表
    2. 甘特图
    3. 时标网状图
    4. PERT和CPM
  2. 其中时标网状图和PERT和CPM包含任务之间的逻辑依赖关系

第三节

  1. cocomo模型
    1. 基本的cocomo模型
    2. 中间的cocomo模型:进一步考虑了15种影响软件工作量的因素
    3. 详细的cocomo模型

第四节 人力资源(这一章重要)

  1. 团队成员3类
    1. 事业型
    2. 自我实现型
    3. 交际性
  2. 增强团队凝聚力的方法
    1. 拥有内部标准
    2. 成员更紧密地工作在一起
    3. 成员能了解彼此的工作
    4. 能做到无私编程:程序是团队而非个人财产
  3. 人员配备的原则:
    1. 重质量
    2. 重培训
    3. 阶梯提升
  4. 选择评价人员的条件(了解即可,会选)
    1. 应用领域经验
    2. 开发经验
    3. 教育背景
    4. 适应能力
    5. 沟通能力
    6. 工作态度
    7. 个性、
  5. 团队成员的去留(了解,会选)
    1. 尊重个人选择
    2. 满足成员合理的个人需求
    3. 满足成员的社会需求
    4. 加大团队建设的力度
    5. 要有剜肉剔骨的决心(去重团队负能量)

第五节 风险管理

  1. 风险分类

    1. 项目风险

    2. 技术风险

    3. 商业风险

第六节 质量保证

  1. 软件质量因素(了解)

    image-20220518200301902
  2. 度量方法(划出来)

    1. 精确度量
    2. 全面度量
    3. 简易度量

第七节 配置管理

  1. CRF(Change Request Form) :变更提案表
  2. CCB(Change Control Board): 变更控制委员会

第九章

第一节

  1. CMM(Capability Maturity Model For Software): 软件能力成熟度模型
  2. CMM主要用于(主要功能):
    1. 软件过程评估SPA(Software Process Assessment)
    2. 软件过程改进SPI(Software Process Improvement)
    3. 软件能力评价SCE(Software Capability Evaluation)
  3. 软件过程的成熟度等级(要求会分级)(按照关键字分类)
    1. 初始级(不稳定)
    2. 可重复级
    3. 已定义级(组织标准)
    4. 已管理级(指令目标,追求高质量)
    5. 优化级(持续改善)

第二节 CMM结构

  1. 三个层次:
    1. 关键过程域
    2. 公共特性
    3. 关键实践

题型总结

  1. 单项
  2. 多选
  3. 填空
  4. 判断
  5. 简答
  6. 综合(DFD,用例图,动态建模4图,白盒测试)

补:会画:DFD图、判定表和判定树

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容