《软件工程概念与过程.ppt》由会员分享,可在线阅读,更多相关《软件工程概念与过程.ppt(91页珍藏版)》请在三一办公上搜索。
1、软件工程,薛建民 87818127,软件工程,软件概念与分类软件的发展与软件危机软件工程基本定义软件过程及其模型小结、思考题、实验,软件概念与分类,软件定义程序、数据及其相关文档的集合软件的特点软件的品质软件的分类,软件的特点1,软件是一种逻辑实体,而不是具体的物理实体。它具有抽象性软件的生产与硬件不同大多数软件是定制的在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题(图示),软件的特点2,软件的开发和运行常常受到计算机系统的限制对计算机系统有着不同程度的依赖性软件开发至今尚未完全摆脱手工艺的开发方式软件是复杂的软件成本相当昂贵相当多的软件工作涉及到社会因素,软件的品质,产品必须可靠,
2、只执行需求说明书的任务可用(易用性)健壮满足性能要求可维护有效利用资源可演化(可扩展)可移植、可重用,软件的分类,按功能按规模按工作方式按应用领域按服务对象项目软件(定制软件)产品软件按使用频度按软件失效的影响,软件的分类按功能,系统软件支撑软件应用软件,软件的分类按规模,Windows家族软件规模,Win95:1500万行Win98:1800万行Win xp:3500万行Vista:5000万行9000名开发人员5年 60亿美金355台服务器,75万多行测试环境Windows 开发人员 1000行代码/人年,软件的分类按工作方式,实时软件分时软件交互软件批处理软件,软件的分类按应用领域分,系
3、统软件实时软件商业软件工程和科学计算软件嵌入式软件个人计算机软件基于Web的软件人工智能软件移动应用云计算,软件的发展与软件危机,软件的发展阶段软件危机产生表现原因软件的发展趋势,软件的发展危机,软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。产生于软件发展的第二阶段(软件系统阶段)末期。,硬件性价比和应用范围、数量增大,软件危机-主要表现,对软件开发成本和进度的估计不准确用户不满意软件质量不高、可靠性差 软件常常不可维护、错误难以改正 缺乏适当的文档资料 软件成本占系统总成本的比例逐年上升(1985-90%)软件开发速度跟不上计算机发展速度归结为主要为三方面-“时间、成本、
4、质量”,软件危机-原因1,软件规模日渐庞大(数量、功能、成本、质量、时间)软件开发管理困难。逻辑部件而不是物理部件。在写出程序代码并在计算机运行之前,软件开发过程的进展情况较难衡量,软件开发的质量也较难评价。因此,管理和控制软件开发过程相当困难。开发人员错误的观念、方法和技术重编程、轻需求。生产方式落后:个体手工方式。开发技术落后开发工具落后,软件危机-原因2,忽视软件开发前期的需求分析 开发过程缺乏统一的、规范化的方法论的指导文档资料不齐全或不准确忽视与用户之间、开发组成员之间的交流忽视测试的重要性不重视维护或由于上述原因造成维护工作的困难需求变化预料不足,软件发展趋势,平台网络化技术对象化
5、系统构件化开发过程化生产规模化产品领域化竞争国际化移动计算云环境与智慧,-任何软件都是有体系结构的,体系结构决定了软件的整体性能-任何软件生产都是有过程的,软件过程决定了软件的质量-任何软件都是处理信息的,数据-信息-知识-智慧,软件工程基本定义,定义性质范围目标,软件工程-定义1,软件工程是指导计算机软件开发和维护的工程学科。它采用工程的概念、原理、技术和方法来开发与维护软件把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,软件工程定义2,定义-Boehm 运用现代科学技术知识来设计并构造计算机程序设计及为开发,运行和维护这些程序所必须的相关文件资料定义-IEEE93
6、 将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护中,即将工程化应用于软件;上面所述方法的研究,软件工程定义3,定义-Fairley 软件工程学是为在成本限额以内、按时完成开发和修改软件产品所需的系统生产和维护的技术和管理的学科定义-Fritz Bauer 建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法,软件工程性质,软件工程是一门综合性的交叉学科,它涉及哲学、计算机科学、工程科学、管理科学、数学和应用领域知识工作岗位项目经理系统分析员架构工程师系统分析师项目实施顾问,软件工程范围1,计算机系统工程,软件工程,实现(编码),硬件工程,
7、。,。,如果把软件工程比喻为战略的话,则编码实现只能算是战术。,地位,软件工程-范围2,涉及主要方面 软件工程涉及软件生产的各个方面(图示如下),软件工程-目标,目标-成功的(大型)软件系统,付出较低的开发成本;达到要求的软件功能;取得较好的软件性能;易于移植需要较低的维护费用;能按时完成开发工作,及时交付使用;开发软件质量指标高;统一为“如何提高软件生产率”,软件工程层次图,质量关注点,过程,方法,工具,软件过程及其模型,软件过程概念软件生命周期软件生存期各阶段软件生命周期模型,软件工程过程-概念,软件工程过程是一个软件开发机构针对一类软件产品为自己规定的工作步骤,它应当是科学的、合理的,否
8、则必将影响到软件产品的质量规定了获取、供应、开发和维护软件时,要实施的过程、活动和任务是指软件产品或软件系统从产生、投入使用到被淘汰的全过程是为获得软件产品,在软件工具支持下由软件工程师完成的一系列软件工程活动,ISO/IEC 12207信息技术-软件生存期技术定义的软件过程,过程元素之间的关系,标准软件过程体系结构图,详细的软件过程层次体系结构,软件生命周期,定义它是指一个软件从提出开发要求开始到该软件报废为止的整个时期(生存过程)。从时间角度,把整个周期划分为若干个阶段(步骤),每个阶段有明确的任务,然后再逐步完成每个阶段的任务软件从孕育、诞生、成长、成熟、衰亡的生存过程,软件生存期各阶段
9、,一般可分为六个步骤/阶段:制定计划(Planning)需求分析和定义(Requirement Analysis and Definition)软件设计(Software Design)程序编写(Coding/Programming)软件测试(Testing)运行/维护(Running/Maintenance),软件生命周期模型,线性顺序模型瀑布模型RAD模型原型模型演化模型形式化开发模型基于构件的开发统一过程敏捷软件开发,瀑布模型,瀑布模型-特点,优点:提供了软件开发的基本框架,比靠“个人技艺”开发好的多。严格活动序列,严格阶段成果评审,有利于大型软件开发过程的人员的组织和管理缺点:对用户需
10、求变更的响应较困难。初始阶段较长,用户极大的耐心,需求的不确定性;后期阶段时,需求错误、设计及实现错误才出现适用:需求明确、大型的项目。,瀑布模型变化1,瀑布模型变化2,快速应用开发模型RAD1,快速应用开发模型RAD2,RAD模型-特点,优点开发时间短快速发布缺点多团队开发协调困难了解需求困难不注意小细节,原型模型1,原型模型2,原型模型3,原型模型-特点,优点:成品的用户满意度高。用户参与,需求不断完善缺点软件的“临时版本”,未考虑性能需求进度控制、质量检验较难,技术方案未必最优,会导致开发过程的不可收敛性系统结构通常较差,连续的变更损坏了系统的结构,原型模型-特点,适用:中小规模、生存期
11、短的系统,知识型系统用户定义了一组一般性目标,但不能标识出详细的输入、处理及输出需求开发者可能不能确定算法的有效性、操作系统的适应性或人机交互的形式当你的客户有一个合理的需求,但对细节则没有任何线索时,先开发一个原型系统是一个好的选择,演化软件过程模型,渐增模型以尽早占领市场为目的,逐步发布版本;可有计划地管理技术风险螺旋模型不同版本、不同形式的不断进化;需要高水平的风险评估技术并发开发模型由用户要求、管理决策和评审结果驱动;每一个软件工程活动触发活动网络的状态变迁;,渐增模型1,渐增模型2,渐增模型-特点,优点易于预测、管理、控制使用的资源快速版本发布缺点有可能消弱结构和设计使用用户需求不明
12、确设计用户界面,螺旋模型1,螺旋模型2,螺旋模型-特点,(spiral model)TRW B.Boehm,1988提出。将过程用螺旋线表示,每个回路表示软件过程的一个阶段。因此,最里面的回路可能与系统可行性有关,下一个回路可能与系统需求定义有关,再下一个回路与系统设计有关。多个任务区优点:渐增、使用原型模型减少风险,快速、可在软件的整个生命期间使用缺点:客户与开发团队需要丰富的风险评估专业知识,演化是否完全可控,并发开发模型1,并发开发模型2,优点适用所有类型的软件开发尤其适用客户端/服务器应用程序在实际项目中使用是成功的将降低整个过程的风险缺点对管理要求较高,并发开发模型优缺点,形式化方法
13、模型1,通过一组指定的活动来产生计算机软件的数学规约。软件工程师应用一个严格的、数学的符号体系来进行规约、开发和验证基于计算机的系统特点:完全可以产生无缺陷的软件缺点成本高与客户交流困难使用在对可靠性要求极高的系统开发中,形式化方法模型2,需求定义,形式的规格说明,形式化变换,集成和系统测试,基于构件的开发,RUP简介,RUP(Rational Unified Process)Rational统一过程近30年的发展和实际运用每一次软件开发过程定义了九个核心规程六个技术规程业务建模规程、需求工程、分析和设计规程、实现规程、测试规程、部署规程三个管理规程配置和变更管理规程、项目管理规程、环境规程开
14、发周期的四个阶段初始阶段、细化阶段、构造阶段、移交阶段,RUP-Rational统一过程,业务建模(Business Modeling)理解系统的组织结构及其商业运作,确保所有参与人员对开发系统有共同的认识。需求分析(Requirements)定义系统功能及用户界面,明确客户需要的系统的功能,开发人员理解系统的需求,为项目预算及计划提供基础。分析与设计(Analysis and Design)把需求分析的结果转化为实现规格。,工作流描述,实现(Implementation)定义代码的组织结构、实现代码、单元测试、系统集成。测试(Test)验证各自子系统的交互与集成。配置(Deployment)
15、打包、分发、安装软件,升级旧系统;培训用户及销售人员,并提供技术支持。制定并实施beta测试。,工作流描述,设置和变更管理(Configuration and Change Management)跟踪并维护系统所有产品的完整性和一致性。项目管理(Project Management)为计划、执行和监控软件开发项目提供可行性的指导;为风险管理提供框架。环境(Environment)为组织提供过程管理和工具的支持。,工作流描述,RUP的四个阶段,RUP包括以下四个阶段:起始阶段、细化阶段、构建阶段、交付阶段每个阶段结束于一个主要的里程碑(Major Milestones)每个阶段本质上是两个里程碑
16、之间的时间跨度,RUP的四个阶段-初始阶段,进行如下的活动明确说明项目规模,了解环境以及最重要的需求和约束,以便可以得出最终产品的验收标准。计划和准备商业理由。评估风险管理、人员配备、项目计划以及成本/进度/收益折衷的被选方案。综合考虑被选构架,评估构架。准备项目的环境,评估项目和组织,选择工具,决定流程中要改进的部分。评估标准如下:出资人同意系统范围定义以及费用和进度评估。主要用例是否符合需求。费用和进度评估、优先级、风险以及开发过程的可信性。任何已开发的原型的深度和广度。实际开销与计划开销。初始阶段的焦点是需求和分析工作流。,RUP的四个阶段-细化阶段,细化阶段的评估标准如下:标明用例模型
17、中的用户和参与者,并且建立用例的描述文档。用例模型需完成80。创建软件系统开发过程中的软件结构的描述文档。创建可执行的系统原型。细化商业案例和风险列表。创建整个项目的开发计划。细化阶段的焦点是需求、分析和设计工作流。,RUP的四个阶段-构建阶段,主要目标如下:优化资源、避免不必要的报废和返工,使开发成本降到最低。尽快达到质量的要求。快速完成有用的版本,例如Alpha 版、Beta 版和其他测试发布版。完成所有功能的分析、开发和测试。迭代式、递增地开发随时可以发布的产品。确定准备好软件系统的外部环境。构建阶段的焦点是实现工作流。,RUP的四个阶段-交付阶段,主要目标如下:进行Beta版测试,按用
18、户的要求验证新系统。替换旧的系统。对用户和维护人员进行培训。开始调整活动,例如调试、性能或可用性的增强。与用户达成共识,配置基线与评估标准一致。交付阶段的焦点是实现和测试工作流。,RUP的迭代开发模型,RUP中的每个阶段可以进一步分解为迭代。,RUP的迭代开发模型,与传统的瀑布模型相比较,迭代过程的优点:降低了在一个增量上的开发风险。降低了产品无法按照既定进度进入市场的风险。加快了整个开发工作的进度。,核心工作流介绍-需求捕获工作流,需求捕获通过对应问题的理解和分析,确立问题涉及的信息、功能和系统行为,将用户需求精确化、完全化。需求的焦点主要在初始和精化阶段,在精化阶段后期,需求捕获的工作量大
19、幅下降。,需求捕获工作流,主要的UML制品:用例模型(Use Case Model)、参与者(Actor)、用例(Use Case)、构架描述、术语表(Glossary)、用户界面原型参与需求捕获阶段的工作人员:系统分析人员(System Analyst)、用例描述人员(Use Case Specifier)、用户界面设计人员(User Interface Designer)构架设计师(Architect)需求捕获的工作流主要包括五个活动:确定参与者和用例、区分用例的优先级、详细描述一个用例、构造用户界面原型、构造用例模型,核心工作流介绍-分析工作流,主要的UML制品:分析模型、分析类、用例实
20、现(分析)、分析包、构架模型 参与的工作人员:构架设计师、用例工程师、构件工程师主要包括四种活动:构架分析、分析用例、分析类、分析包,核心工作流介绍-设计工作流,主要的UML制品:设计模型、设计类、用例实现-设计、设计子系统、接口、配置图工作人员包括构架设计师、用例工程师、构件工程师 主要包括四种活动构架设计、设计一个用例、设计一个类、设计一个子系统,核心工作流介绍-实现工作流,主要有六种制品:实现模型、组件、实现子系统、接口、构架描述(实现模型)、集成构造计划工作人员:构架设计师、构件工程师、系统集成人员系列活动:构架实现、系统集成、实现一个子系统、实现一个类、执行单元测试,核心工作流介绍-
21、测试工作流,包括七个制品:测试模型、测试用例、测试规程、测试组件、制定测试计划、缺陷、评估测试 工作人员主要有四类:测试设计人员、构件工程师、集成测试人员、系统测试人员 包括六种活动:制定测试计划、设计测试、实现测试、执行集成测试、执行系统测试、评估测试,敏捷软件开发,敏捷软件开发(轻量级方法)XP方法,SCRUM方法,DSDM方法敏捷软件开发联盟(Agile联盟)的4个价值观和12条原则个人和交互高于过程和工具可运行软件高于详尽的文档与客户协作高于合同(契约)谈判对变更及时做出反映高于遵循计划,敏捷软件开发2,敏捷软件开发联盟(Agile联盟)开发遵循的12条原则最优先的是通过尽早地和不断提
22、交有价值的软件来使客户满意欢迎变化的需求,即使该变化出现在开发的后期,为了提高客户的竞争优势,敏捷过程利用变化作为动力以几周到几个月为周期,尽快、不断地交付可运行的软件在整个项目过程中,业务人员和开发人员必须天天一起工作以积极向上的员工为中心建立项目组,给与他们所需要的环境和支持,对他们的工作给与充分的信任,敏捷软件开发3,项目组内效率最高、最有效的信息传递方式是面对面交流测量项目进展的首要依据是可运行的软件敏捷过程提倡可持续的开发,项目发起人、开发者和用户应能长期保持恒定的速度应该时刻关注技术上的精益求精和好的设计,以增强敏捷性简单化是必不可少的,这是尽可能减少不必要工作的艺术最好的架构、需
23、求和设计出自于自我组织的团队团队要定期反思怎样才能更加有效,并据此调整自己的行为,XP方法,四个价值观交流简单反馈勇气12个核心实践完整的团队计划对策系统比喻小发布,测试简单设计结对编程设计改进持续集成代码全体共有编码标准可持续步调,其它敏捷方法,自适应软件开发思考、协作、学习动态系统开发方法可行性研究、业务研究、功能模型迭代、设计和构建迭代、实现ScrumCrystal特征驱动开发敏捷建模,小结,软件及其特点、分类软件危机产生的原因软件工程定义与目标软件工程过程生命周期/生存期生命周期模型统一过程敏捷软件开发,思考题,软件特点有哪些?为什么会产生软件危机?软件工程的目标?,思考题,什么是软件的生命周期模型?它主要有哪些模型?软件生命周期内阶段的划分为什么要受软件的规模、性质、种类、开发方法的影响?简述原型模型的特点,与瀑布模型的关键区别是什么?原型模型与演化模型的异同分析。Rup与敏捷的区别。,实验01,实验方式课后进行分析与设计实验课讨论评比内容分组了解项目环境,系统应该解决的问题,实验02_相关信息检索分析与项目背景,实验要求了解项目环境,系统应该解决的问题来源:上网,现场调研确定项目目标提交文档调查过程对需要解决的问题的认识明确项目目标存在的困难其它。,
链接地址:https://www.31ppt.com/p-6610879.html