第2章 Web应用程序开发活动.ppt_第1页
第2章 Web应用程序开发活动.ppt_第2页
第2章 Web应用程序开发活动.ppt_第3页
第2章 Web应用程序开发活动.ppt_第4页
第2章 Web应用程序开发活动.ppt_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、第2章Web应用程序开发活动,2.1 软件开发的基本活动 2.2 软件开发方法的变迁 2.3 软件开发的最佳实践 2.4 新一代软件开发方法,2.1 软件开发的基本活动 软件开发时期主要包括需求分析、软件设计、编码和测试四个阶段。 一、需求分析 1. 需求分析的任务 (1)需求分析的任务主要有两个: 第一是通过对问题及其环境的理解、分析和综合,建立分析模型; 第二是在完全地弄清用户对软件系统的确切要求的基础上,用“软件需求规格说明书(SRS)”表达出来。,(2)建立分析模型的目的 由于用户群体中的各个用户往往会从不同的角度上阐述他们对原始问题的理解和对目标软件的需求,因此有必要为原始问题及其目

2、标软件系统建立模型。 (3)建立分析模型的作用 一方面用于精确地记录用户对原始问题和目标软件的描述;另一方面也将帮助分析人员发现用户需求中的不一致性,排除不合理的部分,挖掘潜在的用户需求。,(4)编写需求说明的要求 需求说明应该具有准确性和一致性。 需求说明应该具有清晰性和没有二义性。 需求说明应该直观、易读和易于修改。,2. 需求分析的步骤 (1)需求获取 通常从分析当前系统包含的数据开始,获取用户对软件功能的需求界面的需求。 (2)需求提炼 主要任务是建立分析模型。 (3)需求描述 编写软件需求规格说明书。 (4)需求验证 对软件需求规格说明书进行验证改善其不正确的地方,从而确保需求说明可

3、作为软件设计和最终系统验收的依据。,3. 快速原型法在需求分析中的应用 在实际的软件开发中,快速原型法常常被用作一种有效的需求定义方法。 在需求分析阶段采用原型法,一般可按照以下步骤进行: 利用各种分析技术和方法,生成一个简化的需求规格说明; 对需求规格说明进行必要的检查和修改后,确定原型的软件结构、用户界面和数据结构等; 在现有的工具和环境的帮助下,快速生成可运行的软件原型,并进行测试、改进; 将原型提交给用户评估,并征求用户的修改意见; 重复上述过程,直到原型得到用户的认可。,二、软件设计 “设计先于编码”,是软件工程方法的一条基本原则。 软件设计的任务就是把分析阶段产生的软件需求说明转换

4、为用适当手段表示的软件设计文档。 软件设计的内容一般都包括: 数据设计 体系结构设计 接口设计 过程设计,1. 模块与构件 (1) 模块是一个拥有明确定义的输入、输出和特性的程序实体。 (2) 广义地说,对象也是一种模块。 (3) 在模块设计中要求的高内聚、低耦合等性质,在对象设计中仍然适用。 (4)软件构件是一种可重复使用的软件组件。,2. 抽象与细化 (1)随着软件规模的不断增大,设计的复杂性也不断增大,抽象便成了控制复杂性的基本策略之一。 (2) 在软件的抽象层次中,最高层的抽象程度最高,若需要系统某部分的细节,就移向较低层次的抽象。越是到较低层次,越可看到更多的细节。 (3) 软件设计

5、其实就是在不同抽象级别考虑和处理问题的过程。 (4) 细化是与抽象相反而又互补的一个概念。细化的实质就是分解。,3. 信息隐藏 (1)信息隐藏是系统分解为模块时应遵守的指导思想,在模块内部的数据与过程,把不需要了解这些数据与过程的模块隐藏起来。 (2)目的是为了提高模块的独立性。,4. 软件复用 (1)使开发人员能充分利用已有的现成构件,不必这一切都从头做起。 (2) OO技术的流行加快了软件复用的实现。,5. 分解 (1) 分解是人们处理复杂问题常用的方法。 (2) 在传统的软件工程中,在分析阶段靠分解来画分层DFD图;在设计阶段用分解来实现模块化设计。 (3) 在OO软件工程中,靠分解来划

6、分类和对象。,三、编码 编码俗称编程序,是软件开发的最终目标,是产生能在计算机上执行的程序。因为编码是把软件的需求真正付诸实现,所以编码阶段也称为实现。 1. 编码的任务 (1) 目的:是使用选定的程序设计语言,把模块的过程性描述翻译为用该语言书写的源程序(或源代码)。 (2) 要求: 程序员除应熟悉所用语言的功能和程序开发环境外,还要弄清要编码的模块的外部接口与内部过程。 编码产生的源程序,应该正确可靠,简明清晰,而且具有较高的效率。,2. 编码的风格 (1) 编码风格也称为程序设计风格,良好的编码风格能在一定程度上弥补语言存在的缺点,反之,不注意风格,即使使用了结构化的现代语言,也不一定写

7、出高质量的程序。 (2) 编码风格的要求 使用标准的控制结构 主要表现在编码阶段,要继续遵循模块逻辑中采用单入口、单出口标准结构这一主要原则,确保源程序清晰可读。 源程序的文档化 编码的目的是产生程序,其余阶段才产生文档。,源程序的文档化:主要表现在源代码也需要实现“文档化”,目的是为了提高程序的可维护性。 源程序的文档化通常包括以下内容: 合理的源文件组织结构; 有意义的命名规则; 源程序文件中适当的注释。,四、软件测试 1. 软件测试的含义 软件测试是为了发现错误而执行程序的过程。 2. 软件测试的目的和任务 目的:发现程序的错误。 任务:通过在计算机上执行程序,暴露程序中潜在的错误。 3

8、. 纠错的目的和任务 目的:定位和纠正错误。 任务:消除软件的故障,保证程序的可靠运算。,4. 测试与纠错的关系,2.2 软件开发方法的变迁 软件开发方法的变迁主要经过以下几阶段:,一、程序设计的两次革命 程序设计是软件开发的重要组成部分,在计算机软件的发展历史中,围绕着数据和操作的关系,程序设计发生了两次革命性的变化: 第一是主张将数据和操作分开的结构化程序设计; 第二是主张将数据和操作合并在一起的面向对象的程序设计。,1. 从面向过程到面向对象 (1)面向过程的程序设计方法的特点 程序数据结构算法 当对软件进行分析或设计时,开发人员总是把程序理解为由一组被动的数据和一组能动的过程所构成。

9、可是在客观事物中,实体的内部“状态”(可用数据表示)和“运动”(加于数据的操作)却是结合在一起的,这就使采用传统范型开发的软件模型(称为“解空间”)被人为地偏离客观实体本身的模型(称为“问题空间”)。,(2)面向对象的程序设计方法的特点 将数据及其操作封装在一个个称为“对象”的统一体中,对象之间则通过“消息”相互联系,因而较好地实现了“解空间”与“问题空间”的一致性。 程序对象消息,2. 面向对象的程序设计的优势 (1) 面向对象的程序设计中由于对象一般是由多个模块组成的一个基本上独立的单元,而且解空间与问题空间的一致性,使软件开发者对客观世界建立的分析模型,实际上已为软件系统的设计准备好了基

10、本的框架。因而对于大型软件的开发,可以有效地降低软件的复杂性,简化了软件的开发。 (2) 面向对象范型的优势同时也体现在软件的维护上。表现在对“数据”对象的改变,则限于其本身,与该对象以外的其他部分以及触发该对象工作的外部消息完全无关。这将使因修改程序而引发软件故障的机会大大减少,令大型软件的维护更快、更容易。,二、软件开发的常见问题 1. 软件开发中常见的问题 2. 分析问题出现的原因,1. 软件开发中常见问题(九个方面) 对用户的需求理解不准确 对需求的改变束手无策 模块不兼容 软件维护困难 项目的严重缺陷发现较晚 软件质量低劣或用户使用不方便 高负荷下性能低 不配合的团队力量 不可靠创建

11、和发布过程,2. 出现问题的原因分析(十个方面) 需求不充分 有歧异的交流 脆弱的架构 无法避免的复杂性 未检测出的不一致 测试不足 瀑布模型的开发 项目评估过于主观 无法控制变更的产生 自动控制的不足,2.3 软件开发的最佳实践 主要包括: (1) 迭代的开发软件 (2) 需求管理 (3) 使用基于构件的体系结构 (4) 可视化软件建模 (5) 验证软件质量 (6) 控制软件变更,(1) 迭代化开发 基本思想: 在迭代化的方法中,将整个项目的开发目标划分成为一些更易于完成和达到的阶段性小目标,这些小目标都有一个定义明确的阶段性评估标准。 迭代就是为了完成一定的阶段性目标而所从事的一系列开发活

12、动,在每个迭代开始前都要根据项目当前的状态和所要达到的阶段性目标制定迭代计划。 整个迭代过程包含了需求、设计、实施、部署、测试等各种类型的开发活动,迭代完成之后需要对迭代完成的结果进行评估,并以此为依据来制定下一次迭代的目标。,迭代化开发具有以下特点: 允许变更需求 逐步集成元素 尽早降低风险 有助于提高团队的士气 生成更高质量的产品 保证项目开发进度 容许产品进行战术改变 迭代流程自身可在进行过程中得到改进和精炼,(2) 需求管理 需求管理就是一种获取、组织并记录系统需求的系统化方案,以及一个使客户与项目团队对不断变更的系统需求达成并保持一致的过程。 需求管理一般采用一种比较有效的金字塔方式

13、的管理办法。如下图所示:,(3) 基于构件的体系结构 构件是实现清晰功能的模块、子系统。 构件技术可以为软件系统提供最大的灵活性。 构件的特点是: 构件内部的元素之间高内聚、构件之间低耦合; 整个系统的功能由一组构件相互协作而完成; 构件之间通过定义明确的接口来使用相互的服务。 构件体现了面向对象技术封装和模块化的思想,既能够适当隐藏不需要关心的细节,又可以在需要的时候随时展现设计的详细结构,从而有效管理系统的复杂度。,(4) 可视化建模 可视化建模是指使用语义丰富的图形和文本设计表示法来捕获软件设计。 表示法(例如 UML)允许提高抽象的程度,同时保持严格的语法和语义。 可视化建模具有以下优

14、点: 有效管理系统复杂度 增强团队的沟通 保证模型和代码之间的一致性 统一软件开发生命周期,(5) 验证软件质量 软件性能和可靠性的低下是影响软件使用的最重要的因素,因此,应该根据基于可靠性,功能,应用性能和系统性能的需求对软件的质量进行评估。 在整个软件开发周期中,错误发现的越晚,单位错误修复成本越高,错误的延迟解决必然导致整个项目成本的急剧增加。 软件自动化测试技术核心的三个最佳成功经验是:尽早测试、连续测试、自动化测试。,尽早测试:是指在整个软件开发生命周期中通过各种软件工程技术尽量早的完成各种软件测试任务的一种思想。 连续测试:连续测试是从迭代式软件开发模式得来的。在迭代式软件开发的每

15、个迭代周期都会进行软件测试活动,整个软件测试的完成是通过每个迭代周期不断增量测试和回归测试实现的。 自动化测试:在整个软件的测试过程中要想实现尽早测试、连续测试,可以说完善的测试流程是前提,自动化测试工具是保证。,2.4 新一代软件开发方法 面向对象的软件开发(OOD) 面向对象技术是一个综合概念,既包括指导开发软件的一系列原则,也包括支撑这些原则的程序设计语言,数据库及其它工具。 一、面向对象技术的优势 二、面向对象技术的主要特征 模型驱动的软件开发(MDD) 模型驱动的软件开发是基于模型驱动架构(MDA)的一种新型软件开发方法。,一、面向对象技术的优势 面向对象技术在各个层面对软件的开发产

16、生着积极的影响,其优势主要体现在以下三个方面。 第一,减少沟通障碍 第二,提高开发生产率 第三,增强对变化的适应能力 简单了解它们各自的表现所在,二、面向对象技术的主要特征 面向对象技术的主要特征包括以下几个方面:抽象化、封装性、继承性、模块化和多态性。 1. 抽象化 (1) 抽象化是指着重于某重要的一面或想关注的一面,来表示某个物体或概念。 (2) 用面向对象技术来抽象现实中存在的物体,即问题域中出现的物体,从而来描述一个系统。 (3) 所谓问题域,是指为了系统开发而要探讨的用户业务领域。,2. 封装性 (1) 封装就是“只有通过仅有的接口才能访问对象内部,因而可保护(隐蔽)对象的内部数据”。 (2) 封装性不仅增强了适应修改、需求变化的能力,由于内部信息是非公开的,所以安全性能也得到一定的提高。 3. 继承性 (1) 就是下层的类能继承超类即上层的类的特性,称为继承。 (2) 子类不仅能继承超类的特性,另外,子类可具有超类中所没有的新的特性,也可以重新定义从超类继承下来的操作,并实现不同的行为。,4.

温馨提示

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

评论

0/150

提交评论