




已阅读5页,还剩55页未读, 继续免费阅读
(计算机应用技术专业论文)精确软件开发过程的研究及应用.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定, 同意学校保留并向国家有关部门或机构送交论文的复印件和电子版, 允许论文被查阅和借阅。本人授权江苏大学可以将本学位论文的全部 内容或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫 描等复制手段保存和汇编本学位论文。 本学位论文属于 保密口,在年解密后适用本授权书。 不保密口。 指导教师签 2 0 0 8 年占月,汐日 断 蛰日 、 孙 扣 签 月 者,d 作 手 姗 睥 论 位 2 学 江 苏大 学 硕士 学 位论文 1 1 课题背景 第一章绪论 在计算机系统发展的早期时代,软件通常规模较小,编写者和使用者往往是 同一个人。这种个体化的软件环境,使得软件设计通常是在人们头脑中进行的一 个隐含的过程,除了程序清单之外,基本上没有其他文档资料保存下来。 2 0 世纪6 0 年代中期到7 0 年代中期是计算机系统发展的第二代时期,这个 时期的一个重要特征是出现了“软件作坊”。此时,尽管软件的生产是作坊式 生产,但还是产生了一些很有代表性的产品,使得产品软件的使用广泛起来。然 而,“软件作坊仍然沿用了早期形成的个体化软件开发方法。随着计算机应用 的同益普及,软件数量急剧膨胀。在程序运行时发现的错误必须设法改j 下、用户 有了新的需求必须相应的修改程序、硬件或者操作系统更新时,通常需要修改程 序以适应新的环境。上述软件维护工作,以令人吃惊的比例耗费着资源。甚至许 多程序的个体化特性使它们最终成为不可维护的。“软件危机”开始出现了瞳1 。 软件不同于一般程序,它是由许多实现各自功能的程序组成的。它的一个显 著特点是规模庞大,这样往往就需要许多的开发人员来共同完成。但是,保证每 个人完成的工作合在一起确实能构成一个高质量的大型软件系统,却成为了一个 极端复杂困难的问题,不仅涉及许多技术问题,更重要的是必须进行严格而科学 的管理。 于是,在科学技术发展的进程中,便出现了软件工程这门学科。 软件工程( s o f 啊a r ee n 西n e 甜n g ) 的框架可概括为:目标、过程和原则口3 。 软件工程目标:生产具有正确性、可用性以及开销适宜的产品【4 】。正确性 是指软件产品达到预期功能的程度。可用性是指软件基本结构、实现及文档为用 户可用的程度。开销适宜是指软件开发、运行的整个开销满足用户要求的程度。 这些目标的实现无论在理论上还是在实践中均存在很多待解决的问题,它们形成 了对过程、过程模型及工程方法选取的约束。 软件工程过程的概念是生产一个最终能满足需求且达到工程目标的软件产 品所需要的步骤【4 】。软件工程过程主要包括开发过程、运作过程、维护过程。 它们覆盖了需求、设计、实现、确认以及维护等活动h 1 。需求活动包括问题分析 和需求分析。问题分析获取需求定义,又称软件需求规约,需求分析生成功能规 约。设计活动一般包括概要设计和详细设计。概要设计建立整个软件系统结构, 包括子系统、模块以及相关层次的说明、每一模块的接口定义。详细设计产生程 江 苏大 学 硕 士 学位论文 出了很多实际的开发过程,比如:生命周期法、原型化方法、面向对象方法等等。 l 结构化方法 结构化开发方法是由e y o u r d o n 和l l c o n s t a n t i n e 提出的,即所谓的s a s d 方法,也可称为面向功能的软件开发方法或面向数据流的软件开发方法。y o u r d o n 方法是8 0 年代使用最广泛的软件开发方法。它首先用结构化分析对软件进行需 求分析,然后用结构化设计方法进行总体设计,最后是结构化编程。它给出了两 类典型的软件结构,变换型和事务型,使软件开发的成功率大大提高1 。 2 面向数据结构的软件开发方法 j a c k s o n 方法是最典型的面向数据结构的软件开发方法,j a c k s o n 方法把问题 分解为可由三种基本结构形式表示的各部分的层次结构,三种基本的结构形式就 是顺序、选择和重复n 们。三种数据结构可以进行组合,形成复杂的结构体系。这 一方法从目标系统的输心输出数据结构入手,导出程序框架结构,再补充其它 细节,就可得到完整的程序结构图。这一方法对输入、输出数据结构明确的中小 型系统特别有效,如商业应用中的文件表格处理。该方法也可与其它方法结合, 用于模块的详细设计。 3 面向问题的分析法 p a m ( p r o b l 锄a m a l y s i sm e t h o d ) 是8 0 年代末由同立公司提出的一种软件 开发方法。它的基本思想是考虑到输入、输出数据结构,指导系统的分解,在系 统分析指导下逐步综合1 。这一方法的具体步骤是:从输入、输出数据结构导出 基本处理框;分析这些处理框之间的先后关系:按先后关系逐步综合处理框,直 到画出整个系统的p a d 图。这一方法本质上是综合的自底向上的方法,但在逐 步综合之前已进行了有目的的分解,这个目的就是充分考虑系统的输入、输出数 据结构。p a m 方法的另一个优点是使用p a d 图。这是一种二维树形结构图,是 到目前为止最好的详细设计表示方法之一。当然由于在输入、输出数据结构与整 个系统之间同样存在着鸿沟,这一方法仍只适用于中小型问题。 4 原型化方法 产生原型化方法的原因很多,主要随着我们系统开发经验的增多,我们也发 现并非所有的需求都能够预先定义而且反复修改是不可避免的。当然能够采用原 型化方法是因为开发工具的快速发展,比如用,d e l p h i 等工具我们可以迅 速的开发出一个可以让用户看的见、摸得着的系统框架。这样,对于计算机不是 很熟悉的用户就可以根据这个样板提出自己的需求。 开发原型化系统一般由以下几个阶段n 刳: 1 ) 确定用户需求 2 ) 开发原始模型 3 江 苏大 学 硕 士 学 位论文 的构成。通过操作界面元素,诸如菜单、按钮、对话框、编辑框、单选框、复选 框、列表框和滚动条等,由可视开发工具自动生成应用软件“6 1 s 7 模型驱动方法 m d a 的概念来自于o m g 的规范,按照它的说法,m d a 提供了一种开放的、 供应商中立的方法以应对商业与技术变化的挑战。实际上,在真j 下应用这种技术 的时候,开发人员面临着更大的挑战,就是需要在面向对象开发的基础上加入以 模型为中心的思想n 钉。 模型驱动架构把建模语言用作一种编程语言而不仅仅是设计语言,并以一种 全新的方式将i t 技术的一系列新的趋势性技术整合到一起。这些技术包括基于 组件的开发、设计模式、中间件、说明性约束、抽象、多层系统、企业应用整合 以及契约式设计等u 刖。 模型驱动架构的出现,为如何提高敬韩开发效率、如何增强软件的可移植性、 协同工作能力、可维护性,以及如何提高文档编制的便利性指明了解决之道。 8 软件过程能力度模型 c m m 是软件过程能力成熟度模型( c a p a c i t ym a 嘶t ym o d e l ) 的简称,是卡内 基一梅隆大学软件工程研究院为了满足美国联邦政府评估软件供应商能力的要 求,于l9 8 6 年开始研究的模型,并于1 9 9 1 年正式推出了c m m l 0 版。c m m 自 问世以来备受关注,在一些发达国家和地区得到了广泛应用,成为衡量软件公司 软件开发管理水平的重要参考因素和软件过程改进事实上的工业标准n 圳。 c m m 的分级结构可以描述为啪1 : 1 ) 初始级:软件过程的特点是无秩序的,有时甚至是混乱的。软件过程定 义几乎处于无章法和步骤可循的状态,软件产品所取得的成功往往依赖于极个别 人的努力和机遇。 2 ) 可重复级:已建立了基本的项目管理过程,可用于对成本、进度和功能 特性进行跟踪。对类似的应用项目,有章可循并能重复以往所取得的成功。 3 ) 已定义级:用于管理的和工程的软件过程均已文档化、标 x 江 苏 大 学 硕 士 学 位论文 1 3 论文的主要工作 本文通过广泛查阅相关文献资料,在比较和借鉴现有的软件开发过程的基础 上,提出精确软件丌发过程。研究主要内容包括软件丌发过程的阶段划分、文档 成果制作、丌发进度控制、开发质量保证等方面。在此基础上设计并实现了一套 物流中心管理系统。本文的主要工作包括: 1 分析现有软件开发过程 针对现有的软件开发过程进行分析讨论,主要对统一软件开发过程进行分 析,讨论统一软件丌发过程的理论基础、方法,以及优缺点等方面。 2 研究现有的软件丌发模型 一 对当前普遍使用的瀑布模型、快速模型、增量模型进行研究,并综合这些模 型的长处,提出精确软件丌发模型。在保留原有模型敢优点的同时,通过改进, 解决了这些模型存在的不足之处。 3 提出精确软件丌发过程 在现有软件开发过程的基础上,提出精确软件开发过程。详细说明精确软件 开发对系统丌发过程的阶段划分以及各个阶段的工作重点,从需求定义、外部设 计、内部设计、编码与单元测试、联合测试、试运行等阶段对系统i 丌发的成果物 文档进行说明。并将精确软件丌发过程与现有的丌发过程进行对比,总结精确软 件开发过程的改进之处。 4 物流中心管理系统的设计与实现 在精确软件开发过程的基础上,设计并实现了c k d 物流中心管理系统。将 精确软件开发过程应用到实际的丌发工作当中。通过实践证明精确软件开发过程 的可行性和有效性。 最后,对全文的内容进行了总结,并提出了进一步研究的目标和方向。 1 。4 论文组织 论文共分五章,主要内容如下: 第一章绪论 介绍课题的研究背景和研究意义,简要说明软件开发过程的产生和主要特 点,指出了精确软件开发过程提出的理论基础和原因。最后,还介绍了本文的主 要工作内容。 第二章统一软件开发过程 通过对统一软件过程的核心概念、丌发阶段、核心工作流的介绍,分析了统 。软件过程在中小型软件项目丌发过程中的不适用性,为精确软件丌发过程的提一, 6 江 苏 大 学 硕 士 学 位论文 第二章统一软件开发过程的研究 2 1 统一软件开发过程的核心概念 统一软件丌发过程( r a t i o n a lu n i f i c dp r o c e s s ,r u p ) 是一个面向对象且基于网 络的程序开发方法论瞳。根据r a t i o n a l ( r a t i o n a lr o s e 和统一建模语言的丌发者) 的说法,好像一个在线的指导者,它可以为所有方面和层次的程序开发提供指导 方针、模板以及事例支持比刳。r u p 和类似的产品把丌发中面向过程的方面( 例 如定义的阶段、技术和实践) 和其他丌发的组件( 例如文档、模型、手册以及代 码等等) 整合在一个统一的框架内心引。 2 2 统一软件开发过程的开发阶段 r u p 中的软件生命周期在时白j 上被分解为四个顺序的阶段,分别是:初始 阶段、细化阶段、构造阶段和交付阶段比3 | 。每个阶段结束于一个主要的里程碑: 每个阶段本质上是两个里程碑之间的时间跨度。在每个阶段的结尾执行一次评估 以确定这个阶段的目标是否已经满足。如果评估结果令人满意的话,可以允许项 目进入下一个阶段。 初始阶段的目标是为系统建立业务案例并确定项目的边界比“。为了达到这个 目的,必须识别所有与系统交互的外部实体,在较高层次上定义交互的特性。本 阶段具有非常重要的意义,在这个阶段中所关注的是整个项目进行中的业务和需 求方面的主要风险。对于建立在原有系统基础上的丌发项目来讲,初始阶段可能 很短。初始阶段结束时是第一个重要的里程碑生命周期目标,生命周期目标 里程碑评价项目基本的生存能力哳1 。 细化阶段的目标是分析问题领域、建立健全的体系结构基础、编制项目计划、 淘汰项目中最高风险的元素口们。为了达到该目的,必须在理解整个系统的基础上, 对体系结构做出决策,包括其范围、主要功能和诸如性能等非功能需求。同时为 项目建立支持环境,包括创建开发案例、创建模板、准则并准备工具。细化阶段 结束是第二个重要的里程碑生命周期结构。生命周期结构里程碑为系统的结 构建立了管理基准并使项目小组能够在构建阶段中进行衡量,此刻,要检验详细 的系统目标和范围、结构的选择以及主要风险的解决方案瞄1 。 在构建阶段,所有剩余的构件和应用程序功能被丌发并集成为产品,所有的 功能被详细测试比引。从某种意义上说,构建阶段是一个制造过程,其重点放在管 理资源及控制运作以优化成本、进度和质量。构建阶段结束时是第三个重要的里 8 江 苏大 学 硕 士 学 位论文 程碑初始功能,初始功能罩程碑决定了产品是否可以在测试环境中进行部署 瞳引。此刻,要确定软件、环境、用户是否可以开始系统的运作。此时的产品版本 也常被称为“b e t a ”版。 交付阶段的重点是确保软件对最终用户是可用的腔们。交付阶段可以跨越几次 迭代,包括为发布做准备的产品测试、基于用户反馈的少量的调整。在生命周期 的这一点上,用户反馈应主要集中在产品调整、设置、安装和可用性问题,所有 主要的结构问题应该已经在项目生命周期的早期阶段解决了。在交付阶段的终点 是第四个里程碑产品发布。此时,要确定目标是否实现,以及是否应该开始 另一个开发周期口。在一些情况下这个罩程碑可能与下一个周期的初始阶段的结 束重合。 2 3 统一软件开发过程的核心工作流 r u p 中有9 个核心工作流,分为6 个核心过程工作流和3 个核心支持工作 流。 6 个核心过程工作流为啸1 : 1 、商业建模工作流描述了如何为新的目标组织开发一个构想,并基于这个 构想在商业用例模型和商业对象模型中定义组织的过程,角色和责任。 2 、需求工作流的目标是描述系统应该做什么,并使开发人员和用户就这一 描述达成共识。为了达到该目标,要对需要的功能和约束进行提取、组织、文档 化;最重要的是理解系统所解决问题的定义和范围。 3 、分析和设计工作流将需求转化成未来系统的设计,为系统开发一个健壮 的结构并调整设计使其与实现环境相匹配,优化其性能。分析设计的结果是一个 设计模型和一个可选的分析模型。设计模型是源代码的抽象,由设计类和一些描 述组成。设计类被组织成具有良好接口的设计包( p a c k a g e ) 和设计子系统 ( s u b s y s t e n l ) ,而描述则体现了类的对象如何协同工作实现用例的功能。 设计活 动以体系结构设计为中心,体系结构由若干结构视图来表达,结构视图是整个设 计的抽象和简化,该视图中省略了一些细节,使重要的特点体现得更加清晰。体 系结构不仅仅是良好设计模型的承载媒介,而且在系统的开发中能提高被创建模 型的质量。 4 、实现工作流的目的包括以层次化的子系统形式定义代码的组织结构;以 组件的形式( 源文件、二进制文件、可执行文件) 实现类和对象;将开发出的组件 作为单元进行测试以及集成由单个开发者( 或小组) 所产生的结果,使其成为可 执行的系统。 5 、测试工作流验证对象间的交互,验证软件中所有组件的j 下确集成,检验 9 江苏大 学 硕 士 学 位论文 所有的需求已被j 下确的实现,识别并确认缺陷在软件部署之前被提出并处理。 r u p 提出了迭代的方法,意味着在整个项目中进行测试,从而尽可能早地发现 缺陷,从根本上降低了修改缺陷的成本。测试类似于三维模型,分别从可靠性、 功能性和系统性能来进行。 6 、部署工作流的目的是成功的生成版本并将软件分发给最终用户。部署工 作流描述了那些与确保软件产品对最终用户具有可用性相关的活动,包括:软件 打包、生成软件本身以外的产品、安装软件、为用户提供帮助。在有些情况下, 还可能包括计划和进行b e t a 测试版、移植现有的软件和数据以及j 下式验收。 3 个核心支持工作流为嘶1 : l 、配置和变更管理工作流描绘了如何在多个成员组成的项目中控制大量的 产物。配置和变更管理工作流提供了准则来管理演化系统中的多个变体,跟踪软 件创建过程中的版本。工作流描述了如何管理并行丌发、分布式丌发) 如何自动 化创建工程。同时也阐述了对产品修改原因、时间、人员保持审计记录。 2 、软件项目管理平衡各种可能产生冲突的目标,管理风险,克服各种约束 并成功交付使用户满意的产品。其目标包括:为项目的管理提供框架,为计划、 人员配备、执行和监控项目提供实用的准则,为管理风险提供框架等。 3 、环境工作流的目的是向软件丌发组织提供软件丌发环境,包括过程和工 具。环境工作流包括配置项目过程中所需要的活动,同样也支持丌发项目规范的 活动,提供了逐步的指导手册并介绍了如何在组织中实现过程。 尽管6 个核心过程工作流会使人想起传统瀑布模型中的几个阶段,但应注意 迭代过程中的阶段是完全不同的,这些工作流在整个生命周期中一次又一次被访 问。 以上9 个核心工作流在项目中轮流被使用,在每一次迭代中以不同的重点和 强度重复。 2 4 统一软件开发过程存在的问题 从上面的说明中不难看出,统一软件开发过程涉及到的方面众多,基本上覆 盖了软件开发过程的所有方面。但是,统一软件丌发过程复杂,虽然具有较强的 普遍性,但是缺乏针对性,对于中小型的软件开发项目,就显得过于冗繁了。具 体体现在如下方面: l 、对极大的复杂性的解决能力不强。大多数大型软件软件产品由几十甚 至几百万行源代码构成,例如:w i n d o w s 9 5 操作系统由大约l 1 0 0 万行代码组成。 每一行代码都可能影响到程序的其它部分,并且各个部分之间都可能互相影响。 这样一个错综复杂的巨大系统当中,每一个小小的错误都可能导致整个系统崩 l o 江 苏大 学 硕 士 学 位论文 溃。 2 、高度的不确定性1 。一个软件项目从一开始就存在许多不确定性因素。 其一:用户需求很难确定。这是因为软件开发者很难详细了解用户的需求,甚至 用户在看到产品之前也不清楚自己到底需要什么,所以从项目开发的自始至终都 可能会有新的需求提出,致使系统结构不断修改,最终面目全非。其二:设计不 完全可以预测。有时,一个设计时认为可行的方案,在实现时可能行不通,或者 最初的设计方案存在很大的缺陷而没有及时发现,或者突然一个设计时没有料到 的技术难点阻挡了项目的进度。从设计到实现实际上有着很大的不可预测性。其 三:用户需求不断变化,如果最初的用户需求没有了解得很清楚,可能整个项目 很快就会陷在不断变化的需求之中不能自拔。其四:客观条件的不确定性。在项 目的进展过程中,可能会有人员的流动,可能会有资源的调整,可能会有这样或 那样的客观条件的限制而阻挡了项目的j 下常进行。在这样高度冉虾确定之中,在 较早阶段精确估计一个项目不只是很难的,甚至是不可能的。 3 、在很多情况下,还会出现开发工期的延长的现象,主要原因为: 开发人员的过分乐观。许多开发人员倾向于一切都会进展顺利,这种盲目的 自信对于项目开发来说是不对的。如果按照最乐观的估计,可能绝大多数任务都 不能按时完成,因为在软件开发中不确定因素实在太多了。对于任务的复杂性和 难度,对于自己能支配的时间,对于可能的突发事件的干扰等没有清楚的认识和 估计,即使对自己的时间表做出保证,也可能常常无法按时交货啪1 。 来自外部的压力。作为项目的管理者或者客户都希望项目早同结束,因而为 项目设置了一个个时间节点。这些时间节点可能设置得根本就不可能实现或者实 现起来会有很大难度,但是开发人员为了按时完工只好加班加点,以最快的速度 完成要求的功能,而对于系统结构的考虑就会放到次要的位置上去,这样就为今 后程序的维护埋下了隐患。更可怕的是一个个b u g 会随着压力的增大而产生,最 后造成更大量的返工。程序就像程序员的孩子一样,每个人都希望自己的孩子茁 壮成长,但是没有办法,多生快生就不能优生汹,。 项目以外事情的干扰:如果一个项目的开发人员经常被项目以外的事情所干 扰、牵制,不能全身心地投入到项目开发之中,常常会因此而影响了进度。这种 现象在规模较小的软件企业中比较多见,一个开发人员经常身兼多职,甚至同时 参与多个项目的开发。如果其它项目急于完工,则该项目只好被拖延 2 9 】。 项目管理的混乱。软件企业内部项目管理的混乱似乎是个世界性的通病。 卡耐基梅隆大学软件工程研究所( s e i ) 建立了一套标准,用来衡量软件企业从 混乱到持续发展的这种状态,这就是c m m 五级标准。第一级最为混乱,每升高 一级情况都有所好转,第五级状况最好,。 江苏大 学 硕 士 学 位论文 开发人员的不足。全世界对于人才的竞争可能在i t 界表现的最为激烈。一 方面人才的绝对数量不足导致了许多企业不能招到自己急需的人才;另一方面人 才。的流动也导致了企业很容易失去自己的员工。一个项目如果缺少人手或人才频 繁流动,将不能保证项目的j 下常进展幽1 。 于是,人们就丌始寻找适合于中小型软件项目的丌发,并且可以有效的支持 当前流行的b s 模式系统丌发的软件开发过程。 本文作者在对以上问题的研究、探索中,提出了“精确软件开发过程”。 它的过程定义简单明了,阶段划分明确,对中小型软件项目和b s 模式的适应性 强,从根本上解决了困扰很多项目开发团队的过程管理问题。 1 2 江 苏大 学 硕 士 学 位论文 第三章软件过程改进一精确软件开发过程 3 1精确软件开发的基本思想 统一软件开发过程存在着如此的不足,而人们对于软件系统的需要却同益加 剧。于是,在实际的工作中,作者不断的思考与总结,希望能够对其进行改进, 在统一软件开发过程的基础之上,提出更为高效、可行的软件开发过程,解决在 实际的使用过程中所遇到的种种难题。精确软件开发过程,主旨就是要改变这种 状况,使软件开发能够在系统的、可行的、高效的、有计划的指导下进行,提高 软件系统开发的成功率,为中小型的软件系统开发提供帮助。 3 1 1 处理复杂问题的能力 统一软件开发过程对复杂问题的处理能力不强,主要因为它是面向大多数的 软件系统开发而设计的,没有对具体的问题的有针对性的解决方案。特别是中小 型的软件系统开发,统一软件开发显得过于臃肿,不但不能起到良好的效果,反 而成了设计与开发人员的负担,所以其中主要的部分往往不能得到很好的贯彻。 精确软件开发过程针对复杂性问题的解决采用了分割简化、细致明确的基本思 想。将复杂问题进行划分,然后针对各个相对简单的部分进行深入的分析讨论, 明确这些简单部分,进而对其进行设计与实现。精确软件开发过程是作者在中小 型软件系统的开发过程中归纳总结出来的,所以对于实际问题的解决极具针对 性,而且进行了简化,对于项目管理者和开发人员都是非常容易接受的,也就可 以得到很好的执行效果。 3 1 2 不确定性的解决 统一软件开发过程无法很好的解决软件开发过程中的不确定性,无法及时发 现用户业务的变更和系统设计人员在业务理解上的偏差。而在精确软件开发过程 中,用户业务领域的专家也包含在了开发团队中。有了业务领域的专家,设计人 员可以在开发过程中每个阶段都与之进行最直接的沟通,及时了解业务发生的变 更,同时也让用户及时了解项目的进展情况,得到直观的软件雏形,给予项目开 发以最大的支持与协助。 3 1 3 阶段划分的改进 统一软件开发将整个开发过程划分为计划、需求分析、设计、编码、测试、 运行维护这几个阶段。其中的设计阶段比较笼统,实际的系统设计要分为整体上 1 3 江 苏 大 学 硕士 学位论文 直是唯一被广泛采用的软件开发模型。”1 。 如图3 1 所示,瀑布模型将软件生命周期划分为制定计划、需求分析、软件 设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而 下、相互衔接的固定次序,如同瀑布流水,逐级下落。”1 。 ,一一月 图3 1 瀑布模型 在瀑布模型中,软件开发的各项活动严格按照线性方式进行,当前活动接受 上一项活动的工作结果,实施完成所需的工作内容。当前活动的工作结果需要进 行验证,如果验证通过,则该结果作为下一项活动的输入,继续进行下一项活动, 否则返回修改。 瀑布模型强调文档的作用,并要求每个阶段都要仔细验证。但是,这种模型 的线性过程太理想化,已不再适合现代的软件开发模式,几乎被业界抛弃,其主 要问题在于: l 、各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工 作量; 2 、由于开发模型是线性的,用户只有等到整个过程的木期才能见到开发成 果,从而增加了开发的风险; 3 、早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的 后果。 我们应该认识到,”线性”是人们最容易掌握并能熟练应用的思想方法。当人 们碰到一个复杂的”非线性”问题时,总是千方百计地将其分解或转化为一系列简 单的线性问题,然后逐个解决。一个软件系统的整体可能是复杂的,而单个子程 序总是简单的,可以用线性的方式来实现,否则干活就太累了。线性是一种简洁, 简洁就是美。当我们领会了线性的精神,就不要再呆板地套用线性模型的外表, 而应该用活它。例如增量模型实质就是分段的线性模型,螺旋模型则是接连的弯 曲了的线性模型,在其它模型中也能够找到线性模型的影子口扪。 快速原型模型( r a p i dp r o t o t y p em o d e l ) 1 5 江 苏 大 学 硕士 学位论文 的修改和一些新功能的发布。这个过程在每个增量发布后不断重复,直到产生最 终的完善产品。 3 2 2 精确软件开发模型 上述的几种方法虽然都存在着一定的缺陷,但是其有效性是不容否认的。于 是,考虑设计一种新的开发模型,既能够综合这些方法的优点,又不会受他们的 缺陷的制约。 精确软件开发模型就是在这样的背景之下提出的。它综合了这些方法的优 点,同时,也有效的解决了其中存在的问题。 图3 3 精确软件开发模型 精确软件开发模型继承了瀑布模型的总体的阶段划分方法,将软件开发划分 为需求定义、外部设计、内部设计、编码与单体测试、用户测试、系统试运行和 系统j 下式使用这几个阶段,如图3 3 所示。并在此基础之上,将迭代的范围缩小, 即在各个阶段当中,都有用户的参与,让用户在项目成果完成的第一时间就能直 观地得到体验,并就这些成果进行讨论,最终交由用户进行审核确认,用户认可 后才作为下一阶段的开展依据。精确软件开发过程将设计阶段划分为外部设计与 内部设计,将设计阶段的工作进行划分。原有的设计阶段主要包括系统结构设计、 系统功能设计、数据结构设计、系统程序设计等方面。在精确软件开发过程中, 将系统结构、系统功能、数据结构划分到外部设计中;将系统画面设计、详细的 1 7 江 苏 大 学 硕士 学位论文 业务处理流程设计、系统程序设计等放入到内部设计中。这样做不但将原来一个 比较复杂且工作量大的阶段划分得更为细致,同时也将设计工作分成了两个阶 段,提高系统设计工作的规范化、可视化,以及设计成果的精确程度。 同时,精确软件开发模型中也吸取了增量模型的优点。在系统的开发过程中, 首先完成用户业务所必需的,并且业务流程明确稳定的部分进行丌发,将需要变 更可能性大的功能放到系统改造升级中进行丌发。这样,能够让用户在丌发的过 程当中就体验到系统丌发的成果,并且能够及时提出对系统设计方面的修改意 见,避免造成过度的浪费。 另外,通过对系统的改造升级,就可以在稳定的系统之上增加新的功能模块, 满足之前没有实现的部分,最终实现用户全部的业务需要。 精确软件开发模型的优点主要体现在: l 、阶段划分清晰合理,有利于对系统开发的整个过程的把握,有利于系统 丌发的管理; 2 、每个阶段都输入文档,作为进一步丌发的依据,工作目标明确; 3 、各个阶段都有用户的参与,可以尽早的发现设计与丌发的缺陷,及时改 j 下,避免造成不必要的浪费; 4 、对于需要不稳定或业务流程不明确的部分,采用增量的方法,避免对其 他功能实现产生影响; 3 3 精确软件开发过程的阶段 3 3 1 需求定义 在精确软件开发过程中,需求定义阶段同样延续了统一软件过程中的重要地 位。需求定义( i m ) 是开发人员获取用户需求,了解用户业务的丌始。在这个 阶段中,开发人员要与相关的用户定期丌会,逐步深入的了解用户实际业务,并 通过从技术层面进行分析,得出用户需求说明及实现的可行性,划分出待开发系 统的功能模块和功能界面瞄1 。 软件需求就是系统必须完成的事以及必须具备的品质。具体来说,软件需求 包括功能需求、非功能需求和实际约束三个方面的内容嘶1 。 l 、功能需求:指系统必须完成的事情,即为了向用户提供有用的功能,产 品必须执行的操作。 2 、非功能需求:指产品必须具备的属性或品质,如可靠性、性能、响应时 自j 、容错性、可扩展性等。 l 日il n i 琳到弧o b l u s 1 2 。 i 。li 砷t 毒女b _ 啊_ ,t _ f 啊i 蚋髓_ 自_ - 舯岫- 蛙 a 。”;应蕾n # 虚jm 柚曩 t 覆f 矗t 一 吣墟悝一 日_ 一 、 ? 江苏大 学 硕 士 学 位论文 括了用于实现业务需要的主要数据库结构,以及系统功能模块的划分和对外的接 口描述。 系统解决方案首先说明待开发系统为实现业务需要所设计的数据库结构,其 中包括了主要的业务数据表,不必详细说明表结构,但是一定要体现出涉及到的 所有主要的业务数据表。然后系统解决方案详细描述了系统内部的功能模块划分 以及各个模块之问的关系,还包括了各个模块与其所对应的数据库表和导入导 出接口。另外,还需要将用户所处的位置表现在文档中,说明用户需要介入的部 分,体现出系统使用之后用户的工作情况。 系统解决方案是第一个对整个系统的详细说明,从技术角度说明了待丌发系 统的组织结构。制作良好的方案能够给用户最直观的感觉,让他们对系统有一个 初步的认识,增强用户对丌发商以及丌发人员的能力的信心。这样,能够给用户 看到系统所实现的功能,真真切切的体会到系统给他们的实际带来的便利,增强 用户对实现系统的信心与渴望,才能使得他们在以后的丌发过程中投入更大的热 情,有利于整个系统的丌发与实现,所以一定要力求准确详细。 3 3 1 7 系统功能列表 任何一个软件系统都是由若干个功能模块共同组成的,他们相对独立又有数 据上的联系。经过了对用户实际业务的调查研究,接下来用户关心的就是目标系 统能够为他们实现那些功能,能够为他们的工作带来多少便利了。而系统功能列 表就是丌发人员提出的对目标系统最为明确的功能说明了。 精确软件丌发过程对系统功能列表的要求也是力求越精确越好。功能列表不 仅要能表明系统的功能模块划分,更要让用户和后续丌发人员清晰明了地看出系 统每个功能模块的所包含的功能点。大到该功能模块所涉及到的数据范围,小到 检索、导出及打印等功能,都要明确的体现在功能列表当中。 在功能列表中包括了系统实现的两种表现形式,页面和批处理。 页面是用户与系统进行交互的窗口,用户可以通过页面查询到他们关心的相 关信息,实现他们需要在系统中完成的工作,以及下载他们需要做后续处理的数 据文件。 批处理是系统自动完成的数据处理工作,是以应用服务器通过预先设定执行 时间的方式,由服务器操作系统自动调用执行功能模块。主要包括从前工程的数 据获耿工作,系统内部定期的数据处理和无用数据的清理工作。如果系统使用了 动态的数据库结构,批处理还需要完成对数据库结构的维护工作。 功能列表是整个系统功能的划分说明,是系统必须要提供 x 江 苏 大 学 硕士 学 位论文 功能描述是对功能列表的补充说明,它详细说明了每个功能模块所要实现的 具体功能,既详细的描述了功能列表中的各个功能,也是系统设计时的最原始依 据。设计完成的每个功能都要与功能描述中的内容保持一致。 功能描述首先划分为若干了大模块,然后在每个大模块内部又划分为若干个 功能,这些都是要与功能列表相一致的。然后,针对每个功能,都给出了详细的 功能描述,说明了各个功能所完成的任务。 功能描述是对各个功能最早的描述,也是用户对每个功能所实现的功能的最 早的确认,所以,它是系统后续开发实现的基础。在系统设计过程中,每个功能 的功能点都必须要符合它的描述。 功能描述要与功能列表相配合,因为他们相结合才能完整的说明整个系统的 功能划分及所能完成的功能。他们要一起提交给用户,由用户详细理解后进行确 认,作为后期开发工作的依据。 3 3 2 外部设计 外部设计( e d ) 是系统设计阶段的开始,经过了需求定义阶段,开发人员 已经对用户的需求有了一定的了解,接下来的工作就是针对用户提出的业务需要 进行系统设计,包括系统的数据结构和功能设计。 精确软件开发过程对外部设计的成果物的要求是最高的,因为外部设计的成 果物是对需求定义阶段工作的总结,是开发人员对用户业务的理解与用户需求在 系统中的体现。用户在系统开发后期对系统测试与评审的依据j 下是外部设计阶段 的成果物文档,也j 下因为如此,外部设计成果物是需要用户认真确认,并给予签 字的。 外部设计将会产生系统的画面原型、功能接口、数据流动与处理的方式,系 统消息列表等系统化的文档,是用概要的计算机语言对用户业务和软件系统的描 述。 3 3 2 1 外部设计s c h e d u i e 外部设计是精确软件开发过程的重要一步,所以预先制订周密而详尽的r 程 计划是最为重要的,它将成为整个外部设计阶段的行动指南,也是项目管理者检 查项目进度、保证项目顺利进行的依据。 在外部设计阶段的开始,首先要制作外部设计阶段的同程,称为“外部设计 s c h e d u l e ”。其中规定了整个外部合计阶段的r 程安排、相关的成果物及负责 人人员。因为外部设计s c h e d u l e 不仅涉及到开发人员的r 程安排,同样包含了 用户相关人员的工作安排,所以外部设计s c h e d u l e 是要得到开发人员与用户的 共同确认后才能成为有效的行动指南的。 在项目的推进过程中,每天要将实际完成的工作与该s c h e d u l e 进行比对, 江 苏大 学 硕士 学 位论文 总结项目进度情况,帮助l d 了解工作的进展情况,有效的管理项目过程。同时, 也是向领导进行汇报的依据。 3 3 2 - 2 系统画面原型 画面是系统提供给用户的接口,是用户与应用系统交互的窗口。一个系统给 用户的印象以及用户对系统使用感受很大程度上决定于系统画面的友好与否。 精确软件开发过程要求系统的画面原型同样要作到精确,即必须能够完整的 体现出未来系统展现给用户的画面接口,不光要做到画面中的内容与未来系统一 致,包括画面布局、颜色、字体、大小以及数据项目的顺序等都要做到前后一致, 风格统一。 所以,尽早的把画面原型提供给用户,可以让用户较快的熟悉系统的风格以 及各个功能页面。在画面设计阶段多吸取用户的意见和建议,才能够设计出更加 友好的系统画面,提高用户的使用效率。 画面是丌发人员在理解了用户需求之后,在丌发环境中绘制的系统画面,用 抓图的方式体现在文档当中。其中还包括了对画面的说明,包括系统名称、阶段 说明、功能概要等。另外,在画面上要给各个页面控件加上小标记,用于与后面 的画面项目说明相匹配。 用户需要详细审阅画面,提出与其设想不一致的地方,由开发人员及时改难, 最终开发人员与用户达成一致,由使用系统的用户进行签字确认,后期的丌发将 会以此为基础。同时,画面也是用户在测试阶段最先关注的内容,是用户确认系 统的依据。 3 3 2 3 画面项目记述书 有了画面,就需要有项目记述文档来描述画面上的各个用户控件及其相关属 性设置情况,这就是画面项目记述书。 画面项目记述书首先指定了与之相关的画面,然后分别说明了该画面中的各 个控件,包括了控件的名称、类型、长度、表示形式、t a b 顺序、入力必须、i o , 以及项目内容说明。 需要强调的是,画面项目记述书必须要与画面文档相一致,所以也可以说项 目记述书是对画面的详细说明。 3 3 2 4 处理记述 处理记述是针对画面上的各个功能的实现方法及过程的描述,包括页面初始 化、功能按钮、页面关闭时的处理事件。处理记述概括性的说明了各个处理过程 的输入数据和输出数据,是系统实现的基础,为后续的设计和丌发提供了参考。 精确软件开发过程要求处理记述必须明确的说明系统对业务以及相关数据 的处理方法,用精确的语言描述出系统是这样解决用户的实际问题的。 处理记述包含了各个处理的说明和实现流程,系统每一步的处理都体现在其 2 4 江 苏大 学 硕 士 学 位论文 中。首先要说明对应处理过程的目的,标明整个处理过程的最终结果。然后说明 输入数据的来源和内容以及输出数据的去向和内容,要精确到数据库、数据表和 数据字段。最后,再详细描述处理的实现流程每一步的处理方式。 3 3 2 5 画面迁移图 画面迁移图从画面级对软件系统的结构设置进行说明,描述了系统页面之间 的跳转,是用户使用系统的操作指南。 精确软件开发过程的画面迁移图包括画面的说明,以及画面之间的跳转关 系。还包括了画面跳转的触发事件和跳转条件。图中的方框表示功能,箭头表示 跳转方向。 3 3 2 6 输入校验说明 输入校验描述了系统画面的输入校验条件,是系统设计和实现的依据。输入 校验条件是对从画面提取数据的输入要求,包括输入的字符类型、长度、全角 半角等,用户只有掌握了这些才能更为方便有效的使用系统。 3 3 2 7 批处理记述 批处理是现今企业管理系统不可缺少的部分,它可以在用户不参与的情况下 完成数据获取、数据处理等时问较长的工作。所以,在外部设计阶段,就需要首 先概括的对其处理过程进行描述,使得用户可以在开发的早期就对系统批处理有 一定的了解。 批处理记述就是用来描述批处理处理方法的。与处理记述相似,批处理记述 也首先描述批处理的目的、输入数据和输出数据。然后,详细说明批处理的各个 业务处理方法。 另外,批处理记述需要明确的说明该批处理执行的时间,以及决定是否能够 成功执行的数据条件。 3 3 2 8 批处理流程图 因为批处理是系统自动执行的,对系统数据的处理过程,所以可以使用图形 化的计算机语言流程图来进行更为形象与直观的说明。 流程图是广泛使的表示算法的图形化方法,它能够通过图形之间的条件跳转 来表示程序中功能代码的调用过程。同时,它也可以清晰的描述出系统对于实际 的处理过程,包括数据来源、执行处理的前提条件、处理过程中每一步操作、判 断执行成功与否的依据,以及最终执行结束后的状态确认。 因为批处理是系统自动完成的处理过程,不需要用户的介入,完全可以按照 系统获取到的业务状念来选择要使用的处理方法,处理过程相对固 发商获取需求提供便利。另外,系统负责人还负责与系 统相关的软硬件的验收工作,以及向相关用户薹强妊骡竺而重“睽薹耋鲞!翟璺轩剐雏爱鬣龋幕 x 江苏大 学 硕士 学 位论文 3 。3 。毒编码和单嚣测试 通过前面的介绍,我们已经了解了精确软件开发在霈求定义、外部设计、内 部设计阶段所需要完成的_ 工作。 在需求定义阶段我们详尽的获取了用户对于待开发的系统的需求及期望,在 外部设计和内部设计阶段,我翻按照不同的详细程度对系统的实现进行了全面妨 设计。到此,整个系统的大体轮廓已经展现在了开发人员和用户的面前,接下来 的工作就是需要编码人员根据已有的需求文档和设计文档进行代码开发了,这是 系统最终的实现,是将设想和设计转化为现实的阶段。 在精确软件开发中,将编码与单元测试的工作结合起来进行,即编码人员在 编写代码的同时,自己进行最小范圈的自盒测试。编码入员根据自己编写代码的 思路,在代码部分完成后,编写单元测试用例,对已经完成的部分进行测试,保 证王终完成时提交的代码在局部土是斧确的。 对于单元测试,通常编码人员要使用的是囱盒测试,白盒测试并不是简单的 按照代码设计嗣倒,丽是需要根据不豳的测试需求,结合不同的测试对象,使雳 适合的方法进行测试。因为对于不同复杂度的代码逻辑,可以衍生出许多种执行 路径,只有适当的测试方法,才壤芝帮助我们从代码的迷雾森林中找到正确的方向。 虽然逻辑错误和不币确假设与一条程序路径被运行的可能性成反比,并且我们经 常相信某逻辑路径不可能被执行,而事实上,它可能在正常的情况下被执行。由于 代码中的笔误是随机且无法杜绝的,因此我们要进行自盒测试孙”。 3 。3 5 联合测试 联合测试,也叫组装测试或联合测试。在单元测试的基础上,将所有模块按 照设计要求组装成为子系统或系统,进行联合测试。实践表明,些模块虽然能 够单独地工作,但并不能保证连接起来也能币常的工作。程序在某些局部反映不 出来的问题,在全局上很可能暴露出来,影响功能的实现。 联合测试最简单的形式是:两个已经测试过的单元组合成一个组件,并且测 试它们之间的接口m 1 。从这一层意义上讲,组件是指多个单元的集成聚合。在现 实方案中,许多单元组合戒组件,丽这些组件又聚合成纛亭的更大部分。方法是 测试片段的组合,并最终扩展进程,将您的模块与其他组的模块一起测试。最后, 将构成进程的所有模块一起测试。此外,如果程序出多个进程组成,应该成对测 试它们,而不是同时测试所有进程。 联合测试识别组合单元时出现的问题。通过使用要求在组合单元前测试每个 单元并确保每个单元的生存毹力的测试计划,可以知道在组合单元时所发现的任 何错误很可能与单元之间的接口有关。这种方法将可能发生的情况数量减少到更 江 苏大 学 硕 士 学 位论文 麓单的分析级别。 联合测试是在单元测试的基础上,测试在将所有的软件单元按照概要设计规 格说明的要求组装成模块、子系统或系统的过程中各部分工作是否达到或实现相 应技术指标及要求的活动。也就是说,在联合测试之前,单元测试应该已经完成, 联合测试中所使用的对象应该是已经经过单元测试的软件单元。这一点很重要, 因为如果不经过单元测试,那么联合测试的效果将会受到很大影响,并且会大幅 增加软件单元代码纠错的代价。联合测试是单元测试的逻辑扩展。在现实方案中, 集成是指多个单元的聚合,许多单元组合成模块,丽这些模块又聚会成程序的更 大部分,如分系统或系统。联合测试采用的方法是测试软件单元的组合能否最常 工作,以及与其他组的模块能否集成起来王作。最后,还要测试构成系统的所有 模块组合能否正常工作。 联合测试是一种正规测试过程,必须精心计划,并塾元测试的完成时闻协 调起来。在制定测试计划时,应考虑如下因素。驯: 1 、采用何种系统组装方法来进行组装测试 2 、组装测试过程中连接各个模块的顺序 3 、模块代码编制和测试进度是否与组装测试的顺序一致 4 、测试过程中是孬需要专门的硬件设备 解决了上述问题之后,就可以列出各个模块的编制、测试计划表、标明每个 模块单元测试宠成的r 期、首次联合测试的曩期、联合测试全部完成豹曩期、以 及需要的测试用例和所期望的测试结果。 3 。3 。6 系统试运行 系统试运行是经过单元测试和联合测试的系统在丌发环境中,由用户使用的 系统运行阶段。 在这个阶段中,系统将接受真实的业务数据,并经受用户实际业务的考验。 用户按照预先的设想,将系统运用于曩常的工作当中,在对系统进行最终测试的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年中国电信股份有限公司安徽分公司校园招聘202人考试参考试题及答案解析
- 2025贵州贵阳综保产业发展有限公司(第一批)对外补岗招聘2人备考考试题库附答案解析
- 2025西安碑林仁华医院医养中心招聘(2人)考试参考试题及答案解析
- 2026建信养老金管理有限责任公司校园招聘9人笔试备考题库及答案解析
- 2025广东梅州市大埔县高陂中学招聘顶岗教师3人备考考试题库附答案解析
- 2025江西吉安新干县引进名师名校长1人备考考试题库附答案解析
- 食品中新兴污染物监测-洞察及研究
- 宜宾市卫生健康委员会2025年公开招募医疗卫生辅助岗位(市级单位)的补充备考考试题库附答案解析
- 2025山东省黄三角农高区城乡公益性岗位招聘54人备考考试题库附答案解析
- 住院患者健康宣教要点
- 仓库搬运工安全知识培训
- 2025年部编版新教材道德与法治二年级上册教学计划(含进度表)
- 铁路物流管理与实务理论知识考核试题及答案
- GB/T 45932-2025高压直流开关设备和控制设备标准的共用技术要求
- 系统运营管理办法
- 藏族舞基础知识课件下载
- 清华大学(夏建军):2025年供热碳排放核算和碳责任分摊报告
- 铁杵磨针小学生课件
- 传染病专科重点建设计划
- 监狱安全生产课件
- (高清版)DB34∕T 5225-2025 风景名胜区拟建项目对景观及生态影响评价技术规范
评论
0/150
提交评论