《软件工程》第一章软件工程学概述

  • 格式:docx
  • 大小:41.74 KB
  • 文档页数:12

下载文档原格式

  / 33
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一章软件工程学概述

1.1 软件危机

1.1.1 软件的定义

——定义:软件=“完成特定功能的程序+数据结构+文档”

——特征:(3个)软件是开发的,而不是制造的;软件不磨损,但退化;自定义。

——发展问题

1.1.2 软件危机的表现

——定义:在计算机软件的开发和维护过程中所遇到的一系列严重的问题。

——表现:(6个)

(1)对软件开发成本和进度的估计常常很不准确。

(2)软件产品质量较差,可靠性低。

(3)用户对开发出来的软件产品不满意。

(4)软件常常是不可维护的。

(5)软件产品缺少应有的文档资料。

(6)软件产品的供不应求。

1.1.3 软件危机的原因

——客观原因

——主观原因

1.2 软件工程

1.2.1 软件工程的概念

——定义:指导软件开发与维护的工程科学。采用工程的概念、原理、技术和方法来开发和维护软件,综合运用正确的管理技术和最好的技术方法,以经济

地开发出高质量的软件并有效维护它。

IEEE的定义:①软件工程是把系统的、规范的、可度量的途径应用于软件

开发、运行和维护过程,也就是把工程应用于软件;②对这些途径加以研究。

1.2.2 软件工程的基本原理(7个)

——(1)用分阶段的生命周期计划严格管理

(2)坚持进行阶段评审

(3)实行严格的产品控制

(4)采用现代程序设计技术

(5)结果可以清楚地审查

(6)开发小组成员少而精

(7)承认不断改进软件工程实践的必要性

1.2.3 软件工程方法学:3个要素(方法、工具和过程)

——传统方法学:结构化技术,软件生命周期

——面向对象方法学:类+对象+继承+消息,软件开发过程更接近人类认知模式

1.3 软件生命周期

1.3.1 软件生命周期的概念

——定义:一个软件从定义、开发、使用和维护,直至最终被废弃,要经历的漫长的时期称为软件生命周期。

——构成:3个时期,8个阶段

软件定义:问题定义,可行性研究,需求分析

软件开发:总体设计,详细设计,编码和单元测试,综合测试;

运行维护:软件维护

1.3.2 各阶段的基本任务(8个阶段)

——问题定义:需要解决的问题是什么?书面报告

——可行性研究:确定软件系统是否值得去解《可行性研究报告》

——需求分析:解决这些问题需要系统做什么?《软件需求规格说明书》

——总体设计:应该怎样实现目标系统?《概要设计说明书》

——详细设计:如何具体地实现这个系统?

——编码和单元:写代码,测试每个模块!

——测试、综合测试:通过各类测试和调试来完善软件《测试计划/方案》

——软件维护:通过各种必须的维护活动使系统持久地满足用户的需要。(改正性维护,适应性维护,完善性维护,预防性维护)

1.3.3 软件生命周期的模型

——瀑布模型:广泛采用,顺序严格,文档驱动,执行困难

——原型模型:快速开发原型后,评价反馈、再细化改进,忽略整体设计,

——增量模型:渐进开发,逐步完善,第一个增量很关键

——喷泉模型:面向对象软件开发过程迭代和无缝

——螺旋模型:有效降低风险的渐进式开发模型

第二章可行性研究

2.1 可行性研究的目标与任务

2.1.1 目标:用最小的代价和尽可能短的时间判断问题是否值得去解?

2.1.1 任务:

——技术可行性

——经济可行性

——操作可行性

——社会可行性

2.2 可行性研究过程

(1)复查系统规模与目标

(2)研究目前正在使用的系统

(3)导出新系统的高层逻辑模型

(4)导出与评价各种方案

(5)推荐行动方针

(6)草拟开发计划

(7)书写文档提交审查——《可行性研究报告》

2.3 可行性研究工具

——

系统流程图:表达数据在系统各部件之间流动的情况

程序流程图:对数据进行加工处理的控制过程

2.4 成本/效益分析:从经济角度评价开发一个新的软件工程项目是否可行

——成本估计

……代码行技术

……任务分解技术

……自动估计成本技术

——效益分析:有形效益,无形效益

——常用的效益度量方法

……货币的时间价值

……投资回收期

……纯收入

第三章需求分析

3.1 需求分析的任务和步骤

——需求分析的任务

……确定对系统的综合要求

……分析系统的数据要求

……建立软件的逻辑模型

——确定对系统的综合要求

……功能性需求

……非功能性需求:可用性,可靠性……

——分析系统的数据要求

……数据字典——定义数据

……层次方框图——定义数据结构

——建立软件的逻辑模型:数据流图、数据字典、实体-联系图、主要算法

——编写软件需求规格说明书

——需求分析评审

3.2 需求获取的常用方法(5个)

——访谈

——问卷调查

——观察用户工作流程

——建立联合分析小组

——快速原型法

3.3 需求分析的方法(4个)

——功能分解法:软件需求当做一棵倒置的功能树

——结构化开发方法:结构化分析、结构化设计和结构化程序设计

——信息建模方法:实体-联系图

——面向对象的分析

3.4 结构化分析技术

——思路:基于数据流图自顶向下逐层分解