




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件工程前言 本书是依据教育部高职高专教育基础课程教学的基本要求和高职高专教育专业人才培养目标与规格编写而成。全书共15章,内容主要包括:软件危机与软件工程;软件开发模型;计算机系统工程,需求分析,总体设计,详细设计,编码与测试,软件维护,面向对象技术,快速原型技术,重用技术,人机界面设计。书中含有丰富的例题与习题,便于教学与自学。 本书强调内容的实用性,以问题带知识点的方式来阐述,内容精练,重点突出,概念清楚,针对性和实际操作性强。第一章 软件危机与软件工程学习要点:软件工程是在20世纪60年代末期提出的。这一概念的提出,其目的是倡导以工程的原理、原则和方法进行软件开发,以期解决当时出现的“
2、软件危机”。本章介绍软件危机和软件工程的基本概念。第1章 软件工程 1.2 软件工程退出 1.1 软件危机1.1软件危机1.1.1 软件代价高1.1.2 软件开发和维护中的严重问题退出1.1.1软件代价高计算机系统硬件/软件成本变化趋势在开发一个新型计算机系统或修改一个现有系统的过程中,最大部分的资金是用在软件系统开发方面。1.1.2 软件开发和维护中的严重问题计算机系统发展的早期时代所形成的错误概念与做法,已经严重阻碍了计算机软件的开发,更严重的是:用错误方法开发的软件几乎根本无法维护,只好提前报废。1、软件危机2、有那些软件开发的错误方法和观念3、 软件产品的质量量化分析不够。1、 软件开
3、发成本与进度估计不准确。2、 闭门造车。软件开发人员仓促上阵,编写程序。4、 软件重用性差。5、 软件没有适当的文档资料。6、 软件成本逐年上升。本节小结 产生软件危机原因-与软件本身的特点有关:1、软件是逻辑部件:试制阶段难衡量;开发质量较难评价,开发过程管理和控制较难;运行过程才能暴露没有检测出来的事故,相当于修改设计,软件维护困难;2、软件规模庞大,有技术问题,也有管理方法问题。3、早期开发的个体化;忽视需求分析;认为软件开发写程序;轻视维护,对用户不了解,4、对前期工作不能忽视,做好软件定义时期的工作,这是降低成本,提高件质量的关键。5、严重性:在软件开发的不同阶段修改付出代价(后期是
4、前期的2-3个数量级),软件维护是极端艰巨复杂的工作,占55%70%)1. 2 软件工程1.2.1 软件工程的定义与基本原理1.2.2 软件工程的目标1.2.3 软件工程框架及原则退出软件工程学科是一门指导计算机软件开发和维护的工程学科。软件工程是一类求解软件的工程。它应用计算机科学、数学及管理科学等原理,借鉴传统工程的原则、方法,创建软件以达到提高质量,降低成本的目的。其中,计算机科学、数学用于构造模型与算法,工程科学用于制定规范设计范型、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。软件工程的方法、工具、过程构成了软件工程的三要素。1.2.1 软件工程的定义与基本原理1、软
5、件工程的七条基本原理(1)用分阶段的生命周期计划进行严格管理(2)坚持进行阶段评审(3)实行严格的产品控制(4)采用现代程序设计技术(5)结果应能清楚地审查(6)开发小组的人员应该少而精(7)承认不断改进软件工程实践的必要性1.2.2 软件工程的目标软件工程的目标可概括为:在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并满足用户需要的软件产品。应该特别指出;“可靠性”这个目标在软件工程中有着重要的意义。广义上讲,它涉及到产品设计的一系列问题,从而使产品能在相当长的期间内稳定工作。狭义上讲,可靠性是软件成功运行
6、的概率度量,可靠性分析和可靠性测试可作为衡量软件质量和其他开发过程的最重要的方法之一。1.2.3 软件工程框架及原则原则:一、选取适宜的开发模型; 二、采用合适设计方法;三、提供高质量工程支持; 四、重视开发过程管理。第2章 软件生命周期及软件开发模型学习要点: 软件生命周期表明软件从功能确定、设计,到开发成功投入使用,并在使用中不断地修改、增补和完善,直至被新的需要所替代而停止该软件的使用的全过程。软件开发模型是从软件项目需求定义直至软件经使用后废弃为止,跨越整个生存期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。第2章 软件生命周期及软件开发模型2.1 软件生命周期2.2
7、软件开发模型退出 软件生命周期:软件定义、软件设计、软件使用与维护三阶段,而又可以具体分成几个子阶段。(1) 可行性研究:确定待开发软件系统的总目标,给出其功能、性能、可靠性、接口等要求。(1)可行性研究(2)需求分析和定义(3)总体设计(4)详细设计(5)编码(实现)(6)软件测试、运行维护(1) 可行性研究:确定待开发软件系统的总目标,给出其功能、性能、可靠性、接口等要求。2。2软件模型 软件开发模型是软件开发全部过程、活动和任务的结构框架。最早出现的软件开发模型是1970年WRoyce提出的瀑布模型,而后随着软件工程学科的发展和软件开发的实践,相继提出了原型模型、演化模型、增量模型、喷泉
8、模型等。1.原型模型、螺旋模型 关于 模型小结螺旋模型是由上面四个部分组成的迭代模型。螺旋模型的每一周期都包括需求定义、风险分析、工程实现和评审四个阶段。开发过程每迭代一次,螺旋线就增加一周,软件开发又前进一个层次,系统又生成一个新版本,而软件开发的时间和成本又有了新的投入。最后得到一个客户满意的软件版本。 喷泉模型该模型表明软件开发活动之间没有明显的间隙,用于支持面向对象开发过程。由于对象概念的引入,使分析、设计、实现之间的表达没有明显间隙。并且,这一表达自然地支持复用。 小 结软件生命周期实质上是大型系统开发过程中各项目阶段的一种表示方法,如同任何事物一样,软件也有一个孕育、诞生、成长、成
9、熟、衰亡的生存过程。根据这一思想,把上述基本的过程活动进一步展开,可以得到软件生命期的6个步骤,即制定计划、需求分析、设计、程序编码、测试及运行维护。软件生命期模型是从软件项目需求定义直至软件经使用后废弃为止,跨越整个生命周期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。第3章 计算机系统工程 计算机软件工程和硬件工程可以看作是一门更广义的学科“计算机系统工程”内的活动。它们所要做的都是按一定的次序开发基于计算机的系统。计算机系统工程是指与构造基于计算机系统有关的过程、方法和技术。它是一种问题求解活动。计算机系统工程的任务是:组织并指导系统工程师定义全系统各层次中的所有基于计算
10、机系统的要素。第3章 计算机系统工程 20世纪60年代开始发展起来的计算机系统工程,是计算机硬件、软件、数据通信装置、数据存储设备、规章制度和有关人员的统一体。软件工程在各个领域有着广泛的应用,如计算机辅助设计(CAD)系统、计算机辅助制造(CAM)系统、计算机辅助教学系统、计算机辅助医疗系统、军用的计算机指挥系统、通信软件工程、公用或专用的现代通信系统和信息服务系统都各具特色,管理软件是一类最具代表性的软件工程。 第3章 计算机系统工程3.1 基于计算机的系统3.2 可行性研究 3.3 系统开发过程的新体系结构快速原型与面向对象 3.4 本章小结 3.1 基于计算机的系统基于计算机的系统是“
11、某些要素的一个集合,这些要素被组织起来以实现某种方法、过程或借助处理信息进行控制。”图3.1给出了基于计算机系统的系统要素及相互之间关系。图3.1 基于计算机系统的系统要素及相互之间关系 3.1.1 计算机系统工程 计算机系统工程是一个问题求解活动,目的是揭示、分析所期望的功能,并把它们分配到各个单独的系统要素中去。计算机系统开发设计周期见图3.2。图3.2 系统开发设计周期在系统的功能规范确立之后,下一步要对系统的功能进行认真、仔细的分析,问题的焦点集中于功能、性能、信息流和容量上。一个计算机系统方案应包括以下几个方面的内容: (1)任务的来源,技术要求,质量指标和经费 . (2)采取的技术
12、途径。 (3)方案的规模,子系统的划分。 (4)系统的数据库结构。 (5)预计系统的各项指标。 (6)所需的设备、仪器、关键元器件、工艺工具 等 的购置情况及保证条件。 (7)研制周期、异常情况的处理等等。用户中心设计UCD方法在某种程度上代表了当今的计算机系统技术发展水平,使用该方法能设计极具竞争力的产品,UCD方法适合一切项目。现将传统设计方法与用户中心设计UCD方法加以比较。 传统的设计方法技术驱动以组件为中心有限的多学科协作注重产品的内部体系结构没有专门考虑用户体验竞争意识不强开发先于用户评价产品缺陷质量观不重视用户测量只考虑现有用户 UCD方法用户驱动以解决方案为中心多学科小组成员协
13、同工作注重产品的外部设计专门考虑用户体验以竞争为目标由用户评价设计方案后才开发用户质量观很重视用户测量考虑当前和将来所有用户图3.3 UCD方法和传统设计方法的比较 3.1.2 硬件和硬件工程 基于计算机的系统离不开计算机硬件的支撑。计算机系统工程师根据系统需求为硬件系统指派任务,产生硬件需求。 21世纪以来,信息可以很方便地通过计算机网络实现共享。作为网络文件服务器的计算机,可以给分布在网络上不同站点的客户提供共享的公用程序和数据,这就是客户服务器计算模式。计算机的硬件工程是在几十年电子设计经验的基础上发展起来的,一般将硬件工程分为三个阶段。硬件工程阶段需解决的问题成果(一)硬件研制计划需求
14、分析根据功能可选择、采购的硬件?哪几种硬件接口?必须制造的硬件?潜在的问题及资源?确定项目成本估计、工程进度估计、硬件规格说明(二)硬件设计硬件实现确定硬件元素中的所有元件精确的功能、性能和接口需求。设计约束条件(如尺寸,环境)及测试准则;必要时建造原型并对原型进行测试;画出生产图、硬件规格说明书、对规格说明书评审和修改(三)生产、销售售后服务质量如何得到保证?产品的维护和修理如何实现?建立质量保证方法、建立产品销售机构、储备备件,售后服务表3.1 硬件工程三个阶段 3.1.3 软件和软件工程 从系统工程的角度来看,软件与硬件、软件工程与硬件工程分别是基于计算机系统和基于计算机的系统工程的重要
15、组成部分。系统工程的论证阶段应该确定系统的软硬件功能和性能。系统对软件提出的功能和性能要求将成为软件需求分析的基础。基于计算机系统的软件要素由程序、数据和文档组成。它们分为两类应用软件与系统软件:应用软件实现信息处理,系统软件完成使应用软件能与其他系统要素交互的控制功能。 一个基于计算机的系统可以用输入处理输出(IPO)模型来表示。软件要素在这个模型的各个方面都起着一定的作用。 (1)软件从系统的外部实体或其他系统要素(包括宏要素)接收输入信息。 (2)软件还用于建立数据库的接口,使程序能够存取预先存储的数据。(3)软件实现系统功能所需要的计算方法。(4)在实际使用中,软件必须产生输出,把数据
16、转换成某种能适合于输出介质的格式,或适合于输出设备接口的格式。软件工程三个阶段软件工程阶段必须完成的步骤阶段成果(一)软件定义制定软件项目规划;需求分析和定义;确定软件性能和资源约束;软件要素定义验收标准成本、工程进度估计;通过软件原型化信息域分析获得软件规格说明;对软件规格说明技术评审(二)软件开发、实现软件总体结构设计软件模块结构;数据设计、过程设计接口及信息结构;编码生成源程序代码确定一些有效性准则;对规格说明书评审修改;根据准则判断软件质量(三)检验、发行、维护测试软件,找出错误:进行单元测试调试,组装测试调试;开发用户文档;把软件发行给终端用户对测试文档、测试用例和测试结果进行评审;
17、建立配置管理机制;整个使用寿命中维护软件;3.1.4 人机工程 人机工程是应用从心理学和方法论导出的知识来确定和设计高质量HCI(人机界面)的多学科活动。人机工程过程包括以下步骤:(1)活动分析。 (2)语义分析和设计: (3)语法和词法设计: (4)用户环境设计: (5)原型: 人机工程的关键要素是设计一个整体解决方案,它应该对用户而言: 易于购买、易于安装 、易于学习、易于使用、直观、吸引人、 有用3.1.5 数据库和数据库工程 数据库系统是基于计算机系统的重要组成部分,它将有关的硬件、软件、数据和数据库管理人员组合起来,为用户提供信息服务。开发、运行和管理一个数据库系统是一项复杂的数据库
18、工程,人们也常称之为数据库工程。 阶段任务结果(一)需求分析、可行性研究调查用户信息需求、处理要求进行可行性论证;提出成本预算和工作计划(二)选择硬件和软件应确定数据管理系统;支持数据库查询、维护和分析确定运行的操作系统、网络环境(三)数据库设计与实现根据需求分析和数据分析;概念设计;逻辑设计;物理设计;评审、测试;产生需求说明和数据说明;产生数据库概念模型;产生逻辑模型;产生数据软件工程的原则;生成各种文档(四)运行和管理及时补充、修改和更新数据库;数据的收集、整理、分类;储存数据库的管理和维护对数量大、类型多、关系复杂的数据存储应有利于数据的查询、修改并尽量减少数据的冗余;为用户提供培训及
19、有关资料表3.4 数据库工程的阶段 不同的数据存储管理模式有不同的特点,适用范围也不相同。 3.2 可行性研究 可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。 在讨论一个项目是否可行,需要从市场可行性、技术可行性、经济可行性、法律可行性分析几个方面着手进行考虑。3.2.1 可行性研究的任务 图3.4表明了可行性研究的步骤 3.2.2 市场可行性 要求在项目启动时定位目标市场,清楚在这个市场中的所有用户及他们的特点,并且清楚大部分目标用户当前所采用的解决方案,从而掌握产品竞争形势。必须在项目一开始就得到这些信息。如果没有这些信息或信息不全,那么接下来的设计活动是否有效就
20、值得怀疑了。3.2.3 经济可行性 基于计算机系统的成本效益分析是可行性研究的重要内容,它用于评估基于计算机系统的经济合理性,给出系统开发的成本论证,并将估算的成本与预期的利润进行对比。计算机系统的成本由四个部分组成: 购置并安装软硬件及有关设备的费用; 系统开发费用; 系统安装、运行和维护费用; 人员培训费用。在系统分析和设计阶段只能得到上述费用的预算,即估算成本。在系统开发完毕并交付用户运行后,上述费用的统计结果就是实际成本。 系统效益包括经济效益和社会效益两部分。经济效益指应用系统为用户增加的收入,可以通过直接的或统计的方法估算。社会效益只能用定性的方法估算。1成本估计 (1)代码行技术
21、 (2)任务分解技术 2成本效益分析 成本效益分析的第一步是估计开发成本、运行费用和新系统将带来的经济效益。3货币的时间价值通常用利率的形式表示货币的时间价值。假设年利率为i,如果现在存入P元,则n年后可以得到的钱数为:F=P(1i)n这也就是P元钱在n年后的价值。反之,如果n年后能收入F元钱,那么这些钱的现在价值是:P=F/(li)n 假定年利率为12,利用上面计算货币现在价值的公式可以算出修改库存清单系统后每年预计节省的钱的现在价值,如表所示。年将来值(元)(li)n现在值(元)累计的现在值(元)125001.122232.142232.14225001.251992.984225.123
22、25001.401779.456004.57425001.571588.807593.37525001.761418.579011.944投资回收期 所谓投资回收期就是使累计的经济效益等于最初投资所需要的时间。投资回收期越短就越能获得利润。例如,修改库存清单系统:两年以后可以节省4225.12元,比最初的投资(5000元)还少774.88元; 三年以后将再节省1779.45元,774.881779.45=0.44,因此,投资回收期是2.44年。 5纯收入 衡量工程价值的另一项经济指标是工程的纯收入,也就是在整个生命周期之内系统的累计经济效益(折合成现在值)与投资之差。 3.2.4 技术可行性
23、技术可行性的评估必须在软件系统分析和定义过程中进行,当技术可行性确定后,就可以完成在规格说明书。一般地,技术可行性要考虑的情况包括: 开发风险:在分析时给出的各种约束条件下,系统能否被设计出来,并实现必需的功能和性能?资源有效性:可用于开发系统元素的人员是否存在问题?是否具备用于建立系统的其他资源(硬件、软件)?技术:相关技术的发展是否能支持这个系统?3.2.5 方案选择 系统分析任务完成后,系统工程师开始研究问题求解方案。通常系统工程师将一个大的复杂系统分解为若干个子系统;精确地定义子系统的界面、功能和性能;给出各子系统之间的关系。这样可以降低解决方案的复杂性,有利于人员的组织和分工,提高系
24、统开发效率和工作质量。可行性研究的结果可作为系统规格说明书的一个附件。 项目背景:问题描述;实现环境;限制条件;管理概要与注意事项:重要的研究结果;说明;注意事项;影响;候选方案:候选系统的配置;选择最终方案的准则;系统描述:简略的范围描述;分配元素的可行性;市场可行性 :项目是否有潜在市场,以及市场的变化对项目影响经济可行性(成本效益分析):经费概算;预期的经济效益;技术可行性(技术风险评价):技术实力;已有工作基础;设备条件;法律可行性:系统开发可能导致的侵权、违法和责任;用户使用可行性:用户单位的行政管理、工作制度;使用人员的素质;其他与项目有关的问题:其他方案介绍;未来可能的变化。表3
25、.7 可行性研究报告目录 3.3 系统开发过程的新体系结构快速原型与面向对象 1存在的问题 (1)有些类型的系统需求是模糊的 (2)项目参与者之间存在通信鸿沟 (3)预先定义的需求可能是过时的 2解决问题的途径 为克服传统方法的缺点,人们在实践中逐渐创造出快速原型法和面向对象方法等软件工程的新途径。 面向对象的统一软件开发方法迭代开发模式3.4 本章小结计算机系统工程是指与构造基于计算机系统有关的过程、方法和技术。它是一种问题求解活动。计算机系统工程的任务是:组织并指导系统工程师定义全系统各层次中的所有基于计算机系统的要素(硬件、软件、人、数据库、文档、过程)。本章首先阐述了计算机系统工程的总
26、体设计方案的内容及要点:硬件工程、软件工程、人机工程和数据库工程。然后进一步阐述了计算机系统工程可行性研究的目的:应确定问题是否值得去解;任务是从市场、经济、技术、法律、开发方案的选择性四方面研究计算机系统工程可能性;强调了技术可行性研究应给以高度重视,这一阶段决策的失误将会给开发工作带来灾难性的影响。介绍了系统结构模板的概念与使用要点。第4章 需求分析软件需求分析就是把软件计划期间建立的软件可行性分析求精和细化,分析各种可能的解法,并且分配给各个软件元素。需求分析是软件定义阶段中的最后一步,是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。在本章首先我们介绍需求分
27、析的基础,然后介绍结构化需求分析方法,最后介绍其它分析方法与图形工具分析方法。第4章 需求分析4.1 需求分析基础 4.4 实体关系图 4.6 本章小结 4.5 需求规格说明与评审 4.3 其它分析方法与图形工具 4.2 结构化分析方法 4.1 需求分析基础 4.1.1 分析的任务与原则 4.1.2 初步需求获取技术 4.1.3 需求建模 4.1.4 开发原型系统 4.1.1 分析的任务与原则 软件需求分析的任务是:深入描述软件的功能和性能,确定软件设计的约束和软件同其他系统元素的接口细节,定义软件的其他有效性需求,借助于当前系统的逻辑模型导出目标系统逻辑模型,解决目标系统“做什么”的问题。需
28、求分析任务与其实现步骤如图4.1所示。需求分析可分为需求提出、需求分析描述及需求评审三个阶段。图4.1 需求提出和分析的结果需求提出需求提出主要集中于描述系统目的。需求提出和分析仅仅集中在使用者对系统的观点上。用户、开发人员和用户确定一个问题领域,并定义一个描述该问题的系统。这样的定义称作系统规格说明,并且它在用户和开发人员之间充当合同。 需求分析描述 在问题分析阶段分析人员的主要任务是:对用户的需求进行鉴别、综合和建模,清除用户需求的模糊性、歧义性和不一致性,分析系统的数据要求,为原始问题及目标软件建立逻辑模型。分析人员的主要做法是:要将对原始问题的理解与软件开发经验结合起来,以便发现哪些要
29、求是由于用户的片面性或短期行为所导致的不合理要求,哪些是用户尚未提出但具有真正价值的潜在需求。 需求评审 在需求评审阶段,分析人员要在用户和软件设计人员的配合下对自己生成的需求规格说明和初步的用户手册进行复核,以确保软件需求的完整、准确、清晰、具体,并使用户和软件设计人员对需求规格说明和初步的用户手册的理解达成一致。一旦发现遗漏或模糊点,必须尽快更正,再行检查。 4.1.2 初步需求获取技术 为了完成软件需求任务,分析人员必须掌握一些基本技术,主要有:初步需求获取技术、需求建模、以及用于需求分析的快速原型技术;一些公共的技术包括:采访、观察、先前的系统版本的测试和系统分析。作为一个好的需求获取
30、技术的显著特征是:方便通信(可以通过易于理解的语言)。提供定义系统模块的方法。鼓励分析员用问题空间的术语而不是软件术语去思考问题和编制文档。允许并提醒分析员有多种可供选择的设计方案。适应需求的变化。4.1.3 需求建模 由于用户群体的各个用户往往会从不同的角度、不同的抽象级别上阐述他们对原始问题的理解和对目标软件的需求,因此,有必要为原始问题及目标软件解建立模型。这种模型一方面用于精确地记录用户从各个视点、不同抽象级别上对原始问题及目标软件的描述;另一方面,它也将帮助分析人员去伪存真、由此及彼、由表及里挖掘用户需求。建模的步骤是: (1)获得当前系统的物理模型 (2)抽象出当前系统的逻辑模型。
31、 (3)建立目标系统的逻辑模型。 图4.2 软件需求建模的任务 4.1.4 开发原型系统 快速原型方法核心思想是:在软件开发的早期快速建立目标软件的原型,让用户对原型进行评估并提出修改意见,当原型几经改进最终确定后,它将由软件设计和编码阶段进化成软件产品;或者设计和编码人员遵循原型所确立的外部特征实现软件产品。把建立原型系统作为一种可能采取的策略的主要理由如下:(1)由于用户与软件设计人员认识上的局限,不能预先指定所有要求,因此在开发过程中重复和反复是必要的和不可避免的;(2)在用户和系统分析员之间存在固有的通信鸿沟,用户需要一个“活的”系统模型,以便获得实践经验,以便沟通;(3)目前有快速建
32、立原型系统的工具可供选用。4.2 结构化分析方法此方法基于模块化的思想,采用“自顶向下,逐步求精”的技术对系统进行划分。结构化方法是结构化分析、结构化设计和结构化编程的总称。结构化方法由于具有简单易懂、使用方便的特点,且出现较早,所以获得了广泛的应用。4.2 结构化分析方法4.2.1 结构化分析的策略 4.2.2 数据流图 4.2.3 数据字典 4.2.4 小说明 4.2.5 结构化分析实施步骤 4.2.1 结构化分析的策略 一旦基于计算机系统的功能被分配到各个系统元素,系统分析员就能够据此建立起一个模型,用以表达系统元素之间的相互关系,并为今后的需求分析和设计奠定基础。为了开发系统模型,使用
33、一个“结构模板”。 图4.3 结构模板的格式 下图给出传送带在线货物分类系统的总体结构关系图 4.2.2 数据流图 数据流图描绘系统的逻辑模型,图中没有任何具体的物理元素,只是描绘信息在系统中流动和处理的情况。数据流图的特点是:它是逻辑系统的图形表示,容易理解,是极好的通信工具,设计数据流图只需考虑系统必须完成的基本逻辑功能,不需要考虑如何实现这些功能,是软件设计很好的出发点。1符号数据源点或终点:正方形(或立方体)。变换数据处理:圆角矩形(或圆形)。数据存储:开口矩形(或两条平行横线)。数据流:箭头表示,即信息与数据的流动方向。 数据流图有四种基本符号。2例子 假设一家工厂的采购部每天需要一
34、张定货报表,报表按零件编号排序,表中列出所有需要再次定货的零件。对于每个再次定货的零件应该列出下述数据: 零件编号,零件名称,定货数量,目前价格,主要供应者,次要供应者。零件入库或出库被称为事务,通过放在仓库中的CRT终端把事务报告给定货系统。当某种零件的库存数量少于库存量临界值时就应该再次定货。定货系统的数据流图的成份 源点/终点处理采购员仓库管理员产生报表处理事务数据流数据存储定货报表零件编号零件名称定货数量目前价格主要供应者次要供应者定货信息(定货报表)库存清单*零件编号*库存量库存量临界值事务零件编号*事务类型数量*定货系统基本系统模型把处理事务功能进一步分解后的数据流图 3命名 数据
35、流图中每个成份的命名是否恰当,直接影响数据流图的可理解性。 为数据流命名:(1)名字应代表整个数据流(或数据存储)的内容,而不是仅仅反映它的某些成份。(2)不要使用空洞的、缺乏具体含义的名字(如“数据”、“信息”、“输入”之类)。(3)如果在为某个数据流(或数据存储)起名字时遇到了困难,则很可能是因为对数据流图分解不恰当造成的,应该试试重新分解,看是否能克服这个困难。为处理命名: (1)通常先为数据流命名,然后再为与之相关联的处理命名 (2)名字应该反映整个处理的功能,而不是它的一部分功能。 (3)名字最好由一个具体的及物动词,加上一个具体的宾语组成。 (4)通常名字中仅包括一个动词,如果必须
36、用两个动词才能描述整个处理的功能,则把它再分解成两个处理可能更恰当些。(5)如果在为某个处理命名时遇到困难,则很可能是发现了分解不当的迹象,应考虑重新分解。4用途 画数据流图的基本目的是利用它作为交流信息的工具。 数据流图的另一个主要用途是作为分析和设计的工具。 4.2.3 数据字典 1数据字典的内容 (1)数据流 (2)数据流分量(即数据元素) (3)数据存储 (4)处理 2定义数据的方法 由数据元素组成数据的方式有下述几种基本类型:(1)顺序:即以确定次序连接两个或多个分量。(2)选择:即从两个或多个可能的元素中选取一个。(3)重复:即把指定的分量重复零次或多次。3实例 (1)数据流条目一
37、个完整的数据流条目应该包括以下内容:名称描述频率和数据量数据结构例如,“图书管理系统”中的“入库单”是一个数据流,对它的说明如下:入库单=分类目录号+数量+书名+作者+内容摘要+价格+购书日期(2)数据存储条目名称描述数据存储方式关键码频率和数据量安全性要求数据结构例如,同样图书管理系统中的“目录文件”是个数据存储,对它的说明如下:文件名:目录文件 组成:分类目录号+书名+作者+内容摘要+价格+入库日期+总数+库存数+图书流水号4.2.4 小说明 小说明是用来描述加工的。集中描述一个加工“做什么”,即加工逻辑,也包括其他一些和加工有关的信息,如执行条件、优先级、执行频率、出错处理等。 目前小说
38、明一般用自然语言、结构化自然语言、判定表和判定树等来描述。在描绘复杂的关系时,图形比文字叙述优越得多,它形象直观,一目了然。4.2.5 结构化分析实施步骤 第一步,确定系统边界,画出系统环境图。 第二步,自顶向下,画出各层数据流图。分层数据流图和图中的加工进行编号规则 (1)顶层图不参与数据流图编号,顶层图中的惟一加工也不编号。(2)从0层图开始的所有子图和加工均需编号,子图的编号为分解的父图中相应加工编号。(3)加工的编号由相应的子图号、小数点、加工在子图中的顺序号组成。第三步,定义数据字典。 第四步,定义小说明。 第五步,汇总前面各步骤的结果。 注意事项:(1)模型平衡规则 数据流图中所有
39、的图形元素必须根据它们的用法规则正确使用。 数据字典中的定义使用合法的逻辑构造符号。 数据流图中最底层的加工必须在小说明中有定义。父图和子图必须平衡。 小说明和数据流图的图形表示必须一致。 (2)控制复杂性的一些规则 上层数据流可以打包(打包的数据流作特殊标记),上、下层数据流的对应关系用数据字典描述(编号对应),同层的数据流也可编号对应,避免形成复杂的连线;只有一点限制,数据流的性质(输入、输出)必须一致。 4.3 其它分析方法与图形工具 1结构化自然语言结构化自然语言的语法通常分为内外两层,外层语法描述操作的控制结构,如顺序、选择、循环等,这些控制结构将加工中的各个操作连接起来。内层语法一
40、般没有什么限制,就用自然语言描述。 2层次方框图 层次方框图用树形结构的一系列多层次的矩形框描绘数据的层次结构。树形结构的顶层是一个单独的矩形框,它代表完整的数据结构,下面的各层矩形框代表这个数据的子集,最底层的各个框代表组成这个数据的实际数据元素(不能再分割的元素)。 例如,描绘一家计算机公司全部产品的数据结构可以用图中的层次方框图表示。这家公司的产品由硬件、软件和服务三类产品组成,软件产品又分为系统软件和应用软件,系统软件又进一步分为操作系统、编译程序和软件工具。3Warnier图 用Warnier图可以表明信息的逻辑组织 软件产品系统软件应用软件操作系统(P1)编译程序(P2)软件工具编
41、译程序(P3)测试驱动程序(P4)设计辅助工具(P5)4IPO图 IPO图是输入处理输出图的简称 ,它的基本形式是在左边的框中列出有关的输入数据,在中间的框内列出主要的处理,在右边的框内列出产生的输出数据。 图4.11 IPO图的一个例子 图4.12 改进的IPO图5判定表 判定表常用来描述一些不易用语言表达清楚或需要很大篇幅才能用语言表达清楚的加工。旅游时间79,12月l6,10,11月定票量20202020折扣量5%15%20%30%表4.2 旅游价格表 在表4.2中,I区的条件类别有两个:旅游时间和订票量,区内列出所有四种条件组合,区内只有一个操作,区标明在某种条件组合下操作的执行情况。
42、I 条件类别 条件组合III 操作 操作的执行表4.3 判定表 4.4 实体关系图 4.4.1 数据对象、属性与关系 4.4.2 E-R方法和实体模型 4.4.3 数据结构的规范化 4.4.1 数据对象、属性与关系 对象可以是人、是物,还可以是实际的东西或概念的东西,例如,大学、城市等。对象还可以指事物与事物间的联系。属性则是指事物的性质或特征,数据对象由其属性刻画。 例如,学生文件就由多个记录组成,这些记录放在一起构成一个二维表。表中每一横排叫做一个记录或元组,每一纵列叫做一个属性,参看表4.4。 表4.4 学生文件学号姓名性别年龄专业951136郑枫女19计算机科学与技术951137雷昊男
43、18计算机科学与技术951138李博达男18机械工程为确保模型的一致性并消除数据冗余,分析人员要掌握以下规范化规则:(1)数据对象的任何实例对每个属性必须有且仅有一个属性值。(2)属性是原子数据项,不能包含内部数据结构。(3)如果数据对象的关键属性多于一个,那么其他的非关键属性必须表示整个数据对象而不是部分关键属性的特征。(4)所有的非关键属性必须表示整个对象而不是部分属性的特征。4.4.2 E-R方法和实体模型 实体关系图是表示数据对象及其关的图形语言机制。l方框表示实体型。在框内写上实体名,如“学生”实体型。l椭圆框表示实体有关的属性。椭圆内标记属性的名字。l 箭头表示实体与属性之间的联系
44、。 l菱形框表示实体之间的联系。 一对一的联系(1:1)即一个实体在此种联系下只能对应一个实体;一对多的联系(1:n)即一个实体在此种联系下可对应其他一个以上的实体;多对多的联系(m:n)即一个实体类型中的多个实体与另一个实体类型中的多个实体相联系。通常实体联系有三种类型:例如,在教学管理中,学校开设若干门课程,一个教师可以教授其中的一门或多门课程,每位学生也需要学习其中的几门课程。因此,教学管理中涉及的对象(实体型)有学生、教师和课程。用E-R图描述它们之间的联系,如图所示。其中,学生与课程是多对多的联系,而教师与课程的联系是一对多。 教学管理E-R图4.4.3 数据结构的规范化 下面用图所
45、示的教学管理的例子说明如何进行规范化。有三个实体类型,即:课程、学生和教师,用三个关系分别保存它们的有关信息: 教师(职工号,姓名,年龄,职称,工资级别,工资)课程(课程号,课程名,学分,学时,课程类型)选课(学号,课程号,听课出勤率,作业完成率,分数)教课(职工号,课程号) (1)关系中所有属性都是“单纯域”,即不出现“表中有表”。(2)非主属性完全函数依赖于关键字。(3)非主属性相互独立,即任何非主属性间不存在函数依赖。如果一个关系连条件(1)都不满足,则这个关系是非规范化的。如果一个关系仅满足条件(1),则这个关系满足第一范式(1NF)。如果一个关系满足条件(1)、(2),但不满足(3)
46、,则这个关系满足第二范式(2NF)。如果一个关系同时满足条件(1)、(2)和(3),则这个关系满足第三范式(3NF)判断规范化程度的条件是:4.5 需求规格说明与评审 4.5.1 需求规格说明书的目标与内容4.5.2 需求评审 4.5.1 需求规格说明书的目标与内容 需求规格说明书主要起以下作用:(1)软件开发机构和用户之间一份事实上的技术合同书。(2)软件开发机构下一步进行设计和编码的基础。(3)测试和验收目标系统的依据。需求规格说明书的主要作用:(1)软件开发机构和用户之间一份事实上的技术合同书。(2)软件开发机构下一步进行设计和编码的基础。(3)测试和验收目标系统的依据。4.5.2 需求
47、评审 正确性 无二义性 完整性 可验证性 一致性 可理解性可修改性 可跟踪性 4.6 本章小结 需求分析是软件定义阶段中的最后一步,是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。需求分析活动可按照需求提出、需求分析与描述及需求评审三个子阶段进行。需求分析的结果是系统开发的基础,必须用行之有效的方法对软件需求进行严格的审查验证。5.1 总体设计的过程 5.2 软件设计基本原理 5.3 设计准则 5.4 总体设计的图形描述工具 5.5 结构化设计方法 退出第五章 总体设计5.1 总体设计的过程5.1.1 设计供选择的方案5.1.2 推荐最佳实现方案退出5.1.3 设
48、计软件结构 5.1.4 数据库设计 5.1.5 制定测试计划 5.1.1 设计供选择的方案需求分析阶段得出的数据流图是总体设计的根本出发点。 通常,选取的这些方案中至少应包括低成本、中成本和高成本的三种方案类型。对每个合理方案要提供以下几方面资料:(1)系统流程图;(2)数据字典;(3)成本效益分析;(4)实现这个系统的进度计划。5.1.2 推荐最佳方案分析员从合理方案中选择一个最佳方案向用户推荐,并为推荐的方案制定详细的实现计划。对于分析员推荐的最佳方案,用户和有关专家应该认真审查。如果确认该方案确实符合用户的需要,并且在现有条件下完全能够实现,则应该提请使用部门负责人进一步审批。在使用部门
49、负责人也接受了分析员所推荐的方案之后,方可进入总体设计过程的下一步工作,即结构设计阶段。 过程设计:确定每个模块的处理过程。结构设计:确定系统由哪些模块组成,以及这些模块之间的相互关系。5.1.3 设计软件结构 对于大型系统的设计,通常分为两个阶段:结构设计和过程设计。其中,结构设计是总体设计阶段的任务,而过程设计则是详细设计阶段的任务。5.1.4 数据库设计 数据库的应用越来越广泛,目前大多数的系统都要用到数据库技术。数据库设计是一项专门的技术,包括模式设计、子模式设计、完整性和安全性设计和优化处理等。 5.1.5 制定测试计划 在软件开发的早期阶段提前考虑软件的测试计划是很有必要的。这样能
50、促使软件设计人员在设计时注意到软件的测试问题,从而有利于提高软件的可测试性。 总体设计阶段的文档(1)总体设计说明书(包括系统实现方案和软件模块结构);(2)测试计划(包括测试策略、测试方案、预测的测试结果、测试进度计划等);(3)用户手册(根据总体设计阶段的结果,编写的初步的用户操作手册);(4)详细的实现计划;(5)数据库设计结果。5. 2 软件设计基本原理5.2.1 模块化5.2.2 抽象5.2.3 信息隐蔽退出5.2.4 模块独立性模块:又称构件,是能够单独命名并独立地完成一定功能的程序语句的集合。例如高级语言中的过程、函数、子程序等都可作为模块。5.2.1 模块化模块化是软件的一个重
51、要属性。模块化的特性提供了人们处理复杂的问题的一种方法,同时也使得软件能够被有效地管理。 这种“分而治之”的思想提供了模块化的根据:把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了。 根据前面的结论,我们可以得出下面的不等式:E(P1P2)E(P1)E(P2)这个不等式表明:单独解决问题P1和P2所需的工作量之和,比把P1和P2合起来作为一个问题来解决时所需的工作量要少。 有两个函数:C(x)表示问题x的复杂程度;E(x)表示解决问题x所需要的工作量(时间)。对于两个问题P1和P2,如果:C(P1)C(P2)则:E(P1)E(P2)另一个有趣的特性是:C(P1P2)C(P1)C
52、(P2)模块化和软件成本的关系我们在考虑问题时,集中考虑和当前问题有关的方面,而忽略和当前问题无关的方面,这就是抽象。或者说抽象就是抽出事物的本质特性而暂时不考虑它们的细节。 5.2.2 抽象软件工程过程的每一步,都是对软件解法的抽象层次的一次细化。在可行性研究阶段,软件被看作是一个完整的系统部分;在需求分析期间,我们使用在问题环境中熟悉的术语来描述软件的解法;当我们由总体设计阶段转入详细设计阶段时,抽象的程度进一步减少;最后,当源程序写出来时,也就达到了抽象的最低层。 信息隐蔽原理认为:模块所包含的信息(过程和数据)对于其他模块来说应该是隐蔽的。也就是说,模块应当被这样规定和设计,使得包含在
53、模块中的信息(过程或数据)对于其它不需要这些信息的模块来说,是不能访问的,或者说是“不可见”的。 5.2.3 信息隐蔽信息隐蔽对于软件的测试与维护都有很大的好处。因为对于软件的其它部分来说,绝大多数数据和过程都是隐蔽的,这样,在修改期间由于疏忽而引入的错误所造成的影响就可以局限在一个或几个模块内部,不至波及到软件的其他部分。 模块的独立性是软件质量的关键:(1)模块化程度较高的软件容易开发;(2)模块化程度较高的软件也比较容易测试和维护。5.2.4 模块独立性模块的独立性的度量标准:耦合和内聚。 1、耦合耦合:软件结构中各个模块之间相互关联程度的度量。常见的耦合:(1)非直接耦合(2)数据耦合
54、(3)标记耦合(4)控制耦合(5)公共耦合(6)内容耦合设计原则:尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,避免使用内容耦合。2、内聚内聚:模块内部各个元素彼此结合的紧密程度的度量。常见的内聚:(1)偶然内聚(2)逻辑内聚(3)时间内聚(4)过程内聚(5)通信内聚(6)顺序内聚(7)功能内聚5. 3 设计准则1尽力提高模块独立性2选择合适的模块规模3模块的深度、宽度、扇出和扇入应适当4模块的作用范围应该在控制范围之内5降低模块接口的复杂程度6设计单入口单出口的模块,避免“病态连接”5. 4 总体设计的图形描述工具5.4.1 层次图5.4.2 HIPO图5.4.3 结构图退出5.4.1
55、 层次图 正文加工系统的层次图5.4.2 HIPO图带编号的层次图(H图)5.4.3 结构图软件结构图的基本符号产生最佳解的结构图5. 5 结构化设计方法5.5.1 数据流图的类型5.5.2 设计步骤5.5.3 变换设计退出5.5.4 事务设计5.5.5 设计的后处理5.5.1 数据流图的类型1、变换型数据流图2、事务型数据流图5.5.2 设计步骤5.5.3 变换设计我们通过一个汽车数字仪表板的设计来介绍变换分析的过程。假设仪表板的功能如下:(1)通过模数(AD)转换实现传感器和微处理机接口;(2)在发光二极管(LCD)面板上显示数据;(3)指示每小时英里数(mph),行驶的里程,每加仑油行驶
56、的英里数(mpg)等等;(4)指示加速或减速;(5)超速警告:如果车速超过55英里小时,则发出超速警告铃声。在软件需求分析阶段,应该对上述每项性能和其它要求进行全面的分析,并建立起相应的文档资料,得出数据流图。具体的设计步骤如下:1、复查基本系统模型2、复查并精化数据流图3、确定数据流图的类型这一步的任务是确定数据流图是变换型数据流图还是事务型数据流图。从上图中可以看出,数据沿着两条输入通路(旋转信号和燃料流量传感器信号)进入系统,然后沿着五条通路(4个显示,一个警告铃声)离开,没有明显的事务中心(虽然变换“计算mph与超速值”可以看作是一个事务中心)。因此,可以认为这个数据流图的类型是变换型
57、数据流图。4、确定输入流和输出流的边界,从而孤立出变换中心5、进行“第一级分解”第一级分解的方法第一级分解的结果6、进行“第二级分解”第二级分解的方法第二级分解的结果: 未经精化的输入结构 未经精化的变换结构 未经精化的输出结构7、使用设计度量和设计准则对第一次分割得到的软件结构进一步精化 对于从前面的设计步骤得到的软件结构,还可以进行许多修改:(1)输入结构中的模块“转换成rpm”和“收集sps”可以合并;(2)模块“确定加速减速”可以放在模块“计算mph”下面,以减少耦合;(3)模块“加速减速显示”可以相应地放在模块“显示mph”的下面。精化的数字仪表板系统的软件结构5.5.4 事务设计
58、事务分析的映射方法5.5.5 设计的后处理在确定系统的软件结构以后,还必须做好下述工作:为每个模块开发一份功能说明;为每个模块提供一份接口说明;定义局部的和全程的数据结构;给出所有的设计限制或约束;进行总体设计评审;如果需要和可能的话,进行设计“优化”。6.1 结构化程序设计 6.2 详细设计工具 6.3 面向数据结构的设计方法退出第六章 详细设计6.1 结构化程序设计 三种基本的控制结构 逐步求精方法是由Wirth提出的一种早期的自顶向下的设计策略。面对现实的复杂问题,我们首先不要一下子就力图触及到问题解法的细节,而应当先从问题的全局出发,用较自然的抽象语句来表示问题,从而得到抽象算法。这时
59、的算法主要是描述“做什么”,或者说是把问题描述为几个子问题或子功能。接下来对子问题,也就是对抽象算法进行细化,在这一阶段设计的算法中,已经开始含有程序设计语言的成分。随着算法的不断细化,越来越多地开始完成“如何做”,算法中程序设计语言的成分也越来越多,当最后把算法全部细化为程序设计语言描述时,程序设计也就随之完成了。 结构化程序设计技术是一种设计程序的技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构,并且只包含顺序、选择和循环三种控制结构。其他常用的控制结构 6.2 详细设计工具6.2.1 程序流程图6.2.2 盒图退出6.2.3 PAD图 6.2.4 过程设计语言 6.2.5
60、判定表 6.2.6 判定树 6.2.1 程序流程图程序流程图中常用的符号 程序流程图虽然比较直观,灵活,并且比较容易掌握,但是它的随意性和灵活性却使它不可避免地存在着一些缺点:(1)由于程序流程图的特点,它本身并不是逐步求精的好工具。因为它使程序员容易过早地考虑程序的具体控制流程,而忽略了程序的全局结构;(2)程序流程图中用箭头代表控制流,这样使得程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制;(3)程序流程图在表示数据结构方面存在不足。6.2.2 盒图(N-S图)N-S图的基本符号 N-S图有以下一些特点:(1)功能域(即某一个特定控制结构的作用域)有明确的规定,并且可以很
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教育信息化与多媒体教学的未来
- 2025年中国视频接入服务行业市场调研分析及投资前景预测报告
- 教学策略与课题研究融合
- 教育信息化与学校信息化建设研究
- 打造高效团队的五个步骤
- 循环经济与绿色消费模式
- 幼儿园教育市场现状与未来机遇
- 成功人士的心理素质与习惯培养
- 2025年中国温度风压风速计市场调查研究报告
- 智能技术推动下的流通业效率提升路径
- 安全生产管理台账(合集)
- 福建省厦门市第一中学2025届七下英语期末质量跟踪监视试题含答案
- 2024年吉林省国资委监管企业招聘真题
- 2025年霍州煤电招聘笔试冲刺题(带答案解析)
- 大学语文试题及答案 二
- 2025年 汾西矿业井下岗位高校毕业生招聘考试笔试试题(山西省)含答案
- 结构动力学完整版本
- 2025年八年级数学下学期期末总复习八年级数学下学期期末测试卷(2)(学生版+解析)
- 农村供水水质管理制度
- 五年级(下)语文选择题专项165道
- 石油化工工程防渗技术规范
评论
0/150
提交评论