软件工程大纲

1. 软件工程基础知识

1.1 软件工程概述

1.1.1 软件生存周期
  • 软件项目计划,参加人员有用户、项目负责人、系统分析师,产生的文档有可行性分析报告、项目计划书。

  • 需求分析和定义,参加人员有用户、项目负责人、系统分析师,产生的文档有需求规格说明书。

  • 软件设计,概要设计和详细设计,参加的人员有软件设计师和程序员,产生的文档有设计规格说明书。

  • 编码,参加的人员有软件设计师和程序员,产生的文档有源程序清单。

  • 测试,参加的人员有软件设计师或者系统分析师承担,产生的文档有软件测试计划和软件测试报告。

  • 运行/维护。

1.1.2 软件开发模型
  • 瀑布模型

    上一阶段完成后才能进入下一阶段,缺乏灵活性,不适合需求不明确的项目。

  • 演化模型

    开发基本原型,对原型进行改进,特别适用于对软件需求缺乏准确性认识的情况。

  • 螺旋模型

    包含了4个方面的活动:制定计划,风险分析,实施工程,客户评估。

  • 喷泉模型

    主要用于描述面向对象的开发过程。开发过程迭代、无间隙。

1.2 软件需求分析

1.2.1 需求分析的任务
  • 确定软件系统的综合要求

    界面要求,功能要求,性能要求,性能要求,安全性、保密性和可靠性方面的要求,系统的运行要求,异常处理要求,将来可能提出的要求。

  • 分析软件系统的数据要求

    包括基本数据元素,数据元素之间的逻辑关系、数据量和峰值。

  • 导出系统的逻辑模型

    结构化分析方法中用数据流图表示,面向对象分析方法中可以用类模型来描述。

  • 修正项目开发计划

  • 如有必要,可开发一个原型系统

1.2.2 软件需求分析方法

大多数的需求分析方法是由数据驱动的。

1.3 软件开发项目管理

  • 成本估算

  • 风险分析

    • ① 风险识别

      产品规模,商业影响,客户特性,过程定义,开发环境,构建的技术,人员数目及经验。

    • ② 风险预测

      建立一个尺度或标准,以反映风险发生的可能性;描述风险的后果;估计风险对项目和产品的影响;标注风险预测的整体精度值,以免产生误解。

    • ③ 风险评估

    • ④ 风险控制

      风险避免,风险监控,风险管理及意外事件计划。

  • 进度管理

    进度安排的常用图形描述方法有甘特(Grantt)图和计划评审技术(program evaluation & review techique , PERT)图。

    • ① Grantt图

      横坐标表示时间(如时、天、周、月、年等),纵坐标表示任务。

      不能反映任务之间的依赖关系。

    • ② PERT图

      不能反映任务之间的并行关系。

  • 人员管理

1.4 软件工具与软件开发环境

1.5 软件过程能力评估

软件产品的质量取决于软件开发过程。

  • 软件过程评估的意义

    • ① 软件过程改进的需要

    • ② 降低软件风险的需要

  • 软件能力成熟度模型

    初始级,可重复级,已定义级,已管理级,优化级

1.6 软件质量管理与质量保证

  • 软件质量特征

    功能性,可靠性,易使用性,效率,可维护性,可移植性

  • 软件质量保证

    软件质量保证包括了与以下7个主要活动相关的各种任务:应用技术方法,进行正式的技术评审,测试软件,标准的实施,控制变更,量度,记录保存和报告。

2. 系统分析基础知识

2.1 系统分析概述

  • 系统分析的目的和任务

系统分析的主要内容有:业务和数据的流程是否通畅,是否合理;数据、业务过程和组织管理之间的关系;原系统管理模型改革和新系统管理方法的实现是否具有可行性。

  • 系统分析的主要步骤:

    • ① 对当前系统进行详细调查,收集数据;

    • ② 建立当前系统的逻辑模型;

    • ③ 对现状进行分析,提出改进意见和新系统应达到的目标;

    • ④ 建立新系统的逻辑模型;

    • ⑤ 编写系统方案说明书。

2.2 结构化分析方法(SA)

SA方法的分析结果由以下几部分组成:一套分层的数据流图、一本数据词典、一组小说明和补充材料。

  • 数据流图(DFD)

基本成分:外部实体,加工,数据存储,数据流

  • 数据词典(DD)

  • 描述加工的结构化语音

2.3 系统分析报告

  • 系统分析报告有以下3个作用:

    • ① 描述了目标系统的逻辑模型,作为开发人员进行系统设计和实施的基础;

    • ② 作为用户和开发人员之间的协议或合同,为双方的交流和监督提供基础;

    • ③ 作为目标系统验收和评价的依据。

  • 系统分析报告应该包括下述内容

    • 组织情况描述;

    • 现行系统描述;

    • 系统逻辑模型;

    • 新系统在各个业务处理环节拟采用的管理方法、算法或模型;

    • 与新的系统相配套的管理制度和运行体制的建立;

    • 系统设计与实施的初步计划;

    • 用户方负责人审批意见。

3. 系统设计知识

3.1 系统设计概述

3.1.1系统设计的内容和步骤
  • 系统设计的主要内容包括新系统总体结构设计、代码设计、输出设计、输入设计、处理过程设计、数据存储设计、用户界面设计和安全控制设计等。

  • 系统设计的基本任务大体上可以分为两个步骤:概要设计,详细设计。

3.1.2 系统设计的原则
  • 抽象

  • 模块化

  • 信息隐蔽

  • 模块独立(耦合和内聚)

3.2 结构化设计方法

3.2.1 信息流类型
  • 变换流

  • 事务流

3.2.2 变换分析
  • 确定输入流和输出流,孤立出变换中心

  • 第一级分解

  • 第二集分解

  • 事务分析

  • SD方法的设计步骤:

    复查并精化数据流图;确定DFD的信息流类型;根据流类型分别实施变换分析或事务分析;根据系统设计原则对程序结构图进行优化。

3.3 系统总体结构设计

3.3.1 系统结构设计原则
  • 分解——协调原则

  • 自顶向下原则

  • 信息隐蔽、抽象原则

  • 一致性原则

  • 明确性原则

  • 模块之间的耦合尽可能小,模块内部组合尽可能紧凑

  • 模块的扇入系数和扇出系数要合理。

  • 模块的规模适当。

3.3.2 子系统划分
  • 子系统划分的原则

    • 子系统要具有相对独立性

    • 子系统之间数据的依赖性尽量小

    • 子系统划分的结果应使数据冗余较小

    • 子系统的设置应考虑今后管理发展的需要

    • 子系统的划分应便于系统分阶段实现

    • 子系统的划分应考虑到各类资源的充分利用

  • 子系统的结构设计

3.3.3 系统模块结构设计
  • 模块的概念

    一个模块应具备以下4个要素:输入和输出;处理功能;内部数据;程序代码。

  • 模块结构图

    • 模块结构设计应遵循如下原则:

      • 模块具有较强的独立性。

      • 模块之间的连接只能存在上下级之间的调用关系,不能有同级之间的横向联系。

      • 整个系统呈树状结构,不允许网状或交叉调用关系出现。

      • 所有模块都必须严格地分类编码并建立归档文件

    • 模块结构图

      • 模块:长方形中间标上能反映模块处理功能的模块名字

      • 调用:箭头总是由调用模块指向被调用模块

      • 数据:带空心圆的箭头表示

      • 控制信息:带实心圆的箭头表示

      • 转接符号:圆圈加标号

3.3.4 数据存储设计

3.4 面向数据结构的设计方法

3.5 系统详细设计

  • 代码设计

  • 输出设计,※输出决定输入

  • 输入设计,输入设计应遵循以下原则:最小量原则,简单性原则,早检验原则,少转换原则

  • 处理过程设计,程序流程图;盒图(NS图);形式语言;决策树;决策表。

  • 用户界面设计,菜单方式;会话管理方式;操作提示方式;操作权限管理方法等。

  • 安全控制设计

  • 系统设计说明书

4. 系统实施知识

4.1 系统实施概述

4.4.1 系统实施的目的和任务
  • 所谓实施指的是将系统设计阶段的结果在计算机上实现,将原来纸面上的新系统方案转换成可执行的应用软件系统。

  • 系统实施阶段的主要任务:

    • 按总体设计方案购置和安装计算机网络系统

    • 软件准备

    • 人力培训

    • 数据准备

    • 投入切换和试运行

4.4.2 系统实施的步骤
  • 按总体设计方案购置和安装计算机网络系统

  • 建立数据库系统

  • 程序设计

  • 收集有关数据并进行录入工作,然后进行系统测试

  • 人员培训、系统转换和试运行。

4.2 程序设计

程序设计的主要依据是系统设计阶段的 HIPO 图以及数据库结构和编码设计。

  • 程序设计方法,结构化方法、原型方法和面向对象方法。

  • 程序设计基本模块,控制模块;输入模块;输出模块;处理模块

  • 程序设计语言的选择

4.3 系统测试与调试

  • 系统测试的意义及目的

  • 测试过程,拟定测试计划;编制测试大纲;根据测试大纲设计和生成测试用例;实施测试;生成测试报告。

4.4 测试策略和测试方法

4.4.1 人工测试
  • 个人复查

  • 抽查

  • 会审

4.4.2 机器测试
  • 黑盒测试(功能测试)

  • 白盒测试(结构测试)

4.4.3 软件测试步骤
  • 单元测试(模块测试)

    单元测试主要从模块的以下5个特征着手进行检查:

    模块接口;局部数据结构;重要的执行路径;出错处理;边界条件。

  • 组装测试(集成测试)

  • 确认测试

    有效性测试;软件配置审查;验收测试

  • 系统测试

    常见的系统测试主要有以下内容:

    恢复测试;安全性测试;强度测试;性能测试;可靠性测试;安装测试。

4.5 调试

调试的任务就是根据测试时所发现的错误,找出原因和具体的位置,进行改正。调试工作主要由程序开发人员来进行。

目前常用的调试方法有如下几种:

试探法;回溯法;对分查找法;归纳法;演绎法

4.6 系统文档

4.7 系统转换

5. 系统运行和维护知识

5.1 系统维护概述

5.1.1 系统可维护性概念
  • 系统的可维护性的评价指标

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

  • 维护与软件文档

    软件文档分为用户文档和系统文档。

  • 软件文档的修改

5.1.2 系统维护的内容及类型

系统维护主要包括硬件设备的维护、应用软件的维护和数据的维护。

软件维护一般有以下几个方面:正确性维护,适应性维护,完善性维护,预防性维护。

5.1.3 系统维护的管理和步骤

5.2 系统评价

5.2.1 系统评价的目的和任务

广义的信息系统评价分成立项评价、中期评价和结项评价。

5.2.2 系统评价的指标

5.3 系统运行管理

5.3.1 运行管理制度
  • 各类机房安全运行管理制度

  • 信息系统的其它管理制度

5.3.2 日常运行管理内容
  • 系统运行情况的记录

  • 审计踪迹

  • 审查应急措施的落实

  • 系统资源的管理

5.3.3 系统软件以及文档管理
posted @ 2024-03-06 14:18  kitsum  阅读(11)  评论(0编辑  收藏  举报