第1章 软件工程的内容与方法

合集下载

《软件工程实用教程》第1章软件工程引论

《软件工程实用教程》第1章软件工程引论
軟體工程實用教程
第1章 軟體工程引論
本章學習內容: 1.掌握軟體的定義與特點 2.軟體危機以及軟體危機產生的原因 3.掌握軟體工程的定義、目標和原則 4.瞭解軟體工程的研究內容與對象 5.理解學習軟體工程的意義
第1章 軟體工程引論
1. 1 軟體及軟體危機
1.1.1 軟體及其特性 1.軟體 :是由電腦程式的發展而形成的一 個概念。它是與電腦系統操作有關的程 式、規程、規則及其文檔和數據的統稱。
第1章 軟體工程引論
1. 3 軟體工程的基本原則
1 .採用分階段的生命週期計畫,以實現對專 案的嚴格管理 2.堅持進行階段評審,以確保軟體產品品質 3 .實行嚴格的產品控制,以適應軟體規格的 變更 4.採用現代程式設計技術 5.軟體結果應能清楚地審查 6.開發小組人員應該少而精 7.承認不斷改進軟體工程實踐的必要性
第1章 軟體工程引論
(2)軟體工具
工具類別
專案管理工具 軟體分析工具
舉例
專案規劃編輯器、用戶需求跟蹤器、 軟體版本管理器 數據字典管理器、分析建模編輯器
軟體設計工具
程式處理工具 軟體測試工具
用戶介面設計器、軟體結構設計器、 代碼框架生成器 程式編輯器、程式編譯器、程式解釋 器、程式分析器 測試數據生成器、根源程式調試器
第1章 軟體工程引論
2.軟體工程的目標 軟體開發成本較低; 軟體功能能夠滿足用戶的需求; 軟體性能較好; 軟體可靠性高; 軟體易於使用、維護和移植; 能按時完成開發任務,並及時交付使用。
第1章 軟體工程引論
3.軟體工程的研究內容與對象
第1章 軟體工程引論
4.軟體工程技術 (1)軟體工程方法 結構化方法 面向數據結構方法 原型化方法 面向對象的方法 形式化方法等

软件工程第1章电子教案

软件工程第1章电子教案

1.3 软件工程的概念
•返回目录
1.3.3 软件工程学的范畴 软件工程学所研究的主要内容包括:软件开发技术和
软件工程管理两个方面。其中:软件开发技术包含: 1、软件开发方法学 2、软件工具 3、软件工程环境 4、软件工程管理
软件工程第1章电子教案
1.4 软件生存周期及软件开发模型
主要教学内容: 1.4.1 软件生存周期 1.4.2 软件生存周期模型 1.4.3 瀑布模型(Waterfall model) 1.4.4 演化模型(evolutional model) 1.4.5 螺旋模型(spiral model) 1.4.6 智能模型(intelligence model)
•返回目录
软件工程的方法、工具、过程构成了软件工程的三要素。 软件工程的目标可概括为:在给定成本、进度的前提下, 开发出具有可修改性、有效性、可靠性、可理解性、可 维护性、可重用性、可适应性、可移植性、可追踪性和 可互操作性并满足用户要求的软件产品。
•图1.2 软件工程目标之间的关系
软件工程第1章电子教案
•返回目录
类别 微型 小型 中型 大型
甚大型
极大型
表1.1软件规模的分类
参加人员数
研制期限
1
1~4周
产品规模(源程序行数) 0.5k
1
1~6月
1k~2k
2~5
1~2年
5k~50k
5~20
2~3年
50k~100k
100~1000
4~5年
1M(=1000k)
2000~5000
5~10年
1M~10M
软件工程第1章电子教案
1.4 软件生存周期及软件开发模型 •返回目录
1.4.2 软件生存周期模型 软件生存周期模型是从软件项目需求定义直至软件经

第1章软件工程和软件测试概述

第1章软件工程和软件测试概述
9
1.1软件工程概述- 软件工程
• 1968年北大西洋公约组织的计算机科学家在联邦 德国召开国际会议,讨论软件危机问题,在这次 会议上正式提出并使用了“软件工程”这个名词。 • 软件工程是指导计算机软件开发和维护的一门工 程学科,它是采用工程的概念、原理、技术和方 法来开发与维护软件,把经过时间考验而证明正 确的管理技术和当前能够得到的最好的技术方法 结合起来,以经济地开发出高质量的软件并有效 地进行维护。
• 实际问题的复杂性 实际问题的复杂性 • 程序逻辑结构的复杂性 程序逻辑结构的复杂性
5
1.1软件工程概述- 软件的分类
• 按软件的功能进行划分: 按软件的功能进行划分:
– 系统软件
• • • • • • • • • 操作系统 数据库管理系统 设备驱动程序 通信处理程序等
– 支撑软件
文本编辑程序 文件格式化程序 磁盘向磁带向数据传输的程序 程序库系统 支持需求分析、设计、实现、 支持需求分析、设计、实现、测试和支持管理的软件
• 软件是计算机系统中与硬件相互依存的另一部
它是包括程序 及其相关文档 分,它是包括程序,数据及其相关文档的完整集 它是包括程序,数据及其相关文档的完整集 其中: 合。其中:
– 程序 程序(instructions)是按事先设计的功能和性能要求 是按事先设计的功能和性能要求 执行的指令序列 – 数据 数据(data)是使程序能正常操纵信息的数据结构 是使程序能正常操纵信息的数据结构 – 文档 文档(documents)是与程序开发,维护和使用有关的 是与程序开发, 是与程序开发 图文材料
– 问题定义 – 可行性研究 – 需求分析
18
1.1软件工程概述-软件开发时期
• 开发时期具体设计和实现在前一个时期定 义的软件,它通常由下述4个阶段组成

软件工程第01章

软件工程第01章

教学目的:1. 了解软件、软件危机等概念2. 掌握软件工程的定义、原理、目标和原则教学重点:软件工程的定义、原理、目标和原则教学难点:软件工程的目标和原则第一章软件与软件工程1.1 软件(Software)1.1.1 软件与软件的组成程序设计语言三种类型:1.机器语言、汇编语言:依赖于机器,面向机器2.高级语言:独立于机器,面向过程或面向对象3.面向问题语言:独立于机器,非过程式语言(4GL)文档(document)—一种数据媒体和其上所记录的数据。

文档记录软件开发活动和阶段成果,具有永久性,可供人或机器阅读。

文档可用于专业人员和用户之间的通信和交流;软件开发过程的管理;运行阶段的维护。

1. 软件的特点软件是逻辑产品,硬件是物理产品。

特点:(1)软件开发更依赖于开发人员的业务素质、智力、人员的组织、合作和管理。

软件开发、设计几乎都是从头开始,成本和进度很难估计。

(2)软件存在潜伏错误,硬件错误一般能排除。

(3)软件开发成功后,只需对原版进行复制。

(4)软件在使用过程中维护复杂:1)纠错性维护—改正运行期间发现的潜伏错误;2)完善性维护—提高或完善软件的性能;3)适应性维护—修改软件,以适应软硬件环境的变化;4)预防性维护—改进软件未来的可维护性和可靠性。

(5)软件不会磨损和老化。

2. 软件的发展第一阶段——20世纪60年代中期以前,软件开发处于个体化生产状态。

在这一阶段中,软件还没有系统化的开发方法。

目标主要集中在如何提高时空效率上。

第二阶段——从20世纪60年代中期到70年代末期。

软件开发已进入了作坊式生产方式,即出现了“软件车间”。

软件开发开始形成产品。

到20世纪60年代末,“软件危机”变得十分严重。

第三阶段——从20世纪70年代中期到20世纪80年代末期。

软件开发进入了产业化生产,即出现了众多大型的“软件公司”。

在这一阶段,软件开发开始采用了“工程”的方法,软件产品急剧增加,质量也有了很大的提高。

第1章-软件工程学概述1-1

第1章-软件工程学概述1-1

• 软件用后不磨损
• 随着时间的推移,应用程序
的某些部分可能会变得不再 相关(例如,需求改变时), 而需要修改
• 但是,没有备件的概念
1.1、软件的定义
硬件和软件故障率曲线
由于副作用造成 故障率的提高 原来的软件已经面目全非了!
故障率

磨损后
生命初期
修改
硬件的故障率曲线 实际曲线
软件故障率的理想曲线
1.2、软件危机
软件危机案例
3 . 软件产品的质量靠不住 [案例]:
ARIANE 5 火箭 1996 年6 月,耗资70 亿美元,发射
本章内容
1.1、软件的定义 1.2、软件危机 1.3、软件工程 1.4、软件生存期 1.5、软件过程
1.2、软件危机
软件危机
Crisis!
“软件危机”(Software crisis) 的出现是由于软件的规模越来越大,复杂 度不断增加,软件需求量增大。而软件开 发过程是一种高密集度的脑力劳动,软件 开发的模式及技术不能适应软件发展的需 要。致使大量质量低劣的软件涌向市场, 有的花费大量人力财力,而在开发过程中 就夭折。
时间
1.1、软件的定义
硬件和软件故障率曲线的比较
软件不会用坏(wear out).
软件会退化( deteriorate)!
1.1、软件的定义
软件的特点-7
要求

软件产品不允许误差
软件产品的高质量取决于好的设计( High quality is achieved through) 依赖于人(Depend on people) 需要对产品进行构造(Require the construction of a “product”)

第1章软件工程学概述

第1章软件工程学概述
36
(3)软件经常变化 (4)开发软件的效率非常重要 (5.) 和谐地合作是开发软件的关键 (6.) 软件必须有效地支持它的用户 开发软件的目的就是支持用户的工作,满足 用户对软件的需求 (7. )在软件工程领域中通常由具有一种文 化背景的人替具有另一种文化背景的人创 造产品
37
软件工程的研究内容
软件是计算机系统中与硬件(hardware)相互依存 的另一部分,与硬件合为一体完成系统功能。 软件定义包括如下几点: (1)功能和性能的指令集(即程序); (2)程序能正常操纵信息的数据结构(即相关数 据); (3)与程序开发维护和使用有关的各种图文数据 (即说明文档)。
16
软件=程序+数据+相关文档
软件的发展主要经历了以下3个发展阶段:
第一阶段(20世纪50年代初期至20世纪60年 代中期) 特点:(1)称为程序设计阶段 (2)软件生产以个体化为主 (3)编写程序的工具只有低级语言 (4)软件规模小,几乎没有系统化的 标准可循
11
(5)软件由软件使用者自己开发和编写,适 合个人应用 (6)没有“软件”概念,对于程序有关的文 档的重要性认识不足,开发主要围绕硬件 进行 (7)工程规模小,使用工具单一,开发者之 间没有明确分工 第二阶段(20世纪60年代中期至70年代末期) 称程序系统阶段
7
ENIAC诞生于二战时期,最初是作为辅助炮兵计 算炮弹轨迹的工具,在盟军登陆西欧前一年开始 制造,但直到1945年停火时还没完成。在冷战初 期军方就发现了ENIAC的大量用途,它的17468 根真空管被用来测试氢弹的早期设计的可行性。 这台计算机每秒能执行5000条指令,在当时的情 况下它的运算速度比电动式计算机快1000倍。当 然,现在iPhone 6每秒能响应250亿条指令。

软件工程电子教案--第1章

山西大学商务学院教案2010—2011学年第二学期
课程名称软件工程
授课对象08计科GB3、GB4、DB10
授课教师刘忠宝
教材版本软件工程张海藩等著
第 3 页
第 4 页
2、面向对象方法学
概括地说,面向对象方法具有下述四个要点:
·对象:把对象(Object)作为融合了数据及在数据上的操作行为的统一的软件
构件。

面向对象程序是由对象组成的,程序中任何元素都是对象,复杂对象由比
较简单的对象组合而成。

·类:把所有对象都划分成类(Class)。

每个类都定义了一组数据和一组操作,
类是对具有相同数据和相同操作的一组相似对象的定义。

数据用于表示对象的静
态属性,是对象的状态信息,而施加于数据之上的操作用于实现对象的动态行为。

·继承按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类
组成一个层次结构的系统(也称为类等级)。

·联系对象彼此之间仅能通过发送消息互相联系。

对象的所有私有信息都被封
装在该对象内,不能从外界直接访问,这就是通常所说的封装性。

面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式,使
开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,从而使
描述问题的问题空间(也称为问题域)与实现解法的解空间(也称为求解域)在结构
上尽可能一致。

第 5 页
第 6 页
第7 页
第8 页
第9 页
第10 页
第11 页。

软件工程第1章 软件工程综述

中型 软件、大型软件。
4. 按服务对象划分:通用软件、定制软件。
软件发展历程
1. 程序设计时代(20世纪50年代):软件发展早 期, 计算机主要用于科学或工程计算,软件则是 为某种特定型号的计算机而专门配置的程序。
2. 程序系统时代(20世纪60年代):由于软件需 求不断增长, “软件作坊”在这个时期出现了, 伴随着“软件作坊”还产生出了具有一定通用性 的软件产品。
软件工程基本原则
围绕工程设计、工程支持以及工程管理已提出了 以下四条基本原则:1、选取适宜的开发模型;2、 采用合适的设计方法;3、提供高质量的工程支 撑;4、重视软件工程的管理。
美国著名软件工程专家勃姆(B.W.Boehm)经过总结, 提出了以下7条软件工程的基本原理,即:(1) 采用分阶段的生命周期计划严格管理,(2)坚 持进行阶段评审,(3)实行严格的产品控制; (4)采用现代程序设计的技术;(5)结果应能 够清楚地审查;(6)开发队伍应该少而精;(7) 承认不断改进软件工程实践的必要性。
对象彼此间仅能通过发送消息互相联系。
面向对象方法学基本原则
尽量模拟人类习惯的思维方式,使开发软件的 方法与过程尽可能接近人类认识世界、解决问 题的方法与过程,从而使描述问题的问题空间 (也称为问题域)与实现解法的解空间(也称为求解 域)在结构上尽可能一致。
面向对象方法学
优点: 降低了软件产品的复杂性,提高了软件的可
采用生命周期方法学可以大大提高软件开发的成功率,软 件开发的生产率也能明显提高。
目前,传统方法学仍然是人们在开发软件时使用得十分广 泛的软件工程方法学。
5. 主流工程方法学
面向对象方法学则是目前的主流方法学,包括面 向对象分析(OOA)、面向对象设计(OOD)与 面向对象实现(OOA),可对整个软件生命周期 提供方法学支持。其以实体为基本元素,如:类 体、对象,并可使程序系统基于现实实体构建, 更加接近现实环境。

软件工程导论重点内容

第一章软件工程概述重点掌握的内容:软件和软件工程的基本概念一.什么是软件1.满足功能要求和性能的指令或计算机程序集合;2.处理信息的数据结构;3.描述程序功能以及程序如何操作和使用所要求的文档;软件的特点:软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性;软件是通过人们的智力活动,把知识与技术转换成信息的一种产品,是在研制、开发中被创造出来的在软件运行和使用的期间,没有硬件那样的机械磨损、老化问题软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同程度的依赖性软件的开发至今尚未完全摆脱手工的开发方式软件的开发费用越来越高,成本相当昂贵;二.软件危机以及产生软件危机的原因1.软件开发生产率提高的速度,远远跟不上计算机迅速普及的趋势;软件产品“供不应求”;2.软件成本在计算机系统总成本中所占的比例逐年上升;3.软件开发人员和用户之间的信息交流往往很不充分,用户对“已完成的”的软件系统不满足的现象经常发生;4.软件产品的质量不容易保证;5.软件产品常常是不可维护的;6.软件产品的重用性差,同样的软件多次重复开发;7.软件通常没有适当的文档资料;产生软件危机的原因可归结为两个重要的方面:软件生产本身存在的复杂性;软件开发所使用的方法和技术;三、软件危机1、软件危机定义:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题;2、软件危机的两个主要问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件;3、软件危机的典型表现:1对软件开发成本和进度的估计常常很不准确;2用户对“已完成的”软件系统不满意的现象经常发生;3软件产品的质量往往靠不住;4软件常常是不可维护的;5软件通常没有适当的文档资料;6软件成本在计算机系统总成本中所占的比例逐年上升;7软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势;软件工程1、软件工程定义:软件工程是指导计算机软件开发和维护的一门工程学科;采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地、高效的开发出高质量的软件并有效地维护它,这就是软件工程;软件工程准则可以概括为7条基本原则:用分阶段的生命周期计划严格管理;坚持进行阶段评审实行严格的产品控制采用现代程序设计技术应能清楚地审查结果合理安排软件开发小组的人员承认不断改进软件工程实践的必要性3、软件工程方法学,三要素:方法、工具和过程4、软件生命周期概念、三时期,八阶段软件生命周期由软件定义、软件开发和运行维护也称为软件维护3个时期组成;软件定义时期通常进一步划分成3个阶段,即问题定义、可行性研究和需求分析;软件开发时期分为4阶段:总体设计、详细设计、编码和单元测试、综合测试五、软件开发模型:软件开发模型是跨越整个软件生存周期的系统开发、运作、维护实施的全部工作和任务的结构框架;1瀑布模型采用结构化的分析与设计方法,将逻辑实现与物理实现分开;特点阶段的顺序性和依赖性规范化推迟实现的观点系统化质量保证阶段评审存在问题不适合需求模糊的系统需求的迷糊性和不确定性适用于操作系统、编译系统、数据库管理系统等系统软件的开发快速原型模型:所谓快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集;快速原型模型的第一步是快速建立一个能反映用户主要需求的原型系统,让用户在计算机上试用它,通过实践来了解目标系统的概貌3增量模型:是瀑布模型的顺序特征与快速原型法德迭代特征相结合的产物;这种模型把软件看成一系列相互联系的增量,在看法过程的各次迭代中,每次完成其中的一个增量;4喷泉模型5微软过程六、思考:你认为“软件就是程序”这一个观点正确吗如果不正确,请批驳之;1.请从以下几个方面结合自己的经验实例加以论述;软件就是程序的观点是不正确的,因为软件等于程序加文档加数据;1文档是软件的一个非常重要的组成部分,在软件的开发过程中起着非常重要的作用;2在软件开发的每一个阶段都应有相应的文档;它是开发人员与用户以及开发人员与项目管理人员之间交流的媒介3文档是软件在不同阶段的表现形式;4程序与文档必须一致,文档才有价值;5文档质量直接决定软件质量的高低;6文档也是软件测试和维护的依据;在没有文档或文档不全的情况下对大型软件进行测试与维护是不可思议的事情;7文档是软件可重用的依据;2、有人说:软件开发时,一个错误发现得越晚,为改正它所付出的代价就越大;对否请解释你的回答;答:对,第二章可行性研究重点掌握的内容:可行性研究的系统流程图一般内容:可行性研究的任务和步骤,成本效益分析一、可行使研究:1、可行性研究的任务:是用最小的代价在尽可能短的时间内确定问题是否能够解决;一般来说,应从经济可行性、技术可行性、运行可行性、法律可行性和开发方案等方面研究可行性可行性研究的目的:在明确了所要研究问题定义之后,分析员应该在明确目标系统所有限制和约束的前提下,去确定该问题是否值得去解决;或就是用最小代价在尽可能短的时间内确定问题是否能够解决;2、可行性研究过程:1)复查系统规模和目标2)研究目前正在使用的系统3)导出新系统的高层逻辑模型4)进一步定义问题5)导出和评价供选择的解法6)推荐行动方针7)草拟开发计划8)书写文档提交审查3、系统流程图的定义和作用:可行性研究对现有系统做概括的物理模型描述,如用图形工具表示则更加直观简洁;系统流程图是描绘物理系统的传统工具,它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件程序、文件、数据库、表格、人工过程等;系统流程图表达的是部件的信息流程,而不是对信息进行加工处理的控制过程;在可行性研究过程中,利用系统流程图来描述所建议系统的物理模型;4、数据流程图的定义和作用:数据流程图有两个特征:抽象性和概括性;抽象性指的是数据流程图把具体的组织机构、工作场所、物质流都去掉,只剩下信息和数据存储、流动、使用以及加工情况;概括性则是指数据流程图把系统对各种业务的处理过程联系起来考虑,形成一个总体5、数据流程图的组成元素数据流图可以用来抽象地表示系统或软件;它从信息传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程,同时可以按自顶向下、逐步分解的方法表示内容不断增加的数据流和功能细节;因此,数据流图既提供了功能建模的机制,也提供了信息流建模的机制,从而可以建立起系统或软件的功能模型;6、数据流程图的组成:外部实体外部实体是指系统之外的人或单位,它们和本系统有信息传递关系数据流,处理、数据存储;如何绘制数据流程图1识别系统的输入和输出,画出顶层图2画系统内部的数据流、加工与文件,画出一级细化图3加工的进一步分解,画出二级细化图4其它注意事项7、数据流程图的注意点1每个处理都必须有流入的数据流和流出的数据流,如果没有,是错误的;数据守恒2每个数据存储应该有流入的数据流和流出的数据流,如果缺了一种,是Warning的;缺两种就错了;3、数据流只能在处理与处理、数据存储或者外部实体之间流动;、数据存储到数据存储、外部实提到外部实体、外部实提到数据存储之间的数据流都是错误的;4、一个处理可以细分成多个子处理,分成若干个层次均匀分解5、良好命名系统流程图与数据流程图有什么区别答:1系统流程图描述系统物理模型的工具,数据流程图描述系统逻辑模型的工具;2系统流程图从系统功能的角度抽象的描述系统的各个部分及其相互之间信息流动的情况;3数据流程图从数据传送和加工的角度抽象的描述信息在系统中的流动和数据处理的工作状况;三、数据流图:1、组成符号:4中基本图形符号正方形、圆角矩形、开口矩形2、数据流图的基本要点是描绘“做什么”,而不是考虑“怎么做”;3、一套分层的的数据流图由顶层、底层、和中间层组成;4、画分层数据流图基本原则与注意事项:a.自外向内,自顶向下,逐层细化,完善求精;b.保持父图与子图的平衡;也就是说,父图中某加工的输入数据流中的数据必须与它的子图的输入数据流在数量和名字上相同;c.保持数据守恒;也就是说,一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者是通过该加工能产生的数据;d.加工细节隐藏;根据抽象原则,在画父图时,只需画出加工和加工之间的关系,而不必画出各个加工内部的细节;e.简化加工间关系;在数据流图中,加工间的数据流越少,各加工就越相对独立,所以应尽量减少加工间输入输出数据流的数目;f.均匀分解;应该使一个数据流中的各个加工分解层次大致相同;g.适当地为数据流、加工、文件、源/宿命名,名字应反映该成分的实际意义,避免空洞的名字;h.忽略枝节;应集中精力于主要的数据流,而暂不考虑一些例外情况、出错处理等枝节性问题;i.表现的是数据流而不是控制流;j.每个加工必须既有输入数据流,又有输出数据流.在整套数据流图中,每个文件必须既有读文件的数据流又有写文件的数据流,但在某一张子图中可能只有读没有写或者只有写没有读;小结:一个软件系统,其数据流图往往有多层;如果父图有N个加工Process,则父图允许有0~N张子图,但是每张子图只能对应一张父图;在一张DFD图中,任意两个加工之间可以有0条或多条名字互不相同的数据流;在画数据流图时,应该注意父图和子图的平衡,即父图中某加工的输入输出数据流必须与其输入输出流在数量和名字上相同;DFD信息流大致可分为两类:交换流和事务流;9、数据字典1.数据字典是在数据流程图的基础上,对数据流程图中的各个元素进行详细的定义与描述,起到对数据流程图进行补充说明的作用;2.数据字典的内容包括:数据流、数据流分量即数据元素、数据存贮、处理逻辑和外部实体;3.数据字典的作用是什么对用户来讲,数据字典为他们提供了数据的明确定义;对系统分析员来讲,数据字典帮助他们比较容易修改已建立的系统逻辑模型;数据字典的实现:P4910、成本效益分析:成本/效益分析的目的是要从经济角度分析开发一个特定的新系统是否可行,从而帮助使用部门负责人正确地做出是否投资与这项开发工程的决定;几种度量效益的方法:货币的时间价值、投资回收期、纯收入第三章需求分析一、重点掌握的内容那:需求分析的方法和面向数据流的分析方法二、一般掌握的内容:需求分析的任务和原则三知识点:1、为什么要做需求分析可行性分析研究阶段已经粗略的描述了用户的需求,甚至还提出了一些可行的方案,但是,许多细节被忽略了,在最终目标系统中是不能忽略、遗漏任何一个微小细节的,所以,可行性研究不能代替需求分析;2、需求分析的方法:需求分析方法由对软件的数据域和功能域的系统分析过程及其表示方法组成,它定义了表示系统逻辑视图和物理视图的方式,大多数的需求分析方法是由数据驱动的,也就是说,这些方法提供了一种表示数据域的机制,分析员根据这种表示,确定软件功能及其特性,最终建立一个待开发软件的抽象模型,即目标系统的逻辑模型;3、需求分析的任务:它的基本任务是准确地回答“系统必须做什么”这个问题;需求分析所要做的工作是深入描述软件的共能和性能,确定软件设计的限制和软件同其它系统元素的接口细节,定义软件的其它有效性需求;需求分析的任务不是确定系统如何完成它的工作,而是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求;其实现步骤如下图所示:一般说来需求分析阶段的任务包括下述几方面:1)确定对系统的综合需求对系统的综合需求主要有:系统功能需求、系统性能需求、可靠性和可用性需求、错处理需求、接口需求、约束、逆向需求、将来可能提出的需求:2)分析系统的数据需求就是在理解当前系统“怎样做”的基础上,抽取其“做什么”的本质,明确目标系统要“做什么”,可以导出系统的详细的逻辑模型;具体做法:首先确定目标系统与当前系统的逻辑差别;然后将变化部分看作是新的处理步骤,对功能图一般为数据流图及对象图进行调整;最后有外及里对变化的部分进行分析,推断其结构,获得目标系统的逻辑模型;通常用数据流图、数字字典和主要的处理算法描述这个逻辑模型;3)导出系统的逻辑模型4)修正系统开发计划在经过需求分析阶段的工作,分析员对目标系统有了更深入更具体的认识,因此可以对系统的成本和进度做出更准确地估计,在此基础上应该对开发计划进行修正;5开发原型系统:使用原型系统的主要目的是,使用户通过实践获得关于未来的系统将怎样为他们工作的更直接更具体的概念,从而可以更准确地提出他们的要求;4、需求分析的步骤:1调查研究2分析与综合3书写文档4需求分析评审5、需求分析的原则:1、必须能够表达和理解问题的数据域和功能域2、按自顶向下、逐层分解问题3、要给出系统的逻辑视图和物理视图6、软件需求的验证:需求分析阶段的工作结果是开发软件系统的重要基础,大量统计数字表明,软件系统中15%的错误起源于错误的需求;为了提高软件质量,确保软件开发成功,降低软件开发成本,一旦对目标系统提出一组要求之后,必须严格验证这些需求的正确性;一般说来,应该从下述4个方面进行验证:1一致性所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾;2完整性需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能;3现实性指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的;对硬件技术的进步可以做些预测,对软件技术的进步则很难做出预测,只能从现有技术水平出发判断需求的现实性;4有效性必须证明需求是正确有效的,确实能解决用户面对的问题;7、状态转换图:指明了作为外部事件结果的系统行为;为此,状态转换图描绘了系统的各种行为模式称为“状态”和在不同状态间转换的方式;状态转换图是行为建模的基础;思考:利用DFD图进行需求分析:在结构化分析方法中,用以表达系统内数据的运动情况的工具有A;供选择的答案:A.数据流图B.数据词典C.结构化英语D.判定表与判定树在结构化分析方法中用状态―迁移图表达系统或对象的行为;在状态―迁移图中,由一个状态和一个事件所决定的下一状态可能会有A个;供选择的答案:多个D.不确定五、总体设计概要设计重点掌握的内容:概要设计的过程和方法一般掌握的内容:概要设计的文档和评审考核知识点:一、总体设计:1、总体设计的目的:总体设计的基本目的就是回答“概括地说,系统应该如何实现”这个问题,因此,总体设计又称为概要设计或初步设计;1、面向结构设计SD2、面向对象设计OOD2、总体设计的任务:1系统分析员审查软件计划、软件需求分析提供的文档、提出最佳推荐方案,用系统流程图,组成物理元素清单,成本效益分析,系统的进度计划,供专家沈顶峰,审定后进入设计2去顶模块结构,划分功能模块,将软件功能需求分配给所划分的最小单元模块;确定模块之间的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略;3编写概要设计说明书,用户手册,测试计划,选用相关的软件工具来描述软件结构,结构图是经常使用的软件描述工具;选择分解功能与划分模块的设计原则,例如模块划分独立性原则,信息隐蔽原则等3、总体设计过程通常由两个主要阶段组成:系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件结构;4、典型的总体设计过程包括下述9个步骤:1、设想功选择的方案2、选取合理的方案3、推荐最佳方案4、功能分解5、设计软件6、设计数据库7制定测试计划8、书写文档:系统说明、用户手册、测试计划、详细的实现计划、数据库设计结果;9、审查和复审二、设计原理分析模块化,在模块化程序设计中,按功能划分模块的原则是,模块化和软件成本关系:模块具有输入和输出参数传递、功能、内部数据结构局部变量和程序代码四个特性1、模块化:就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求.2、模块化的根据:把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了. 模块化和软件成本关系:根据总成本曲线,每个程序都相应地有一个最适当的模块数目M,,使得系统的开发成本最小.3、模块设计的准则:1改进软件结构,提高模块独立性:在对初步模块进行合并、分解和移动的分析、精化过程中力求提高模块的内聚,降低藕合;2模块大小要适中:大约50行语句的代码,过大的模块应分解以提高理解性和可维护性;过小的模块,合并到上级模块中;3软件结构图的深度、宽度、扇入和扇出要适当;一般模块的调用个数不要超过5个;4尽量降低模块接口的复杂程度;5设计单入口、单出口的模块;6模块的作用域应在控制域之内;4、抽象的概念:抽出事务的本质特性而暂时不考虑它们的细节.5、信息隐蔽:模块中所包括的信息不允许其它不需这些信息的模块调用信息局部化:是把一些关系密切的软件元素物理地放得彼此靠近6、什么是模块独立性答:模块独立性概括了把软件划分为模块时要遵守的准则,也是判断模块构造是不是合理的标准;7、模块独立性:是软件系统中每个模块只涉及软件要求的具体子功能,而和软件系统中的其它的模块接口是简单的;模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果;8、为什么模块的独立性很重要答:1有效的模块化的软件比较容易开发出来2独立的模块比较容易测试和维护;总之,模块独立是好设计的关键,而设计又是决定软件质量的关键环节;9、衡量模块独立的两个标准是什么它们各表示什么含义10、答:衡量模块的独立性的标准是两个定性的度量标准:耦合性和内聚性;1耦合性;也称块间联系;指软件系统结构中各模块间相互联系紧密程度的一种度量;模块之间联系越紧密,其耦合性就越强,模块的独立性则越差;模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息;2内聚性;又称块内联系;指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量;若一个模块内各元素语句之间、程序段之间联系得越紧密,则它的内聚性就越高;耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础;模块的高内聚、低耦合的原则称为模块独立原则,也称为模块设计的原则;10、启发规则:1)改进软件结构提高模块独立性2)模块规模应该适中3)深度、宽度、扇出、、和扇入都应适当深度表示软件结构中控制的层数,它往往能粗略地标志一个系统的大小和复杂程度;宽度是软件结构内同一个层次上的模块总数的最大值;一般来说,宽度越大系统越复杂;对宽度影响最大的因素是模块的扇出;一个模块的扇入是指直接调用该模块的上级模块的个数;一个模块的扇出是指该模块直接调用的下级模块的个数;设计原则:低扇出、高扇入;4)模块的作用域应该在控制域内5)力争降低模块接口的复杂程度6)设计单入口和单出口的模块7)模块功能应该可以预测三、概要设计的方法:1、面向数据流的设计方法把信息流映射成软件结构,信息流的类型决定了映射的方法;面向数据流的设计要解决的任务,就是上述需求分析的基础上,将DFD图映射为软件系统的结构;2、数据流图的类型:交换型结构和事务型结构交换型结构:由3部分组成,传入路径,变换中心,输出路径系统的传入流经过变换中心的处理,变换为系统的传出流;事务型结构:有至少一条接受路径,一个事务中心与若干条动作路径组成;当外部信息沿着接受路径进入系统后,经过事务中心获得某个特定值,就能据此启动某一条动作路径的操作;四、结构化设计1、结构化设计方法:是一种面向数据流的设计方法,中心任务就是把用DFD图表示的系统分析模型转换为软件结构的设计模型,确定软件的体系结构域接口;2、结构化方法的步骤:1复审DFD图,必要时刻再次进行修改或细化:2鉴别DFD图所表示的软件系统的结构特征,确定它所代表的软件结构是属于变换型还是事务型;3按照SD方法规定的一组规则,吧DFD图转换为初始的SC图;变换型DFD图初始SC图事务型DFD图初始SC图3、结构设计的优化规则:1对模块分割、合并和变动调用关系的指导规则:以提高模块独立性为首要标准,除此之外,适当考虑模块的大小;2保持高扇/入低扇出原则3作用域/控制域规则:作用域不要超出控制域的范围;软件系统的判定,其位置离受它控制的模块越近越好;六、详细设计重点掌握的内容:详细设计的任务和方法一般掌握的内容:详细设计的原则和详细设计的规格与评审。

第1章软件工程的内容与方法


第1章 软件工程的内容与方法
▪ 本章对软件、软件工程、软件工程学科体系、软 件工程课程进行了定义。
▪ 本章提出了“面向过程方法、面向对象方法、面 向元数据方法、形式化方法”的软件工程方法论, 以及“面向流程分析、面向元数据设计、面向对 象实现、面向功能测试、面向过程管理”的“五 个面向”软件工程实践论。
实用软件工程
(第3版)
1
美丽的北师大珠海分校(1)
校园黎明静悄悄-估
▪ 1. 教材:赵池龙 杨林主编著,《实用 软件工程(第3版) 》,电子工业出版社, 2011。
▪ 2. 成绩评估:期末开卷笔试占总成绩的 60%左右。平时课堂表现及小考试占总 成绩的40% 左右。
4
8
▪ 2.软件定义 ▪ 为了弄清软件工程的概念,首先要了解程
序和软件的概念。程序是计算机为完成特 定任务而执行的指令的有序集合。站在应 用的角度可以更通俗地理解为: ▪ 面向过程的程序 = 算法 + 数据结构 ▪ 面向对象的程序 = 对象 + 消息 ▪ 面向构件的程序 = 构件 + 构架 ▪ 通常,软件有以下定义: ▪ 软件 = 程序 + 数据 + 文档
▪ 1996年,出现了统一建模语言UML 0.9版,称软 件管理文档为“管理制品”,称软件开发文档为 “技术制品”,两者合称为“制品 (Artifact)”。
12
▪ 3.文档的重要性 ▪ 文档在软件工程中特别重要,文档是否规范与齐
全,是衡量软件企业是否成熟的重要标志之一。 ▪ 软件文档分为开发文档和管理文档两大类。开发
件任务书》。
14
▪ 管理文档本身具有严格的时序关系,这种 时序关系反映在如下的软件过程之中,而 过程由一系列的时间序列所组成的:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件工程作用的具体表现
在选择开发工具上,软件工程的基本观点是: 在选择开发工具上,软件工程的基本观点是:工 具不是越新越好,而是你越熟悉越好; 具不是越新越好,而是你越熟悉越好; 在风险评估上,软件工程的基本观点是: 在风险评估上,软件工程的基本观点是:任何项 目组都存在技术风险和技能风险; 目组都存在技术风险和技能风险; 在项目策划上,软件工程的基本观点是: 在项目策划上,软件工程的基本观点是:需求分 析在前,项目策划在后; 析在前,项目策划在后; 在开发进度上,软件工程的观点是:宁愿慢些, 在开发进度上,软件工程的观点是:宁愿慢些, 也要保证软件的质量; 也要保证软件的质量; 在开发质量上,软件工程的观点是: 在开发质量上,软件工程的观点是:质量蕴涵于 开发过程之中,而不是过程之后; 开发过程之中,而不是过程之后;
1.1 软件工程的定义
Computer:由硬件和软件组成。 Computer:由硬件和软件组成。 硬件:是看得见、摸得着的电子机械设备块。 硬件:是看得见、摸得着的电子机械设备块。 软件:是依附在硬件上面的程序、数据和文档的集合, 软件:是依附在硬件上面的程序、数据和文档的集合, 是指挥控制计算机系统(包括硬件和软件) 是指挥控制计算机系统(包括硬件和软件)工作的神经 思维中枢。 思维中枢。
1.3 软件的开发方法
到目前为止,共有 种软件开发方法 种软件开发方法: 到目前为止,共有4种软件开发方法: (1).面向过程的方法 面向过程的方法 (2).面向数据的方法 面向数据的方法 (3).面向对象的方法 包括面向业务基础平台的方法、 面向对象的方法(包括面向业务基础平台的方法 面向对象的方法 包括面向业务基础平台的方法、 面向工作流方法、面向方面的方法、 面向工作流方法、面向方面的方法、面向服务的 方法) 方法 。 (4).此外还有形式化方法。 此外还有形式化方法。 此外还有形式化方法
软件工程的作用
从软件发展进程来讲,克服软件危机, 从软件发展进程来讲,克服软件危机,控制软件 进度,节约开发成本,提高软件质量。 进度,节约开发成本,提高软件质量。 从院校来讲,以前它只是作为一门课或一本书。 从院校来讲,以前它只是作为一门课或一本书。 现在它成为一个学科,一个体系, 现在它成为一个学科,一个体系,一个计算机学 即软件工程硕士学位和软件工程博士学位。 位,即软件工程硕士学位和软 , 什么技术将影响人类的生活 ? 什么 世纪, 世纪 什么技术将影响人类的生活? 产业将决定国家的势力? 可以毫不夸张地说, 产业将决定国家的势力 ? 可以毫不夸张地说 , 信息产业是首选的答案之一。 信息产业是首选的答案之一。 信息产业的核心是芯片与软件, 信息产业的核心是芯片与软件 , 软件工程是 软件开发、生产、服务和管理的科学。 软件开发、生产、服务和管理的科学。
软件工程的作用
从软件项目团队来讲,解决在规定的时间内, 从软件项目团队来讲,解决在规定的时间内,按 照规定的成本,完成预期质量目标(软件的功能、 照规定的成本,完成预期质量目标(软件的功能、 性能和接口达到需求报告标准)的软件。 性能和接口达到需求报告标准)的软件。 从软件企业本身来讲, 从软件企业本身来讲,解决持续地规范软件开发 过程和软件管理过程, 过程和软件管理过程,不断地优化软件组织的个 人素质和集体素质, 人素质和集体素质,从而逐渐增强软件企业的市 场竞争实力。 场竞争实力。
软件工程的基本原理
(1).用分阶段的生命周期计划,严格管理软件开发。 (1).用分阶段的生命周期计划,严格管理软件开发。 用分阶段的生命周期计划 (2).坚持进行阶段评审 坚持进行阶段评审。 (2).坚持进行阶段评审。 (3).实行严格的产品版本控制 实行严格的产品版本控制。 (3).实行严格的产品版本控制。 (4).采用现代程序设计技术 采用现代程序设计技术。 (4).采用现代程序设计技术。 (5).结果应能清楚地审查 文档要有严格要求。 结果应能清楚地审查。 (5).结果应能清楚地审查。文档要有严格要求。 (6).开发小组的成员要少而精 开发小组的成员要少而精。 (6).开发小组的成员要少而精。 (7).要不断地改进软件工程实践的经验和技术 要不断地改进软件工程实践的经验和技术。 (7).要不断地改进软件工程实践的经验和技术。 (8).二八定律 这条原理特别重要, 二八定律, (8).二八定律,这条原理特别重要,项目经理与高 层经理,要特别牢记。 层经理,要特别牢记。
软件的定义
程序的定义 (1).面向过程的程序 数据结构。 (1).面向过程的程序 == 算法 + 数据结构。 (2).面向对象的程序 消息。 (2).面向对象的程序 == 对象 + 消息。 (3).面向数据的程序 (3).面向数据的程序 == 数据库表 + 在表上的 操作(如存贮过程、触发器或视图) 操作(如存贮过程、触发器或视图)。 (4).面向构件的程序 构架。 (4).面向构件的程序 == 构件 + 构架。 软件等于程序? 软件等于程序? “越早开始写代码的人,就是越迟完成代码的人” 越早开始写代码的人,就是越迟完成代码的人” 越早开始写代码的人
软件工程研究的内容
软件开发模型, 瀑布模型、增量模型、 (1). 软件开发模型,如:瀑布模型、增量模型、 原型模型、螺旋模型、迭代模型等。 原型模型、螺旋模型、迭代模型等。 软件开发方法, 面向过程的方法、 (2). 软件开发方法,如:面向过程的方法、面向 数据的方法、面向对象的方法( 数据的方法、面向对象的方法(包括面向业务基 础平台的方法、面向工作流方法、 础平台的方法、面向工作流方法、面向主体的方 面向方面的方法、面向代理的方法等等) 法、面向方面的方法、面向代理的方法等等), 以及形式化方法。 以及形式化方法。
1.2 软件工程的作用
较小的那个团队,分工明确: 较小的那个团队,分工明确: 一人负责原始凭证和输出报表的收集、归类和整理, 一人负责原始凭证和输出报表的收集、归类和整理, 这实际上是做需求分; 这实际上是做需求分; 一人负责科目和数据字典(代码), ),这实际上是做 一人负责科目和数据字典(代码),这实际上是做 信息的标准化与规范化; 信息的标准化与规范化; 一人负责记账凭证的录入和修改, 一人负责记账凭证的录入和修改,这实际上是做数 据库的设计和加载工; 据库的设计和加载工;
软件工程研究的内容
软件支持过程, CASE工具Rose、 工具Rose (3). 软件支持过程,如:CASE工具Rose、北大青 鸟系统、 Designer、ERWin, 鸟系统、Power Designer、ERWin,以及配置管 理工具等。 理工具等。 软件管理过程, ISO9000、CMM/CMMI、 (4). 软件管理过程,如:ISO9000、CMM/CMMI、 软件企业文化(微软企业文件、敏捷文化现象、 软件企业文化(微软企业文件、敏捷文化现象、 IBM企业文化 企业文化) IBM企业文化)。
1.2 软件工程的作用
【例】 20世纪90年代初,有两个软件团队,一个较 20世纪90年代初,有两个软件团队, 世纪90年代初 10多人),一个较小 多人),一个较小( ),都在开发财务 大(10多人),一个较小(6人),都在开发财务 系统。 系统。 较大的那个团队,工作不规范,没有文档, 较大的那个团队,工作不规范,没有文档,没有评 没有团队精神, 审,没有团队精神,结果开发出来的产品可维护性 没有打开市场,致使产品与团队最后同归于尽。 差,没有打开市场,致使产品与团队最后同归于尽。
本章要求(1) 本章要求
要求了解 1)微软的企业文化 ) 2)CMMI的由来及其实质 ) 的由来及其实质 3) 敏捷文化现象的由来及其实质 4)软件工程与信息系统工程的关系 ) 5)信息系统工程的内容 ) 6)信息系统的建设方法 ) 7)信息系统建设的成功案例 )
本章要求(2) 本章要求
要求理解 1)软件工程的定义和作用 ) 2)软件工程四个方面的内容:软件开发模型,软 )软件工程四个方面的内容:软件开发模型, 件开发方法,软件支持过程, 件开发方法,软件支持过程,软件管理过程 3)IT企业 企业ISO 9000的文档编写方法和具体实施步 ) 企业 的文档编写方法和具体实施步 骤
本章要求(3) 本章要求
要求关注 1)软件工程中常用的三种开发方法:“面向过 )软件工程中常用的三种开发方法: 程的方法、面向数据的方法、面向对象的方法” 程的方法、面向数据的方法、面向对象的方法” 2) 软件工程中的形式化方法 3)软件工程的五个面向实施理论:“面向流程 )软件工程的五个面向实施理论: 分析、面向数据设计、面向对象实现、 分析、面向数据设计、面向对象实现、面向功能 测试、面向过程管理” 测试、面向过程管理”
软件工程作用的具体表现
在开发人员上,软件工程的观点是: 在开发人员上,软件工程的观点是:项目组在中 途靠增加开发人员来提高开发速度是无效的; 途靠增加开发人员来提高开发速度是无效的; 在项目经理的职责上,软件工程的观点是: 在项目经理的职责上,软件工程的观点是:80% 的时间是写文档, 的时间是内部勾通. 的时间是写文档,20%的时间是内部勾通 的时间是内部勾通
软件工程的定义
(1).1990年 IEEE对软件工程的定义是: (1).1990年,IEEE对软件工程的定义是:软件工程 对软件工程的定义是 是将系统化的、严格约束的、可量化的方法, 是将系统化的、严格约束的、可量化的方法,应 用于软件开发、运行和维护中去。 用于软件开发、运行和维护中去。 (2).2001年 (2).2001年,Roger S.Pressman 对软件工程的定 义是:软件工程是一个过程、 义是:软件工程是一个过程、一组方法和一系列 工具。 工具。 (3).软件工程的定义是 软件工程的定义是: (3).软件工程的定义是:软件工程是研究软件开发 和软件管理的一门工程科学。 和软件管理的一门工程科学。 可见:软件工程的定义是与时俱进的。 可见:软件工程的定义是与时俱进的。
软件工程研究的内容
请读者开发一个“图书馆信息系统” 【例】 请读者开发一个“图书馆信息系统”,即图 书馆MIS。 书馆 。 这是一项软件工程,为了完成这项任务,读者首 这是一项软件工程,为了完成这项任务, 先要选择软件开发模型,确定开发方法, 先要选择软件开发模型,确定开发方法,准备开 发工具,设计开发环境和运行环境, 发工具,设计开发环境和运行环境,然后进行需 求分析、概要设计、详细设计、编程、测试、 求分析、概要设计、详细设计、编程、测试、试 运行、正式运行、验收和交付, 运行、正式运行、验收和交付,最后是系统维护 或系统升级换代。 或系统升级换代。 这一系列的软件开发过程和管理过程, 这一系列的软件开发过程和管理过程,就是软件 工程。 工程。
相关文档
最新文档