软件工程导论课件之第5章 总体设计(第五版)(张海潘编著)

合集下载

软件工程导论课件之第5章总体设计

软件工程导论课件之第5章总体设计
需要另一个模块的存在,那么它们完全独立。 n 在一个软件系统中不可能所有模块之间都没有
} n 继续对3.1和4.1细化,直到每个语句都能用程序设计语
言来表示
软件工程导论课件之第5章总体设计
逐步求精的作用: n 它能帮助软件工程师把精力集中在与当前开发
阶段最相关的那些方面上,而忽略那些对整体 解决方案来说虽然是必要的,然而目前还不需 要考虑的细节。 n 逐步求精方法确保每个问题都将被解决,而且 每个问题都将在适当的时候被解决,但是,在 任何时候一个人都不需要同时处理7个以上知 识块。
软件工程导论课件之第5章总体设计
5.2.5 模块独立
模块独立: n 模块独立的概念是模块化、抽象、信息隐藏和
局部化概念的直接结果。 n 希望这样设计软件结构,使得每个模块完成一
个相对独立的特定子功能,并且和其他模块之 间的关系很简单。
软件工程导论课件之第5章总体设计
模块独立的重要性: n 有效的模块化(即具有独立的模块)的软件比较
软件工程导论课件之第5章总体设计
n 上述框架中每一个加工语句都可进一步细化
n main() { /*建立2到100的数组A[ ],其中A[i]=i*/ ………..………1 for (i = 2;i <= 100;i++)A[i] = i; /* 建立2到10的素数表B[ ],存放2到10以内的素数*/ ….2 B[1] =2; B[2] = 3; B[3] = 5; B[4] = 7; /*若A[i]=i是B[ ]中任一数的倍数,则剔除A[i]*/ .…..….3 for (j = 1; j <= 4; j++) 检查A[]所有数能否被B[j]整除并将其从A[]剔除;.....3.1 /*输出A[ ]中所有没有被剔除的数*/ …………………….4 for (i = 2; i <= 100; i++) 若A[i]没有被剔除,则输出之……………………..…..4.1

软件工程导论(全)张海藩PPT课件

软件工程导论(全)张海藩PPT课件

与方法。

主要内容包括:软件工程概述、软件生存周期及软件
海 藩
需求分析、软件设计方法、软件测试技术等。 通过本课程的学习,使学生能真正的从中了解软件开
发的整个过程。为了让学生真正得以实践,结合实际软件
开发项目,让学生从问题定义开始,经过可行性研究、需
求分析、概要设计、详细设计、编码直到最后要对自己开
软制品

(软体)


软件是计算机系统中与硬件相互依存的另一部分。 它包括程序、数据及其相关文档的完整集合。
2020/8/1

件 工
2、软件特点


. 软件是一种逻辑实体,而不是具体的物理实体
. 软件的生产与硬件不同
. 在软件的运行和使用期间,没有硬件那样的机械

磨损,老化问题



磨合
修改点 失
实际曲线
张 海 藩
具和软件库,软件开发人员训练有素,都强 烈渴望去编写很酷的软件,可以在几天的时 间里编写出一个相当复杂的软件。但为什么 有一些软件能够得到用户的喜欢,而另一些
则不能?为什么有些软件能够在市场上成功
,而有些则受到冷落?由此可见,开发软件
并不一定难,难就难在如何开发有用的软件。
微软凌小宁博士
2020/8/1
支持管理: 标准检验程序 库管理程序
2020/8/1

件 工
2、按软件的规模进行划分
程 导
按开发软件所需的 人力、时间以及完成的
源代码行数。
张 海
类别
参加人数
研制期限 产品规模(源代码行数)

微型
1
1-4周
约500行

软件工程导论第五版全套课件

软件工程导论第五版全套课件

第1章软件工程学概述1.1软件危机1.1.1软件危机的介绍1.1.2产生软件危机的原因图1.1引入同一变动付出的代价随时间变化的趋势1.1.3消除软件危机的途径1.2软件工程1.2.1软件工程的介绍1. 软件工程关注于大型程序的构造2. 软件工程的中心课题是控制复杂性3. 软件经常变化4. 开发软件的效率非常重要5. 和谐地合作是开发软件的关键6. 软件必须有效地支持它的用户7. 在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品2软件工程导论(第五版) 1.2.2软件工程的基本原理1. 用分阶段的生命周期计划严格管理2. 坚持进行阶段评审3. 实行严格的产品控制4. 采用现代程序设计技术5. 结果应能清楚地审查6. 开发小组的人员应该少而精7. 承认不断改进软件工程实践的必要性1.2.3软件工程方法学1. 传统方法学2. 面向对象方法学1.3软件生命周期1. 问题定义2. 可行性研究3. 需求分析4. 总体设计5. 详细设计6. 编码和单元测试7. 综合测试8. 软件维护软件工程导论(第五版) 3 1.4软件过程1.4.1瀑布模型图1.2传统的瀑布模型1. 阶段间具有顺序性和依赖性2. 推迟实现的观点3. 质量保证的观点4软件工程导论(第五版)图1.3实际的瀑布模型1.4.2快速原型模型图1.4快速原型模型软件工程导论(第五版) 5 1.4.3增量模型图1.5增量模型图1.6风险更大的增量模型6软件工程导论(第五版) 1.4.4螺旋模型图1.7简化的螺旋模型软件工程导论(第五版) 7图1.8完整的螺旋模型8软件工程导论(第五版) 1.4.5喷泉模型图1.9喷泉模型1.4.6 Rational统一过程1. 最佳实践2. RUP软件开发生命周期软件工程导论(第五版) 9图1.10 RUP软件开发生命周期1.4.7敏捷过程与极限编程1. 敏捷过程2. 极限编程图1.11 XP项目的整体开发过程10软件工程导论(第五版)图1.12 XP迭代开发过程1.4.8微软过程1. 微软过程准则2. 微软软件生命周期图1.13微软软件生命周期阶段划分和主要里程碑3. 微软过程模型图1.14微软过程的生命周期模型1.5小结习题11. 什么是软件危机?它有哪些典型表现?为什么会出现软件危机?2. 假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及早发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清除它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他?3. 什么是软件工程?它有哪些本质特性?怎样用软件工程消除软件危机?4. 简述结构化范型和面向对象范型的要点,并分析它们的优缺点。

《软件工程导论》张海潘_第五版_清华_课后答案PPT课件

《软件工程导论》张海潘_第五版_清华_课后答案PPT课件
答 经济上的可行性 ——这个系统的经济效益能超过它的开发成本吗? (投资与效益) 爱 操作可行性 ——系统的操作方式在这个用户组织内行得通吗?
护士 护士
社会、政策允许的可行性
2-2 为方便储户,某银行拟开发计算机储蓄系统。储户填写的存款单或取款单由业务员键入系统,如果是存款,系
统记录存款人姓名、住址、存款类型、存款日期、利率等信息,并印出存款单给储户;如果是取款,系统计算利息
an.c 利息
2.3
打印利息

d清a单 ai
w. 某航空公司拟开发一个机票预定系统。旅行社把预订机票的旅客信息(姓名、性别…等)输入进该系统,系统 ww 为旅客安排航班,印出取票通知和账单,旅客在飞机起飞的前一天凭取票通知和账单交款取票,系统核对无误即印 网 出机票给旅客。

旅客
取票通知 账单/票款
网 检验信 源息
检验信 息过程
重试信息

SC 图
件 用户执行模块 课

答 读用户命令
命令处理


案系统设置
现用/非现用
密码处理
答 控制器
系统
控制器

读系统 数据
建立配 置文件
读 密码
用文件 比较密码
密码输出 控制器
机票预订系统(参见习题 2 第 3 题)

显示信息 与状态
产生 无效信息
6
更新日志
日志
日志
7 产生病情 要求
报告
课件 事样务
数据 数据

D1 患者日志

6.数据定义 1、顺序 + 2、选择〔 | 〕3、重复
题 – 定货系统 P39 习 – 习题 2 第 5 题 P44 案 2-1 应该从哪些方面研究目标系统的可行性?

(完整版)《软件工程导论》第五版张海藩编著总结

(完整版)《软件工程导论》第五版张海藩编著总结

总结重点:❖∙Unit1❖∙软件危机包含两方面的问题:一是如何开发软件,怎样满足人们对软件日益增长的需求?二是如何维护软件,使它们持久地满足人们的要求。

❖∙软件工程学定义:把软件当作一种工业产品,采用工程学的原理来管理和组织软件的开发和维护,称为软件工程。

❖∙软件是指程序、数据和文档三者共同构成的配置。

❖∙包含与数据处理系统操作有关的程序、规程、规则以及相关文档的智力创作称为软件。

文档是描述程序开发过程的,是智力创作的真实记录,是创作活动的历史档案和结晶。

❖∙软件的描述性定义:软件由计算机程序,数据结构和文档组成。

❖∙软件质量定义为“与软件产品满足规定的和隐含的需求能力有关的特征和特性的全体”具体来说: 1)软件产品中能满足给定需求的性质和特性的总体;2)软件具有所期望的各种属性的组合程度。

❖∙将软件质量属性划分为六个特性(功能性、可靠性、易用性、效率、维护性和可移植性),这六个属性是面向用户的观点——面向管理的观点,且是定性描述的。

❖∙软件质量度量体系:内部度量可用于开发阶段的非执行软件产品,外部度量只能在生存周期过程中的测试阶段和任何运行阶段使用。

❖∙软件工程项目的基本目标:(1)低成本;(2)满足功能要求;(3)高性能;(4)易移植;(5)易维护。

❖∙软件工程方法学就是要从技术和管理上提供如何去设计和维护软件。

❖∙软件开发方法:面向数据流(约旦)方法、面向数据结构方法、面向对象方法。

❖∙结构程序设计是进行以模块功能和处理过程设计为主的详细设计的基本原则。

它的主要观点是采用自顶向下、逐步求精的程序设计方法;使用三种基本控制结构构造程序,任何程序都可由顺序、选择、循环三种基本控制结构构造。

❖∙用来辅助软件开发、运行、维护、管理、支持等过程中活动的软件称为软件工具(CASE)。

❖∙软件生存周期定义:软件产品从形成概念开始,经过开发、使用和维护,直到最后不再使用的整个过程。

各阶段的任务彼此间尽可能的相对独立,同一阶段内各项任务的性质尽可能的相同。

软件工程导论张海藩PPT课件

软件工程导论张海藩PPT课件

A[I]=A[I]+A[T]; A[T]=A[I]-A[T]; A[I]=A[I]-A[T];
WORK=A[T]; A[T]=A[I]; A[I]=WORK;
第22页/共125页
例7:简单直接
for (i=1; i<=n; i++) for (j=1; j<=n; j++) V[i][j]=(i/j)*(j/i)
与机器码一样长
特殊情
C、C++等
数据库查询语言 4GL 程序生成器
图形语言
利用类英语的语句和命令 一条语句相当于5-10条机器码
要规定详细的算法过程
与自然语言接近 一条语句相当于30-50条机器码
非过程化问题定义 运行开销大,效率低
高级
第4页/共125页
选择语言的理想标准: • 为了使程序容易测试和维护以减少软件的总成本,所选用的高级语言应该有理想
的模块化机制,以及可读性好的控制结构和数据结构; • 为了便于调试和提高软件可靠性,语言特点应该使编译程序能够尽可能多地发现
程序中的错误; • 为了降低软件开发和维护的成本,选用的高级语言应该有良好的独立编译机制。
第5页/共125页
主要的实用标准: • 系统用户的要求 • 可以使用的编译程序 • 可以得到的软件工具 • 工程规模 • 程序员的知识 • 软件可移植性要求 • 软件的应用领域
例5:一行一条语句
FOR I:=1 TO N-1 DO BEGIN T:=I; FOR J:=I+1 TO N DO IF A[J]<A[T] THEN T:=J; IF T<>I THEN BEGIN WORK:=A[T]; A[T]:=A[I]; A[I]:=WORK; END END;

软件工程导论课件全张海藩

软件工程导论课件全张海藩
软件性能优化
利用大数据技术分析和监控软件系统的运行状态,发现性能瓶颈并 进行优化,提高软件系统的稳定性和效率。
软件故障预测与预防
通过分析历史故障数据和系统日志,预测可能出现的故障并提前采取 预防措施,降低软件维护成本。
云计算在软件工程中的应用
云计算平台开发
基于云计算平台开发软件应用,实现资源的动态分配、弹性扩展和按需付费,降低软件开发和运 维成本。
和输出。
在瀑布模型中,软件开发过程被划分为需求分析、设 计、编码、测试和维护等阶段,每个阶段都必须在前
一个阶段完成后才能开始。
瀑布模型的优点是易于理解和管理,适用于需求稳定、 变更较少的情况。但是,它缺乏灵活性,难以应对需 求变更和快速变化的市场环境。
螺旋模型
螺旋模型是一种迭代式的软件开发过程 模型,它将开发过程划分为多个循环, 每个循环包括需求分析、设计、编码和 测试等阶段。
在敏捷开发模型中,开发团队会按照短周期(通常是一到四周)进行迭代开发,每个周期都会交付可用 的软件产品。
敏捷开发模型的优点是能够快速响应变化、降低开发风险、提高软件质量。但是,它需要更多的沟通和 协作能力,同时也需要更加灵活的管理方式。
其他过程模型
除了上述三种常见的软件开发过程模 型外,还有其他一些过程模型,如原 型模型、增量模型等。
缺陷分析
对缺陷进行分析,找出根本原因,避免类似缺陷再次出现。
质量评估指标
缺陷密度
衡量软件质量的重要指标,表示每千行代码 中的缺陷数。
回归测试通过率
评估软件修复缺陷后,原有功能是否正常的 重要指标。
测试覆盖率
评估测试用例对软件产品功能的覆盖程度。
用户满意度
反映用户对软件产品质量和服务的满意程度。

软件工程_张海蕃_第五版PPT

软件工程_张海蕃_第五版PPT
软件工程
Software Engineering
课程介绍及要求
用工程化的方法来开发软件
教学目标
为什么要学习这门课程
有助于正确理解和认识“软件”的概念及其特点 理解软件开发面临的问题和挑战
课程介绍和要求
掌握软件工程的原则、方法和思想来系统地开发软 件,尤其是复杂、庞大的软件的开发
了解和接触软件开发所需的各种技术手段
教学与考核
必修考查课,共48学时,其中理论38学 时,实验10学时 平时(作业、考勤)20%,实验20%, 试卷60%
典型案例1 例: 美国IBM公司在1963年至1966年开发的
IBM360机的操作系统。这一项目花了5000人一
年的工作量,最多时有1000人投入开发工作,
写出了近100万行源程序。......据统计,这个
2、解决危机的管理途径
20世纪80年代末,美国DoD和工业界开始认识到
管理的重要性

美国DoD的一项研究表明,70%的项目由于管理不善导 致难以控制进步、成本和质量; 进一步的研究发现:管理是影响软件项目成功开发的全 局性因素,而技术只影响局部 如果软件开发组织不能对软件项目进行有效管理,就不 能充分发挥软件开发方法和工具的潜力,也就不能高效 率地开发出高质量的软件产品
96年Ariane火箭发射失败,浮点数 转换时发生错误
24
1.1 软件工程产生的背景 b、软件的特征
成本高(1/2)
成本高(2/2)
产品 Lotus1-2-3 Version 3.0 Space Shuttle 1989 Lincoln Continental City Bank Teller machine IBM Chechout Scanner 代码行 400k 25.6M 83.5M 780k 90k 工 作 量 成本(百万) (人年) 263 22 35 150 58 12 1.8 13.2 3

软件工程导论(第五版)_(张海藩_著)_清华大学出版社_课后习题答案

软件工程导论(第五版)_(张海藩_著)_清华大学出版社_课后习题答案
9.什么是软件工程? 软件工程是指导计算机软件开发和维护的工程学科。 (1) 它采用工程的概念、原理、技术和方法来开发和维护软件; (2) 它将管理技术与当前经过时间考验的而证明是正确的技术方法结合起
来; (3) 它强调使用生存周期方法学和结构分析和结构技术; (4) 经过人们长期的努力和探索,围绕着实现软件优质高产这个目标,从技术
的单位面积及房租等信息。房产科可以要求系统打印住房情况的统计表,或更改某 类房屋的居住条件、单位面积和房租等。
用数据流图描绘该系统的功能需求;在数据字典中给出主要的数据流、文件和 加工说明。
参考第四章 4.5 应用举例教案之二分析。
第四章 总体设计 习题答案
1. 系统设计包括哪两个阶段? 系统设计包括总体设计与详细设计两个阶段。
(2) 在渐增型开发下的软件是随软件开发的过程而逐渐形成的。 (3) 渐增型开发方法适合于知识型软件的开发,设计系统时对用户需求的认 识开始不是很清楚的,需要在开发过程中不断认识、不断获得新的知识去丰富和完 善系统。多数研究性质的试验软件,一般采用此方法。 变换型开发方法及特点: (1)从软件需求的形式化规格说明出发,经过一系列的程序变换,得到最终的 程序系统。 (2)该方法必须有严格的数学理论和形式化技术的支持。
算出的房租写到房租文件中。 (2) 如果是退房申请,则从住房文件和房租文件中删除有关信息,再把此房号
的信息写到空房文件中。 (3) 如果是调房申请,则根据申请者的情况确定其住房等级,然后在空房文件
中查找属于该等级的空房,退掉原住房,再进行与分房类似的处理。 (4) 住户可以向系统查询目前分房的阀值分数,居住某类房屋的条件,某房号
图:
4.什么是结构化分析?它的结构化体现在哪里? 结构化分析:使用数据流程图、数据字典、结构化英语、判定表和判定树等工具,

软件工程导论 张海藩(第5版)第5章

软件工程导论 张海藩(第5版)第5章
第一,有效的模块化(即具有独立的模块)的软件比较容 易开发出来。这是由于能够分割功能而且接口可以简 化,当许多人分工合作开发同一个软件时,这个优点 尤其重要。
第二,独立的模块比较容易测试和维护。这是因为相 对说来,修改设计和程序需要的工作量比较小,错误 传播范围小,需要扩充功能时能够“插入”模块。 总之, 模块独立是做好设计的关键,而设计又是决定软 件质量的关键环节。
25
3、抽象在软件设计中的作用: 抽象与逐步求精,模块化密切相关,帮助 我们定义软件结构中模块的实体,有抽象到具 体地分析和构造出软件的பைடு நூலகம்次结构,提高软件 的可理解性。
逐步求精和模块化的概念,与抽象是紧密相关的。 随着软件开发工程的进展,在软件结构每一层中的模 块,表示了对软件抽象层次的一次精化。事实上,软 件结构顶层的模块,控制了系统的主要功能并且影响 全局;在软件结构底层的模块,完成对数据的一个具 体处理,用自顶向下由抽象到具体的方式分配控制, 简化了软件的设计和实现,提高了软件的可理解性和 可测试性,并且使软件更容易维护。
17
8、可靠性设计(也称质量设计) 在软件开发的一开始就要确定软件可靠 性和其他质量指标,考虑相应措施,使得软 件易于修改和维护。 9. 制定测试计划 在软件开发的早期阶段考虑测试问题, 能促使软件设计人员在设计时注意提高软件 的可测试性。本书第7章将仔细讨论软件测 试的目的和设计测试方案的各种技术方法。
23
图5.1 模块化和软件成本
24
5.2.2 抽象
1、什么是抽象?
抽象是认识复杂现象过程中使用的思维工具,即抽 象事物本质的共同特性而暂不考虑它的细节,不考虑其 他因素。
2、软件工程中的抽象:
软件工程过程中的每一步都可以看作是对软件解决 方法抽象层次的一次细化。①在可行性研究(即系统定 义)阶段,软件作为整个计算机系统的一个元素(完整 部件)。②在需求分析阶段,软件解决方案使用问题环 境中的术语来描述。③从概要设计到详细设计阶段抽象 层次逐步降低,将面向问题的术语和面向实现的术语结 合起来描述解决方法。④最低层抽象层次,是产生源代 码,用可以直接实现的方法叙述问题的解决方法。

软件工程导论课件第5章

软件工程导论课件第5章

4
主要工作
完成模块分解,确定系统的模块层次结构
文档 数据结构的描述部分
模块说明部分,包括模块结构以及每个模块的 功能说明
5
总体设计的过程
总体设计通常由系统设计和结构设计两个阶段组成。 系统设计阶段确定系统的具体实现方案,结构设计阶段确 定软件的结构。
实施总体设计的过程如下:
1.设想供选择的方案 2.选取合理的方案 3.推荐最佳方案 4.功能分解 5.设计软件结构 6.数据库设计 7.制定测试计划 8.书写文档 9.审查和复审
27
(7)功能内聚 如果一个模块中的所有处理元素都完成一个, 而且仅完成一个功能 比如:一个模块只完成矩阵加法运算或只打印 输出一种特定的表格功能
对于一个模块而言,模块自身的内聚越 强,模块间的耦合就越小,模块所具有的独 立性就越好,可以说高内聚低耦合是我们进 行软件设计的一贯原则。
28
启发规则
12
9. 审查和复审
最后应该对总体设计的结果进行严格的技术 审查,在技术审查通过之后再由使用部门的负责人 从管理角度进行复审。
13
设计原理
模块
模块是数据说明、可执行语句等程序对象的 集合,它是单独命名的,可通过名字来进行访问。 例如:汇编语言中的子程序,Pascal语言中的过程, C语言中的函数等。
32
描绘软件结构的图形工具
在总体设计阶段,我们经常使用以下几种 图形工具: 层次图 HIPO图 结构图
33
(一)层次图
层次图中的每个方框代表一个模块,方框间 的连线表示调用关系,不同于层次方框图那样表示 组成关系。 例如:正文加工系统调用编辑模块,编辑模 块依需要调用添加、删除、插入、修改、合并、列 表模块。

软件工程导论PPT课件

软件工程导论PPT课件

软件(software)是计算机系统中与硬件 (hardware)相互依存的另一部分,
它包括程序(program)、 相关数据(data)及其 说明文档(document)。
软件特指大型复杂的程序
2021
5
软件的发展
早期 •面向批处理 •有限的分布 •自定义软件
第二阶段 •多用户 •实时 •数据库 •软件产品
是把软件当作一种工业产品,要求 “采用工程化的 原理与方法对软件进行计划、开发和维护 ”。
2021
21
围棋与软件工程的感想
围棋
围棋棋谱拿过来的时候, 大师问“后面应该走哪里?”
十个初级爱好者选择的落
点散布在棋盘各处…… 十个职业棋手说的落子点
都差不多,甚至包括后面的几 步……
这就是高手和低手的差
别……
2021
13
软件危机的原因
● 一方面是与软件本身的特点 有关
● 另一方面是由软件开发和维 护的方法不正确有关
2021
14
软件开发工作量分配比例
40% ~ 50%
10% ~ 20%
测试
程序
其它
2021
15
引入同一变化付出的代价随时间变化的趋势
2021
16
费用分配比例
55%~70%
软件维护 其它
2021
25
总之: 软件工程是应用计算机科学、 数学及管理科学等原理开发软 件的工程。它借鉴传统工程的 原则、方法,以提高质量,降 低成本为目的。
2021
26
软件工程是一门交叉学科
软件工程的主要研究内容
软件开发技术:软件开发方法学 软件开发过程 软件工具和软件工程环境
软件工程管理:软件管理学 软件经济学 软件心理学
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
系统流程图;
组成系统的物理元素清单;
成本/效益分析; 实现这个系统的进度计划。
3. 推荐最佳方案
分析员应该综合分析对比各种合理方案的利弊, 推荐一个最佳的方案,并且为推荐的方案制定 详细的实现计划。
4. 功能分解 首先进行结构设计,然后进行过程设计。
结构设计确定程序由哪些模块组成,以及这些 模块之间的关系;过程设计确定每个模块的处 理过程。
模块化的根据: 如果C(P1)>C(P2),显然E(P1)>E(P2) 根据人类解决一般问题的经验,
C(P1+P2)>C(P1)+C(P2) 综上所述,得到下面的不等式
E(P1+P2)>E(P1)+E(P2)
每个程序都相 应地有一个最 适当的模块数 目M,使得系 统的开发成本 最小。
模块化和软件成本
抽象:现实世界中一定事物、状态或过程之间 总存在着某些相似的方面(共性)。把这些相似 的方面集中和概括起来,暂时忽略它们之间的
差异,这就是抽象。
抽象就是抽出事物本质特性而暂时不考虑细节。
“抽象是人类处理复杂问题的基本方法之
一。”
——Grady Boach
一般抽象过程: 处理复杂系统的惟一有效的方法是用层次的方
Miller法则:一个人在任何时候都只能把注意 力集中在(7±2)个知识块上。
例:用筛选法求100以内的素数。所谓的筛选法,就是 从2到100中去掉2,3,5,7的倍数,剩下的就是100 以内的素数。
软件工程导论课件之第5章 总体设计(第五版)(张海潘 编著)
软件设计宣言:Mitch Kapor
“什么是设计?设计是你站在两个世界——技 术世界和人类的目标世界——而你尝试将这两 个世界结合在一起……”。
罗马建筑批评家Vitruvius提出的观念:
“设计良好的建筑应该展示出坚固、适用和令 人赏心悦目”。
结构设计是总体设计阶段的任务,过程设计是 详细设计阶段的任务。
5. 设计软件结构
通常程序中的一个模块完成一个适当的子功能。 应该把模块组织成良好的层次系统。软件结构 可以用层次图或结构图来描绘。
如果数据流图已经细化到适当的层次,则可以 直接从数据流图映射出软件结构,这就是面向 数据流的设计方法。
6. 设计数据库
对于需要使用数据库的那些应用系统,软件工 程师应该在需求分析阶段所确定的系统数据需 求的基础上,进一步设计数据库。
7. 制定测试计划 在软件开发的早期阶段考虑测试问题,能促使软件设
计人员在设计时注意提高软件的可测试性。 8. 书写文档 应该用正式的文档记录总体设计的结果,在这个阶段
应该完成的文档通常有下述几种: (1) 系统说明; (2) 用户手册;(3) 测试计划; (4) 详细的实现计划;(5) 数据库设计结果。
9. 审查和复审 最后应该对总体设计的结果进行严格的技术审查和管
理复审。
5.2 设计原理 5.2.1 模块化
模块:是由边界元素限定的相邻程序元素的序 列,而且有一个总体标识符代表它。
数据对象描述 实体-关系图
处理规格说明 数据流图
数据 字典 状态转换图
控制规格说明
过程设计 接口设计 体系结构设计 数据设计
ห้องสมุดไป่ตู้
总体设计过程:首先寻找实现目标系统的各种 不同的方案;然后分析员从这些供选择的方案 中选取若干个合理的方案,从中选出一个最佳 方案向用户和使用部门负责人推荐;分析员应 该进一步为这个最佳方案设计软件结构,进行 必要的数据库设计,确定测试要求并且制定测 试计划。
在需求分析期间,软件解法是使用在问题环境 内熟悉的方式描述的;
当由总体设计向详细设计过渡时,抽象的程度 也就随之减少了;
最后,当源程序写出来以后,也就达到了抽象 的最低层。
5.2.3 逐步求精
逐步求精:为了能集中精力解决主要问题而尽 量推迟对问题细节的考虑。逐步求精是人类解 决复杂问题时采用的基本方法,也是许多软件 工程技术的基础。
结构设计阶段,确定软件结构
功能分解 设计软件结构 设计数据库
制定测试计划 书写文档 审查和复审
典型的总体设计过程包括下述9个步骤: 1. 设想供选择的方案
根据需求分析阶段得出的数据流图考虑各种可 能的实现方案,力求从中选出最佳方案。
2. 选取合理的方案
从前一步得到的一系列供选择的方案中选取若 干个合理的方案。对每个合理的方案分析员都 应该准备下列4份资料:
评价一种设计方法定义模块能力的五条标准:
模块可组装性
模块连续性
模块化的作用: 采用模块化原理可以使软件结构清晰,不仅容
易设计也容易阅读和理解。 模块化使软件容易测试和调试,因而有助于提
高软件的可靠性。 模块化能够提高软件的可修改性。 模块化也有助于软件开发工程的组织管理。
5.2.2 抽象
式构造和分析它。 一个复杂的动态系统首先可以用一些高级的抽
象概念构造和理解,这些高级概念又可以用一 些较低级的概念构造和理解,如此进行下去, 直至最低层次的具体元素。 例:过程抽象、数据抽象
软件工程抽象过程:
软件工程过程的每一步都是对软件解法的抽象 层次的一次精化。
在可行性研究阶段,软件作为系统的一个完整 部件;
模块化:就是把程序划分成独立命名且可独立 访问的模块,每个模块完成一个子功能,把这 些模块集成起来构成一个整体,可以完成指定 的功能满足用户的需求。
为什么要模块化? 模块化是为了使一个复杂的大型程序能被人的
智力所管理,软件应该具备的惟一属性。 如果一个大型程序仅由一个模块组成,它将很
难被人所理解。
设计阶段:
从工程管理的角度,可以将软件设计分为概要 设计阶段和详细设计阶段。
从技术的角度,传统的结构化方法将软件设计 划分为体系结构设计、数据设计、接口设计和 过程设计4部分。
面向对象方法则将软件设计划分为体系结构设 计、类设计/数据设计、接口设计和构件级设 计4部分。
结构化设计和结构化分析的关系:
必要性:总体设计可以站在全局高度上,花较 少成本,从较抽象的层次上分析对比多种可能 的系统实现方案和软件结构,从中选出最佳方 案和最合理的软件结构,从而用较低成本开发 出较高质量的软件系统。
5.1 设计过程
由两个主要阶段组成:
系统设计阶段,确定系统的具体实现方案
设想供选择的方案 选取合理的方案 推荐最佳方案
相关文档
最新文档