您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 软件工程实践教程第1章
软件工程实践教程(第2版)美丽的北师大珠海分校(1)校园黎明静悄悄----赵池龙摄学习与评估1.教材:杨林、赵池龙主编著,《软件工程实践教程(第2版)》,电子工业出版社,2011。2.成绩评估:期末开卷笔试占总成绩的40%左右。平时项目实践占总成绩的60%左右。第1章软件开发与软件管理全过程软件工程是研究软件开发与软件管理的工程科学。软件工程认为:只要将软件开发过程与软件管理过程改善了,软件企业的项目、产品和服务就能令客户满意,软件企业就能发展壮大。那么,软件开发过程到底包含哪些内容呢?这就是本章要解决的问题。软件开发的一般过程首先要选择合适的软件生命周期模型,然后按照此模型规定的路线图,进行需求、设计、编程、测试、验收。若符合客户要求,则开发过程结束,转入运行与维护阶段。若不符合客户要求,则进入新一轮迭代循环,开始新一轮需求、设计、编程、测试、验收。如此往复循环,直到客户满意为止。若要减少往复循环次数,则要加强对每一步的评审、审计、配置管理与质量保证工作,尤其是第一步(需求)的质量保证工作。1.1选择软件开发模型生命周期指软件开发全部过程、活动和任务的结构框架。软件开发包括需求、设计、编程和测试阶段,有时也包括软件实施与维护阶段。目前IT企业在软件开发实践中使用的生命周期模型是:瀑布模型、增量模型、原型模型与迭代模型。1.瀑布模型(WaterfallModel)瀑布模型形象地用阶梯瀑布描述,水由上向下一个阶梯接着一个阶梯地倾泻下来。在瀑布模型中,软件开发的各项活动严格按照线性方式进行,当前阶段的活动接受上一阶段活动的工作结果,实施完成所需的工作内容。对当前阶段活动的工作结果需要进行验证,如果验证通过,则该结果作为下一阶段活动的输入,继续进行下一阶段的活动,否则返回上一阶段进行修改。瀑布模型选取的条件是:在开发周期内,客户的需求是稳定的。2.增量模型(IncrementalModel)增量模型是遵循递增方式来进行软件开发的。软件产品被作为一组增量构件(模块),每次需求、设计、编程、集成、测试和交付一块构件,直到所有构件全部实现为止。增量模型选取的条件是:项目本身可拆卸成为多个模块,并且客户同意一个模块接着一个模块地交付。3.原型模型(PrototypeModel)原型模型的本意是:在初步需求分析之后,马上向客户展示一个软件产品原型(样品),对客户进行培训,让客户试用,在试用中收集客户意见,根据客户意见立刻修改原型,之后再让客户试用,反复循环几次,直到客户确认为止。原型模型选取的条件是:开发者手中有相近或相似的产品原型。4.迭代模型(IterativeModel)RUP(RationalUnifiedProcess),是一种最有代表性的迭代模型。RUP推出的一种“逐步求精”的面向对象的软件开发过程模型,被认为软件界迄今为止最完善的、商品化的开发过程模型。迭代模型的特点是:迭代或迭代循环驱动,每一次迭代或迭代循环,均要走完初始(规范业务与需求)、精化(架构设计与详细设计)、构建(编程与测试)、移交(产品化)这四个阶段。迭代模型选取的条件是:在开发周期内,客户的需求是有变化的。5.瀑布模型与迭代模型之间的关系在宏观上,迭代模型是动态模型,瀑布模型是静态模型。迭代模型的每一次迭代,实质上都是执行一次瀑布模型,都要经历初始、精化、构造、移交四个阶段(或需求、设计、实现、交付四个阶段),走完瀑布模型的全过程。在微观上,迭代模型与瀑布模型都是动态模型。迭代模型与瀑布模型在每一个开发阶段(初始、精化、构造、移交)的内部,都有一个小小的迭代过程,只有经历这个小小的迭代过程,该阶段的开发工作才能做细做好。从图中可见:迭代中有瀑布,瀑布中有迭代。即你中有我、我中有你。初始精化构建移交宏观上迭代循环微观上迭代循环瀑布模型与迭代模型之间的关系瀑布模型与迭代模型之间的关系,完全反映了人们对客观事物的认识论:要认识与掌握某一客观事物,你必须经历过由宏观到微观的多次反复过程。只有从宏观上反复迭代几次,你才能看清全貌,掌握事物的宏观发展规律。只有从微观上反复迭代几次,你才能吃透每个细节,掌握事物的微观发展规律。6.软件开发模型总结以上介绍的四种开发模型,是IT企业常用的模型,它们的性能比较,如表1-2所示。此外,自从敏捷文化出现之后,在一些中小型软件企业,XP模型(ExtremeProgrammingModel)也迅速得到了应用。除了上面介绍的几种常用模型之外,还有螺旋模型(SpiralModel)、喷泉模型(FountainModel)等等,这些模型在IT企业很少使用。1.2选择软件开发方法在软件工程界,目前流行四种基本的软件开发方法:面向过程方法、面向对象方法、面向元数据方法和形式化方法。作为软件开发人员,到底要如何看待这些方法,进而如何选择这些方法呢?请看下文分析。1.面向过程方法面向过程方法,习惯上称为传统软件工程开发方法,或结构化方法。它包括结构化分析、结构化设计、结构化编程、结构化测试、结构化维护。面向过程的方法,有时又称面向功能的方法,即面向功能分析、面向功能设计、面向功能编程、面向功能测试、面向功能维护。由此可见,面向过程方法、面向功能方法、结构化方法,三者是同一个意思。面向过程方法,采用“自顶向下,逐步求精”的技术对系统进行划分,分解和抽象是它的两个基本手段。编程时采用单入口单出口的控制结构,并且只包含顺序、选择和循环三种结构,目标之一是使程序的控制流程线性化,即程序的动态执行顺序符合静态书写结构。面向过程方法的优点是:以处理流程为基础,简单实用。面向过程方法的缺点:只注重过程化信息,因而忽略信息的层面关系以及相互联系。它企图使用简单的时序过程方法(顺序、分支、循环三种结构),来描述关系复杂(随机)的信息世界,因而对于关系复杂的信息系统来说,其描述能力不强,最后可能导致软件设计、开发和维护陷入困难。自从面向对象方法出现之后,面向过程方法的应用范围开始萎缩。当前,面向过程方法主要用在过程式的程序设计中,例如:对象方法(函数)、科学计算、实时跟踪和实时控制的实现。2.面向对象方法面向对象方法,在不少软件工程教材中,也称为现代软件工程开发方法。该方法包括面向对象需求分析、面向对象设计、面向对象编程、面向对象测试、面向对象维护、面向对象管理。面向对象方法是一种运用对象、类、消息传递、继承、封装、聚合、多态性等概念来构造软件系统的软件开发方法。面向对象方法的特点是:将现实世界的事物(问题域)直接映射到对象。分析设计时由对象(Object)抽象出类(Class),程序运行时由类还原到对象。面向对象方法的优点是:由于每个对象可以接收信息、处理数据和发送信息给其他对象,可作为一个独立的单元使用与运行,可起到效果独特的作用,可解决大量既离散又关联的实体,可重复使用编程的逻辑单位,以及该方法侧重的不是过程的连续数据,而是客观的离散数据,所以它能描述无穷的信息世界。同时,又由于对象间具有继承性,所以易于代码重用和扩展。面向对象方法的缺点是:设计和实现的复杂性较高,对于习惯于面向过程方法的人,他们较难掌握。面向对象方法是当前计算机界关心的重点,是软件工程方法论的主流。面向对象的概念和应用已超越了程序设计和软件开发,扩展到更宽的范围。如交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。3.面向元数据方法这里讲的面向元数据方法,既不是传统软件工程中的“面向数据流”方法,也不是传统意义上的面向数据结构的Jackson方法,它们俩者都是面向过程的方法,而且这两个方法都出现在关系数据库管理系统RDBMS(RelationalDatabaseManagementSystem)成熟之前。元数据(meta-data)是关于数据的数据,组织数据的数据,管理数据的数据。这里的元数据,是泛指一切组织数据的数据,例如类的名称、属性和方法,实体的名称、属性和关联,数据库中的表名、字段名、主键、外键、索引、视图,数据结构中存储数据的框架等等。但是,我们研究的重点,是指数据库中的元数据。面向元数据方法来源于面向元数据的程序设计思想,即来源于关系数据库语言的程序设计思想。当关系数据库管理系统和数据库服务器出现之后,面向元数据方法才被人们所发现与重视。当数据库设计的CASE工具PowerDesigner、OracleDesigner和ERwin出现之后,面向元数据设计方法才开始大流行。面向元数据方法包括面向元数据需求分析、面向元数据设计、面向元数据编程、面向元数据测试、面向元数据维护。面向元数据需求分析,就是在需求分析时,找出信息系统所有的元数据,使其完全满足信息系统对数据的存储、处理、查询、传输、输出的数据要求。有了这些元数据,信息系统中的一切原始数据不但都被组织起来了,而且能完全派生出系统中的一切输出数据。面向元数据设计,就是利用需求分析获得的元数据,采用面向元数据的CASE工具,设计出信息系统的概念数据模型CDM(ConceptualDataModel)和物理数据模型PDM(PhysicsDataModel),以及从原始数据到输出数据的所有算法与视图。面向元数据编程,就是在物理数据模型PDM的基础上,根据信息系统的功能、性能、接口和业务规则,建立数据库表和视图,再利用数据库编程语言,编写出存储过程和触发器。面向元数据测试,就是对数据库表初始化并加载之后,运行相关的存储过程和触发器,测试信息系统的各种功能需求与性能指标。面向元数据维护,就是对数据库表中的记录进行统计、分析、审计、复制、备份、恢复,甚至对表结构及视图结构,也可以进行必要的调整。面向元数据方法的缺点是:只能实现二维表格,不能实现窗口界面。面向元数据方法,与关系数据库管理系统紧密地捆绑在一起,只要面向对象数据库不能完全替代关系数据库,这种方法就不会终结。目前数据库管理系统的发展趋势是:在关系型数据库的基础上,将面向对象的某些特性(如继承)添加上去,称为“对象-关系型数据库”,但本质上仍然是一个关系型数据库。4.形式化方法软件工程的形式化方法(Formalizedmethod),是建立在严格数学基础上、以逻辑推理为出发点、并且具有精确数学语义的开发方法。形式化方法在IT企业很少使用,在此也不进一步介绍。5.各种方法之间的关系到目前为止,软件工程的基本方法,包涵面向过程方法、面向对象方法、面向元数据方法和形式化方法。至于面向业务基础平台方法,它只是面向元数据方法与面向对象方法的具体应用案例,不能单独作为一种基本方法。在大型多层(B/A/S)结构的信息系统建设中,这四种方法的关系是:面向元数据方法用在数据库服务器S层面上系统的分析、设计与实现,面向对象方法用在除数据库服务器层面之外的其他层面上(B/A)系统的分析、设计与实现,面向过程方法用在其他两种方法本身内部函数的分析、设计与实现,形式化方法用在某些核心程序的正确性证明上。面向过程方法、面向对象方法、面向元数据方法和形式化方法,它们各有优缺点,适合于不同的场合。四种方法的比较,如表1-3所示。方法名称优点缺点适合的场合面向过程方法简单好学不适应窗口界面,维护困难大型工程计算,实时数据跟踪处理,各种自动化控制系统,以及系统软件实现等领域,以及过程、方法与函数的计算面向对象方法功能强大,易于维护不易掌握互联网络时代,完全由用户交互控制程序执行过程的应用软件和系统软件的开发,例如,在B/S结构中数据层之外的其它各层的需求、设计与实现面向元数据方法通俗易懂不适应窗口界面以关系数据库管理系统为支撑平台的信息系统建设,例如,B/S结构中数据层的需求、设计与实现形式化方法准确、严谨难于上手和应用对安全性要求极高,不容许出错的软件系统,如军事、医药、交通等领域1.3三个模型与三层结构在信息系统的需求与设计中,一般需要建立三个模型,即功能模型、业务模型和数据模型,分别对应B/A/S三层体系结构中的三个不同层次,即浏览层
本文标题:软件工程实践教程第1章
链接地址:https://www.777doc.com/doc-213116 .html