您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 第01讲_软件工程概念与过程
软件工程薛建民软件工程薛建民xjm@sise.com.cn87818127软件工程薛建民软件工程软件概念与分类软件的发展与软件危机软件工程基本定义软件过程及其模型小结、思考题、实验软件工程薛建民软件概念与分类软件定义程序、数据及其相关文档的集合软件的特点软件的品质软件的分类软件工程薛建民软件的特点1软件是一种逻辑实体,而不是具体的物理实体。它具有抽象性软件的生产与硬件不同大多数软件是定制的在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题(图示)软件工程薛建民软件工程薛建民软件的特点2软件的开发和运行常常受到计算机系统的限制对计算机系统有着不同程度的依赖性软件开发至今尚未完全摆脱手工艺的开发方式软件是复杂的软件成本相当昂贵相当多的软件工作涉及到社会因素软件工程薛建民软件的品质产品必须可靠,只执行需求说明书的任务可用(易用性)健壮满足性能要求可维护有效利用资源可演化(可扩展)可移植、可重用软件工程薛建民软件的分类按功能按规模按工作方式按应用领域按服务对象项目软件(定制软件)产品软件按使用频度按软件失效的影响软件工程薛建民软件的分类—按功能系统软件支撑软件应用软件硬件系统软件支撑软件/应用软件软件工程薛建民软件的分类—按规模类型参加人数研制期限产品规模(源程序行数)微11~4周0.5k小11~6月1k~2k中2~51~2年5k~50k大5~202~3年50k~100k甚大100~10004~5年100k~1000k极大2000~50005~10年1M~20M软件工程薛建民Windows家族软件规模Win95:1500万行Win98:1800万行Winxp:3500万行Vista:5000万行9000名开发人员5年60亿美金355台服务器,75万多行测试环境Windows开发人员1000行代码/人年软件工程薛建民软件的分类—按工作方式实时软件分时软件交互软件批处理软件软件工程薛建民软件的分类—按应用领域分系统软件实时软件商业软件工程和科学计算软件嵌入式软件个人计算机软件基于Web的软件人工智能软件移动应用云计算软件工程薛建民软件的发展与软件危机软件的发展阶段软件危机产生表现原因软件的发展趋势软件工程薛建民程序设计阶段50-60年代程序系统阶段60-70年代软件工程阶段70年代以后软件的范畴程序程序及说明书产品软件(项目软件)主要设计语言汇编及机器语言高级语言软件语言软件工作范围程序编写包括设计和测试软件生存期需求者程序设计者本人少数用户市场用户软件规模小型中小型大中小型决定质量的因素个人程序技术小组技术水平管理水平开发技术和手段子程序、程序库结构化程序设计数据库、开发环境、工程化开发方法、标准和规范、网络及分布式开发、面向对象技术、移动、云计算维护责任者程序设计者开发小组专职维护人员硬件特性价格高、存储容量小、工作可靠性差降价、速度、容量及工作可靠性有明显提高向超高速、大容量、微型化及网络化方向发展软件特性完全不受重视软件技术的发展不能满足需要,出现软件危机开发技术有进步,但未获突破性进展,价高,未完全摆脱软件危机软件工程薛建民软件的发展~危机软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。产生于软件发展的第二阶段(软件系统阶段)末期。硬件性价比和应用范围、数量增大软件的需求和规模增大软件开发技术落后、低产量、低质量软件危机软件工程薛建民软件危机---主要表现对软件开发成本和进度的估计不准确用户不满意软件质量不高、可靠性差软件常常不可维护、错误难以改正缺乏适当的文档资料软件成本占系统总成本的比例逐年上升(1985----90%)软件开发速度跟不上计算机发展速度归结为主要为三方面----“时间、成本、质量”软件工程薛建民软件危机--原因1软件规模日渐庞大(数量、功能、成本、质量、时间)软件开发管理困难。逻辑部件而不是物理部件。在写出程序代码并在计算机运行之前,软件开发过程的进展情况较难衡量,软件开发的质量也较难评价。因此,管理和控制软件开发过程相当困难。开发人员错误的观念、方法和技术重编程、轻需求。生产方式落后:个体手工方式。开发技术落后\开发工具落后软件工程薛建民软件危机---原因2忽视软件开发前期的需求分析开发过程缺乏统一的、规范化的方法论的指导文档资料不齐全或不准确忽视与用户之间、开发组成员之间的交流忽视测试的重要性不重视维护或由于上述原因造成维护工作的困难需求变化预料不足软件工程薛建民软件发展趋势平台网络化技术对象化系统构件化开发过程化生产规模化产品领域化竞争国际化移动计算云环境与智慧-任何软件都是有体系结构的,体系结构决定了软件的整体性能-任何软件生产都是有过程的,软件过程决定了软件的质量-任何软件都是处理信息的,数据-信息-知识-智慧软件工程薛建民软件工程基本定义定义性质范围目标软件工程薛建民软件工程--定义1软件工程是指导计算机软件开发和维护的工程学科。它采用工程的概念、原理、技术和方法来开发与维护软件把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来软件工程薛建民软件工程定义2定义---Boehm运用现代科学技术知识来设计并构造计算机程序设计及为开发,运行和维护这些程序所必须的相关文件资料定义---IEEE[93]将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护中,即将工程化应用于软件;上面所述方法的研究软件工程薛建民软件工程定义3定义---Fairley软件工程学是为在成本限额以内、按时完成开发和修改软件产品所需的系统生产和维护的技术和管理的学科定义---FritzBauer建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法软件工程薛建民软件工程—性质软件工程是一门综合性的交叉学科,它涉及哲学、计算机科学、工程科学、管理科学、数学和应用领域知识工作岗位项目经理系统分析员架构工程师系统分析师项目实施顾问软件工程薛建民软件工程—范围1计算机系统工程软件工程实现(编码)硬件工程。。。。。。如果把软件工程比喻为战略的话,则编码实现只能算是战术。地位软件工程薛建民分析设计实现测试实施维护项目管理范围时间成本质量人力资源沟通风险采购共通软件工程--范围2涉及主要方面软件工程涉及软件生产的各个方面(图示如下)软件工程薛建民软件工程--目标目标----成功的(大型)软件系统付出较低的开发成本;达到要求的软件功能;取得较好的软件性能;易于移植需要较低的维护费用;能按时完成开发工作,及时交付使用;开发软件质量指标高;统一为——“如何提高软件生产率”软件工程薛建民软件工程层次图质量关注点过程方法工具软件工程薛建民软件过程及其模型软件过程概念软件生命周期软件生存期各阶段软件生命周期模型软件工程薛建民软件工程过程--概念软件工程过程是一个软件开发机构针对一类软件产品为自己规定的工作步骤,它应当是科学的、合理的,否则必将影响到软件产品的质量规定了获取、供应、开发和维护软件时,要实施的过程、活动和任务是指软件产品或软件系统从产生、投入使用到被淘汰的全过程是为获得软件产品,在软件工具支持下由软件工程师完成的一系列软件工程活动软件工程薛建民《ISO/IEC12207信息技术--软件生存期技术》定义的软件过程软件过程主要过程支持过程组织过程获取过程供应过程开发过程运行过程维护过程文档编制过程配置管理过程质量保证过程验证过程确认过程联合评审过程审核过程问题解决过程管理过程基础设施过程改进过程培训过程软件工程薛建民过程元素之间的关系软件工程薛建民标准软件过程体系结构图软件工程薛建民详细的软件过程层次体系结构软件工程薛建民软件生命周期定义它是指一个软件从提出开发要求开始到该软件报废为止的整个时期(生存过程)。从时间角度,把整个周期划分为若干个阶段(步骤),每个阶段有明确的任务,然后再逐步完成每个阶段的任务软件从孕育、诞生、成长、成熟、衰亡的生存过程软件工程薛建民软件生存期各阶段一般可分为六个步骤/阶段:1.制定计划(Planning)2.需求分析和定义(RequirementAnalysisandDefinition)3.软件设计(SoftwareDesign)4.程序编写(Coding/Programming)5.软件测试(Testing)6.运行/维护(Running/Maintenance)软件工程薛建民软件生命周期模型线性顺序模型瀑布模型RAD模型原型模型演化模型形式化开发模型基于构件的开发统一过程敏捷软件开发软件工程薛建民瀑布模型问题定义可行性研究需求分析软件设计编码测试维护定义阶段开发阶段维护阶段软件工程薛建民瀑布模型--特点优点:提供了软件开发的基本框架,比靠“个人技艺”开发好的多。严格活动序列,严格阶段成果评审,有利于大型软件开发过程的人员的组织和管理缺点:对用户需求变更的响应较困难。初始阶段较长,用户极大的耐心,需求的不确定性;后期阶段时,需求错误、设计及实现错误才出现适用:需求明确、大型的项目。软件工程薛建民瀑布模型变化1软件工程薛建民瀑布模型变化2软件工程薛建民快速应用开发模型RAD1软件工程薛建民快速应用开发模型RAD2软件工程薛建民RAD模型--特点优点开发时间短快速发布缺点多团队开发协调困难了解需求困难不注意小细节软件工程薛建民原型模型1建造/修改原型听取客户意见客户测试运行原型软件工程薛建民原型模型2软件工程薛建民原型模型3软件工程薛建民原型模型----特点优点:成品的用户满意度高。用户参与,需求不断完善缺点软件的“临时版本”,未考虑性能需求进度控制、质量检验较难,技术方案未必最优,会导致开发过程的不可收敛性系统结构通常较差,连续的变更损坏了系统的结构软件工程薛建民原型模型----特点适用:中小规模、生存期短的系统,知识型系统用户定义了一组一般性目标,但不能标识出详细的输入、处理及输出需求开发者可能不能确定算法的有效性、操作系统的适应性或人机交互的形式当你的客户有一个合理的需求,但对细节则没有任何线索时,先开发一个原型系统是一个好的选择软件工程薛建民演化软件过程模型渐增模型以尽早占领市场为目的,逐步发布版本;可有计划地管理技术风险螺旋模型不同版本、不同形式的不断进化;需要高水平的风险评估技术并发开发模型由用户要求、管理决策和评审结果驱动;每一个软件工程活动触发活动网络的状态变迁;软件工程薛建民渐增模型1分析设计编码测试增量1分析设计编码测试增量2分析设计编码测试增量3分析设计编码测试增量4第1个增量发布第2个增量发布第3个增量发布第4个增量发布软件工程薛建民渐增模型2软件工程薛建民渐增模型-特点优点易于预测、管理、控制使用的资源快速版本发布缺点有可能消弱结构和设计使用用户需求不明确设计用户界面软件工程薛建民螺旋模型1软件工程薛建民螺旋模型2软件工程薛建民螺旋模型-特点(spiralmodel)TRWB.Boehm,1988提出。将过程用螺旋线表示,每个回路表示软件过程的一个阶段。因此,最里面的回路可能与系统可行性有关,下一个回路可能与系统需求定义有关,再下一个回路与系统设计有关。多个任务区优点:渐增、使用原型模型减少风险,快速、可在软件的整个生命期间使用缺点:客户与开发团队需要丰富的风险评估专业知识,演化是否完全可控软件工程薛建民并发开发模型1开始开发等待改变修改评审基线评估完成分析活动表示一个软件工程的状态软件工程薛建民并发开发模型2软件工程薛建民优点适用所有类型的软件开发尤其适用客户端/服务器应用程序在实际项目中使用是成功的将降低整个过程的风险缺点对管理要求较高并发开发模型优缺点软件工程薛建民形式化方法模型1通过一组指定的活动来产生计算机软件
本文标题:第01讲_软件工程概念与过程
链接地址:https://www.777doc.com/doc-202872 .html