1、软件工程软件工程前言前言 本书是依据教育部高职高专教育基础课程教学的基本要求和高职高专教育专业人才培养目标与规格编写而成。全书共15章,内容主要包括:软件危机与软件工程;软件开发模型;计算机系统工程,需求分析,总体设计,详细设计,编码与测试,软件维护,面向对象技术,快速原型技术,重用技术,人机界面设计。书中含有丰富的例题与习题,便于教学与自学。本书强调内容的实用性,以问题带知识点的方式来阐述,内容精练,重点突出,概念清楚,针对性和实际操作性强。第一章第一章 软件危机与软件工程软件危机与软件工程学习要点:学习要点:n软件工程是在20世纪60年代末期提出的。这一概念的提出,其目的是倡导以工程的原理
2、、原则和方法进行软件开发,以期解决当时出现的“软件危机”。n本章介绍软件危机和软件工程的基本概念。第第第第第第1 1 1章章章章章章 软件工程软件工程软件工程软件工程软件工程软件工程1.2 1.2 1.2 软件工程软件工程软件工程软件工程软件工程软件工程1.1 1.1 1.1 软件危机软件危机软件危机软件危机软件危机软件危机1.1软件危机软件危机1.1.1 软件代价高软件代价高1.1.2 软件开发和维护中的严重问题软件开发和维护中的严重问题1.1.1软件代价高软件代价高 1 0 0 8 0 6 0 4 0 2 0 0 1 9 5 5 1 9 7 0 1 9 8 5 硬 件 软 件 总费用的百分
3、比 n计算机系统硬件/软件成本变化趋势n在开发一个新型计算机系统或修改一个现有系统的过程中,最大部分的资金是用在软件系统开发方面。1.1.2 软件开发和维护中的严重问题软件开发和维护中的严重问题计算机系统发展的早期时代所形成的错误概念与做法,已经严重阻碍了计算机软件的开发,更严重的是:用错误方法开发的软件几乎根本无法维护,只好提前报废。1、软件危机2、有那些软件开发的错误方法和观念有那些软件开发的错误方法和观念n3、软件产品的质量量化分析不够。n1、软件开发成本与进度估计不准确。n2、闭门造车。软件开发人员仓促上阵,编写程序。n4、软件重用性差。n5、软件没有适当的文档资料。n6、软件成本逐年
4、上升。本节小结 产生软件危机原因-与软件本身的特点有关:n1、软件是逻辑部件:试制阶段难衡量;开发质量较难评价,开发过程管理和控制较难;运行过程才能暴露没有检测出来的事故,相当于修改设计,软件维护困难;n2、软件规模庞大,有技术问题,也有管理方法问题。n3、早期开发的个体化;忽视需求分析;认为软件开发写程序;轻视维护,对用户不了解,n4、对前期工作不能忽视,做好软件定义时期的工作,这是降低成本,提高件质量的关键。n5、严重性:在软件开发的不同阶段修改付出代价(后期是前期的2-3个数量级),软件维护是极端艰巨复杂的工作,占55%70%)1.2 软件工程软件工程软件工程学科是一门指导计算机软件开发
5、和维护的工程学科。软件工程是一类求解软件的工程。它应用计算机科学、数学及管理科学等原理,借鉴传统工程的原则、方法,创建软件以达到提高质量,降低成本的目的。其中,计算机科学、数学用于构造模型与算法,工程科学用于制定规范设计范型、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。软件工程的方法、工具、过程构成了软件工程的三要素。1、软件工程的七条基本原理n(1)用分阶段的生命周期计划进行严格管理n(2)坚持进行阶段评审n(3)实行严格的产品控制n(4)采用现代程序设计技术n(5)结果应能清楚地审查n(6)开发小组的人员应该少而精n(7)承认不断改进软件工程实践的必要性1.2.2 软件工
6、程的目标软件工程的目标n软件工程的目标可概括为:在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并满足用户需要的软件产品。n应该特别指出;“可靠性”这个目标在软件工程中有着重要的意义。广义上讲,它涉及到产品设计的一系列问题,从而使产品能在相当长的期间内稳定工作。狭义上讲,可靠性是软件成功运行的概率度量,可靠性分析和可靠性测试可作为衡量软件质量和其他开发过程的最重要的方法之一。1.2.3 软件工程框架及原则软件工程框架及原则 开 发 模 型 设 计 方 法 支 持 过 程 管 理 过 程 用可 可可可 性可 正可
7、 确 性可 性可 合 算 软 件 分 析 实现 与维护 软 件 设 计 原则:一、选取适宜的开发模型;二、采用合适设计方法;三、提供高质量工程支持;四、重视开发过程管理。第第第第第第2 2 2章章章章章章 软件生命周期及软件开软件生命周期及软件开软件生命周期及软件开软件生命周期及软件开软件生命周期及软件开软件生命周期及软件开发模型发模型发模型发模型发模型发模型学习要点:学习要点:软件生命周期表明软件从功能确定、设计,到开发成功投入使用,并在使用中不断地修改、增补和完善,直至被新的需要所替代而停止该软件的使用的全过程。软件开发模型是从软件项目需求定义直至软件经使用后废弃为止,跨越整个生存期的系统
8、开发、运作和维护所实施的全部过程、活动和任务的结构框架。第第第第第第2 2 2章章章章章章 软件生命周期及软软件生命周期及软软件生命周期及软软件生命周期及软软件生命周期及软软件生命周期及软件开发模型件开发模型件开发模型件开发模型件开发模型件开发模型 软件生命周期:软件定义、软件设计、软件使用与维护三阶段,而又可以具体分成几个子阶段。(1)可行性研究(2)需求分析和定义(3)总体设计(4)详细设计(5)编码(实现)(6)软件测试、运行维护图2.1 软件生命周期 退 役 维 护 调 试 实 现 详细设计 需 求 分 析 概要设计 可 行 性 研 究 2。2软件模型软件模型 软件开发模型是软件开发全
9、部过程、活动和任务的结构框架。最早出现的软件开发模型是1970年WRoyce提出的瀑布模型,而后随着软件工程学科的发展和软件开发的实践,相继提出了原型模型、演化模型、增量模型、喷泉模型等。需求采集细化 快速 设计 建造 原型 用户评价原型 原型 对原型 加工 产品 样本 停止 开始 需求计划 风险分析 风险分析 风险分析 原型 1 原型 2 原型 3 可运 行原型 风险分析:评价方案 识别风险 消除风险 累计成本 指定计划:决定目标 方案限制 提交线 评审 生存期计划 开发计划 组装测试 客户评价 软件 需求 需求 确认 设计确认验证 软件产品设计 实现 验收 测试 编码 组装 测试 单元 测
10、试 实施工程:开发、验证 形成产品 关于关于 模型小结模型小结螺旋模型是由上面四个部分组成的迭代模型。螺螺旋模型是由上面四个部分组成的迭代模型。螺旋模型的每一周期都包括需求定义、风险分析、旋模型的每一周期都包括需求定义、风险分析、工程实现和评审四个阶段。开发过程每迭代一次,工程实现和评审四个阶段。开发过程每迭代一次,螺旋线就增加一周,软件开发又前进一个层次,螺旋线就增加一周,软件开发又前进一个层次,系统又生成一个新版本,而软件开发的时间和成系统又生成一个新版本,而软件开发的时间和成本又有了新的投入。最后得到一个客户满意的软本又有了新的投入。最后得到一个客户满意的软件版本。件版本。喷泉模型该模型
11、表明软件开发活动之间没有明喷泉模型该模型表明软件开发活动之间没有明显的间隙,用于支持面向对象开发过程。由于对显的间隙,用于支持面向对象开发过程。由于对象概念的引入,使分析、设计、实现之间的表达象概念的引入,使分析、设计、实现之间的表达没有明显间隙。并且,这一表达自然地支持复用。没有明显间隙。并且,这一表达自然地支持复用。小小 结结软件生命周期实质上是大型系统开发过程中软件生命周期实质上是大型系统开发过程中各项目阶段的一种表示方法,如同任何事物各项目阶段的一种表示方法,如同任何事物一样,软件也有一个孕育、诞生、成长、成一样,软件也有一个孕育、诞生、成长、成熟、衰亡的生存过程。根据这一思想,把上熟
12、、衰亡的生存过程。根据这一思想,把上述基本的过程活动进一步展开,可以得到软述基本的过程活动进一步展开,可以得到软件生命期的件生命期的6 6个步骤,即制定计划、需求分个步骤,即制定计划、需求分析、设计、程序编码、测试及运行维护。析、设计、程序编码、测试及运行维护。软件生命期模型是从软件项目需求定义直至软件生命期模型是从软件项目需求定义直至软件经使用后废弃为止,跨越整个生命周期软件经使用后废弃为止,跨越整个生命周期的系统开发、运作和维护所实施的全部过程、的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。活动和任务的结构框架。第第3章章 计算机系统工程计算机系统工程 计算机软件工程和硬件
13、工程可以看作是一门更广义的学科“计算机系统工程”内的活动。它们所要做的都是按一定的次序开发基于计算机的系统。计算机系统工程是指与构造基于计算机系统有关的过程、方法和技术。它是一种问题求解活动。计算机系统工程的任务是:组织并指导系统工程师定义全系统各层次中的所有基于计算机系统的要素。第第3章章 计算机系统工程计算机系统工程 20世纪60年代开始发展起来的计算机系统工程,是计算机硬件、软件、数据通信装置、数据存储设备、规章制度和有关人员的统一体。软件工程在各个领域有着广泛的应用,如计算机辅助设计(CAD)系统、计算机辅助制造(CAM)系统、计算机辅助教学系统、计算机辅助医疗系统、军用的计算机指挥系
14、统、通信软件工程、公用或专用的现代通信系统和信息服务系统都各具特色,管理软件是一类最具代表性的软件工程。第第3章章 计算机系统工程计算机系统工程3.1 基于计算机的系统基于计算机的系统 基于计算机的系统是“某些要素的一个集合,这些要素被组织起来以实现某种方法、过程或借助处理信息进行控制。”图3.1给出了基于计算机系统的系统要素及相互之间关系。过 程 文 档 硬 件 软 件 人 数据库 输入输入 输出输出 系统 图3.1 基于计算机系统的系统要素及相互之间关系 3.1.1 计算机系统工程 计算机系统工程是一个问题求解活动,目的是揭示、分析所期望的功能,并把它们分配到各个单独的系统要素中去。计算机
15、系统开发设计周期见图3.2。详 细 设 计:软 件 硬 件 开 发 或 购 买 硬 件 测 试 硬 件 模 块 组 成 软 件 和 硬 件 联 调 功 能 测 试 维 护 改 进 现 场 运 行 软 件 详 细 设 计 设 计 评 审 模 块 编 程 调 试 联 调 软 件 模 块 测 试 调 试 分 析 系 统 要 求 完 成 系 统规 范 用 户 确 认 总 体 设 计 主 要 功 能 确 认 设 计 并 选 择 硬 件 来源 设 计 评 审 图3.2 系统开发设计周期 在系统的功能规范确立之后,下一步要对系统的功能进行认真、仔细的分析,问题的焦点集中于功能、性能、信息流和容量上。一个计算
16、机系统方案应包括以下几个方面的内容:(1)任务的来源,技术要求,质量指标和经费.(2)采取的技术途径。(3)方案的规模,子系统的划分。(4)系统的数据库结构。(5)预计系统的各项指标。(6)所需的设备、仪器、关键元器件、工艺工具 等 的购置情况及保证条件。(7)研制周期、异常情况的处理等等。用户中心设计UCD方法在某种程度上代表了当今的计算机系统技术发展水平,使用该方法能设计极具竞争力的产品,UCD方法适合一切项目。现将传统设计方法与用户中心设计UCD方法加以比较。传统的设计方法技术驱动以组件为中心有限的多学科协作注重产品的内部体系结构没有专门考虑用户体验竞争意识不强开发先于用户评价产品缺陷质
17、量观不重视用户测量只考虑现有用户 UCD方法用户驱动以解决方案为中心多学科小组成员协同工作注重产品的外部设计专门考虑用户体验以竞争为目标由用户评价设计方案后才开发用户质量观很重视用户测量考虑当前和将来所有用户图3.3 UCD方法和传统设计方法的比较 3.1.2 硬件和硬件工程 基于计算机的系统离不开计算机硬件的支撑。计算机系统工程师根据系统需求为硬件系统指派任务,产生硬件需求。21世纪以来,信息可以很方便地通过计算机网络实现共享。作为网络文件服务器的计算机,可以给分布在网络上不同站点的客户提供共享的公用程序和数据,这就是客户服务器计算模式。计算机的硬件工程是在几十年电子设计经验的基础上发展起来
18、的,一般将硬件工程分为三个阶段。硬件工程阶段需解决的问题成果(一)硬件研制计划需求分析根据功能可选择、采购的硬件?哪几种硬件接口?必须制造的硬件?潜在的问题及资源?确定项目成本估计、工程进度估计、硬件规格说明(二)硬件设计硬件实现确定硬件元素中的所有元件精确的功能、性能和接口需求。设计约束条件(如尺寸,环境)及测试准则;必要时建造原型并对原型进行测试;画出生产图、硬件规格说明书、对规格说明书评审和修改(三)生产、销售售后服务质量如何得到保证?产品的维护和修理如何实现?建立质量保证方法、建立产品销售机构、储备备件,售后服务表3.1 硬件工程三个阶段 3.1.3 软件和软件工程 从系统工程的角度来
19、看,软件与硬件、软件工程与硬件工程分别是基于计算机系统和基于计算机的系统工程的重要组成部分。系统工程的论证阶段应该确定系统的软硬件功能和性能。系统对软件提出的功能和性能要求将成为软件需求分析的基础。基于计算机系统的软件要素由程序、数据和文档组成。它们分为两类应用软件与系统软件:应用软件实现信息处理,系统软件完成使应用软件能与其他系统要素交互的控制功能。一个基于计算机的系统可以用输入处理输出(IPO)模型来表示。软件要素在这个模型的各个方面都起着一定的作用。(1)软件从系统的外部实体或其他系统要素(包括宏要素)接收输入信息。(2)软件还用于建立数据库的接口,使程序能够存取预先存储的数据。(3)软
20、件实现系统功能所需要的计算方法。(4)在实际使用中,软件必须产生输出,把数据转换成某种能适合于输出介质的格式,或适合于输出设备接口的格式。软件工程三个阶段软件工程阶段必须完成的步骤阶段成果(一)软件定义制定软件项目规划;需求分析和定义;确定软件性能和资源约束;软件要素定义验收标准成本、工程进度估计;通过软件原型化信息域分析获得软件规格说明;对软件规格说明技术评审(二)软件开发、实现软件总体结构设计软件模块结构;数据设计、过程设计接口及信息结构;编码生成源程序代码确定一些有效性准则;对规格说明书评审修改;根据准则判断软件质量(三)检验、发行、维护测试软件,找出错误:进行单元测试调试,组装测试调试
21、;开发用户文档;把软件发行给终端用户对测试文档、测试用例和测试结果进行评审;建立配置管理机制;整个使用寿命中维护软件;3.1.4 人机工程 人机工程是应用从心理学和方法论导出的知识来确定和设计高质量HCI(人机界面)的多学科活动。人机工程过程包括以下步骤:(1)活动分析。(2)语义分析和设计:(3)语法和词法设计:(4)用户环境设计:(5)原型:人机工程的关键要素是设计一个整体解决方案,它应该对用户而言:易于购买、易于安装、易于学习、易于使用、直观、吸引人、有用3.1.5 数据库和数据库工程 数据库系统是基于计算机系统的重要组成部分,它将有关的硬件、软件、数据和数据库管理人员组合起来,为用户提
22、供信息服务。开发、运行和管理一个数据库系统是一项复杂的数据库工程,人们也常称之为数据库工程。阶段任务结果(一)需求分析、可行性研究调查用户信息需求、处理要求进行可行性论证;提出成本预算和工作计划(二)选择硬件和软件应确定数据管理系统;支持数据库查询、维护和分析确定运行的操作系统、网络环境(三)数据库设计与实现根据需求分析和数据分析;概念设计;逻辑设计;物理设计;评审、测试;产生需求说明和数据说明;产生数据库概念模型;产生逻辑模型;产生数据软件工程的原则;生成各种文档(四)运行和管理及时补充、修改和更新数据库;数据的收集、整理、分类;储存数据库的管理和维护对数量大、类型多、关系复杂的数据存储应有
23、利于数据的查询、修改并尽量减少数据的冗余;为用户提供培训及有关资料表3.4 数据库工程的阶段 不同的数据存储管理模式有不同的特点,适用范围也不相同。3.2 可行性研究可行性研究 可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。在讨论一个项目是否可行,需要从市场可行性、技术可行性、经济可行性、法律可行性分析几个方面着手进行考虑。图3.4表明了可行性研究的步骤 系 统 输 入 约 束 条 件 定 义 问 题 研 究 旧 系 统 分 析 问 题 导 出 新 系 统 模 型 市 场 可 行 性 技 术 可 行 性 操 作 可 行 性 经 济 可 行 性 成 本 估 算 目 标
24、做 什 么(流 图)解 3.2.2 市场可行性 要求在项目启动时定位目标市场,清楚在这个市场中的所有用户及他们的特点,并且清楚大部分目标用户当前所采用的解决方案,从而掌握产品竞争形势。必须在项目一开始就得到这些信息。如果没有这些信息或信息不全,那么接下来的设计活动是否有效就值得怀疑了。3.2.3 经济可行性 基于计算机系统的成本效益分析是可行性研究的重要内容,它用于评估基于计算机系统的经济合理性,给出系统开发的成本论证,并将估算的成本与预期的利润进行对比。计算机系统的成本由四个部分组成:购置并安装软硬件及有关设备的费用;系统开发费用;系统安装、运行和维护费用;人员培训费用。在系统分析和设计阶段
25、只能得到上述费用的预算,即估算成本。在系统开发完毕并交付用户运行后,上述费用的统计结果就是实际成本。系统效益包括经济效益和社会效益两部分。经济效益指应用系统为用户增加的收入,可以通过直接的或统计的方法估算。社会效益只能用定性的方法估算。1成本估计(1)代码行技术(2)任务分解技术 2成本效益分析 成本效益分析的第一步是估计开发成本、运行费用和新系统将带来的经济效益。3货币的时间价值 通常用利率的形式表示货币的时间价值。假设年利率为i,如果现在存入P元,则n年后可以得到的钱数为:这也就是P元钱在n年后的价值。反之,如果n年后能收入F元钱,那么这些钱的现在价值是:假定年利率为12,利用上面计算货币
26、现在价值的公式可以算出修改库存清单系统后每年预计节省的钱的现在价值,如表所示。年将来值(元)(li)n现在值(元)累计的现在值(元)125001.122232.142232.14225001.251992.984225.12325001.401779.456004.57425001.571588.807593.37525001.761418.579011.944投资回收期 所谓投资回收期就是使累计的经济效益等于最初投资所需要的时间。投资回收期越短就越能获得利润。例如,修改库存清单系统:两年以后可以节省4225.12元,比最初的投资(5000元)还少774.88元;三年以后将再节省1779.45
27、元,774.881779.45=0.44,因此,投资回收期是2.44年。5纯收入 衡量工程价值的另一项经济指标是工程的纯收入,也就是在整个生命周期之内系统的累计经济效益(折合成现在值)与投资之差。3.2.4 技术可行性 技术可行性的评估必须在软件系统分析和定义过程中进行,当技术可行性确定后,就可以完成在规格说明书。一般地,技术可行性要考虑的情况包一般地,技术可行性要考虑的情况包括:括:开发风险:在分析时给出的各种约束条件下,系统能否被设计出来,并实现必需的功能和性能?资源有效性:可用于开发系统元素的人员是否存在问题?是否具备用于建立系统的其他资源(硬件、软件)?技术:相关技术的发展是否能支持这
28、个系统?3.2.5 方案选择 系统分析任务完成后,系统工程师开始研究问题求解方案。通常系统工程师将一个大的复杂系统分解为若干个子系统;精确地定义子系统的界面、功能和性能;给出各子系统之间的关系。这样可以降低解决方案的复杂性,有利于人员的组织和分工,提高系统开发效率和工作质量。可行性研究的结果可作为系统规格说明书的一个附件。项目背景项目背景:问题描述;实现环境;限制条件;管理概要与注意事项管理概要与注意事项:重要的研究结果;说明;注意事项;影响;候选方案候选方案:候选系统的配置;选择最终方案的准则;系统描述系统描述:简略的范围描述;分配元素的可行性;市场可行性市场可行性:项目是否有潜在市场,以及
29、市场的变化对项目影响经济可行性(成本经济可行性(成本效益分析)效益分析):经费概算;预期的经济效益;技术可行性(技术风险评价)技术可行性(技术风险评价):技术实力;已有工作基础;设备条件;法律可行性:法律可行性:系统开发可能导致的侵权、违法和责任;用户使用可行性:用户使用可行性:用户单位的行政管理、工作制度;使用人员的素质;其他与项目有关的问题:其他与项目有关的问题:其他方案介绍;未来可能的变化。表3.7 可行性研究报告目录 3.3 系统开发过程的新体系结构快速原型与面向对象 1存在的问题存在的问题 (1)有些类型的系统需求是模糊的 (2)项目参与者之间存在通信鸿沟 (3)预先定义的需求可能是
30、过时的 2解决问题的途径 为克服传统方法的缺点,人们在实践中逐渐创造出快速原型法和面向对象方法等软件工程的新途径。面向对象的统一软件开发方法迭代开发模式 近似小型的瀑布流程 迭代工作流 迭代 2 迭代 1 下一循环 V1 提交 构造 演化 起始 主里程碑 迭代 3 迭代计划 需 求 分析与设计 实 现 测 试 准备版本 3.4 本章小结本章小结 计算机系统工程是指与构造基于计算机系统有关的过程、方法和技术。它是一种问题求解活动。计算机系统工程的任务是:组织并指导系统工程师定义全系统各层次中的所有基于计算机系统的要素(硬件、软件、人、数据库、文档、过程)。本章首先阐述了计算机系统工程的总体设计方
31、案的内容及要点:硬件工程、软件工程、人机工程和数据库工程。然后进一步阐述了计算机系统工程可行性研究的目的:应确定问题是否值得去解;任务是从市场、经济、技术、法律、开发方案的选择性四方面研究计算机系统工程可能性;强调了技术可行性研究应给以高度重视,这一阶段决策的失误将会给开发工作带来灾难性的影响。介绍了系统结构模板的概念与使用要点。第4章 需求分析 软件需求分析就是把软件计划期间建立的软件可行性分析求精和细化,分析各种可能的解法,并且分配给各个软件元素。需求分析是软件定义阶段中的最后一步,是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。在本章首先我们介绍需求分析的基
32、础,然后介绍结构化需求分析方法,最后介绍其它分析方法与图形工具分析方法。第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 分析的任务与原则 软件需求分析的任务是:深入描述软件的功能和性能,确定软件设计的约束和软件同其他系统元素的接口细节,定义软件的其他有效性需求,借助于当前系统的逻辑模型导出目标系统逻辑模型,解决目标系统“做什么”的问题。需求分析
33、任务与其实现步骤如图4.1所示。需求分析可分为需求提出、需求分析描述及需求评审三个阶段。图4.1 需求提出和分析的结果 需求提出 分析 系统规格说明:模型 分析模型:模型 需求提出需求提出主要集中于描述系统目的。需求提出和分析仅仅集中在使用者对系统的观点上。用户、开发人员和用户确定一个问题领域,并定义一个描述该问题的系统。这样的定义称作系统规格说明,并且它在用户和开发人员之间充当合同。需求分析描述 在问题分析阶段分析人员的主要任务是:对用户的需求进行鉴别、综合和建模,清除用户需求的模糊性、歧义性和不一致性,分析系统的数据要求,为原始问题及目标软件建立逻辑模型。分析人员的主要做法是:要将对原始问
34、题的理解与软件开发经验结合起来,以便发现哪些要求是由于用户的片面性或短期行为所导致的不合理要求,哪些是用户尚未提出但具有真正价值的潜在需求。需求评审 在需求评审阶段,分析人员要在用户和软件设计人员的配合下对自己生成的需求规格说明和初步的用户手册进行复核,以确保软件需求的完整、准确、清晰、具体,并使用户和软件设计人员对需求规格说明和初步的用户手册的理解达成一致。一旦发现遗漏或模糊点,必须尽快更正,再行检查。4.1.2 初步需求获取技术 为了完成软件需求任务,分析人员必须掌握一些基本技术,主要有:初步需求获取技术、需求建模、以及用于需求分析的快速原型技术;一些公共的技术包括:采访、观察、先前的系统
35、版本的测试和系统分析。作为一个好的需求获取技术的显著特征是:方便通信(可以通过易于理解的语言)。提供定义系统模块的方法。鼓励分析员用问题空间的术语而不是软件术语去思考问题和编制文档。允许并提醒分析员有多种可供选择的设计方案。适应需求的变化。4.1.3 需求建模 由于用户群体的各个用户往往会从不同的角度、不同的抽象级别上阐述他们对原始问题的理解和对目标软件的需求,因此,有必要为原始问题及目标软件解建立模型。这种模型一方面用于精确地记录用户从各个视点、不同抽象级别上对原始问题及目标软件的描述;另一方面,它也将帮助分析人员去伪存真、由此及彼、由表及里挖掘用户需求。建模的步骤是:(1)获得当前系统的物
36、理模型 (2)抽象出当前系统的逻辑模型。(3)建立目标系统的逻辑模型。做什么 抽象化 导 出 怎么做 实例化 当前 系统 目标 系统 物理模型 物理模型 逻辑模型 逻辑模型 模型化具体化图4.2 软件需求建模的任务 4.1.4 开发原型系统 快速原型方法核心思想是:在软件开发的早期快速建立目标软件的原型,让用户对原型进行评估并提出修改意见,当原型几经改进最终确定后,它将由软件设计和编码阶段进化成软件产品;或者设计和编码人员遵循原型所确立的外部特征实现软件产品。把建立原型系统作为一种可能采取的策略的主要理由如下:(1)由于用户与软件设计人员认识上的局限,不能预先指定所有要求,因此在开发过程中重复
37、和反复是必要的和不可避免的;(2)在用户和系统分析员之间存在固有的通信鸿沟,用户需要一个“活的”系统模型,以便获得实践经验,以便沟通;(3)目前有快速建立原型系统的工具可供选用。4.2 结构化分析方法结构化分析方法 此方法基于模块化的思想,采用“自顶向下,逐步求精”的技术对系统进行划分。结构化方法是结构化分析、结构化设计和结构化编程的总称。结构化方法由于具有简单易懂、使用方便的特点,且出现较早,所以获得了广泛的应用。4.2 结构化分析方法结构化分析方法4.2.1 结构化分析的策略 4.2.2 数据流图 4.2.3 数据字典 4.2.4 小说明 4.2.5 结构化分析实施步骤 4.2.1 结构化
38、分析的策略 一旦基于计算机系统的功能被分配到各个系统元素,系统分析员就能够据此建立起一个模型,用以表达系统元素之间的相互关系,并为今后的需求分析和设计奠定基础。为了开发系统模型,使用一个“结构模板”。处理与控制功能维护和自测试用户界面处理输入处理输出处理图4.3 结构模板的格式 下图给出传送带在线货物分类系统的总体结构关系图 系统 卡片机 传送线 分类机制 分类操作员 主机 分类操作员 线 速 卡 片 代 码 要求 查询 报告 分 流 命 令 数 据 诊 断 数 据 4.2.2 数据流图 数据流图描绘系统的逻辑模型,图中没有任何具体的物理元素,只是描绘信息在系统中流动和处理的情况。数据流图的特
39、点是:它是逻辑系统的图形表示,容易理解,是极好的通信工具,设计数据流图只需考虑系统必须完成的基本逻辑功能,不需要考虑如何实现这些功能,是软件设计很好的出发点。1符号 数据源点或终点:正方形(或立方体)。变换数据处理:圆角矩形(或圆形)。数据存储:开口矩形(或两条平行横线)。数据流:箭头表示,即信息与数据的流动方向。或 数据源点或终点 或 变换数据或处理 或 数据存储 数据流 数据流图有四种基本符号。2例子 假设一家工厂的采购部每天需要一张定货报表,报表按零件编号排序,表中列出所有需要再次定货的零件。对于每个再次定货的零件应该列出下述数据:零件编号,零件名称,定货数量,目前价格,主要供应者,次要
40、供应者。零件入库或出库被称为事务,通过放在仓库中的CRT终端把事务报告给定货系统。当某种零件的库存数量少于库存量临界值时就应该再次定货。定货系统的数据流图的成份 源点/终点处理采购员仓库管理员产生报表处理事务数据流数据存储定货报表零件编号零件名称定货数量目前价格主要供应者次要供应者定货信息(定货报表)库存清单*零件编号*库存量库存量临界值事务 零件编号*事务类型数量*定货系统基本系统模型 仓 库 管 理 员 定 货 系 统 采 购 员 事 务 发 货 报 表 把处理事务功能进一步分解后的数据流图 仓 库 管理员 1.1 接收 事务 1.2 更新库 存清单 1.3 处理 定货 D1 库存清单 D
41、2 定货信息 事务 事务 库存 信息 定货 信息 报表 2 产生 报表 定货 采购员 3命名 数据流图中每个成份的命名是否恰当,直接影响数据流图的可理解性。为数据流命名:(1)名字应代表整个数据流(或数据存储)的内容,而不是仅仅反映它的某些成份。(2)不要使用空洞的、缺乏具体含义的名字(如“数据”、“信息”、“输入”之类)。(3)如果在为某个数据流(或数据存储)起名字时遇到了困难,则很可能是因为对数据流图分解不恰当造成的,应该试试重新分解,看是否能克服这个困难。为处理命名:(1)通常先为数据流命名,然后再为与之相关联的处理命名(2)名字应该反映整个处理的功能,而不是它的一部分功能。(3)名字最
42、好由一个具体的及物动词,加上一个具体的宾语组成。(4)通常名字中仅包括一个动词,如果必须用两个动词才能描述整个处理的功能,则把它再分解成两个处理可能更恰当些。(5)如果在为某个处理命名时遇到困难,则很可能是发现了分解不当的迹象,应考虑重新分解。4用途 画数据流图的基本目的是利用它作为交流信息的工具。数据流图的另一个主要用途是作为分析和设计的工具。4.2.3 数据字典 1数据字典的内容数据字典的内容(1)数据流(2)数据流分量(即数据元素)(3)数据存储 (4)处理 2定义数据的方法 由数据元素组成数据的方式有下述几种基本类型:(1)顺序:即以确定次序连接两个或多个分量。(2)选择:即从两个或多
43、个可能的元素中选取一个。(3)重复:即把指定的分量重复零次或多次。3实例(1)数据流条目一个完整的数据流条目应该包括以下内容:名称描述频率和数据量数据结构例如,“图书管理系统”中的“入库单”是一个数据流,对它的说明如下:入库单=分类目录号+数量+书名+作者+内容摘要+价格+购书日期(2)数据存储条目名称描述数据存储方式关键码频率和数据量安全性要求数据结构例如,同样图书管理系统中的“目录文件”是个数据存储,对它的说明如下:文件名:目录文件 组成:分类目录号+书名+作者+内容摘要+价格+入库日期+总数+库存数+图书流水号4.2.4 小说明 小说明是用来描述加工的。集中描述一个加工“做什么”,即加工
44、逻辑,也包括其他一些和加工有关的信息,如执行条件、优先级、执行频率、出错处理等。目前小说明一般用自然语言、结构化自然语言、判定表和判定树等来描述。在描绘复杂的关系时,图形比文字叙述优越得多,它形象直观,一目了然。4.2.5 结构化分析实施步骤 第一步,确定系统边界,画出系统环境图。第二步,自顶向下,画出各层数据流图。分层数据流图和图中的加工进行编号规则(1)顶层图不参与数据流图编号,顶层图中的惟一加工也不编号。(2)从0层图开始的所有子图和加工均需编号,子图的编号为分解的父图中相应加工编号。(3)加工的编号由相应的子图号、小数点、加工在子图中的顺序号组成。第三步,定义数据字典。第四步,定义小说
45、明。第五步,汇总前面各步骤的结果。注意事项:(1)模型平衡规则 数据流图中所有的图形元素必须根据它们的用法规则正确使用。数据字典中的定义使用合法的逻辑构造符号。数据流图中最底层的加工必须在小说明中有定义。父图和子图必须平衡。小说明和数据流图的图形表示必须一致。(2)控制复杂性的一些规则 上层数据流可以打包(打包的数据流作特殊标记),上、下层数据流的对应关系用数据字典描述(编号对应),同层的数据流也可编号对应,避免形成复杂的连线;只有一点限制,数据流的性质(输入、输出)必须一致。4.3 其它分析方法与图形工具 1结构化自然语言结构化自然语言的语法通常分为内外两层,外层语法描述操作的控制结构,如顺
46、序、选择、循环等,这些控制结构将加工中的各个操作连接起来。内层语法一般没有什么限制,就用自然语言描述。2层次方框图 层次方框图用树形结构的一系列多层次的矩形框描绘数据的层次结构。树形结构的顶层是一个单独的矩形框,它代表完整的数据结构,下面的各层矩形框代表这个数据的子集,最底层的各个框代表组成这个数据的实际数据元素(不能再分割的元素)。例如,描绘一家计算机公司全部产品的数据结构可以用图中的层次方框图表示。这家公司的产品由硬件、软件和服务三类产品组成,软件产品又分为系统软件和应用软件,系统软件又进一步分为操作系统、编译程序和软件工具。产品 硬件 软件 服务 处理机 存储器 外部 设备 设备 系统软
47、件 应用软件 软件服务 硬件维修 培训 编译程序 操作系统 软件工具 3Warnier图 用Warnier图可以表明信息的逻辑组织 软件产品系统软件应用软件操作系统(P1)编译程序(P2)软件工具编译程序(P3)测试驱动程序(P4)设计辅助工具(P5)4IPO图 IPO图是输入处理输出图的简称,它的基本形式是在左边的框中列出有关的输入数据,在中间的框内列出主要的处理,在右边的框内列出产生的输出数据。旧主文件 事务文件 1.校验主记录 2.校验事务记录 3.更新主记录 有效的主记录 有效的事务记录 更新后的主文件 IPO 表 系统:_ 作者:_ 模块:_ 日期:_ 编号:_ 注释:被调用:调用:
48、输入:输出:处理:局部数据元素:输入 处理 输出 图4.11 IPO图的一个例子 图4.12 改进的IPO图5判定表 判定表常用来描述一些不易用语言表达清楚或需要很大篇幅才能用语言表达清楚的加工。旅游时间79,12月l6,10,11月定票量20202020折扣量5%15%20%30%表4.2 旅游价格表 在表4.2中,I区的条件类别有两个:旅游时间和订票量,区内列出所有四种条件组合,区内只有一个操作,区标明在某种条件组合下操作的执行情况。I 条件类别 条件组合III 操作 操作的执行表4.3 判定表 4.4 实体关系图 4.4.1 数据对象、属性与关系 4.4.2 E-R方法和实体模型 4.4
49、.3 数据结构的规范化 4.4.1 数据对象、属性与关系 对象可以是人、是物,还可以是实际的东西或概念的东西,例如,大学、城市等。对象还可以指事物与事物间的联系。属性则是指事物的性质或特征,数据对象由其属性刻画。例如,学生文件就由多个记录组成,这些记录放在一起构成一个二维表。表中每一横排叫做一个记录或元组,每一纵列叫做一个属性,参看表4.4。表4.4 学生文件学号姓名性别年龄专业951136郑枫女19计算机科学与技术951137雷昊男18计算机科学与技术951138李博达男18机械工程为确保模型的一致性并消除数据冗余,分析人员要掌握以下规范化规则:(1)数据对象的任何实例对每个属性必须有且仅有
50、一个属性值。(2)属性是原子数据项,不能包含内部数据结构。(3)如果数据对象的关键属性多于一个,那么其他的非关键属性必须表示整个数据对象而不是部分关键属性的特征。(4)所有的非关键属性必须表示整个对象而不是部分属性的特征。4.4.2 E-R方法和实体模型 实体关系图是表示数据对象及其关的图形语言机制。l方框表示实体型。在框内写上实体名,如“学生”实体型。l椭圆框表示实体有关的属性。椭圆内标记属性的名字。l 箭头表示实体与属性之间的联系。l菱形框表示实体之间的联系。一对一的联系(1:1)即一个实体在此种联系下只能对应一个实体;一对多的联系(1:n)即一个实体在此种联系下可对应其他一个以上的实体;
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。