软件工程复习提纲
Weiliang Huang Lv2

注意:(暂未完善)根据来自于大数据专业画的重点,罗列了相关知识点、部分视频链接和习题,时间仓促,难免有小差错,望联系指正!

一、题型

简答题(30分 5,6个) 分析与设计题(70分)

  1. 简答题:都是比较大的概念,软件的定义、过程模型及各个阶段、敏捷开发、构建和模块、耦合与内聚
  2. 分析设计题:比较活,需求分析、识别用例、用例描述、用例叙述、uml设计、建模、画图的元素要对(实线、虚线、形状)、多写字

二、简答题(暂未完善,注意最小必要概念)

1.软件的定义

  • 软件是计算机系统中与硬件相互依存的另一部分,它包括程序、数据、以及其他文档的完整结合。程序是指可完成预期功能和性能的可执行指令序列;数据是程序能够适当处理信息的程序集合;文档是开发、使用、维护程序所用到的图文资料。

2.过程模型及各个阶段

  • 软件过程模型又叫软件开发模型,它是软件开发全部过程、活动和任务的结构框架。典型的软件过程模型有瀑布模型、增量模型、演化模型(原型模型螺旋模型)、喷泉模型、基于构建的开发模型、形式化方法模型、统一过程模型、敏捷方法等等。

  • 各个阶段:沟通、策划、建模、构建、部署。

3.什么是敏捷开发?(第三章)

  • 总述:以人为核心的、迭代、循序渐进的开发方法。

4.构件和模块(第十章)

  • 构件

    • 系统中模块化的、可部署的、可替换的部件,该部件封装了实现并对外提供一组接口。

    • 三种构件:控制构件、问题与构件、基础设施构件

    • 设计基于类的基本设计原则:

      • 开闭原则(Open-Cloased Principle,OCP):模块(构件)应该对外延具有开放性,对修改具有封闭性。

      • Liskov替换原则:子列可以替换他们的基类。

      • 依赖导致原则:依赖抽象,而非具体实现。

      • 发布/服用等价性原则:复用的粒度就是发布的粒度。

      • 共同封装原则:一同变更的类应该合在一起。

    • 构件级设计指导方针

      • 构件–确定为体系结构模型的一部分之后建立命名约定。

      • 接口–接口提供关于通信和协作的重要信息。

      • 依赖和继承–继承关系自底(导出类)向上(基类),依赖关系通过接口来实现。

    • 实施构建级设计

      • Step1 标识出所有与问题相对应的设计类

      • Step2 确定所有与基础设施域相对应的类

      • Step3 细化所有未作为可复用构件获取的设计类

        • Step3.1 在类或构件写作时说明信息的细节

        • Step3.2 为每个构件确定适当的接口

        • Step3.3 细化属性,并且定义实现属性所需要的的数据类型和数据结构

        • Step3.4 详细描述每个操作中的操作流

      • Step4 描述持久数据源(数据库和文件)并确定管理数据源所需要的类

      • Step5 开发并且细化类或构件的行为表示

      • Step6 细化部署图以提供额外的实现细节

      • Step7 重构每个构件级设计表示,并且总是考虑其他可选方案

5.耦合与内聚

  • 耦合主要描述的是模块与模块之间的关系,内聚则主要描述的是单个模块的内部构成。

  • 内聚:构件只封装那些像话关联密切,以及与构建或类自身有密切关系的属性和操作。

  • 耦合:类之间彼此联系程度的一种定性度量。

三、分析设计题(暂未完善)

比较活,需求分析、识别用例、用例描述、用例叙述、uml设计、建模、画图的元素要对(实线、虚线、形状)、多写字

四、补充一些简答题(未完善)

1.软件生命周期都包含哪些阶段,并简述每个阶段的基本任务

(一)问题定义

  • 关键任务:“要解决的问题是什么”
  • 问题定义报告(文档):通过对客户的访问调查,系统分析员扼要地写出关于问题性质、目标工程和工程规模的书面报告
  • 经过讨论和必要修改之后这份报告必须应得到客户的确认。

(二)可行性研究

  • 关键任务:回答关键问题是:“对于上一个阶段所确定的问题有行的通的解决办法吗?”
  • 在较抽象的高层次上进行的分析和设计过程。
  • 目的:是客户作出是否继续进行这项工程的决定的重要依据
  • 要求:应该比较简短
  • 可行性研究报告(文档):经济(成本效益)、技术(技术可行)、社会(操作公共安全社会道德)
  • 项目开发计划(文档):粗略

(三)需求分析

  • 关键任务:目标系统必须做什么
  • 目的:完整、准确、清晰、具体的建立系统逻辑模型,是以后设计和实现目标系统的基础。
  • 要求:必须准确完整地体现用户的需求
  • 需求规格说明书(重要文档):目标系统需求、最重要的一份文档、软件所有需要做什么、最终用户验收拿此文档比较

(四)总体设计

  • 关键任务:怎样实现目标系统
  • 根据需求设计方案,分析推荐最佳方案,设计软件结构等。
  • 设计程序的体系结构,月就是确定程序有哪些模块组成以及模块之间的关系
  • 总体设计说明书(文档):记录总体设计结果

(五)详细设计

  • 关键任务:该怎样具体实现系统?
  • 设计每个模块的算法和数据结构
  • 详细设计说明书(文档):用适当表达工具表达算法和数据结构

(六)编码和单元测试

  • 关键任务:选择语言、工具翻译详细设计结果、测试模块
  • 实现阶段文档:
    • 1、程序清单
    • 2、单元测试报告

(七)综合测试

  • 关键任务:通过各类型的测试(及相应的调试)是软件达到预定要求
  • 测试报告(文档):测试计划、测试方案、测试结果

(八)软件维护

  • 关键任务:通过各种必要的维护活动使系统持久地满足用户的需求

  • 维护类型:

    • 1、改正性维护:软件运行过程中发现错误进行维护

    • 2、适应性维护:软件运行软件硬件环境变化进行的维护

    • 3、完善性维护:用户要求改进或扩充软件进行的维护

    • 4、预防性维护:为将来的维护作准备

2.硬性软件可维护性的7个因素

可理解性:软件的可理解性是指通过阅读源代码和相关文档,了解软件的功能和如何运行的容易程度。

可测试性:软件的可测试性是指验证软件程序正确的难易程度。

可修改性:软件的可修改性是指修改软件的难易程度。高内聚,低耦合

可靠性:一个软件的可靠性越高,需要维护的概率就会越低。

可移植性:软件运行环境的变化是软件维护的一种常见情形,可移植性好的软件会降低维护的概率。

可使用性:软件的可使用性是指用户使用软件的难易程度。

效率:效率是指软件既能很好地完成用户期望的功能、性能,又不浪费机器资源的程度。

五、相关习题

(点击下载或查看)软工往年试题2018-2019年.pdf



(点击下载或查看)软工往年试题2020-2021年.pdf