已阅读5页,还剩86页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程,薛建民 87818127,软件工程,软件概念与分类 软件的发展与软件危机 软件工程基本定义 软件过程及其模型 小结、思考题、实验,软件概念与分类,软件定义 程序、数据及其相关文档的集合 软件的特点 软件的品质 软件的分类,软件的特点1,软件是一种逻辑实体,而不是具体的物理实体。它具有抽象性 软件的生产与硬件不同 大多数软件是定制的 在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题(图示),软件的特点2,软件的开发和运行常常受到计算机系统的限制对计算机系统有着不同程度的依赖性 软件开发至今尚未完全摆脱手工艺的开发方式 软件是复杂的 软件成本相当昂贵 相当多的软件工作涉及到社会因素,软件的品质,产品必须可靠,只执行需求说明书的任务 可用(易用性) 健壮 满足性能要求 可维护 有效利用资源 可演化(可扩展) 可移植、可重用,软件的分类,按功能 按规模 按工作方式 按应用领域 按服务对象 项目软件(定制软件) 产品软件 按使用频度 按软件失效的影响,软件的分类按功能,系统软件 支撑软件 应用软件,软件的分类按规模,Windows家族软件规模,Win95:1500万行 Win98:1800万行 Win xp :3500万行 Vista :5000万行 9000名开发人员 5年 60亿美金 355台服务器,75万多行测试环境 Windows 开发人员 1000行代码/人年,软件的分类按工作方式,实时软件 分时软件 交互软件 批处理软件,软件的分类按应用领域分,系统软件 实时软件 商业软件 工程和科学计算软件 嵌入式软件 个人计算机软件 基于Web的软件 人工智能软件 移动应用 云计算,软件的发展与软件危机,软件的发展阶段 软件危机 产生 表现 原因 软件的发展趋势,软件的发展危机,软件危机 是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。产生于软件发展的第二阶段(软件系统阶段)末期。,硬件性价比和应用范围、数量增大,软件危机-主要表现,对软件开发成本和进度的估计不准确 用户不满意 软件质量不高、可靠性差 软件常常不可维护、错误难以改正 缺乏适当的文档资料 软件成本占系统总成本的比例逐年上升(1985-90%) 软件开发速度跟不上计算机发展速度 归结为主要为三方面-“时间、成本、质量”,软件危机-原因1,软件规模日渐庞大(数量、功能、成本、质量、时间) 软件开发管理困难。 逻辑部件而不是物理部件。 在写出程序代码并在计算机运行之前,软件开发过程的进展情况较难衡量,软件开发的质量也较难评价。因此,管理和控制软件开发过程相当困难。 开发人员错误的观念、方法和技术 重编程、轻需求。 生产方式落后:个体手工方式。 开发技术落后开发工具落后,软件危机-原因2,忽视软件开发前期的需求分析 开发过程缺乏统一的、规范化的方法论的指导 文档资料不齐全或不准确 忽视与用户之间、开发组成员之间的交流 忽视测试的重要性 不重视维护或由于上述原因造成维护工作的困难 需求变化预料不足,软件发展趋势,平台网络化 技术对象化 系统构件化 开发过程化 生产规模化 产品领域化 竞争国际化 移动计算 云环境与智慧,-任何软件都是有体系结构的, 体系结构决定了软件的整体性能 -任何软件生产都是有过程的, 软件过程决定了软件的质量 -任何软件都是处理信息的, 数据-信息-知识-智慧,软件工程基本定义,定义 性质 范围 目标,软件工程-定义1,软件工程是指导计算机软件开发和维护的工程学科。它采用工程的概念、原理、技术和方法来开发与维护软件 把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,软件工程定义2,定义-Boehm 运用现代科学技术知识来设计并构造计算机程序设计及为开发,运行和维护这些程序所必须的相关文件资料 定义-IEEE93 将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护中,即将工程化应用于软件;上面所述方法的研究,软件工程定义3,定义- Fairley 软件工程学是为在成本限额以内、按时完成开发和修改软件产品所需的系统生产和维护的技术和管理的学科 定义-Fritz Bauer 建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法,软件工程性质,软件工程是一门综合性的交叉学科,它涉及哲学、计算机科学、工程科学、管理科学、数学和应用领域知识 工作岗位 项目经理 系统分析员 架构工程师 系统分析师 项目实施顾问,软件工程范围1,计算机系统工程,软件工程,实现 (编码),硬件工程,。,。,如果把软件工程比喻为战略的话,则编码实现只能算是战术。,地位,软件工程-范围2,涉及主要方面 软件工程涉及软件生产的各个方面(图示如下),软件工程-目标,目标-成功的(大型)软件系统,付出较低的开发成本; 达到要求的软件功能; 取得较好的软件性能; 易于移植 需要较低的维护费用; 能按时完成开发工作,及时交付使用; 开发软件质量指标高; 统一为“如何提高软件生产率”,软件工程层次图,质量关注点,过程,方法,工具,软件过程及其模型,软件过程概念 软件生命周期 软件生存期各阶段 软件生命周期模型,软件工程过程-概念,软件工程过程是一个软件开发机构针对一类软件产品为自己规定的工作步骤,它应当是科学的、合理的,否则必将影响到软件产品的质量 规定了获取、供应、开发和维护软件时,要实施的过程、活动和任务 是指软件产品或软件系统从产生、投入使用到被淘汰的全过程 是为获得软件产品,在软件工具支持下由软件工程师完成的一系列软件工程活动,ISO/IEC 12207信息技术-软件生存期技术 定义的软件过程,过程元素之间的关系,标准软件过程体系结构图,详细的软件过程层次体系结构,软件生命周期,定义 它是指一个软件从提出开发要求开始到该软件报废为止的整个时期(生存过程)。从时间角度,把整个周期划分为若干个阶段(步骤),每个阶段有明确的任务,然后再逐步完成每个阶段的任务 软件从孕育、诞生、成长、成熟、衰亡的生存过程,软件生存期各阶段,一般可分为六个步骤/阶段 : 制定计划(Planning) 需求分析和定义(Requirement Analysis and Definition) 软件设计(Software Design) 程序编写(Coding/Programming) 软件测试(Testing) 运行/维护(Running/Maintenance),软件生命周期模型,线性顺序模型 瀑布模型 RAD模型 原型模型 演化模型 形式化开发模型 基于构件的开发 统一过程 敏捷软件开发,瀑布模型,瀑布模型-特点,优点: 提供了软件开发的基本框架,比靠“个人技艺”开发好的多。 严格活动序列,严格阶段成果评审,有利于大型软件开发过程的人员的组织和管理 缺点:对用户需求变更的响应较困难。 初始阶段较长,用户极大的耐心,需求的不确定性; 后期阶段时,需求错误、设计及实现错误才出现 适用:需求明确、大型的项目。,瀑布模型变化1,瀑布模型变化2,快速应用开发模型RAD1,快速应用开发模型RAD2,RAD模型-特点,优点 开发时间短 快速发布 缺点 多团队开发协调困难 了解需求困难 不注意小细节,原型模型1,原型模型2,原型模型3,原型模型-特点,优点: 成品的用户满意度高。用户参与,需求不断完善 缺点 软件的“临时版本”,未考虑性能需求 进度控制、质量检验较难,技术方案未必最优,会导致开发过程的不可收敛性 系统结构通常较差,连续的变更损坏了系统的结构,原型模型-特点,适用: 中小规模、生存期短的系统,知识型系统 用户定义了一组一般性目标,但不能标识出详细的输入、处理及输出需求 开发者可能不能确定算法的有效性、操作系统的适应性或人机交互的形式 当你的客户有一个合理的需求,但对细节则没有任何线索时,先开发一个原型系统是一个好的选择,演化软件过程模型,渐增模型 以尽早占领市场为目的,逐步发布版本; 可有计划地管理技术风险 螺旋模型 不同版本、不同形式的不断进化; 需要高水平的风险评估技术 并发开发模型 由用户要求、管理决策和评审结果驱动; 每一个软件工程活动触发活动网络的状态变迁;,渐增模型1,渐增模型2,渐增模型-特点,优点 易于预测、管理、控制使用的资源 快速版本发布 缺点 有可能消弱结构和设计 使用 用户需求不明确 设计用户界面,螺旋模型1,螺旋模型2,螺旋模型-特点,(spiral model) TRW B.Boehm,1988提出。将过程用螺旋线表示,每个回路表示软件过程的一个阶段。因此,最里面的回路可能与系统可行性有关,下一个回路可能与系统需求定义有关,再下一个回路与系统设计有关。 多个任务区 优点:渐增、使用原型模型减少风险,快速、可在软件的整个生命期间使用 缺点:客户与开发团队需要丰富的风险评估专业知识,演化是否完全可控,并发开发模型1,并发开发模型2,优点 适用所有类型的软件开发 尤其适用客户端/服务器应用程序 在实际项目中使用是成功的 将降低整个过程的风险 缺点 对管理要求较高,并发开发模型优缺点,形式化方法模型1,通过一组指定的活动来产生计算机软件的数学规约。 软件工程师应用一个严格的、数学的符号体系来进行规约、开发和验证基于计算机的系统 特点: 完全可以产生无缺陷的软件 缺点 成本高 与客户交流困难 使用在对可靠性要求极高的系统开发中,形式化方法模型2,需求定义,形式的规格说明,形式化变换,集成和系统测试,基于构件的开发,RUP简介,RUP(Rational Unified Process)Rational统一过程 近30年的发展和实际运用 每一次软件开发过程定义了九个核心规程 六个技术规程 业务建模规程、需求工程、分析和设计规程、实现规程、测试规程、部署规程 三个管理规程 配置和变更管理规程、项目管理规程、环境规程 开发周期的四个阶段 初始阶段、细化阶段、构造阶段、移交阶段,RUP-Rational统一过程,业务建模(Business Modeling) 理解系统的组织结构及其商业运作,确保所有参与人员对开发系统有共同的认识。 需求分析(Requirements) 定义系统功能及用户界面,明确客户需要的系统的功能,开发人员理解系统的需求,为项目预算及计划提供基础。 分析与设计(Analysis and Design) 把需求分析的结果转化为实现规格。,工作流描述,实现(Implementation) 定义代码的组织结构、实现代码、单元测试、系统集成。 测试(Test) 验证各自子系统的交互与集成。 配置(Deployment) 打包、分发、安装软件,升级旧系统;培训用户及销售人员,并提供技术支持。制定并实施beta测试。,工作流描述,设置和变更管理(Configuration and Change Management) 跟踪并维护系统所有产品的完整性和一致性。 项目管理(Project Management) 为计划、执行和监控软件开发项目提供可行性的指导;为风险管理提供框架。 环境(Environment) 为组织提供过程管理和工具的支持。,工作流描述,RUP的四个阶段,RUP包括以下四个阶段: 起始阶段、细化阶段、构建阶段、交付阶段 每个阶段结束于一个主要的里程碑(Major Milestones) 每个阶段本质上是两个里程碑之间的时间跨度,RUP的四个阶段-初始阶段,进行如下的活动 明确说明项目规模,了解环境以及最重要的需求和约束,以便可以得出最终产品的验收标准。 计划和准备商业理由。评估风险管理、人员配备、项目计划以及成本/进度/收益折衷的被选方案。 综合考虑被选构架,评估构架。 准备项目的环境,评估项目和组织,选择工具,决定流程中要改进的部分。 评估标准如下: 出资人同意系统范围定义以及费用和进度评估。 主要用例是否符合需求。 费用和进度评估、优先级、风险以及开发过程的可信性。 任何已开发的原型的深度和广度。 实际开销与计划开销。 初始阶段的焦点是需求和分析工作流。,RUP的四个阶段-细化阶段,细化阶段的评估标准如下: 标明用例模型中的用户和参与者,并且建立用例的描述文档。用例模型需完成80。 创建软件系统开发过程中的软件结构的描述文档。 创建可执行的系统原型。 细化商业案例和风险列表。 创建整个项目的开发计划。 细化阶段的焦点是需求、分析和设计工作流。,RUP的四个阶段-构建阶段,主要目标如下: 优化资源、避免不必要的报废和返工,使开发成本降到最低。 尽快达到质量的要求。 快速完成有用的版本,例如Alpha 版、Beta 版和其他测试发布版。 完成所有功能的分析、开发和测试。 迭代式、递增地开发随时可以发布的产品。 确定准备好软件系统的外部环境。 构建阶段的焦点是实现工作流。,RUP的四个阶段-交付阶段,主要目标如下: 进行Beta版测试,按用户的要求验证新系统。 替换旧的系统。 对用户和维护人员进行培训。 开始调整活动,例如调试、性能或可用性的增强。 与用户达成共识,配置基线与评估标准一致。 交付阶段的焦点是实现和测试工作流。,RUP的迭代开发模型,RUP中的每个阶段可以进一步分解为迭代。,RUP的迭代开发模型,与传统的瀑布模型相比较,迭代过程的优点: 降低了在一个增量上的开发风险。 降低了产品无法按照既定进度进入市场的风险。 加快了整个开发工作的进度。,核心工作流介绍-需求捕获工作流,需求捕获通过对应问题的理解和分析,确立问题涉及的信息、功能和系统行为,将用户需求精确化、完全化。 需求的焦点主要在初始和精化阶段,在精化阶段后期,需求捕获的工作量大幅下降。,需求捕获工作流,主要的UML制品: 用例模型(Use Case Model)、参与者(Actor)、用例(Use Case)、构架描述、术语表(Glossary)、用户界面原型 参与需求捕获阶段的工作人员: 系统分析人员(System Analyst)、用例描述人员(Use Case Specifier)、用户界面设计人员(User Interface Designer)构架设计师(Architect) 需求捕获的工作流主要包括五个活动: 确定参与者和用例、区分用例的优先级、详细描述一个用例、构造用户界面原型、构造用例模型,核心工作流介绍-分析工作流,主要的UML制品: 分析模型、分析类、用例实现(分析)、分析包、构架模型 参与的工作人员: 构架设计师、用例工程师、构件工程师 主要包括四种活动: 构架分析、分析用例、分析类、分析包,核心工作流介绍-设计工作流,主要的UML制品: 设计模型、设计类、用例实现-设计、设计子系统、接口、配置图 工作人员包括 构架设计师、用例工程师、构件工程师 主要包括四种活动 构架设计、设计一个用例、设计一个类、设计一个子系统,核心工作流介绍-实现工作流,主要有六种制品: 实现模型、组件、实现子系统、接口、构架描述(实现模型)、集成构造计划 工作人员: 构架设计师、构件工程师、系统集成人员 系列活动: 构架实现、系统集成、实现一个子系统、实现一个类、执行单元测试,核心工作流介绍-测试工作流,包括七个制品: 测试模型、测试用例、测试规程、测试组件、制定测试计划、缺陷、评估测试 工作人员主要有四类: 测试设计人员、构件工程师、集成测试人员、系统测试人员 包括六种活动: 制定测试计划、设计测试、实现测试、执行集成测试、执行系统测试、评估测试,敏捷软件开发,敏捷软件开发(轻量级方法) XP方法,SCRUM方法,DSDM方法 敏捷软件开发联盟(Agile联盟)的4个价值观和12条原则 个人和交互高于过程和工具 可运行软件高于详尽的文档 与客户协作高于合同(契约)谈判 对变更及时做出反映高于遵循计划,敏捷软件开发2,敏捷软件开发联盟(Agile联盟)开发遵循的12条原则 最优先的是通过尽早地和不断提交有价值的软件来使客户满意 欢迎变化的需求,即使该变化出现在开发的后期,为了提高客户的竞争优势,敏捷过程利用变化作为动力 以几周到几个月为周期,尽快、不断地交付可运行的软件 在整个项目过程中,业务人员和开发人员必须天天一起工作 以积极向上的员工为中心建立项目组,给与他们所需要的环境和支持,对他们的工作
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026低空经济公司(新组建央企)招聘笔试备考试题及答案解析
- 2026广东深圳市龙岗区坂田街道五园第二幼儿园招聘1人备考题库含答案详解(达标题)
- 2026甘肃天水新天坛创伤骨科医院招聘1人备考题库(含答案详解)
- 2026浙江温州市瑞安市曹村镇招聘1人备考题库含答案详解(b卷)
- 2026江苏南京大学XZ2026-043历史学院考古及文物保护专业人员备考题库含答案详解(研优卷)
- 快递物流时效监测与异常处理手册
- 2026山东临沂教师招聘统考临沂沂河新区招聘教师25人考试备考题库及答案解析
- 2026江苏苏州工业园区领军创业投资有限公司招聘1人备考题库含答案详解(研优卷)
- 2026山西太原工业学院招聘博士研究生20人备考题库完整参考答案详解
- 2026内蒙古包头铁道职业技术学院赴铁路院校招聘急需专业教师补充招聘4人笔试参考试题及答案解析
- 2025护理分级新标准
- GB/T 42124.3-2025产品几何技术规范(GPS)模制件的尺寸和几何公差第3部分:铸件尺寸公差、几何公差与机械加工余量
- T/TMAC 084-2024煤电环保智能化控制平台建设指南
- 可信数据空间解决方案星环科技
- 2025年贵州省中考英语一模试题无答案
- 高三尖子生个性化辅导计划
- 办公室目标量化考核办法
- 安全生产六项机制典型经验做法和成效
- 1完整版本.5kw机器人专用谐波减速器设计
- 急性心梗的急救护理与抢救流程
- ELOVL1促进肝细胞癌发生发展的分子机制研究
评论
0/150
提交评论