第二章软件开发过程与开发方法2概述开发软件系统的方法既多又复杂。开发软件系统时,开发人员依靠各种各样的辅助工具来帮助他们完成开发过程中的每一步。软件开发生命周期为系统开发过程提供了一个大致的框架。但是开发人员需要掌握许多概念,这些概念包括方法、模型、工具和技术。在详细进行系统开发之前,理解这些概念是非常重要的。31系统开发过程包含阶段与活动的项目管理框架。是一组活动、方法、最佳实践、交付成果和自动化工具;系统开发的关联人员用它们来开发软件系统。4三组重要的活动分析活动:要全面了解业务的信息需求,其重点是业务需求,而不是任何特定的计算机系统。设计活动:定义一个新系统的体系结构和构造,以满足上述需求。在设计阶段,分析员开始构思一个计算机系统解决方案。实施活动:实际建立、测试和安装软件系统。项目计划阶段分析阶段设计阶段实施阶段支持阶段5各种方法之间的差异组成每个阶段的各种活动不一样,或是执行活动的方法不一样。但所有软件系统开发过程都要求计划项目、分析需求、设计解决方案和实施最后的系统。6⑴计划阶段最初的阶段。主要目标:确定新系统的作用域并做出项目计划。主要活动:定义问题;制定项目的进度表;确认项目的可行性;安排项目人员;启动项目。7确认项目可行性可行性:指在组织内外当前的具体条件下,进行某项目的必要性和可能性。内容:①经济可行性②技术可行性③组织管理的可行性8⑵分析阶段主要目标:了解新系统的业务需求和处理要求并制作书面文件。问题域:用户的业务领域主要活动:收集信息;定义系统需求;建立需求发现的原型;划分需求的优先级;产生并评估可选方案;与管理人员一起审查建议。9⑶设计阶段主要目标:在分析阶段的需求确定与决策制定的基础上,设计解决方案系统。主要活动:设计并集成网络;设计应用程序结构;设计用户界面;设计系统界面;设计并集成数据库;设计细节的原型化;设计并集成系统控制。10⑷实施阶段新系统编程、测试和安装的阶段。主要目标:不仅要有一个可靠、功能全面的软件系统,而且要确保所有用户都受到培训并使组织从中获得所期望的好处。结果是完成一个有效的可操作的系统。主要活动:构造软件部件;检验与测试;转换数据;培训用户与制作文档;安装系统。11⑸支持阶段主要目标:在系统初始安装后的几年里保持系统有效的运行。主要活动:维护系统;加强系统;支持用户。121.迭代迭代意味着任务做了一次,接着又一次,然后又一次(任务是不断重复的)。随着每一次迭代,结果得到了修正,并且越来越接近目标。假设:不可能在第一次就得到正确的结果。13什么是迭代式开发?迭代式开发(IterativeDevelopment)迭代开发是UP(统一过程)和大多数其他现代方法中的关键实践。在这种生命周期方法中,开发被组织成一系列固定的短期(如三个星期)小项目,称为迭代(iteration);每次迭代都产生经过测试、集成并可执行的局部系统。每次迭代都具有各自的需求分析、设计、实现和测试活动。14迭代式开发的原因在软件开发的早期阶段就想完全、准确的捕获用户的需求几乎是不可能的。实际上,我们经常遇到的问题是需求在整个软件开发工程中经常会改变。迭代式开发允许在每次迭代过程中需求可能有变化,通过不断细化来加深对问题的理解。迭代式开发不仅可以降低项目的风险,而且每个迭代过程以可以执行的版本结束,从而可以鼓舞开发人员。迭代与增量开发的共性与区别增量开发适用于需求比较明确,架构比较稳定的软件开发,每次增量不影响已有的架构,在已有的架构下增加新的功能。每个增量之间相对独立,各个增量可以并行开发;迭代开发适用于需求不甚明确、难度比较大的软件开发。一般是用例驱动的;管理难度大;两种类型开发的相同之处,每个迭代和增量结束后都有产品发布。1516迭代开发的优点减少项目失败的可能性,实践已证明这一点;在早期(而不是晚期)缓解高风险(技术、需求、目标、可用性等);早期可见的进展;早期反馈、用户参与和调整,会产生更接近真实需求的精化系统;可控复杂性;团队不会被“分析瘫痪”;一次迭代中的经验可以被系统地用于改进开发过程本身,并如此反复进行下去。17模型模型是对某个实体或事物的抽象和简化,是现实世界中某些重要方面的表示。模型从现实世界中抽象出对我们特别重要的某些方面。模型在外形上类似于真实产品;重要细节的绘图表示;抽象的数学符号。每一种模型强调一种不同类型的信息。软件系统不真实可感——不能真正地看到、抓住或感觉到它。软件系统模型显得更加无形。18模型的概念模型(MODLE)是对某个实体或事物的抽象和简化。其目的是在构建这个事物之前先来理解它。模型忽略了非本质的细节,抽象出了问题本质,使问题更容易理解,有助于对复杂问题进行分层,从而更好地解决问题。19面向过程的方法认为我们的世界是由一个个相互关联的小系统组成。每个小系统都有明确的开始和明确的结束,开始和结束之间有着严谨的因果关系。如果用计算机模拟它,首先的工作就是将这个过程描绘出来,定义因果关系,细化,用编程语言实现。过程中每一步都会产生、修改或读取一部分数据。将世界视为过程的这个方法本身蕴涵着一个前提假设,即这个过程是稳定的,这样我们才有分析的基础,所用的工作成果都依赖于这个过程的步步分析。面向过程方法20面向对象方法将世界看作一个个相互独立的对象,相互之间并无因果关系。只有在某个外部力量的驱动下,对象之间才会依据某种规律相互传递信息。这些交互构成了这个生动世界的一个“过程”。在没有外力的情况下,对象保持“静止”的状态。面向对象方法21如果你的分析习惯是在调研需求时最先弄清楚有多少业务流程,先画出业务流程图,然后顺藤摸瓜,找出业务流程中每一步骤的参与部门或岗位,弄清楚在这一步参与者所做的事情和填写表单的结果,并关心用户是如何把这份表单传给到下一个环节的。面向过程。如果你的分析习惯是在调研需求时最先弄清楚有多少部门,多少岗位,然后找到每一个岗位的业务代表,问他们类似的问题:你平时都做什么?这件事是谁交办的?做完了你需要通知或传达给谁吗?做这件事情你都需要填写些什么表吗?....OO面向过程,还是面向对象?2222课堂复习①什么是迭代式开发?②迭代式开发与增量式开发的异同?③模型关注什么?