软件工程导论class9详细设计6_4

合集下载

《软件工程导论》课后习题答案

《软件工程导论》课后习题答案
23:59:38
作业及解答(第3章)
• 数据结构的描述 符 号
= +
含 义
x = a+b


被定义为 与 或
[...,...] 或 [...|...] { ... }或 m{...}n (...) “...” ..
23:59:38
x = [a , b],x = [a | b] 重复 x = {a}, x = 3{a}8 可选 x = (a) 基本数据元素 x = “a” 连结符 x = 1..9
P1 记录存款信息
P2 打印存单 F5存款信息 F3存单 E1 储户 F4利息
F5存款信息 D1存款信息 F7密码 F2取款单
F5存款信息 P3 核算密码
F4利息 F4利息 F6取款信息 P6 设置利率 P4 计算利息
P5 打印利息清单 F8储蓄利率
E2 业务员
23:59:38
F8储蓄利率
F8储蓄利率
23:59:38
重庆工学院计算机科学与工程学院 李梁(liliang@) 李梁
作业及解答( 作业及解答(第3章)
23:59:38
重庆工学院计算机科学与工程学院 李梁(liliang@) 李梁
作业及解答( 作业及解答(第3章)
• 3-6 复印机的工作过程大致如下:未接到复印 命令时处于闲置状态,一旦接到复印命令则进 入复印状态,完成一个复印命令规定的工作后 又回到闲置状态,等待下一个复印命令;如果 执行复印命令时发现没纸,则进入缺纸状态, 发出警告,等待装纸,装满纸后进入闲置状态, 准备接收复印命令;如果复印时发生卡纸故障, 则进入卡纸状态,发出警告等待维修人员来排 除故障,故障排除后回到闲置状态。 • 请用状态转换图描绘复印机的行为。

软件工程导论(共65张PPT)可编辑全文

软件工程导论(共65张PPT)可编辑全文
–期刊管理系统之借阅子系统
– 学生选课系统 软件
Microsoft Visio; Rational Rose
高级程序语言 作业递交方式:
来信标题注明 :班级 、学号、姓名、章节
第1章 软件工程学概述
1.1 软件危机
软件危机的出现:60年代中期到70年代中期, 许多软件最终成为不可维护的,这就是软件危 机.
不能用象硬件替换部件的方式修复软件的故障 使用增量模型的困难是,在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。
出现了“软件作坊”,软件作为一种产品被广泛使用;
使用个体化开发方式;
软件的发展史_2
随着软件数量的增加及软件需求的日趋复杂, 维护难度与来越大,开发成本高,质量低 导致“软件危机”
➢相同点:都将软件开发划分为分析、设计、编码、 测试等阶段 ➢不同点:思想不同,方法不同。另外,传统软件 工程更关注功能模块,面向对象软件工程更关注对 象的抽取和设计
➢ 两类软件工程方法学没有绝对的替代关系
1.3软件生命周期
生命周期方法学
从时间角度对软件开发和维护的复杂问题进行分解,把软件生命 的漫长周期依次划分为若干个阶段,每个阶段有相对独立的任务, 然后逐步完成每个阶段的任务。
关注大型程序的构造 中心问题是控制复杂性 软件经常变化 开发效率非常重要 和谐地合作是开发软件的关键 有效地支持它的用户 具有一种文化背景的人替另一种文化背景的人
创造产品
用分阶段的生命周期计划严格管理 坚持进行阶段评审 实行严格的产品控制 采用现代程序设计技术 结果应能清楚地审查 开发小组成员应少而精 承认不断改进软件工程实践地必要性
软件工作涉及到很多社会因素。 由于对象概念的引入,表达分析、设计及实现等活动只用对象类和关系,从而可以较容易地实现活动的迭代和无间隙

软件工程导论第章详细设计

软件工程导论第章详细设计

软件工程导论第章详细设计什么是详细设计详细设计(详设)是软件工程开发过程中的一个阶段,它在需求分析、概要设计之后,向开发人员提供了实现程序模块的技术性设计,包括算法、数据结构、类设计、数据库设计等。

详细设计是概要设计的实现描述,可以说是概要设计在技术层面上的具体实现方案。

详细设计的主要任务是将概要设计中的概括性和抽象性描述转化为具体的数据结构和程序实现,为程序员提供清晰而具有技术可行性的设计思路,对于开发人员和项目管理人员来说,详细设计是一个实现程序的重要规划蓝图。

具体地说,详细设计需要包含以下内容: - 详细的模块设计文档 - 数据结构的定义 - 数据库的设计和实现方案 - 详细的程序流程图和算法描述 - 功能模块测试用例 - 视图、用户界面和用户操作设计详细设计的意义详细设计是软件工程过程中不可或缺的一个阶段,它具有以下重要意义:1. 提高程序设计质量详细设计提供了对程序模块实现技术和方法的规范描述,能够帮助程序员更加清晰地了解系统的结构和技术实现。

详细设计一旦完成,开发人员就可以按照文档中的设计思路进行编码,这样不仅可以提高代码的效率和质量,还能避免不必要的代码优化和重构。

2. 避免系统漏洞通过详细设计,可以确保需要实现的每一个模块都有规范的设计文档,并且每个模块都被明确的标记,程序员能够避免系统漏洞、代码重复和冲突等问题。

3. 提升工作效率详细设计使得开发人员能够更加系统化和规范化的进行编码,避免返工、重复或无效的工作,最终提升项目的开发效率和工作质量。

4. 方便项目管理详细设计文档可以作为项目管理的工作依据,包括项目计划、进程控制和编码标准的制定。

详细设计可以帮助管理人员了解整个项目的实现思路和技术路线,从而更好的进行计划和控制。

详细设计的步骤详细设计的步骤通常可以分为以下几个阶段:1. 定义模块详细设计阶段首先需要对要实现的每个需求模块进行定义和规划,包括模块名称、模块功能描述、模块输入输出、异常处理等等。

软件工程导论课件第9章-面向对象方法学引论(第六版)(张海潘编著)

软件工程导论课件第9章-面向对象方法学引论(第六版)(张海潘编著)
对象具有封装性的条件如下: 有一个清晰的边界。所有私有数据和实现操作的代码都 被封装在这个边界内,从外面看不见更不能直接访问。 有确定的接口(即协议)。这些接口就是对象可以接受 的消息,只能通过向对象发送消息来使用它。 受保护的内部实现。实现对象功能的细节(私有数据和 代码)不能在定义该对象的类的范围外访问。
27
9 . 4 对象模型
描述系统内部对象的静态结构,包括对象本身的 定义、对象的属性和操作、以及对象与其它对象 之间的关系。
对象模型为建立动态模型和功能模型,提供了实 质性的框架。
UML 中,对象模型通常由“类图”组成。
28
9.4.1 类图的基本符号
1、定义类
类的图形符号 为长方形;
用两条横线把 长方形分成上、 中、下3个区域;
a的子类图的子类图94实现继承机制的原理继承举例人员姓名性别出生日期进校离校23教职工继承职工号工资挣工资学生继承学号专业选课研究生继承课题方向研究工作教师继承职称教课职员继承职务管理事务8多态性polymorphism多态性指子类对象可以象父类对象那样使用同样的消息既可以发送给父类对象也可以发送给子类对象
对象中的数据表示对象的状态,一个对象的状态只 能由该对象的操作来改变。
每当需要改变对象的状态时,只能由其他对象向该 对象发送消息。
对象响应消息时,按照消息模式找出与之匹配的方 法,并执行该方法。
12
2、对象的定义
从动态角度或对象的实现机制来看,对象是一台动机来模
拟:
具有内部状态S,操作fi(i=1,2,…,n),且与操作fi对应 的状态转换函数为gi(I=1,2,…,n)的一个对象。
9.2.2 其他概念
1、类(Class) 类就是对具有相同数据和相同操作的一组相似

软件工程导论 第6章 详细设计(Finished)

软件工程导论 第6章 详细设计(Finished)

第六章 详细设计详细设计阶段的根本目标是确定应该怎样具体地实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。

详细设计阶段的任务还不是具体地编写程序,而是要设计出程序的“蓝图”,以后程序员将根据这个蓝图写出实际的程序代码。

因此,详细设计的结果基本上决定了最终的程序代码的质量。

考虑程序代码的质量时必须注意,程序的“读者”有两个,那就是计算机和人。

在软件的生命周期中,设计测试方案、诊断程序错误、修改和改进程序等等都必须首先读懂程序。

实际上对于长期使用的软件系统而言,人读程序的时间可能比写程序的时间还要长得多。

因此,衡量程序的质量不仅要看它的逻辑是否正确,性能是否满足要求,更主要的是要看它是否容易阅读和理解。

详细设计的目标不仅仅是逻辑上正确地实现每个模块的功能,更重要的是设计出的处理过程应该尽可能简明易懂。

结构程序设计技术是实现上述目标的关键技术,因此是详细设计的逻辑基础。

6.1 结构程序设计结构程序设计的概念最早由E.W.D ijkstra 提出。

1965年他在一次会议上指出:“可以从高级语言中取消GO TO 语句”,“程序的质量与程序中所包含的GO TO 语句的数量成反比”。

1966年Bohm 和Jacopini 证明了,只用3种基本的控制结构就能实现任何单入口单出口的程序。

这3种基 本的控制结构是“顺序”、“选择”和“循环”,它们的流程图分别为图6.1(a),6.1(b)和6.1(c)。

实际上用顺序结构和循环结构(又称DO_WHILE 结构)完全可以实现选择结构(又称IF_THEN_ELSE 结构),因此,理论上最基本的控制结构只有两种。

Bohm 和Jacopini 的证明给结构程序设计技术奠定了理论基础。

1968年Dijkstra再次建议从一切高级语言中取消GO TO语句,只使用3种基本控制结构写程序。

软件工程导论

软件工程导论
作者: 日期: .
调用:
.
. 被本模块调用 的模块清单
输入: 数据流图中的各输个出处: 理,也可 以简略描述系统的主要算法。
处理:
局部数据元素:
注释:
本模块使用 的局部元素
17
软件结构设计
结构图 1.结构图是软件结构设计的另一种工具, 与层次图
类似。 2.它在层次图的每一个方框内注明的是模块的名字
当数据流具有这些特征时,这种信息流称为 变换流。
a
c2 1d b3
e
4
f
g
5
h
6x 7y
8
z
22
基于数据流( SD )的方法
事务流
输入通路到达一个处 理T,这个处理根据输入 数据的类型在若干个动作 序列中选出一个来执行。 这种“以事务为中心的” 的数据流,称为“事务 流”。
事务 T
处理T称为事务中心, 完成以下任务:(1)接 收输入数据;(2)分析 每个事务以确定它的类型; (3)根据事务类型选取 一条活动通路。
或主要功能。 3.方框之间的直线表示模块的调用关系。 4.用带注解的箭头表示模块调用过程中传递的信息。
18
软件结构设计
➢确定系统中每个程序是由哪些模块组 成的,以及这些模块相互间的关系
调用关系
结构图图例:
传递的 是数据
产生最佳解
传递的 是控制
好输入

好输入

得到好输入
原始 输入
原始 输入
计算最佳解
➢变换分析是一且系应列该设使计数步据骤流的图总中称每,个经处 过这些步骤把理具都有代变表换一流个特规点模的适数中据相流对图
变换分析
按预先确定的独模立式的映子射功成能软件结构 ➢确保系统的输入数据和输出

软件工程导论课设

软件工程导论课设

软件工程导论课设一、课设概述软件工程导论课设是软件工程导论这门课程的重要组成部分,旨在让学生通过实践,深入理解软件工程的基本原理和方法,提高软件设计和开发能力。

本文将从以下几个方面进行详细介绍。

二、选题背景选题背景部分主要介绍为什么选择该课设主题以及该主题的研究意义和应用价值。

1. 选题缘由:本次课设选择的主题是“基于Web的在线商城系统设计与实现”,原因是随着互联网技术的不断发展,越来越多的消费者开始转向线上购物。

因此,开发一款功能强大、易于使用、安全可靠的在线商城系统对于商家来说具有重要意义。

2. 研究意义:本次课设旨在通过实践掌握Web开发技术和软件工程方法,提高学生对于软件设计、开发、测试等方面的能力。

同时,该课设也有助于加深学生对于电子商务领域相关知识的理解。

3. 应用价值:开发一款在线商城系统可以帮助商家提高销售效率、降低运营成本,同时也可以为消费者提供更加便捷的购物体验。

因此,该课设具有一定的社会和经济价值。

三、需求分析需求分析部分主要介绍对于在线商城系统的功能需求和性能需求进行详细的分析和说明。

1. 功能需求:在线商城系统需要实现用户注册、登录、商品浏览、购买下单、支付等基本功能,同时还需要支持商品分类、搜索、评价等高级功能。

2. 性能需求:在线商城系统需要具备较高的安全性和可靠性,同时还需要具备较快的响应速度和较低的错误率。

四、设计方案设计方案部分主要介绍对于在线商城系统进行详细设计的过程和方法。

1. 系统架构设计:采用MVC架构模式,将系统分为模型层、视图层和控制器层三个部分,实现业务逻辑与显示逻辑相互独立。

2. 数据库设计:采用关系型数据库MySQL存储数据,并通过ORM框架实现对象与关系之间的映射。

3. 界面设计:采用Bootstrap框架实现响应式布局,并通过JavaScript实现交互效果。

4. 安全性设计:采用HTTPS协议实现数据传输加密,同时还需要对于用户输入进行合法性验证和过滤,防止SQL注入等攻击。

软件工程导论课程设计[定稿]

软件工程导论课程设计[定稿]

软件工程导论课程设计[定稿]软件工程导论课程设计软件工程导论课程设计是计算机科学与技术专业中一门重要的课程。

在这门课程中,学生将学习软件工程的基本概念、原理和方法,并通过实际的案例学习,培养解决实际问题的能力。

本文将就软件工程导论课程设计进行探讨,包括课程设计的目标、内容、方法和评价等方面。

一、课程目标软件工程导论课程的目标是培养学生对软件工程的基本概念、原理和方法的理解,并能够运用所学知识解决实际问题。

具体目标如下:1. 掌握软件工程的基本概念和术语,了解软件开发的生命周期,熟悉软件工程的各个阶段和相关的工具与技术。

2. 理解软件需求分析、软件设计、软件测试等关键过程,并能够运用相应的方法和技术进行实践。

3. 培养团队协作能力,通过小组项目实践,锻炼学生的沟通、合作和解决问题的能力。

二、课程内容软件工程导论课程的内容主要包括以下几个方面:1. 软件工程的基本概念和发展历程:介绍软件工程的定义、目标和重要性,回顾软件工程的发展历史,讲解软件工程的核心原理与方法。

2. 软件开发过程与模型:介绍软件开发过程的各个阶段,包括需求分析、软件设计、编码、测试与维护等,并介绍常用的软件开发模型,如瀑布模型、敏捷开发模型等。

3. 软件需求工程:讲解软件需求的概念、分类和获取方法,介绍需求分析的过程与技术,包括需求建模、需求规格说明、需求验证等。

4. 软件设计与架构:介绍软件设计的基本原则和方法,讲解面向对象设计与分析,引导学生掌握常见的设计模式和架构模式。

5. 软件测试与质量保证:讲解软件测试的基本概念和分类,介绍测试的方法和技术,强调软件质量保证的重要性和方法。

6. 软件项目管理与团队协作:介绍软件项目管理的流程与方法,讲解团队协作的重要性和技巧,培养学生的团队合作能力。

三、课程方法为了提高学生的实践能力和团队合作能力,软件工程导论课程采用了以下教学方法:1. 理论讲授与实践结合:通过理论讲授和实际案例分析相结合的方式,引导学生深入理解软件工程的概念和方法,并能够灵活运用于实际项目中。

(完整word版)软件工程导论(第6版)(word文档良心出品)

(完整word版)软件工程导论(第6版)(word文档良心出品)

第一章、软件工程学概述软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

软件危机包含下述两个方面的问题:1.如何开发软件,以满足对软件日益增长的需求。

2.如何维护数量不断膨胀的已有软件。

具体的说,软件危机主要有以下一些典型表现:1.对软件开发成本的进度的估计常常很不准确。

2.用户对“已完成的”软件系统不满意的现象经常发生3.软件产品的质量往往靠不住。

4.软件常常是不可维护的。

5.软件通常没有适当的文档材料。

6.软件成本在计算机系统总成本中所占的比例逐年上升。

7.软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。

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

软件配置:程序、文档和数据。

软件工程学的一个重要的目标:就是提高软件的可维护性,减少软件维护的代价。

软件:是程序、数据及相关文档的集合。

程序:是能够完成预定功能和性能的可执行的指令序列。

数据:是使程序能够适当地处理信息的数据结构。

文档:是开发、使用和维护程序所需要的图文资料。

软件工程:指导计算机软件开发和维护的一门工程学科。

软件工程具有下属的本质特性:1.软件工程关注于大型程序的构造。

2.软件工程的中心课题是控制复杂性。

3.软件经常变化。

4.开发软件的效率非常重要。

5.和谐地合作是开发软件的关键。

6.软件必须有效地支持它的用户。

7.在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。

软件工程的7条基本原理:1.用分阶段的生命周期计划严格管理。

2.坚持进行阶段评审。

3.实行严格的产品控制4.采用现代程序设计技术。

5.结构应能清楚的审查。

6.开发小组的人员应该少而精。

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

软件工程:包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。

通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为泛型。

软件工程导论课程设计任务书

软件工程导论课程设计任务书

软件工程导论课程设计任务书《软件工程》课程设计任务书一、目的及意义软件工程课程设计是在学生学习了《软件工程导论》课程的同时,综合运用所学的知识,设计开发一个小型的实际系统。

要求学生运用软件工程的思想,严格按照软件生命周期各个阶段的目的和任务,完成对系统的定义、设计、编码、运行以及后期的维护。

通过对具体系统的设计和开发,使得学生掌握软件工程的基本原理和基本方法,学会用软件工程学的概念、原理、方法开发和维护软件。

二、内容及要求本课程设计要求学生采用4人一组的“项目小组”形式,结合具体的开发项目进行设计,对软件生命周期的每一个阶段包括可行性分析、需求分析、概要设计、详细设计等严格按照软件工程规范实施一个具体的案例。

具体要求如下:可以选择结构化分析、设计方法(SA/SD)或面向对象方法(OOA/D)。

1、结构化分析、设计方法(SA/SD)1)需求分析:分析系统的静态功能和动态行为。

每一位小组成员能够描绘分配的子功能需求;每一位小组成员完成分配子功能的数据流图,小组负责人组织完成系统的数据流图。

2)分析设计:完成系统的功能模块设计。

每一位小组成员根据需求的DFD图,完成分配的子功能模块设计,用HIPO图表征。

每一位小组成员设计分配的子功能模块并完成ER图、程序流程图的设计,小组负责人组织完成系统的总体框图和ER图的设计。

2、面向对象方法(OOA/D):以UML为主1)需求分析:分析系统的静态功能和动态行为。

每一位小组成员完成一个用例分析并绘制用例图,完成一个用例下的活动图;小组负责人负责整个系统的用例图和活动图并描述系统的动态行为。

2)分析设计:完成系统的功能模块设计。

根据用例分析,小组共同协商,完成选取设计模式,设计系统的架构,用包图和构件图表示,每一位小组成员完成所分配的用例功能的动态设计,至少绘制一个顺序图,设计系统的对象及交互,每一位小组成员完成所分配的用例功能的类图设计,小组共同协商,完成整个系统的类图设计和组件的封装设计。

软件工程导论第1章(第4版)

 软件工程导论第1章(第4版)
普通高校本科计算机专业特色教材精选
软件工程导论 (第4版)
张海藩 编著
总目录
第1章 软件工程学概述 第8章 维护
第2章 可行性研究
第9章 面向对象方法学引论
第3章 需求分析
第10章 面向对象分析
第4章 形式化说明技术 第11章 面向对象设计
第5章 总体设计
第12章 面向对象实现
第6章 详细设计
第13章 软件项目管理
测试、综合测试又称为系统实现。 设计出实现目标系统的方案,设计程序的体系结构。 确定实现模块功能所需要的算法和数据结构; 设计出程序的详细规格说明; 用适当的程序设计语言写出正确的容易理解、容易维护的
程序模块并进行单元测试; 根据设计的软件结构,把各模块装配起来并进行测试; 通过对软件测试结果的分析预测软件的可靠性; 写出测试计划和详细测试方案并记录实际测试结果; 按照规格说明书的规定,由用户对目标系统进行验收。
第7章 实现
第1章 软件工程学概述
软件成为独立的商品 计算机应用的普及,促使人们对软件的品种、
数量、功能、质量等提出了越来越高的要求 在1970前,计算机硬件工程技术由于电子技术
的发展而建立 重视软件开发过程、方法、工具和环境的研
究—软件工程
1.1 软件危机 一.软件
1.软件的定义 软件是能够完成预定功能和性能的可执行的计算
2. 产生软件危机的原因
(1)软件开发个体化,采用了错误的方法和技术,无设计资 料留存; (2)软件规模的增长,使得软件的复杂度增加,软件的可靠 性随软件规模的增长而下降,质量保证越来越困难; (3)软件维护费用急剧上升。
据统计,软件维护费用大约占到软件总花费的2/3; (4)软件生产技术进步缓慢,是加剧软件危机的重要原因。

软件工程导论(第6章)

软件工程导论(第6章)
(10)用简单动词或动词短语作为命令名。过 长的命令名难于识别和记忆,也会占用过多 的菜单空间。
整理ppt
28
2.信息显示指南
如果人机界面显示的信息是不完整的、含糊 的或难于理解的,可以用多种不同方式“显 示”信息:用文字、图形和声音;按位置、 移动和大小;使用颜色、分辨率和省略。
关于信息显示的设计指南 (1)只显示与当前工作内容有关的信息。 (2)不要用数据淹没用户,应该用便于用户迅
1965年,他在一次会议上指出:“可以从高级语 言中取消GOTO语句”,“程序的质量与程序中所 包含的GOTO语句的数量成反比”。
1966年Bohm和Jacopini证明了,只用三种基 本的控制结构就能实现任何单入口单出口的程序。 这三种基本的控制结构是“顺序”、“选择”和 “循环”。
1972年IBM公司的Mills进一步提出,程序应该 只有一个入口和一个出口,从而补充了结构程序设 计的规则。
第六章 详细设计
整理ppt
1
第一部分:结构设计,回答用什么方法进行 详细设计。
第二部分:人机界面设计
第三部分:过程设计的工具(程序流程图、 盒图、PAD图、判定表、判定树等)
第四部分:面向数据结构的设计方法( Jackson方法)
第五部分:程序复杂程度的定量度量
整理ppt
2
详细设计的目标
应该具有下述属性 (1)信息应该用用户可以理解的术语描述问题。 (2)信息应该提供有助于从错误中恢复的建设
性意见。
整理ppt
19
(3)信息应该指出错误可能导致哪些负面后果 (例如,破坏数据文件),以便用户检查是否 出现了这些问题,并在确实出现问题时及时 解决。
(4)信息应该伴随着听觉上或视觉上的提示, 例如,在显示信息时同时发出警告铃声,或 者信息用闪烁方式显示,或者信息用明显表 示出错的颜色显示。

软件工程各阶段各图

软件工程各阶段各图

我们通常都是对图形化的东西情有独钟,我们小时候的启蒙教育基本上也都是从图形化开始的,我们曾经看过的连环画、漫画、看图识字等等.因为图形能将一个抽象的东西具体化、形象化,图形化的表述能将一个用文字语言无法表达清楚或很难表达的观点、事物、科学概念等清晰的呈现出来.这就是为什么我们相比晦涩难懂文字更喜欢形象生动的图形的原因。

软件工程导论作为软件工程中非常重要的一门课程,通常因为其偏文科性、理论性、概念性而得不到人们的重视,但幸运的是在软件工程导论中有我们非常易于接受、理解的东西——图,否则我们自己会把自己害得很惨(软件工程导论真的很重要哦!)。

软件工程导论中一般把软件的开发分为八个阶段:1。

问题定义2.可行性研究3.需求分析4。

总体设计(概要设计)5。

详细设计6。

编码和单元测试7.综合测试8。

软件维护。

下面我们就说说各个阶段中与图的难解难分.1. 问题定义问题定义阶段主要是根据用户的需求来定义用户需要解决的问题,用户要实现哪些功能。

2. 可行性研究可行性研究阶段就是看是否有一种使其在最小的代价,尽可能短的时间内,利益最大化的情况下解决问题的方案。

这个阶段的分析主要涉及以下几个图形工具。

2.1 系统流程图系统流程图是描述系统物理模型的一种传统工具.它是表达数据在系统各部件之间流动的情况,而不是对数据加工处理的控制过程,它是物理数据流图而不是程序流程图。

系统流程图形象的呈现了软件的功能,即使不懂软件的人也可以轻松的看懂,可以说它是软件设计师与用户之间沟通、交流的有效工具。

2。

2 数据流图数据流图是从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法.如果说系统流程图能让用户更好的明白系统的功能,那么数据流图则让用户更加明白系统的工作原理。

2.3 数据字典数据字典就是数据的信息的集合,也可以说就是对上面提到的数据流图中的所有元素的定义的集合。

软件工程导论实践指南:详细设计

软件工程导论实践指南:详细设计
➢ 在详细设计阶段采用自顶向下逐步求精的设计方法,可以 把一个模块的功能逐步分解和细化为一系列具体的处理步 骤或某种高级语言的语句。
控制结构
第9章 详细设计
第9章 详细设计
详细设计描述工具
程序流程图 盒图(N-S图) PAD图 判定表 判定树 过程设计语言(PD审 实践项目详细设计
Q&A
➢ 详细设计的结果基本上决定了最终程序代码的质量。
第9章 详细设计
详细设计阶段应遵循下列原则:
➢ 模块的逻辑描述正确可靠、清晰易读 ➢ 设计过程中应采用逐步细化的实现方法
第9章 详细设计 结构程序设计
➢ 在总体设计阶段采用自顶向下逐步求精的设计方法,可以 把一个复杂问题分解细化为为一个由若干模块组成的层次 结构的软件系统;
第9章 详细设计
详细设计阶段的任务
➢ 详细设计的主要任务是在进行程序编码之前,根据总体设计提供的文 档,细化总体设计中已划分出的每个功能模块,为每个模块确定具体 的实现算法、所需的局部数据结构,并清晰、准确地描述出来,从而 在具体编码阶段可以把这些描述直接翻译成用某种程序设计语言书写 的程序。
➢ 详细设计成果可用程序流程图描述,也可用伪码描述,还可用形式化 软件设计语言描述。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件工程导论 第9课
6.4 面向数据结构的设计方法
6.4 面向数据结构的设计方法



由来: 数据结构既影响程序的结构又影响程序的处 理过程 面向数据结构的设计方法的最终目标: 得出对程序 处理过程的描述 处理过程: 在完成了软件结构设计之后,可以使用 面向数据结构的方法来设计每个模块的处理过程 主流方法 Jackson方法 Warnier方法
6.5 程序复杂程度的定量度量

定量度量程序复杂程度的方法很有价值:把 程序的复杂程度乘以适当常数即可估算出软 件中错误的数量以及软件开发需要用的工作 量。定量度量的结果可以用来比较两个不同 的设计或两个不同的算法的优劣;程序的定 量的复杂度可以作为模块规模的精确限度。
6.5.1 McCabe方法

任何 方法 表示 的过 程设 计结 果, 都可 以翻 译成 流图


复合条件:在条 件中包含了一个 或多个布尔运算 符 把复合条件分解 为若干简单条件 ,每个简单条件 对应图中一个结 点。
2计算环形复杂度的方法
(1)流图中的区域数等于环形复杂度。
(2)流图G的环形复杂度V(G)=E-N+2,
3重复结构




数据元素种类 重复: 根据使用时的条件由一个数据元素出 现零次或多次构成 A iter until(while) cond B A end

信用卡记帐系统的输入
Jackson图实例
信用卡记帐系统的输出
6.4.1 Jackson图


优点 便于表示层次结构,而且是对结构进行自顶 向下分解的有力工具 形象直观可读性好 既能表示数据结构也能表示程序结构

E = N log2(n1+n2) / 3000
误差在8%以内

第5 章,第6章可在7节课内上完,一节课给 第7章
其中,E是流图中边的条数,N是结点 数。 (3)流图G的环形复杂度V(G)=P+1,其 中,P是流图中判定结点的数目。
3 环形复杂度的用途


程序的环形复杂度取决于程序控制流的复杂 程度 它是对测试难度的一种度量 模块规模以V(G)≤10为宜,也就是说, V(G)=10是模块规模的一个更科学更精确的 上限
为每对有对应关系的数据单元,按照它们在数据 结构图中的层次在程序结构图的相应层次画一 个处理框 根据输入数据结构中剩余的每个数据单元所处的 层次,在程序结构图的相应层次分别为它们画 上对应的处理框 根据输出数据结构中剩余的每个数据单元所处的 层次,在程序结构图的相应层次分别为它们画 上对应的处理框
(4)列出所有操作和条件(包括分支条件和循 环结束条件),并且把它们分配到程序结构 图的适当位置 (5)用伪码表示程序
6.4.2 改进的Jackson图



Jackson图缺点 表示选择或重复结构时,选择条件或循环结 束条件不能直 接在图上表示 不易直接把图翻译成程序 框间连线为斜线,不易在行式打印机上输出 Jackson图与层次图比较 方块, 前者只代表几个语句, 后者通常代表一 个模块; 前者表示组成关系; 后者表示调用关系
6.4.3 Jackson方法


(1)分析并确定输入数据和输出数据的逻辑结 构,并用Jackson图描绘这些数据结构 (2)找出输入数据结构和输出数据结构中有对 应关系的数据单元 (3)用下述3条规则从描绘数据结构的 Jackson图导出描绘程序结构的Jackson图:
6.4.3 Jackson方法


数据元素种类 顺序: 顺序结构的数据由一个或多个数据元 素组成,每个元素按确定次序出现一次 A seq B C D A end
2 选择结构


数据元素种类 选择: 包含两个或多个数据元素,每次使用 这个数据时按一定条件从这些数据元素中选 择一个 A select cond1 A or cond2 A or cond3 A endB C D
6.5.2 Halstead方法


原理:根据程序中运算符和操作数的总数来 度量程序的复杂程度。运算符是通常语法中的象+,-,>,<,if-thenelse, while-do等这样一些语法元素 操作数是指那些变量、常量等。至于注解、 说明和其他 的非执行语句并不计入在内
程序长度N的计算
N = N 1 + N2



McCabe方法根据程序控制流的复杂程度定 量度量程序的复杂程度,这样度量出的结果 称为程序的环形复杂度。 为了突出表示程序中的控制流,人们使用流 图。 流图实质上是“退化了的”程序流程图, 它仅仅描绘程序的控制流程,完全不表现对 数据的具体操作以及分支或循环 的具体条件 。
右图6.15把程序流程图映射成流图 (a)程序流程图 (b)流图

用伪码表示程序
循环: ‘iter’、‘until’、‘while’和‘end’是关键字
A iter until(或while) cond B A end

例子

一个正文文件由若干个记录组成,每个记录 是一个字符串。要求统计每个记录中空格字 符的个数,以及文件中空格字符的总个数。 要求的输出数据格式是,每复制一行输入字 符串之后,另起一行印出这个字符串中的空 格数,最后印出文件中空格结构对应的伪码: ‘seq’和‘end’是 关键字 A seq B C D A end
用伪码表示程序
选择: ‘select’、‘or’和‘end’是关键字
A select cond1 B A or cond2 C A or cond3 D A end
N1 为程序中运算符出现的总次数 N2 为程序中操作符出现的总次数
Halstead方法预测程序长度H的计算
H = n1 log2n1 + n2 log2n2 n1为程序中使用不同运算符的个数 n2为程序中使用不同操作符的个数
实践表明,预测长度H和实际长度N很接近 Halstead方法预测程序中错误E的个数
6.4.1 Jackson图



数据元素种类 顺序: 顺序结构的数据由一个或多个数据元 素组成,每个元素按确定次序出现一次 选择: 包含两个或多个数据元素,每次使用 这个数据时按一定条件从这些数据元素中选 择一个 重复: 根据使用时的条件由一个数据元素出 现零次或多次构成
1 顺序结构



相关文档
最新文档