




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《软件工程》
SoftwareEngineering葛文eng429@126.com信息工程学院《软件工程》SoftwareEngineering葛引言Microsoft的比尔盖茨在一次展览会的演讲中谈到:假如GM(美国通用汽车公司,别克、雪佛兰、凯迪拉克)的技术能像计算机技术那样发展,我们现在应该能用25美元买到一辆1加仑汽油跑1000英里的汽车。---《扬子晚报》引言Microsoft的比尔盖茨在一次展览会的演讲中谈到:假针对比尔盖茨的讲话,GM反唇相讥:如果GM发展的技术像Microsoft的软件那样,我们现在开的汽车会有以下特点:你的汽车可能毫无道理的每天抛锚两次每次公路上重新画线时,你都得买辆新车有时候你的车在高速公路上莫名其妙的熄火,你必须accept,然后restart有时候你的车在左拐弯时突然shutdown了,无法restart,你必须重新安装(reinstall)发动机当你买了“轿车95”或“轿车NT”后,每次车上只能坐一个人,你要给其他的人再买椅子Macintosh牌汽车更可靠、更便宜、更快、也更容易开,但是只能在5%的道路上行驶油量、水温和其它警告灯将由一个“GENERALCARFAILURE”的警告灯所代替新座椅要求大家屁股的尺寸相同气囊系统弹出前询问“Areyousure?”,要求你加以确认有时候你的汽车会锁死车门使你无法进入汽车,你得不停的提门把手、拿钥匙捅、晃天线,直到打开车门针对比尔盖茨的讲话,GM反唇相讥:如果GM发我们且不考虑GM的言辞是否过于偏激,但Microsoft公司作为全球最大的计算机软件生产商,拥有一大批优秀的项目经理、软件工程师、程序员,具有丰富的软件开发和项目管理经验,开发出来的软件仍然不能很好的保证质量,这是不争的事实。我们几乎每个人在使用Windows操作系统时,都碰到过死机现象这是为什么呢?我们且不考虑GM的言辞是否过于偏激,但Microsoft公司与硬件相比,软件的本质特征是什么?为什么硬件的可靠性可以达到很高的程度,而软件却不能做到bug-free?什么样的软件可以称作是一个好软件,或者说好软件具有什么样的特点?目前存在哪些方法和技术能够有效地提高软件的质量,做出好软件?与硬件相比,软件的本质特征是什么?软件工程简介软件工程是计算机专业的一门重要的专业基础课,它对于培养学生的软件素质,提高学生的软件开发能力与软件项目管理能力具有重要的意义。1995年,StandishGroup针对系统开发成功的研究表明,所有的开发项目中有32%的项目在它们结束之前被中止。此外多于一半的软件项目花费的成本相当于原来预算的2倍。软件工程简介软件工程是计算机专业的一门重要的专业基础课,它对软件工程是软件工程专业的一门核心课程。通过本课程的学习,使学生掌握系统的软件开发理论、技术和方法,使用正确的工程方法开发出成本低、可靠性好并在机器上能高效运行的软件,为今后从事软件开发和维护打下坚实的基础。课程的性质、目的软件工程是软件工程专业的一门核心课程。课程的性质、目的学生任务
通过本课程的学习,使学生能真正了解软件开发的整个过程。学生要结合实际软件项目,从问题定义开始,经过可行性研究、需求分析、概要设计、详细设计、编码直到最后要对自己开发的软件进行测试,经历一个软件开发的全过程,掌握软件开发的基本技能和方法。学生任务通过本课程的学习,使学生能真正了解软件开发的整个过主要内容软件工程的基本概念软件开发过程、活动、方法学软件开发各阶段的任务、技术、方法软件开发的两种方法:传统与面向对象方法软件的测试与维护软件开发的项目管理软件质量保证主要内容软件工程的基本概念教材本书全面系统地讲述了软件工程的概念、原理和典型的方法学,并通过分析一个实际案例“开放实验室管理系统”,帮助理解软件需求分析与建模以及设计与实现的方法和过程,特别适合用做应用型人才培养的教材。网络资源:/netclass教材本书全面系统地讲述了软件工程的概念、原理和典型的方法学,参考书SoftwareEngineering,IanSommerville,PearsonEducationAsia《软件工程基础与实用教材》沈文轩等《软件工程导论》张海藩,清华大学出版社《软件工程—原理、方法与应用》史济民,高等教育出版社《软件工程技术概论》朱三元,科学出版社《实用软件工程》郑人杰,清华出版社《现代软件工程》(上中册)周之英,科学出版社《软件工程理论与实践》译文,高教出版社《现代软件工程》陈松桥,北方交大出版社参考书SoftwareEngineering,IanS章节安排章次各章标题名称讲授学时第一章软件工程学概述3第二章可行性研究1第三章需求分析4第四章面向对象分析6第五章总体设计4第六章详细设计4第七章面向对象设计4第八章实现4第九章维护2第十章软件项目管理2章节安排章次各章标题名称讲授学时第一章软件工程学概述3第二章学习要求要求学生有刻苦学习,持之以恒的精神。本课程的性质与其说是一门技术性很强的课程,不如说更像一门管理学科的课程,很多规定都是国内外大师的经验总结,不能误认为无用或现在用不上而放弃学习。要求学生能够学以致用,善于将理论与实际结合,才能巩固课内学到的知识,并能融会贯通。学习要求要求学生有刻苦学习,持之以恒的精神。本课程的性质与其学习建议在正文中介绍了不少软件工程的基本原则和基本方法,在学习时,可以根据你的实践,认真思考一下为什么。不但知其然,而且知其所以然,这样会记得牢一些,不会看过就忘。学习建议在正文中介绍了不少软件工程的基本原则和基本方法,在学考核考试课程总成绩=平时成绩(10%)+实验成绩(30%)+考试成绩(60%)考核考试课程第一讲软件工程学概述本章学习目标1.了解软件的概念2.了解软件开发的发展历程3.掌握软件工程的概念、原理和基本内容4.掌握软件生命周期5.理解软件过程模型第一讲软件工程学概述本章学习目标1.了解软件的概念2.了解1软件软件由计算机程序、数据及文档组成。程序是能够完成预定功能和性能的一组计算机指令数据是程序在执行过程需要输入、处理和输出的内容和结构文档是描述程序的设计和使用的部分1软件软件由计算机程序、数据及文档组成。软件的特点抽象性软件生产无明显制造过程无磨损性对计算机硬件依赖性软件的手工开发方式软件本身复杂性软件的高成本(德国的一款专业设计3D的软件:3DMAX(正版)
官方售价:2000000元RMB)软件的特点抽象性软件的分类软件与硬件、数据库、人、过程等共同构成计算机系统。软件种类可以从功能、规模、工作方式、服务对象、实验频度、失效影响六个方面进行划分:
按功能分类应用软件:管理软件、实时软件、科学计算、数据处理、嵌入式软件等系统软件:操作系统、网络系统、编译器、工具软件等软件的分类软件与硬件、数据库、人、过程等共同构成计算机系统。中国的软件产业主权大国必须建立基于自主技术的、完整的软件产业体系。软件本国提供率:中国1/3左右,美国97%。中国盗版软件比例大软件人才结构不合理,缺乏中高级软件人才,软件人员缺乏软件工程化的概念。中国的软件产业主权大国必须建立基于自主技术的、完整的软件产业软件发展阶段时间软件20世纪60年代中期前软件=程序60年代中期至70年代中期前软件=程序+使用说明出现软件危机70年代中期后软件=程序+数据+文档软件工程时代软件发展阶段时间软件20世纪60年代中期前软件=程序60年代2软件危机软件危机指的是在计算机软件的开发和维护过程中所遇到的一系列严重问题。软件危机的主要特征
软件价格在整个项目投入中的比例不断升高;
软件开发成本严重超标;
软件开发周期大大超过规定日期;
软件质量难于保证;
软件修改、维护困难;
失败的根本原因在于:开发人员写出的东西达不到用户要求(人的问题、技术问题)2软件危机软件危机指的是在计算机软件的开发和维护过程中所遇到产生软件危机的原因计算机应用发展软件数量多规模大,功能复杂个体化软件开发方法无开发过程指导无开发过程管理软件成本高、质量低、维护困难软件危机客观因素主观因素主客观不相适应产生软件危机的原因计算机应用发展软件数量多个体化软件无开发过软件工程改正一个问题需付出的代价需求分析结构设计详细设计编码集成测试系统测试现场改正一个问题的估计费用改正一个问题估计的工作量20200200010005.02.50.050.5(美元)(人天)软件工程改正一个问题需付出的代价需结构设计详细设计编码解决办法管理措施项目管理配置管理过程管理质量控制
技术措施开发过程开发技术与方法开发工具
软件工程学(软件产品开发工程)用工程化的理论、方法和技术来管理软件开发过程,从管理和技术两方面措施对软件开发进行规范化和理论研究即产生了软件工程学科解决办法管理措施技术措施软件工程学用工程化的理3软件工程1968年德国人Bauer在北大西洋公约组织会议上的定义:"建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法"。1983年IEEE的软件工程定义:"软件工程是开发,运行,维护和修复软件的系统方法"。1993年IEEE的一个更加综合的定义:"将系统化的,规范的,可度量的方法应用于软件的开发,运行和维护的过程,即将工程化应用于软件中"。3软件工程1968年德国人Bauer在北大西洋公约组织软件工程的基本原理1983年,著名软件工程专家B.W.Boehm提出了七条获得公认的软件工程的基本原理:(1)分阶段的生命周期计划严格管理性。(2)坚持进行阶段评审。(3)实行严格的产品控制。(4)采用现代程序设计技术。(5)结果应能清楚地审查。
(6)开发小组的人员应少而精。(7)承认不断改进软件工程实践的必要性。软件工程的基本原理1983年,著名软件工程专家B.W.Boe软件工程框架给出了软件工程三个主要方面。软件工程目标—包括可用性、正确性和合算性,规定了软件工程实践的结果(即软件)应具有的基本性质;软件工程过程—包含的基本活动有需求、分析与设计、实现、确认与测试、维护与支持;软件工程的四条原则--采用适宜的开发模型,使用恰当的开发方法,提供高质量的工程支持,实施有效的工程管理,从四个方面指导每一项工程的活动,以实现软件工程目标。软件工程框架软件工程框架给出了软件工程三个主要方面。软件工程框架软件工程的目标:追求高质量高效率
实现目标的过程:完成产品加工的过程。
进行过程应遵守的原则:行进中的轨道约束。
可用性性性确正合算选取适宜的开发模型采用合适的设计方法提供高质量的工程支持重视软件工程的管理基本过程支持过程组织过程目标过程原则软件工程的目标:追求高质量高效率
实现目标的过程:完成产品软件工程的三要素R.Pressman在他的《软件工程》教程中指出:软件工程的三个要素是方法、工具、过程。方法是完成软件开发的各项任务的技术方法,回答“如何做”的问题;工具是为方法的运用提供自动的或半自动的软件支撑环境;过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。软件工程的三要素R.Pressman在他的《软件工程》教程软件工程的目标与原则软件工程的主要目标:提高软件的质量和软件生产率。
软件工程需要达到的基本目标:
付出较低的开发成本达到要求的软件功能取得较好的软件性能开发的软件易于移植需要较低的维护费用能按时完成开发,及时交付使用软件工程的目标与原则软件工程的主要目标:提高软件的质量和软件在软件开发过程中必须遵循的软件工程原则:抽象与自顶向下、逐层细化采用分层抽象的方法,有效控制软件开发的复杂性。模块化把问题分解为若干较小的较易解决的模块,有助于信息隐蔽和抽象。信息隐蔽和数据封装将模块中的软件设计决策封装在模块内部,使得模块实现与使用分离,有助于控制修改局部化。
在软件开发过程中必须遵循的软件工程原则:局部化在一个物理模块内集中逻辑上相互关联的计算机资源,促使聚合具有特定目的的事物。一致性整个软件系统的模块使用一致的设计策略、编程风格,保持程序内部接口的一致性、软件与硬件接口的一致性、系统规格说明与系统行为的一致性。完备性软件系统中不丢失任何成分。可验证性系统分解应当遵循易检查、易测试和易评审的原则,以便保证系统的正确性。局部化在一个物理模块内集中逻辑上相互关联的计算机资源软件工程学“软件工程学”是一门交叉学科涉及计算机科学、管理科学、工程学和数学。软件工程则是培养软件工程师。软件工程学软件开发技术软件开发方法学软件工具软件工程环境软件工程管理软件管理学软件经济学软件工程学“软件工程学”是一门交叉学科涉及计算机科学、管理科71.3软件工程方法学软件工程方法学是软件开发的系统化方法,是一套完整的软件开发技术,包括原则、方法、过程和工具,是每一阶段活动、产品、验收的步骤和完成准则。软件工程方法学应用最广泛的是结构化方法和面向对象方法。71.3软件工程方法学软件工程方法学是软件开发的系统化方法7结构化方法(SM,StructuredMethod)是传统的软件开发方法,基本思想是:用系统工程的思想和工程化的方法,按照用户至上的原则,结构化、模块化、自顶向下地对系统进行分析和设计,把一个复杂问题的求解过程分阶段进行,使得每个阶段处理的问题都控制在容易理解的范围内。结构化方法7结构化方法(SM,StructuredMethod)是传71.结构化方法模型71.结构化方法模型72.结构化方法过程(1)结构化分析(SA,StructuredAnalysis)。(2)结构化设计(SD,StructuredDesign)。(3)结构化实现(SP,StructuredProgramming)。3.结构化方法特点(1)严格的分阶段计划。(2)瀑布式开发模式。(3)严格的技术审查和管理复审。(4)各阶段采用结构化技术。72.结构化方法过程3.结构化方法特点7面向对象方法(Object-OrientedMethod)是一种把面向对象思想应用于软件开发过程,来指导开发活动的系统方法,简称OO(Object-Oriented)方法,是建立在“对象”概念基础上的方法学。所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,认识、理解、刻画客观世界,设计、构建相应的软件系统。面向对象方法7面向对象方法(Object-OrientedMethod72面向对象方法面向对象方法模型72面向对象方法面向对象方法模型72.面向对象方法过程(1)面向对象分析(OOA,Object-OrientedAnalysis)。(2)面向对象设计(OOD,Object-OrientedDesign)。(3)面向对象的编程(OOP,Object-OrientedPrograming)。(4)面向对象测试(OOT,Object-OrientedTest)。3.面向对象方法特点(1)以对象作为基本的软件构件。(2)软件定义和实现的统一。(3)重视软件复用。(4)通过逐步演化来完成软件开发。72.面向对象方法过程3.面向对象方法特点7敏捷方法是一种针对用户需求迅速变化的现实情况,采用短周期交付形式和协作开发的轻量级软件开发方式。相对于“非敏捷”,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通、频繁交付新的软件版本、紧凑而自我组织型的团队、适应需求变化的代码编写,也更注重软件开发中人的作用。敏捷方法7敏捷方法是一种针对用户需求迅速变化的现实情况,采用短周期交71.敏捷方法特点(1)追求软件交付使用这一终极目标。(2)强调全面合作和交流。(3)重视软件开发中人的个性。(4)强调团队的力量。(5)灵活采用各种开发和管理方式。71.敏捷方法特点72.敏捷方法原则(1)最优先的目标是通过尽早交付有价值的软件来满足用户需求。(2)即使在开发后期,也能适应需求变化,能够驾驭变化,帮助用户取得竞争优势。(3)频繁交付可使用的软件,时间间隔从几周到几个月,间隔越短越好。(4)整个开发过程中,业务人员和开发者应该在一起工作。(5)以积极主动的员工为主体进行软件开发,并且提供适宜环境、满足员工需要、信任员工工作。(6)开发团队内外最有效率和效果的信息传达方式是面对面交流。72.敏捷方法原则72.敏捷方法原则(7)可用的软件是进度的主要度量标准。(8)提倡可持续开发,管理者、开发人员和用户应始终保持稳定的节奏。(9)简单,尽可能减少工作量至关重要。(10)强调先进技术和良好设计,以不断提高敏捷性。(11)最好的架构、需求和设计来源于自我组织的团队。(12)团队定期总结提高效率的方法,并相应调整团队行为。72.敏捷方法原则ISO9000定义:软件工程过程是把输入转化为输出的一组彼此相关的资源和活动。从软件开发的观点看,它就是使用适当的资源(包括人员、硬软件工具、时间等),为开发软件进行的一组开发活动,在过程结束时将输入(用户要求)转化为输出(软件产品)。4软件工程过程与软件生存周期ISO9000定义:软件工程过程是把输入转化为输出的一组彼软件生存周期各阶段的主要任务
问题的定义及规划需求分析软件设计程序编码软件测试运行维护软件生存周期各阶段的主要任务
问题的定义及规划开发策划。主要完成问题定义、可行性论证、制定开发计划和项目申报工作,明确“要解决的问题是什么”。需求分析。需求分析和定义阶段任务不是具体地解决问题,而是确定软件须具备的具体功能、性能等,即“必须做什么”及其他指标要求。概要设计。主要设计软件的结构,结构的组成模块,模块的层次结构、调用关系及功能。并设计总体数据结构等。
开发策划。主要完成问题定义、可行性论证、制定开发计划和项目申(4)详细设计。对模块功能、性能、可靠性等进行具体技术描述,并转化为过程描述。(5)编写程序。又称编码,将模块的控制结构转换成程序代码。(6)测试。为了保证软件需求和质量,在设计测试用例基础上对软件进行检测(7)运行维护。对交付并投入使用的软件进行各种维护,并记录保存文档。(4)详细设计。对模块功能、性能、可靠性等进行具体技术描步骤任务及说明参与者生成文档或程序可行性分析对项目的技术,功能需求和市场进行调研和初步分析,确定是否需要启动项目部门主管核心技术人员可行性分析报告技术调研报告启动项目正式启动项目,有部门主管制定项目经理,项目经理制定初步计划,初步计划包括设计和开发时间的初步估计部门主管核心技术人员项目计划书项目合同需求分析对项目详细需求分析,编写需求文档,对B/S结构的系统应制作静态演示页面。需求分析文档和静态演示页面需要通过部门主管审批才能进行到下一步骤项目经理项目小组核心成员需求分析说明书静态演示页面项目计划修订版本概要设计根据需求分析进行概要设计。编写目的是说明对系统的设计考虑,包括程序系统流程、组织结构、模块划分、功能分配、接口设计。运行设计、数据结构设计和出错处理设计等,为详细设计提供基础。概要设计经过评审后,项目经理通过部门主管一起指定项目小组成员。项目经理项目小组核心成员概要设计说明书详细设计详细设计编制目的是说明一个软件各个层次中的每一个程序(每个模块或子程序)的设计考虑,如果一个软件系统比较简单,层次很少,可以不单独编写,有关内容合并入概要设计说明书。项目经理项目小组成员详细设计文档项目计划确定版本编码实现根据设计开发项目,同时有美工对操作界面进行美化项目经理、程序设计员、美工项目计划修订版本调试项目经理提交测试申请,由测试部门对项目进行测试,项目小组配合测试部门修改软件中的错误项目经理程序开发人员测试部门测试申请测试计划测试报告项目验收项目验收归档部门主管项目经理项目所有文档和程序步骤任务及说明参与者生成文档或程序可行性分析对项目的技术,软件工程过程定义了:方法使用的顺序、要求交付的文档资料、为保证质量和适应变化所需要的管理、软件开发各个阶段完成的里程碑。软件工程过程包含四种基本的过程活动:
plan:软件规格说明
do:软件开发
check:软件确认
action:软件演进软件工程过程定义了:方法使用的顺序、要求交付的文档资料、为软件生存周期模型是软件工程思想的具体化,是跨越软件生存周期的系统开发、运行、维护所实施的全部活动和任务的过程框架。常用的软件生存周期模型有瀑布模型,演化模型,螺旋模型,增量模型,喷泉模型,快速应用开发(RAD)模型。软件生存周期模型是软件工程思想的具体化,是跨越软件生存周期的1.4软件开发模型1.4.1瀑布模型瀑布模型(waterfallmodel)将生存期的计划时期、开发时期和运行时期,又细分为若干个阶段:计划时期可分为问题定义、可行性研究、需求分析3个阶段,开发时期分为概要设计、详细设计、软件实现、软件测试等阶段,运行时期则需要不断进行运行维护,需要不断修改错误、排除故障,或以用户需求、运行环境改变进行改更调整。1.4软件开发模型1.4.1瀑布模型1.4软件开发模型图1瀑布模型图中的实线箭头表示开发流程,每个阶段顺序进行,有时会返工;虚线箭头表示维护工作的流程,根据不同情况返回到不同的阶段进行维护。1.4软件开发模型图1瀑布模型图中的实线箭头表示开发流程,1.4软件开发模型利用瀑布模型开发软件有3个特点:
(1)开发过程的顺序性。瀑布模型开发适用于软件需求明确,开发技术成熟,工程管理较严格的场合下使用。
(2)统筹兼顾不过早编程
(3)严格要求保证质量。图2循环模型1.4软件开发模型利用瀑布模型开发软件有3个特点:图2循1.4软件开发模型1.4.2快速原型模型快速原型模型需要先建造一个快速原型,如操作窗口及界面等,进行客户或潜在用户与系统间的交流,用户/客户可以通过对原型的评价及改进意见,进一步细化待开发软件的需求,通过逐步调整原型达到客户要求,从中确定客户的具体需求;然后按照需求开发软件。如图所示。此模型最适合于可以先尽快构建成一个原型的应用系统。1.4软件开发模型1.4.2快速原型模型1.4软件开发模型1.4软件开发模型1.4软件开发模型1.4.3增量模型利用增量模型开发的软件被作为一系列的增量构件来进行设计、实现集成和测试,每个构件具有一定功能,并最终能组合成一个具有完整功能软件的模块。如图所示。1.4软件开发模型1.4.3增量模型1.4软件开发模型增量模型灵活性很强,适用于软件需求不明确、设计方案有一定风险的软件项目。1.4软件开发模型1.4软件开发模型1.4.4螺旋模型螺旋模型将开发过程划分为制定计划、风险分析、实施工程和客户评估四类活动。沿着螺旋线每转一圈,表示开发出一个更完善的新软件版本。如果开发风险过大,开发机构和客户无法接受,项目可能就此终止;多数情况下,将沿着螺旋线继续进行,自内向外逐步延伸,最终得到满意的软件产品。
1.4软件开发模型1.4.4螺旋模型1.4软件开发模型螺旋模型沿着螺线进行多次迭代,其迭代过程如图1-10所示。
(1)制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;
(2)风险分析:分析评估所选方案,考虑如何识别和消除风险;
(3)实施工程:实施软件开发和验证;
(4)客户评估:评价开发工作,提出修正建议,制定下一步计划。1.4软件开发模型螺旋模型沿着螺线进行多次迭代,其迭代过程1.4软件开发模型1.4软件开发模型1.4软件开发模型1.4.5喷泉模型喷泉模型主要适合于利用面向对象技术的软件开发项目。它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。可使开发过程具有迭代性和无间隙性。1.4软件开发模型1.4.5喷泉模型1.4软件开发模型喷泉模型是以面向对象的开发方法为基础,以用户需求为源泉。从如图1-5的喷泉模型中可以看出7个特点:(1)规定软件开发过程有4个阶段:需求分析、总体设计、详细设计和实现,还可分成多个开发步骤。(2)各阶段相互重叠,反映了软件过程并行性的特点。1.4软件开发模型喷泉模型是以面向对象的开发方1.4软件开发模型(3)以分析为基础,资源消耗成塔形,在分析阶段消耗的资源最多。(4)反映了软件过程迭代性的自然特性,从高层返回低层无资源消耗。(5)强调增量开发,依据分析一点设计一点的原则,并不要求一个阶段的彻底完成,整个过程是一个迭代的逐步提炼的过程。(6)是对象驱动过程,对象是活动作用的实体,也是项目管理的基本内容。(7)实现中由于活动不同,可分为系统实现和对象实现,这既反映了全系统的开发过程,也反映了对象族的开发和重用1.4软件开发模型(3)以分析为基础,资源消耗成塔1、喷泉模型的优点
喷泉模型的各个阶段没有明显的界限,开发人员可以同步进行开发。其优点是可以提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程。2、喷泉模型的缺点
由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,因此不利于项目的管理。此外这种模型要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。喷泉模型的优缺点1、喷泉模型的优点喷泉模型的优缺点1.4软件开发模型1.4.6基于面向对象的模型面向对象技术强调了类的创建与封装,一个类创建与封装成功后,便可在不同的应用系统中被重用。面向对象技术为基于构件的软件过程模型提供了强大的技术框架。基于面向对象的模型,综合了面向对象和原型方法及重用技术。该模型如图所示。1.4软件开发模型1.4.6基于面向对象的模型1.4软件开发模型1.4软件开发模型1.4软件开发模型*1.4.7其他模型
1.智能模型智能模型也称为基于知识的软件开发模型,是知识工程与软件工程在开发模型上的结合,它以瀑布模型与专家系统的综合应用为基础。如图所示,从中可见与其他模型不同,其维护并不在程序一级上进行,可将问题的复杂性极大降低。1.4软件开发模型1.4软件开发模型1.4软件开发模型1.4软件开发模型智能模型的主要优点为:(1)利用领域专家系统,可使需求说明更完整、准确和无二义性。(2)借助软件工程专家系统,提供一个设计库支持,在开发过程中成为设计者的助手。(3)通过软件工程知识和特定应用领域的知识及规则的应用,对开发提供帮助。1.4软件开发模型智能模型的主要优点为:1.4软件开发模型2.统一过程模型统一开发过程RUP(RationalUnifiedProcess)模型在迭代的开发过程、需求管理、基于组件的体系结构、可视化软件建模、验证软件质量及控制软件变更等方面,针对所有关键的开发活动为开发成员提供了必要的准则、模板和工具指导,并确保共享相同的知识基础。建立了简洁和清晰的过程结构,为开发过程提供较多的通用性。(1)RUP的二维开发模型及其核心工作流(CoreWorkflows)。主要包括:商业建模、需求、分析与设计、实现、测试、核心支持工作流、部署、配置和变更管理、项目管理和环境。如图1-14所示。1.4软件开发模型2.统一过程模型1.4软件开发模型1.4软件开发模型1.4软件开发模型
(2)开发中各阶段和里程碑,主要包括。初始阶段、细化阶段、构造阶段、交付阶段。(3)RUP的迭代开发模式。如图所示。1.4软件开发模型(2)开发中各阶段和里程碑,1.4软件开发模型1.4.8软件开发模型的选定
1.开发模型与开发方法及工具的关系一般应用软件的开发过程,主要包括生存周期的系统规划、需求分析、软件设计、实现四个阶段。软件的开发方法多种多样,结构化方法和面向对象的方法是常用的最基本的开发方法。当采用不同的开发方法时,软件的生存周期过程将表现为不同的过程模型。为解决开发工程中大量复杂的手工劳动,提高软件的开发效率,还要采用计算机辅助软件工程CASE开发工具来支持整个开发过程。软件的开发模型(生存周期过程模型)与开发方法、开发工具之间的关系如图所示。1.4软件开发模型1.4.8软件开发模型的选定1.3软件生存周期1.3软件生存周期1.3软件生存周期2.软件开发模型选取最常用的是瀑布模型和原型模型,其次是增量模型,由于迭代模型比较难以掌握使用较少。各种模型各有其特点和优缺点。在具体选择模型时需要综合考虑以下6点:(1)符合软件本身的性质,包括规模、复杂性等;(2)满足软件应用系统整体开发进度要求;(3)尽可能控制并消除软件开发风险;(4)具有计算机辅助工具快速的支持,如快速原型工具;(5)与用户和软件开发人员的知识和技能匹配;(6)有利于软件开发的管理与控制。通常情况下,面向过程方法可使用瀑布模型、增量模型和螺旋模型进行开发;面向对象方法可采用快速原型、增量模型、喷泉模型和统一过程进行开发;面向数据方法一股采用瀑布模型和增量模型进行开发。1.3软件生存周期2.软件开发模型选取1.3软件生存周期3.软件开发模型的修定在实际软件开发过程中,开发模型的选定并非直接照抄照搬、一成不变,有时还需要根据实际开发目标要求进行裁剪、修改、确定和综合运用。1.3软件生存周期3.软件开发模型的修定小结软件是计算机程序及其有关的数据和文档的结合。软件危机是指在计算机软件开发和维护时所遇到的一系列问题。软件危机主要问题:一是如何开发软件以满足对软件日益增长的需求;二是如何维护数量不断增长的已有软件。软件工程采用工程的概念、原理、技术和方法来开发与维护软件。软件工程的目标是实现软件的优质高产。其主要内容是软件开发技术和软件工程管理。软件开发方法学是编制软件的系统方法,它确定软件开发的各个阶段,规定每一阶段的活动、产品、验收的步骤和完成准则。常用的软件开发方法有结构化方法、面向数据结构方法和面向对象方法等。小结软件是计算机程序及其有关的数据和文档的结合。软件危机是指软件就是程序吗?什么是软件危机?表现是什么?软件工程定义有很多说法,说出你的理解?软件工程三要素是什么?软件工程的目标、过程和原则是什么?软件工程原理有哪几条?软件的什么周期是什么?过程模型有哪些?哪一个适合你的项目开发?软件就是程序吗?《软件工程》
SoftwareEngineering葛文eng429@126.com信息工程学院《软件工程》SoftwareEngineering葛引言Microsoft的比尔盖茨在一次展览会的演讲中谈到:假如GM(美国通用汽车公司,别克、雪佛兰、凯迪拉克)的技术能像计算机技术那样发展,我们现在应该能用25美元买到一辆1加仑汽油跑1000英里的汽车。---《扬子晚报》引言Microsoft的比尔盖茨在一次展览会的演讲中谈到:假针对比尔盖茨的讲话,GM反唇相讥:如果GM发展的技术像Microsoft的软件那样,我们现在开的汽车会有以下特点:你的汽车可能毫无道理的每天抛锚两次每次公路上重新画线时,你都得买辆新车有时候你的车在高速公路上莫名其妙的熄火,你必须accept,然后restart有时候你的车在左拐弯时突然shutdown了,无法restart,你必须重新安装(reinstall)发动机当你买了“轿车95”或“轿车NT”后,每次车上只能坐一个人,你要给其他的人再买椅子Macintosh牌汽车更可靠、更便宜、更快、也更容易开,但是只能在5%的道路上行驶油量、水温和其它警告灯将由一个“GENERALCARFAILURE”的警告灯所代替新座椅要求大家屁股的尺寸相同气囊系统弹出前询问“Areyousure?”,要求你加以确认有时候你的汽车会锁死车门使你无法进入汽车,你得不停的提门把手、拿钥匙捅、晃天线,直到打开车门针对比尔盖茨的讲话,GM反唇相讥:如果GM发我们且不考虑GM的言辞是否过于偏激,但Microsoft公司作为全球最大的计算机软件生产商,拥有一大批优秀的项目经理、软件工程师、程序员,具有丰富的软件开发和项目管理经验,开发出来的软件仍然不能很好的保证质量,这是不争的事实。我们几乎每个人在使用Windows操作系统时,都碰到过死机现象这是为什么呢?我们且不考虑GM的言辞是否过于偏激,但Microsoft公司与硬件相比,软件的本质特征是什么?为什么硬件的可靠性可以达到很高的程度,而软件却不能做到bug-free?什么样的软件可以称作是一个好软件,或者说好软件具有什么样的特点?目前存在哪些方法和技术能够有效地提高软件的质量,做出好软件?与硬件相比,软件的本质特征是什么?软件工程简介软件工程是计算机专业的一门重要的专业基础课,它对于培养学生的软件素质,提高学生的软件开发能力与软件项目管理能力具有重要的意义。1995年,StandishGroup针对系统开发成功的研究表明,所有的开发项目中有32%的项目在它们结束之前被中止。此外多于一半的软件项目花费的成本相当于原来预算的2倍。软件工程简介软件工程是计算机专业的一门重要的专业基础课,它对软件工程是软件工程专业的一门核心课程。通过本课程的学习,使学生掌握系统的软件开发理论、技术和方法,使用正确的工程方法开发出成本低、可靠性好并在机器上能高效运行的软件,为今后从事软件开发和维护打下坚实的基础。课程的性质、目的软件工程是软件工程专业的一门核心课程。课程的性质、目的学生任务
通过本课程的学习,使学生能真正了解软件开发的整个过程。学生要结合实际软件项目,从问题定义开始,经过可行性研究、需求分析、概要设计、详细设计、编码直到最后要对自己开发的软件进行测试,经历一个软件开发的全过程,掌握软件开发的基本技能和方法。学生任务通过本课程的学习,使学生能真正了解软件开发的整个过主要内容软件工程的基本概念软件开发过程、活动、方法学软件开发各阶段的任务、技术、方法软件开发的两种方法:传统与面向对象方法软件的测试与维护软件开发的项目管理软件质量保证主要内容软件工程的基本概念教材本书全面系统地讲述了软件工程的概念、原理和典型的方法学,并通过分析一个实际案例“开放实验室管理系统”,帮助理解软件需求分析与建模以及设计与实现的方法和过程,特别适合用做应用型人才培养的教材。网络资源:/netclass教材本书全面系统地讲述了软件工程的概念、原理和典型的方法学,参考书SoftwareEngineering,IanSommerville,PearsonEducationAsia《软件工程基础与实用教材》沈文轩等《软件工程导论》张海藩,清华大学出版社《软件工程—原理、方法与应用》史济民,高等教育出版社《软件工程技术概论》朱三元,科学出版社《实用软件工程》郑人杰,清华出版社《现代软件工程》(上中册)周之英,科学出版社《软件工程理论与实践》译文,高教出版社《现代软件工程》陈松桥,北方交大出版社参考书SoftwareEngineering,IanS章节安排章次各章标题名称讲授学时第一章软件工程学概述3第二章可行性研究1第三章需求分析4第四章面向对象分析6第五章总体设计4第六章详细设计4第七章面向对象设计4第八章实现4第九章维护2第十章软件项目管理2章节安排章次各章标题名称讲授学时第一章软件工程学概述3第二章学习要求要求学生有刻苦学习,持之以恒的精神。本课程的性质与其说是一门技术性很强的课程,不如说更像一门管理学科的课程,很多规定都是国内外大师的经验总结,不能误认为无用或现在用不上而放弃学习。要求学生能够学以致用,善于将理论与实际结合,才能巩固课内学到的知识,并能融会贯通。学习要求要求学生有刻苦学习,持之以恒的精神。本课程的性质与其学习建议在正文中介绍了不少软件工程的基本原则和基本方法,在学习时,可以根据你的实践,认真思考一下为什么。不但知其然,而且知其所以然,这样会记得牢一些,不会看过就忘。学习建议在正文中介绍了不少软件工程的基本原则和基本方法,在学考核考试课程总成绩=平时成绩(10%)+实验成绩(30%)+考试成绩(60%)考核考试课程第一讲软件工程学概述本章学习目标1.了解软件的概念2.了解软件开发的发展历程3.掌握软件工程的概念、原理和基本内容4.掌握软件生命周期5.理解软件过程模型第一讲软件工程学概述本章学习目标1.了解软件的概念2.了解1软件软件由计算机程序、数据及文档组成。程序是能够完成预定功能和性能的一组计算机指令数据是程序在执行过程需要输入、处理和输出的内容和结构文档是描述程序的设计和使用的部分1软件软件由计算机程序、数据及文档组成。软件的特点抽象性软件生产无明显制造过程无磨损性对计算机硬件依赖性软件的手工开发方式软件本身复杂性软件的高成本(德国的一款专业设计3D的软件:3DMAX(正版)
官方售价:2000000元RMB)软件的特点抽象性软件的分类软件与硬件、数据库、人、过程等共同构成计算机系统。软件种类可以从功能、规模、工作方式、服务对象、实验频度、失效影响六个方面进行划分:
按功能分类应用软件:管理软件、实时软件、科学计算、数据处理、嵌入式软件等系统软件:操作系统、网络系统、编译器、工具软件等软件的分类软件与硬件、数据库、人、过程等共同构成计算机系统。中国的软件产业主权大国必须建立基于自主技术的、完整的软件产业体系。软件本国提供率:中国1/3左右,美国97%。中国盗版软件比例大软件人才结构不合理,缺乏中高级软件人才,软件人员缺乏软件工程化的概念。中国的软件产业主权大国必须建立基于自主技术的、完整的软件产业软件发展阶段时间软件20世纪60年代中期前软件=程序60年代中期至70年代中期前软件=程序+使用说明出现软件危机70年代中期后软件=程序+数据+文档软件工程时代软件发展阶段时间软件20世纪60年代中期前软件=程序60年代2软件危机软件危机指的是在计算机软件的开发和维护过程中所遇到的一系列严重问题。软件危机的主要特征
软件价格在整个项目投入中的比例不断升高;
软件开发成本严重超标;
软件开发周期大大超过规定日期;
软件质量难于保证;
软件修改、维护困难;
失败的根本原因在于:开发人员写出的东西达不到用户要求(人的问题、技术问题)2软件危机软件危机指的是在计算机软件的开发和维护过程中所遇到产生软件危机的原因计算机应用发展软件数量多规模大,功能复杂个体化软件开发方法无开发过程指导无开发过程管理软件成本高、质量低、维护困难软件危机客观因素主观因素主客观不相适应产生软件危机的原因计算机应用发展软件数量多个体化软件无开发过软件工程改正一个问题需付出的代价需求分析结构设计详细设计编码集成测试系统测试现场改正一个问题的估计费用改正一个问题估计的工作量20200200010005.02.50.050.5(美元)(人天)软件工程改正一个问题需付出的代价需结构设计详细设计编码解决办法管理措施项目管理配置管理过程管理质量控制
技术措施开发过程开发技术与方法开发工具
软件工程学(软件产品开发工程)用工程化的理论、方法和技术来管理软件开发过程,从管理和技术两方面措施对软件开发进行规范化和理论研究即产生了软件工程学科解决办法管理措施技术措施软件工程学用工程化的理3软件工程1968年德国人Bauer在北大西洋公约组织会议上的定义:"建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法"。1983年IEEE的软件工程定义:"软件工程是开发,运行,维护和修复软件的系统方法"。1993年IEEE的一个更加综合的定义:"将系统化的,规范的,可度量的方法应用于软件的开发,运行和维护的过程,即将工程化应用于软件中"。3软件工程1968年德国人Bauer在北大西洋公约组织软件工程的基本原理1983年,著名软件工程专家B.W.Boehm提出了七条获得公认的软件工程的基本原理:(1)分阶段的生命周期计划严格管理性。(2)坚持进行阶段评审。(3)实行严格的产品控制。(4)采用现代程序设计技术。(5)结果应能清楚地审查。
(6)开发小组的人员应少而精。(7)承认不断改进软件工程实践的必要性。软件工程的基本原理1983年,著名软件工程专家B.W.Boe软件工程框架给出了软件工程三个主要方面。软件工程目标—包括可用性、正确性和合算性,规定了软件工程实践的结果(即软件)应具有的基本性质;软件工程过程—包含的基本活动有需求、分析与设计、实现、确认与测试、维护与支持;软件工程的四条原则--采用适宜的开发模型,使用恰当的开发方法,提供高质量的工程支持,实施有效的工程管理,从四个方面指导每一项工程的活动,以实现软件工程目标。软件工程框架软件工程框架给出了软件工程三个主要方面。软件工程框架软件工程的目标:追求高质量高效率
实现目标的过程:完成产品加工的过程。
进行过程应遵守的原则:行进中的轨道约束。
可用性性性确正合算选取适宜的开发模型采用合适的设计方法提供高质量的工程支持重视软件工程的管理基本过程支持过程组织过程目标过程原则软件工程的目标:追求高质量高效率
实现目标的过程:完成产品软件工程的三要素R.Pressman在他的《软件工程》教程中指出:软件工程的三个要素是方法、工具、过程。方法是完成软件开发的各项任务的技术方法,回答“如何做”的问题;工具是为方法的运用提供自动的或半自动的软件支撑环境;过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。软件工程的三要素R.Pressman在他的《软件工程》教程软件工程的目标与原则软件工程的主要目标:提高软件的质量和软件生产率。
软件工程需要达到的基本目标:
付出较低的开发成本达到要求的软件功能取得较好的软件性能开发的软件易于移植需要较低的维护费用能按时完成开发,及时交付使用软件工程的目标与原则软件工程的主要目标:提高软件的质量和软件在软件开发过程中必须遵循的软件工程原则:抽象与自顶向下、逐层细化采用分层抽象的方法,有效控制软件开发的复杂性。模块化把问题分解为若干较小的较易解决的模块,有助于信息隐蔽和抽象。信息隐蔽和数据封装将模块中的软件设计决策封装在模块内部,使得模块实现与使用分离,有助于控制修改局部化。
在软件开发过程中必须遵循的软件工程原则:局部化在一个物理模块内集中逻辑上相互关联的计算机资源,促使聚合具有特定目的的事物。一致性整个软件系统的模块使用一致的设计策略、编程风格,保持程序内部接口的一致性、软件与硬件接口的一致性、系统规格说明与系统行为的一致性。完备性软件系统中不丢失任何成分。可验证性系统分解应当遵循易检查、易测试和易评审的原则,以便保证系统的正确性。局部化在一个物理模块内集中逻辑上相互关联的计算机资源软件工程学“软件工程学”是一门交叉学科涉及计算机科学、管理科学、工程学和数学。软件工程则是培养软件工程师。软件工程学软件开发技术软件开发方法学软件工具软件工程环境软件工程管理软件管理学软件经济学软件工程学“软件工程学”是一门交叉学科涉及计算机科学、管理科71.3软件工程方法学软件工程方法学是软件开发的系统化方法,是一套完整的软件开发技术,包括原则、方法、过程和工具,是每一阶段活动、产品、验收的步骤和完成准则。软件工程方法学应用最广泛的是结构化方法和面向对象方法。71.3软件工程方法学软件工程方法学是软件开发的系统化方法7结构化方法(SM,StructuredMethod)是传统的软件开发方法,基本思想是:用系统工程的思想和工程化的方法,按照用户至上的原则,结构化、模块化、自顶向下地对系统进行分析和设计,把一个复杂问题的求解过程分阶段进行,使得每个阶段处理的问题都控制在容易理解的范围内。结构化方法7结构化方法(SM,StructuredMethod)是传71.结构化方法模型71.结构化方法模型72.结构化方法过程(1)结构化分析(SA,StructuredAnalysis)。(2)结构化设计(SD,StructuredDesign)。(3)结构化实现(SP,StructuredProgramming)。3.结构化方法特点(1)严格的分阶段计划。(2)瀑布式开发模式。(3)严格的技术审查和管理复审。(4)各阶段采用结构化技术。72.结构化方法过程3.结构化方法特点7面向对象方法(Object-OrientedMethod)是一种把面向对象思想应用于软件开发过程,来指导开发活动的系统方法,简称OO(Object-Oriented)方法,是建立在“对象”概念基础上的方法学。所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,认识、理解、刻画客观世界,设计、构建相应的软件系统。面向对象方法7面向对象方法(Object-OrientedMethod72面向对象方法面向对象方法模型72面向对象方法面向对象方法模型72.面向对象方法过程(1)面向对象分析(OOA,Object-OrientedAnalysis)。(2)面向对象设计(OOD,Object-OrientedDesign)。(3)面向对象的编程(OOP,Object-OrientedPrograming)。(4)面向对象测试(OOT,Object-OrientedTest)。3.面向对象方法特点(1)以对象作为基本的软件构件。(2)软件定义和实现的统一。(3)重视软件复用。(4)通过逐步演化来完成软件开发。72.面向对象方法过程3.面向对象方法特点7敏捷方法是一种针对用户需求迅速变化的现实情况,采用短周期交付形式和协作开发的轻量级软件开发方式。相对于“非敏捷”,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通、频繁交付新的软件版本、紧凑而自我组织型的团队、适应需求变化的代码编写,也更注重软件开发中人的作用。敏捷方法7敏捷方法是一种针对用户需求迅速变化的现实情况,采用短周期交71.敏捷方法特点(1)追求软件交付使用这一终极目标。(2)强调全面合作和交流。(3)重视软件开发中人的个性。(4)强调团队的力量。(5)灵活采用各种开发和管理方式。71.敏捷方法特点72.敏捷方法原则(1)最优先的目标是通过尽早交付有价值的软件来满足用户需求。(2)即使在开发后期,也能适应需求变化,能够驾驭变化,帮助用户取得竞争优势。(3)频繁交付可使用的软件,时间间隔从几周到几个月,间隔越短越好。(4)整个开发过程中,业务人员和开发者应该在一起工作。(5)以积极主动的员工为主体进行软件开发,并且提供适宜环境、满足员工需要、信任员工工作。(6)开发团队内外最有效率和效果的信息传达方式是面对面交流。72.敏捷方法原则72.敏捷方法原则(7)可用的软件是进度的主要度量标准。(8)提倡可持续开发,管理者、开发人员和用户应始终保持稳定的节奏。(9)简单,尽可能减少工作量至关重要。(10)强调先进技术和良好设计,以不断提高敏捷性。(11)最好的架构、需求和设计来源于自我组织的团队。(12)团队定期总结提高效率的方法,并相应调整团队行为。72.敏捷方法原则ISO9000定义:软件工程过程是把输入转化为输出的一组彼此相关的资源和活动。从软件开发的观点看,它就是使用适当的资源(包括人员、硬软件工具、时间等),为开发软件进行的一组开发活动,在过程结束时将输入(用户要求)转化为输出(软件产品)。4软件工程过程与软件生存周期ISO9000定义:软件工程过程是把输入转化为输出的一组彼软件生存周期各阶段的主要任务
问题的定义及规划需求分析软件设计程序编码软件测试运行维护软件生存周期各阶段的主要任务
问题的定义及规划开发策划。主要完成问题定义、可行性论证、制定开发计划和项目申报工作,明确“要解决的问题是什么”。需求分析。需求分析和定义阶段任务不是具体地解决问题,而是确定软件须具备的具体功能、性能等,即“必须做什么”及其他指标要求。概要设计。主要设计软件的结构,结构的组成模块,模块的层次结构、调用关系及功能。并设计总体数据结构等。
开发策划。主要完成问题定义、可行性论证、制定开发计划和项目申(4)详细设计。对模块功能、性能、可靠性等进行具体技术描述,并转化为过程描述。(5)编写程序。又称编码,将模块的控制结构转换成程序代码。(6)测试。为了保证软件需求和质量,在设计测试用例基础上对软件进行检测(7)运行维护。对交付并投入使用的软件进行各种维护,并记录保存文档。(4)详细设计。对模块功能、性能、可靠性等进行具体技术描步骤任务及说明参与者生成文档或程序可行性分析对项目的技术,功能需求和市场进行调研和初步分析,确定是否需要启动项目部门主管核心技术人员可行性分析报告技术调研报告启动项目正式启动项目,有部门主管制定项目经理,项目经理制定初步计划,初步计划包括设计和开发时间的初步估计部门主管核心技术人员项目计划书项目合同需求分析对项目详细需求分析,编写需求文档,对B/S结构的系统应制作静态演示页面。需求分析文档和静态演示页面需要通过部门主管审批才能进行到下一步骤项目经理项目小组核心成员需求分析说明书静态演示页面项目计划修订版本概要设计根据需求分析进行概要设计。编写目的是说明对系统的设计考虑,包括程序系统流程、组织结构、模块划分、功能分配、接口设计。运行设计、数据结构设计和出错处理设计等,为详细设计提供基础。概要设计经过评审后,项目经理通过部门主管一起指定项目小组成员。项目经理项目小组核心成员概要设计说明书详细设计详细设计编制目的是说明一个软件各个层次中的每一个程序(每个模块或子程序)的设计考虑,如果一个软件系统比较简单,层次很少,可以不单独编写,有关内容合并入概要设计说明书。项目经理项目小组成员详细设计文档项目计划确定版本编码实现根据设计开发项目,同时有美工对操作界面进行美化项目经理、程序设计员、美工项目计划修订版本调试项目经理提交测试申请,由测试部门对项目进行测试,项目小组配合测试部门修改软件中的错误项目经理程序开发人员测试部门测试申请测试计划测试报告项目验收项目验收归档部门主管项目经理项目所有文档和程序步骤任务及说明参与者生成文档或程序可行性分析对项目的技术,软件工程过程定义了:方法使用的顺序、要求交付的文档资料、为保证质量和适应变化所需要的管理、软件开发各个阶段完成的里程碑。软件工程过程包含四种基本的过程活动:
plan:软件规格说明
do:软件开发
check:软件确认
action:软件演进软件工程过程定义了:方法使用的顺序、要求交付的文档资料、为软件生存周期模型是软件工程思想的具体化,是跨越软件生存周期的系统开发、运行、维护所实施的全部活动和任务的过程框架。常用的软件生存周期模型有瀑布模型,演化模型,螺旋模型,增量模型,喷泉模型,快速应用开发(RAD)模型。软件生存周期模型是软件工程思想的具体化,是跨越软件生存周期的1.4软件开发模型1.4.1瀑布模型瀑布模型(waterfallmodel)将生存期的计划时期、开发时期和运行时期,又细分为若干个阶段:计划时期可分为问题定义、可行性研究、需求分析3个阶段,开发时期分为概要设计、详细设计、软件实现、软件测试等阶段,运行时期则需要不断进行运行维护,需要不断修改错误、排除故障,或以用户需求、运行环境改变进行改更调整。1.4软件开发模型1.4.1瀑布模型1.4软件开发模型图1瀑布模型图中的实线箭头表示开发流程,每个阶段顺序进行,有时会返工;虚线箭头表示维护工作的流程,根据不同情况返回到不同的阶段进行维护。1.4软件开发模型图1瀑布模型图中的实线箭头表示开发流程,1.4软件开发模型利用瀑布模型开发软件有3个特点:
(1)开发过程的顺序性。瀑布模型开发适用于软件需求明确,开发技术成熟,工程管理较严格的场合下使用。
(2)统筹兼顾不过早编程
(3)严格要求保证质量。图2循环模型1.4软件开发模型利用瀑布模型开发软件有3个特点:图2循1.4软件开发模型1.4.2快速原型模型快速原型模型需要先建造一个快速原型,如操作窗口及界面等,进行客户或潜在用户与系统间的交流,用户/客户可以通过对原型的评价及改进意见,进一步细化待开发软件的需求,通过逐步调整原型达到客户要求,从中确定客户的具体需求;然后按照需求开发软件。如图所示。此模型最适合于可以先尽快构建成一个原型的应用系统。1.4软件开发模型1.4.2快速原型模型1.4软件开发模型1.4软件开发模型1.4软件开发模型1.4.3增量模型利用增量模型开发的软件被作为一系列的增量构件来进行设计、实现集成和测试,每个构件具有一定功能,并最终能组合成一个具有完整功能软件的模块。如图所示。1.4软件开发模型1.4.3增量模型1.4软件开发模型增量模型灵活性很强,适用于软件需求不明确、设计方案有一定风险的软件项目。1.4软件开发模型1.4软件开发模型1.4.4螺旋模型螺旋模型将开发过程划分为制定计划、风险分析、实施工程和客户评估四类活动。沿着螺旋线每转一圈,表示开发出一个更完善的新软件版本。如果开发风险过大,开发机构和客户无法接受,项目可能就此终止;多数情况下,将沿着螺旋线继续进行,自内向外逐步延伸,最终得到满意的软件产品。
1.4软件开发模型1.4.4螺旋模型1.4软件开发模型螺旋模型沿着螺线进行多次迭代,其迭代过程如图1-10所示。
(1)制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;
(2)风险分析:分析评估所选方案,考虑如何识别和消除风险;
(3)实施工程:实施软件开发和验证;
(4)客户评估:评价开发工作,提出修正建议,制定下一步计划。1.4软件开发模型螺旋模型沿着螺线进行多次迭代,其迭代过程1.4软件开发模型1.4软件开发模型1.4软件开发模型1.4.5喷泉模型喷泉模型主要适合于利用面向对象技术的软件开发项目。它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。可使开发过程具有迭代性和无间隙性。1.4软件开发模型1.4.5喷泉模型1.4软件开发模型喷泉模型是以面向对象的开发方法为基础,以用户需求为源泉。从如图1-5的喷泉模型中可以看出7个特点:(1)规定软件开发过程有4个阶段:需求分析、总体设计、详细设计和实现,还可分成多个开发步骤。(2)各阶段相互重叠,反映了软件过程并行性的特点。1.4软件开发模
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 预防早产知识指南
- 教育服务行业
- 八年级上册《直角三角形的性质和判定》课件与练习
- 八年级上册《等边三角形性质和判定》课件与练习
- 挤掉脓包卡介疫苗白打了
- 金融分析师考试资料分析试题及答案
- 【名师课件】1.6.2 课件:人船模型-2025版高一物理必修二
- 第四章 2 全反射-2025版高二物理选择性必修一
- 第八章 作业37 动能定理和机械能守恒定律的综合应用-2025版高一物理必修二
- 2024年特许金融分析师考试社交学习的优势试题及答案
- 2024年上海市中考满分作文《我也是个取水人》19
- 浙江楼板粘钢加固施工方案
- 品味美好情感教学课件-2024-2025学年统编版道德与法治七年级下册
- 第二单元 焕发青春活力 大单元教学设计-2024-2025学年统编版道德与法治七年级下册
- 共赢未来餐饮行业合作新篇
- 2025年江苏农林职业技术学院单招职业适应性考试题库及参考答案1套
- 河南退役军人专升本计算机真题答案
- 【MOOC】数据库系统(下):管理与技术-哈尔滨工业大学 中国大学慕课MOOC答案
- 《中国溃疡性结肠炎诊治指南(2023年)》解读
- 叉车日常维护保养检查记录表
- 江恩九方图预测详细指南
评论
0/150
提交评论