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