一、绪论

graph LR
    A[绪论] --> A1[软件工程的提出与发展]
    A --> A2[软件开发的本质]

  1. 目的:解决软件危机。
  2. 成果:
    20世纪60年代-80年代初:瀑布模型,C语言,Pascal语言,Jackson方法,结构化方法,支持工具。
    20世纪80年代-:软件生存周期过程,辅助工程CASE,面向对象。
  3. 软件危机的表现:生产效率低、质量低,缺乏原理、原则、方法、管理,超预算,时间拖延,无法满足需求,可维护性查,可靠性差。(背)
  4. 计算机软件的概念:(1)计算机软件一般是指计算机系统中的程序及其文档;(2)程序是计算机任务的处理对象和处理规则的描述;(3)文档是为了理解程序所需的阐述性资料。(4)软件是一个特定问题域的抽象,是一种逻辑实体。(背)
  5. 提出软件工程的目的:倡导以工程的原理、原则、方法进行软件开发,以期解决“软件危机”。(背)
  6. 软件危机的概念:软件生产率、软件质量远远满足不了社会发展的需求,成为社会、经济发展的制约因素。
  7. 软件工程的两个时期:前期研究系统实现技术,后期关注软件质量软件工程管理

  8. 软件系统模型大体分两类:软件模型,概念模型。

  9. 软件模型进一步分为:设计模型,实现模型,部署模型。
  10. 系统模型:系统模型是代建系统的任意抽象,其中包括所有的基本能力、特性或其他方面,没有任何冗余的细节。(背)
  11. 软件开发的本质:实现问题空间的概念和处理逻辑到解空间的概念和处理逻辑之间的映射。实现这一映射的基本途径可采用系统建模。(背)
  12. 软件开发的本质所涉及的问题:(1)技术层面如何实现这样的映射。涉及两方面:过程方向,即求解软件的开发逻辑;过程途径,即求解软件的开发手段。(2)管理层面如何管理这样的映射,以保障映射的有效性和正确性,主要功能包括:软件项目的规划、组织、人员安排、控制、领导。(背)
  13. 系统建模:运用所掌握的知识,通过抽象,给出该系统的一个结构——系统模型。

二、软件需求与软件需求规约

graph LR
    A[软件需求] --> A1[需求概念]
    A --> A2[需求获取]
    A --> A3[需求规约]

  1. 软件需求分为:功能需求(主体),非功能需求。
  2. 接口需求的分类:用户接口,硬件接口,软件接口,通信接口,内存约束,运行,地点需求。
  3. 单个需求必须具有的基本性质:必要的、无歧义的、可测的、可测量的。
  4. 需求分析的三大挑战:问题空间理解,人与人之间的通信,需求的变化性。
  5. 初始发现需求的常用技术:自悟,交谈(提问/回答),观察(可能引起抵触),小组会,提炼(已有文档)。
  6. 验证需求是否正确的技术:自悟、提炼。
  7. 需求规约的定义:需求规约是一个软件项目/产品/系统所有需求陈述的正式文档,它表达了一个软件产品/系统的概念模型。
  8. 软件需求规约的性质:重要性,稳定性,可修改性,完整性(基本),一致性。
  9. 需求规约的三种形式:
    (1)非形式化的需求规约:基于自然语言来编制需求规约。
    (2)半形式化的需求规约:以半形式化符号体系(术语表)等表达需求规约。
    (3)形式化规约:基于良构数学概念符号体系来编制需求规约。
  10. 需求规约在项目开发中的基本作用:
    (1)需求规约是软件开发组织和用户之间一份事实上的技术合同书,是产品功能及其环境的体现;(1分)
    (2)对于项目的其余大多数工作,需求规约是一个管理控制点;(1分)
    (3)对于产品/系统的设计,需求规约是一个正式的、受控的起始点;(1分)
    (4)是创建产品验收测试计划和用户指南的基础,即基于需求规约一般还会产生另外两个文档:初始测试计划和用户系统操作描述。(2分)
  11. 需求规约与项目需求有哪些不同?
    (1)需求规约是软件开发组织和用户之间一份事实上的技术合同书,即关注产品需求,(1分)回答“交付给客户的产品/系统是什么了(1分)。
    (2)项目需求是客户和开发者之间有关技术合同-产品/ 系统需求的理解。(1分)应记录在工作陈述中或其他某一项目文档中,即关注项目工作于管理,(1分)回答“开发组要做的是什么事。(1分)

三、结构化方法

graph LR
    A[结构化方法] --> A1[结构化需求分析]
    A --> A2[结构化设计]

  1. 可以用于描述加工的是:结构化自然语言
  2. 可以用于表示数据的静态结构的是:数据存储
  3. 结构化分析方法用于表达功能模型的工具:DFD图(数据流图、数据流程图)。一般包含数据流数据存储加工数据源数据潭等。
  4. 数据字典中定于数据结构的符号:m…n表示子界{}表示重复
    (1)建立系统环境图,确定系统语境;(1分)
    (2)自顶向下,逐步求精,建立系统的层次数据流图;(2分)
    (3)定义数据字典;(1分)
    (4)描述加工。(1分)
  5. 结构化分析方法建模步骤:建立系统 -> 建立层次 -> 定义字典 -> 加工。
  6. 数据流图中,椭圆表示加工,双横线表示数据存储,方框表示数据源。
  7. 在结构化分析方法中,可采用结构化自然语言判定表判定树描述加工。
  8. 结构化分析方法中,数据的变换单位是加工
  9. 事务流程图中,一个事务可以被另一个事务吸食,称为事务吸收
  10. 数据字典中,所有客体均可用顺序结构选择结构重复结构三种基本结构表示。
  11. 结构化方法中,软件中具有特定标识的独立成分是模块
  12. 结构化方法包括:结构化分析方法结构化设计方法结构化程序设计方法