3、系统开发的过程模型
(1)瀑布模型(Waterfall model) 由Barry Boehm于20世纪70年代年提出的,它是最早的系统开发模型,也被称为生命周期模型。模型将系统开发分为三个时期:规划时期、开发时期和运行时期,每个时期又分为若干个阶段。其开发过程可用下图表示。
瀑布模型是连续无反馈的过程,其中,只有前一阶段工作完成以后,后一阶段工作才能开始。由于需要对每一个阶段进行验证,瀑布模型要求每一个阶段都有明确的文档产出,前一阶段的输出文档是后一阶段的输入文档,在该模型控制之下的开发工作就像瀑布的流水一样,一旦结束就不再重新开始。瀑布特性使后一阶段工作的正确性以前一阶段工作正确无误为前提,因此该模型并不适合于需求不易确定或多变的软件项目的开发。
此外,瀑布模型还存在其也一些不足,如严格的阶段划分和表示的形式不统一、基于文档的驱动等,这都给开发带来困难。虽然瀑布模型存在很多的问题有待解决,但瀑布模型仍然是最基本和非常有效的一种可供选择的系统开发模型。
(2)快速原型开发
原型(Prototype)是所开发系统的一个可执行模型或引导性版本,它可为用户和开发各阶段的人员提供系统的原始蓝本,它可能只是目标系统的一个式样,或只包含目标系统的某些功能,或仅仅是具有目标系统的一个结构。原型可以帮助得到系统需求,促进用户和系统人员之间的有效交流。
建造原型需要花费额外的开销,但是可以得到准确、完整的需求信息,有利于保证系统开发的速度和质量。原型的使用减少了需求分析的时间和调试阶段的工作量,所以成功的原型法可以降低开发的总成本。
建立原型的主要步骤为:
(1) 确定需求:根据所要完成的任务,确定要建立何种原型,用原型来解决何种问题,以此来决定在构造原型时重点要验证及解决的问题及忽略的细节。
(2) 快速设计:在基本的需求分析的基础上,做必要的设计工作。
(3) 构造原型:用某种语言或原型开发工具实现原型,得到可执行的原型。
(4) 评价原型:通过运用原型,对所要解决的问题进行验证,并可以提出新的要求,通过调整当前原型实现。
(5) 实现系统:将运行原型和评价原型所得的结果,运用到系统开发中,从而实现系统,得到所要开发的软件产品。
(3)螺旋模型
1988年,Boehm提出螺旋模型(Spiral Model),因在其指导下的开发呈现为一个螺旋式上升的过程而得名。它将瀑布模型和快速原型方法结合起来,强调了其他模型所忽视的风险分析。其过程如图1-5所示。
螺旋模型的价值在于整个开发过程是迭代和风险驱动的。通过将瀑布模型的多个阶段转化到多个迭代过程中,以减少项目的风险。其中的每一次迭代都包含了以下六个步骤: (1) 决定目标,替代方案和约束; (2) 识别和解决项目的风险;
(3) 评估技术方案和替代解决方案;
(4) 开发本次迭代的交付物和验证迭代产出的正确性; (5) 计划下一次迭代;
(6) 提交下一次迭代的步骤和方案。
(4)迭代增量模型
迭代增量开发是一种渐进式的开发方法。其中的增量是指系统开发过程中,先开发基本功能。迭代是指开发采用多次重复开发的方式,每次递增地实现开发任务,直到最终产品被完成。在迭代方法中,系统的开发目标被分解成为一些更易于完成和达到的阶段性小目标,这些小目标都有一个定义明确的阶段性评估标准。迭代就是为了完成一定的阶段性目标而所从事的一系列开发活动。这些小目标形成一系列功能递增的软件版本,通过不断渐进的开发过程, 在循环往复中逐步完善软件系统
统一过程(Rational Unified Process,RUP)是实施迭代增量开发的一种方法,这种方法旨在利用面向对象技术应用于系统开发的所有过程,包括需求分析、系统分析、系统设计和系统升级维护等所有过程,使系统开发所有过程全面结合,最大限度适应用户不断变化的需求,达到软件系统开发的最大灵活性。
统一过程不仅仅是一个过程,而且是一个通用过程框架。它往往采用可视化建模标准,如统一建模语言(Unified Modeling Language,UML),通过用例驱动,以构架为中心,借助构架规划出每次迭代的内容和将要到达的目标,验证相关的交付和产出。 其实Use Case就是对系统功能的描述而已,不过一个Use Case描述的是整个系统功能的一部分,这一部分一定要是在逻辑上相对完整的功能流程。在使用UML的开发过程中,需求是用Use Case来表达的,界面是在Use Case的辅助下设计的,很多类是根据Use Case来发现的,测试实例是根据Use Case来生成的,包括整个开发的管理和任务分配,也是依据Use Case来组织的。
统一过程中,系统开发生命周期根据时间和工作流划分为二维空间:横轴是时间维,表示开发生命周期的各个阶段,体现开发过程的动态结构,纵轴为开发中的工作内容,体现开发过程的静态结构,包括统一过程的9个工作流,这9个工作流又可以分成“核心过程工作流”和“核心支持工作流”两部分。
业务建模
理解系统的组织结构及其业务运作,确保所有参与人员对开发系统有共同的认识。业务建模工作流描述了如何为新的目标组织开发一个模型,并基于这个模型在业务用例模型和业务对象模型中定义组织的过程、角色和责任。
需求分析
定义系统功能及用户接口,明确系统功能,为项目预算及计划提供基础。
分析与设计
将需求分析的结果转化为实现规格。分析和设计工作流将需求转化成未来系统的设计, 为系统开发一个健壮的结构并调整设计使其与实现环境相匹配,优化其性能。分析设计工作流的结果是一个设计模型和一个可选的分析模型。设计模型是源代码的抽象,由设计类和一些描述组成。设计类被组织成具有良好接口的包和子系统,而描述则体现了类的对象如何协同工作实现用例的功能。
实现
实现工作层次化的形式定义代码的结构,以构件的形式(源文件、目标文件或可执行文件)实现类和对象,以构件为单元进行单元测试,在此基础上集成由所开发的构件,形成可执行的系统。
测试:验证各自子系统的交互与集成,在系统发布前发现可能的错误,确保所有需求已正确实现。
测试分别从可靠性、功能性和系统性能来进行,需要验证对象间的交互、所有构件的正确集成。
部署:打包、分发、安装软件,升级旧系统;培训用户及销售人员,并提供技术支持,制定并实施 beta测试。
配置和变更管理: 配置和变更管理在多个开发成员组成的项目中控制开发成果,跟踪软件开发建过
程中的不同版本,对并行开发、分布式开发进行管理,控制代码自动化创建工程,审计和记录对产品的修改原因、时间和修改人员
项目管理
项目管理监控软件项目的开发,平衡各种可能产生冲突的目标,管理项目开发风险,提供风险管理框架,克服各种约束,并交付使用户满意的产品。
环境
为开发队伍提供过程管理、开发环境和开发工具的支持,工作集中于配置项目过程中所需要的活动。
统一过程的阶段与工作流
统一过程包括四个阶段,它们是初始、细化、构造和交付。其中每个阶段都由一个或多个连续的迭代组成。统一过程没有也无法给出迭代工作流的具体实现步骤,实施时需要项目经理根据迭代所处的阶段和上次选代的结果,对核心工作流的活动进行适当剪裁,以实现一次具体的工作流迭代。每个阶段结束于一个主要的里程碑(Major Milestones),并进行评估,如果经过评估认定该阶段的目标已经达到,则可以进入下一个阶段。
初始阶段
初始阶段应建立业务案例,包括业务环境、成功因素以及财政预算。该阶段的重点是需求和分析工作,具体工作如下:明确项目规模,了解环境及需求和约束,以便可以得出最终产品的验收标准;评估风险管理、人员配备、项目计划以及成本/进度/收益折衷的备选方案;考虑备选构架,评估构架;评估项目和开发组织,选择开发工具,确定流程中要改进的部分。
细化阶段
该阶段的工作是分析问题领域,细化相关的内容。重点工作流是需求、分析和设计。具体工作如下:
标明用例模型中的用户和参与者,建立用例的描述文档,捕获大部分系统
功能需求用例;
创建软件系统开发过程中的软件结构的描述文档; 定义质量属性
创建可执行的系统原型;
细化风险评估,淘汰项目中最高风险的元素; 创建整个项目的开发计划。
构造阶段
构造阶段要完成所有的需求、分析和设计,所有构件和应用程序完成代码
并被集成为产品。该阶段的重点是实现工作流,主要内容包括以下几个方面。
快速完成有用的版本,例如Alpha版、Beta版和其他测试发布版。 完成所有功能的分析、开发和测试。
开发随时可以发布的产品,不断描述剩余的用例和其他需求、充实设计、
完成实施,并测试软件。 准备软件系统的外部环境。
交付阶段
交付阶段的重点是确保系统是可用的,并将系统部署到用户环境中。该阶段的重点是实现和测试工作流,主要内容包括以下几个方面:
进行Beta版测试,按用户的要求验证新系统; 替换旧的系统;
对用户和维护人员进行培训;
基于用户反馈的调整活动,例如调试、性能或可用性的增强; 与用户达成共识,部署基线与评估标准一致。
4、系统开发的方法
(1)结构化方法
结构化方法曾经是被使用最广泛的一种传统方法。从过程上看,结构化方法包括了结构化分析、结构化设计和结构化程序设计三个过程。三个阶段的工作相互衔接,形成一个完整的开发过程。
A、结构化分析
结构化分析(Structured Analysis,SA)方法产生于20世纪70年代,该方法有两个基本特点:即自顶向下逐层分解和抽象。自顶向下逐层细分就是对于一个复杂的事物,先抓住问题的大的方面,形成较高层次的抽象。然后再由粗到细地逐步涉及问题的具体细节。即把大问题分解成几个小问题,对于每个小问题,再单独分析。所以它是一个由概括到具体的过程,即不断运用概念抽象的过程。所谓抽象,就是在分析过程中,要透过具体的事物看到问题中的本质属性,能将所分析的问题实例变为一般的概念。结构化分析有功能分解法、数据流方法和数据模型方法等几种类型。
B、结构化设计
结构化设计(Structured Design,SD)是将系统设计成由相对独立、功能单一的模块群组成的结构。它研究模块的分解、模块结构的评价、设计结果的表示和与结构化分析方法的衔接,如从数据流图导出模块结构的规则。结构化设计成为衔接结构化分析和结构化程序设计方法的工具。
C、结构化程序设计(Structured Programming,SP) 产生于20世纪60年代,它是一种针对传统的非结构化程序设计而言的程序设计理论和方法。在程序设计发展过程中,由于早期的计算机内存容量小,运行速度慢,为使程序得以装入内存并有可接收的运行效率,形成了强调技巧、重视效率的程序设计习惯,所设计出的程序往往结构混乱,可读性差。而随着计算机硬件技术的发展,内存和速度已不再是制约程序设计的因素。此外,由于系统需求不断增加,要开发的系统数量和规模越来越大,程序设计已不再是一种个体行为,而成为群体合作的项目;同时,程序设计也不再是一次性的编码,而需要反复地维护。大规模高效率的系统开发要求有新的方法指导程序设计,结构化程序因此而产生了。
(2)面向对象方法
面向对象方法(Object-Oriented Method)是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,是建立在“对象”概念基础上的方法学。对象是由数据和与数据相关的操作组成的封装体,与客观实体(对象)对应。一个对象类定义了具有相似性质的一组对象,并通过继承对具有层次关系的类的属性和操作进行共享。面向对象以“对象”为中心,以类和继承为构造机制,来认识、理解和刻画客观世界,并以此来设计、构建
相应的软件系统。
面向对象方法的思想方法 按设计思想来分,软件开发可分为自顶向下和自底向上两种。传统的结构化方法采用自顶向下的思想。自顶向下方法总是首先从问题大的方面入手,避免了被具体的细节所缠绕,从而降低了难度。直到恰当的时机,才去过问实现的细节;而自底向上与此正好反,它总是从解决基本的、简单的问题开始,在此基础上逐步建立解决复杂问题的能力,直到整个问题得以解决。
5、开发工具与环境
(1) 软件开发工具
所谓软件开发工具,是指可用来帮助和支持软件开发过程中某些阶段的工作,如需求分析、设计、编码、测试、系统运行维护及模拟、移植或管理的计算机程序或软件。人们常用的文本编辑程序、编译程序、调试程序、界面生成程序等都属于软件开发工具。软件开发工具是软件工程的重要支柱。它对于提高软件生产率,改善软件质量,满足社会对软件产品日益增长的需求以及适应计算机技术的迅速发展有着越来越重要的作用,因而越来越受到人们的高度重视。
(2)计算机辅助软件工程
对软件工具的使用导致了计算机辅助软件工程的产生。在软件工程活动中,软件工程师和管理人员按照软件工程的方法和原则,借助计算机及其软件工具,开发、维护、管理软件产品的过程,称为计算机辅助软件工程(Computer Aided Software Engineering,CASE)。 计算机辅助软件工程的最初形式是对一个个孤立软件开发工具的使用。随着对软件开发过程的研究和各种设计方法的产生,这些工具按照一定的软件开发方法有机地组织起来,遵循一定的软件开发模型。
(3)软件开发工具的类型
(4)软件开发环境(Software Development Environment,SDE) 随着CASE理论与技术的不断发展,成熟的CASE工具不断增多,在一定程度上提高了软件开发效率。但是,由于最初的工具是根据不同的结构、方法和机制进行开发的,因此它们之间难以共享数据和协作工作,所以应用的结果并不令人满意。为了进一步发挥CASE工具的作用,需要实现软件开发过程和管理工作的系统化和完整化,在开发过程中进行工具的集成。工具集成是把相互联系的多个工具结合在一起,形成一个工具集。工具之间相互协作,发挥整体使用效能。工具集成的出现可使用户十分方便地完成某一方面或某一阶段的工作,从而使软件开发能力和质量保证得到了进一步提高。
软件开发环境的概念产生于1968年,它是同软件工程的概念同时提出的。目前,除软件开发环境外,被软件产业界广泛使用的具有相似含义的名称还有软件工程环境(Software Engineering Environment,SEE)、软件支撑环境(Software Support Environment,SSE)、项目支撑环境(Project Support Environment,PSE)、集成程序设计环境(Integrated Programming Environment,IPE)等。
课后作业:
(1)以表格形式归纳比较瀑布模型、快速原型模型、螺旋模型、迭代增量模型各自的基本思想、优缺点及应用。
(2)查找其他系统开发模型(至少3种),归纳总结各模型的特点及其适用范围等。
用Word编辑后,按“班级-学号-姓名”存档并发至教师邮箱。
第2章 信息系统的主要类型
一、管理信息系统
1、信息系统的应用和管理信息系统的产生
4、其他决策支持技术
(1)知识发现,由于数据库存储的大量数据中隐藏着重要的信息,因此人们希望对其进行
更高层次的分析,以便更好地利用这些数据。传统数据库系统能高效实现数据的录入、存储、查询和统计等功能,但缺乏提取数据中隐藏知识的手段,因此无法发现其中的关系和规则,也无法据此预测未来的发展趋势。 A、数据准备 B、数据挖掘
因篇幅问题不能全部显示,请点此查看更多更全内容