软件开发过程详解_第1页
软件开发过程详解_第2页
软件开发过程详解_第3页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件开发过程详解软件开发过程即软件设计思路和方法的一般过程,包括设计软件的功能和实 现的算法和方法、软件的总体结构设计和模块设计、 编程和调试、程序联调和测 试以及编写、提交程序。生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。软件开发过程覆盖了需求、设计、实现、确认以及维护等活动。需求活动包括问题分析 和需求分析。问题分析获取需求定义,又称软件需求规约。需求分析生成功能规 约。设计活动一般包括概要设计和详细设计。概要设计建立整个软件系统结构, 包括子系统、模块以及相关层次的说明、每一模块的接口定义。详细设计产生程 序员可用的模块说明,包括每一模块中数据结构说明及加工描述。 实现活

2、动把设 计结果转换为可执行的程序代码。确认活动贯穿于整个开发过程,实现完成后的 确认,保证最终产品满足用户的要求。 维护活动包括使用过程中的扩充、 修改与 完善。1.需求分析1.1需求分析的特点和任务需求分析是软件开发的第一步。获取需求的一个必不可少的结果是对项目中 描述的客户需求的普遍理解。一旦理解了需求,分析者、开发者和客户就能探索 出描述这些需求的多种解决方案。参与需求获取者只有在他们理解了问题之后才 能开始设计系统,否则,对需求定义的任何改进,设计上都必须大量的返工。把 需求获取集中在用户任务上一而不是集中在用户接口上一有助于防止开发组由 于草率处理设计问题而造成的失误。 有几种原因使

3、需求分析变得困难:(1)客户 说不清楚需求;(2)需求自身经常变动;(3)分析人员或客户理解有误。需求获取、分析、编写需求规格说明和验证并不遵循线性的顺序,这些活动是相互隔开、增量和反复的。当你和客户合作时,你就将会问一些问题,并且取 得他们所提供的信息(需求获取)。同时,你将处理这些信息以理解它们,并把 它们分成不同的类别,还要把客户需求同可能的软件需求相联系 (分析)。然后, 你可以使客户信息结构化,并编写成文档和示意图(说明)。下一步,就可以让 客户代表评审文档并纠正存在的错误(验证)。这四个过程贯穿着需求分析的整 个阶段。需求获取可能是软件开发中最困难、最关键、最易出错及最需要交流 的

4、方面。需求获取只有通过有效的客户一开发者的合作才能成功。分析者必须建立一个对问题进行彻底探讨的环境, 而这些问题与产品有关。为了方便清晰地进 行交流,就要列出重要的小组,而不是假想所有的参与者都持有相同的看法。 对 需求问题的全面考察需要一种技术,利用这种技术不但考虑了问题的功能需求方 面,还可讨论项目的非功能需求。 确定用户已经理解:对于某些功能的讨论并不 意味着即将在产品中实现它。对于想到的需求必须集中处理并设定优先级,以避免一个不能带来任何益处的无限大的项目。1.2.需求分析的一般方法跟班作业。通过亲身参加业务工作来了解业务活动的情况。这种方法可以比较准确地理解用户的需求,但比较耗费时间

5、。开调查会。通过与用户座谈来了解业务活动情况及用户需求。座谈时,参加者之间可以相互启发。需求获取讨论会中如果参与者过多, 就会减慢进度。人数 大致控制在5到7人是最好的。这些人包括客户、系统设计者、开发者和可视化 设计者等主要工程角色。相反地,从极少的代表那里收集信息或者只听到呼声最 高、最有舆论影响的用户的声音,也会造成问题。这将导致忽视特定用户类的重 要的需求,或者其需求不能代表绝大多数用户的需要。最好的权衡在于选择一些授权为他们的用户类发言的产品代表者,他们也被同组用户类的其它代表所支 持。设计调查表请用户填写。如果调查表设计得合理,这种方法是很有效,也很 易于为用户接受的。查阅记录。即

6、查阅与原系统有关的数据记录,包括原始单据、账簿、报表等。 通过调查了解了用户需求后,还需要进一步分析和表达用户的需求。 分析和表达 用户需求的方法主要包括自顶向下和自底向上两类方法。2概要设计2.1概要设计概述概要设计重点在于将模块分解为对象并阐明对象之间的关系,引用架构设计说明书中的模块图,并阐述对于模块进行设计的大致思路。 主要工作是根据该模 块的职责对模块进行概要设计(分解模块为对象、描述对象的职责以及声明对象 之间的接口),绘制模块的对象图、对象间的依赖图以及模块主要功能的序列图, 分别加以描述并相应的描述模块异常的处理方法。如果需要并描述数据视图。2.2概要设计的目标正如同软件本身有

7、其要达到的目标一样, 架构设计要达到的目标是什么呢? 一般而言,软件架构设计要达到如下的目标:(1)可靠性(Reliable)。软件系统对于用户的商业经营和管理来说极为重 要,因此软件系统必须非常可靠。(2)安全行(Secure)。软件系统所承担的交易的商业价值极高,系统的安 全性非常重要。(3)可扩展性(SCAIable)。软件必须能够在用户的使用率、用户的数目增 加很快的情况下,保持合理的性能。只有这样,才能适应用户的市场扩展得可能 性。(4)可定制化(CuSTomizabl。同样的一套软件,可以根据客户群的不同 和市场需求的变化进行调整。3.详细设计详细设计重点在于对每个模块进行实现,将

8、模块的对象分解为属性和方法,并阐述如何实现。主要工作视根据模块概要设计详细描述对于模块内对象的实 现,包括对象的职责、属性、方法、对象内功能的流程图、对象关联的类、对象 的异常。(需要绘制的主要为类图)详细设计的目标有两个:实现模块功能的算法要逻辑上正确和算法描述要简 明易懂。在软件详细设计阶段,将生成详细设计说明书,为每个模块确定采用的算法, 确定每个模块使用的数据结构,确定每个模块的接口细节。在软件详细设计结束 时,软件详细设计说明书通过复审的形成形成正式文档, 作为下一个阶段的工作 依据。详细设计的主要任务是:为每个模块确定采用的算法,选择某种适当的工具 表达算法的过程,写出模块的详细过

9、程性描述;确定每一模块使用的数据结构; 确定模块接口的细节,包括对系统外部的接口和用户界面, 对系统内部其它模块 的接口,以及模块输入数据、输出数据及局部数据的全部细节; 为每一个模块设 计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定的测试,模 块的测试用例是软件测试计划的重要组成部分, 通常应包括输入数据,期望输出 等内容。4.编码软件编码是将上一阶段的详细设计得到的处理过程的描述转换为基于某种 计算机语言的程序,即源程序代码。编码需注意根据项目的应用领域选择适当的 编程语言、编程的软硬件环境以及编码的程序设计风格等事项。在计划阶段,极少考虑程序语言的技术特性。 但在选定资源时

10、,要规划将要 使用的支撑工具,就要确定一个具体的编译器或者确定一个程序设计环境。如果软件开发组的成员对所要使用的语言不熟悉, 那么在成本及进度估算时必须把学 习的工作量估算在内。一旦确定了软件需求,待选用的程序语言的技术特性就显得非常重要了。 如 果需要复杂的数据结构,就要仔细衡量有哪些语言能提供这些复杂的数据结构。 如果首要的是高性能及实时处理的能力,就可选用适合于实时应用的语言或效率 高的语言。如果该应用有许多输出报告或繁杂的文件处理, 最好是根据软件的要 求,选定一种适合于该项工作的语言。软件的设计质量与程序设计语言的技术性能无关(面向对象设计例外)。 但在实现软件设计转化为程序代码时,

11、 转化的质量往往受语言性能的影响。 因而 也会影响到设计方法。语言的技术性能对测试和维护的影响是多种多样的。例如,直接提供结构化 构造的语言有利于减少循环带来的复杂性(即 McCabe复杂性),使程序易读、 易测试、易维护。另一方面,语言的某些技术特性却会妨碍测试。例如,在面向 对象的语言程序中,由于实行了数据封装,使得监控这些数据的执行状态变得比 较困难;由于建立了对象类的继承结构,使得高内聚、低耦合的要求受到破坏,增加了测试的困难。此外,只要语言程序的可读性强,而且可以减少程序的复杂 性,这样的程序设计语言对于软件的维护就是有利的。5.测试不论是对软件的模块还是整个系统,总有共同的内容要测

12、试,如正确性测试, 容错性测试,性能与效率测试,易用性测试,文档测试等。5.1软件测试的内容不论是对软件的模块还是整个系统,总有共同的内容要测试,如正确性测试, 容错性测试,性能与效率测试,易用性测试,文档测试等。正确性测试正确性测试又称功能测试,它检查软件的功能是否符合规格说明。 由于正确 性是软件最重要的质量因素,所以其测试也最重要。基本的方法是构造一些合理 输入,检查是否得到期望的输出。这是一种枚举方法。倘若枚举空间是无限的, 那可惨了,还不如回家种土豆有盼头。测试人员一定要设法减少枚举的次数, 否 则没好日子过。关键在于寻找等价区间,因为在等价区间中,只需用任意值测试 一次即可。性能与

13、效率测试性能与效率测试主要是测试软件的运行速度和对资源的利用率。有时人们关心测试的“绝对值”,如数据送输速率是每秒多少比特。有时人们关心测试的“相 对值”,如某个软件比另一个软件快多少倍。在获取测试的“绝对值”时,我们 要充分考虑并记录运行环境对测试的影响。易用性测试易用性测试没有一个量化的指标,主观性较强。调查表明,当用户不理解软 件中的某个特性时,大多数人首先会向同事、朋友请教。要是再不起作用,就向 产品支持部门打电话。只有30%的用户会查阅用户手册。5.2软件测试的常用方法从测试是否针对系统的内部结构和具体实现算法的角度来看,可分为白盒测试和黑盒测试。5.2.1. 黑盒测试黑盒测试也称功

14、能测试或数据驱动测试,它是在已知产品所应具有的功能, 通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打 开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。5.2.2. 白盒测试白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒

15、测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。5.3软件测试的常用工具目前用于测试的工具已经比较多了,测试工具的应用可以提高测试的质量、 测试的效率、减少测试过程中的重复劳动、实现测试自动化,这些测试工具一般 可分为白盒测试工具、黑盒测试工具、性能测试工具,另外还有用于测试管理的 工具,本文对常用的测试工具作一个分析比较。白盒测试工具 Jtest是一个代码分析和动态类、组件测试工具,是一个集成的、易于使用和自动 化的Java单元测试工具。它增强代码的稳定性,防止软件错误。(2) Jeon tractJcontract在系统级验证类/部件是否正确工作并被正确使用。Jeontract是个

16、独立工具,在功能上是 Jtest的补充。可以用Jeon tract插装按DbC注解的Java 代码。当您将类/部件组装成系统时,Jeon tract在运行时监视并报告错用和功能 性问题。Jcontract帮助每个开发人员有效地考核类/部件的系统级行为。黑盒测试工具(1) Win Ru nn erMercury In teractive公司的 Win Ru nner是一种企业级的功能测试工具, 用于 检测应用程序是否能够达到预期的功能及正常运行。通过自动录制、检测和回放用户的应用操作,WinRunner能够有效地帮助测试人员对复杂的企业级应用的不 同发布版进行测试,提高测试人员的工作效率和质量,

17、确保跨平台的、复杂的企 业级应用无故障发布及长期稳定运行。企业级应用可能包括 Web应用系统,ERP系统,CRM系统等等。(2) SilkTest SilkTest In ternatio nalSegue公司的标准的、面向多语种企业级应用的功能和回归测试工具。让用 户能跨语种、跨平台和跨 Web浏览器,高效率地进行各种类型的应用可靠性测 试。6.维护维护是旨在已完成对软件的研制(分析、设计、编码和测试)工作并交付使 用以后,对软件产品所进行的一些软件工程的活动。即根据软件运行的情况,对软件进行适当修改,以适应新的要求,以及纠正运行中发现的错误。编写软件问 题报告、软件修改报告。软件维护是一项

18、长期而繁琐的任务,长时间的跨度可能会牵扯到文档、代码更新,人员更换等。所以有关软件的文档一定要写好、保存好。另外开发团队要 有自己的文档代码规范标准等,也是做好软件维护的前提条件。一个中等规模的软件,如果研制阶段需要一年至二年的时间, 在它投入使用 以后,其运行或工作时间可能持续五年至十年。那么它的维护阶段也是运行的这 五年至十年期间。在这段时间,人们几乎需要着手解决研制阶段所遇到的各种问 题,同时还要解决某些维护工作本身特有的问题。 做好软件维护工作,不仅能排 除障碍,使软件能正常工作,而且还可以使它扩展功能,提高性能,为用户带来 明显的经济效益。然而遗憾的是,对软件维护工作的重视往往远不如对软件研制 工作的重视。而事实上,和软件研制工作相比,软件维护的工作量和成本都要大 得多。在实际开发过程中,软件开发并不是从第一步进行到最后一步,而是在任何 阶段,在进入下一阶段前一般都有一步

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论