版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一章 软件工程基本概述,1,0.agenda,1、软件概述 2、软件危机 3、软件工程 4、软件生命周期模型 5、软件过程概述,2,1.软件概述,软件(software)是计算机系统中与硬件(hardware)相互依存的另一部分,它包括程序(program)、相关数据(data)及其说明文档(document)。 其中: 程序按事先设计的功能和性能要求执行的指令序列 数据使程序能正常操操纵信息的数据结构 文档与程序开发、维护和使用有关的图文材料,3,1.1 软件的概念,1.软件概述,Augusta Ada Lovelace(1815-1852) 穿孔机程序创始人,建立了循环和子程序概念。为计
2、算程序拟定“算法”,被珍视为“第一个给计算机写程序的人”。 计算机惯用法公司(CUC) 1955年在美国成立,世界上第一家独立软件公司。 1969年6月23日,IBM公司宣布把软件和服务与硬件分开定价。从此,软件业成为了一个独立的行业。有很多人将这一天认为是软件的诞生日。,4,1.1 软件的概念,1.软件概述,软件是一种逻辑实体,而不是具体的物理实体 软件的生产与硬件不同 在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题,5,1.2 软件的特点,磨合调整,磨损用坏,修改点,实际曲线,理想曲线,1.软件概述,软件的成本相当昂贵,6,1.2 软件的特点,软件技术的发展落后于需求,硬、软件成
3、本比例的变化,年份,成本%,软件,硬件,1.软件概述,软件没有明显的制造过程。一旦研制开发成功,就可以大量拷贝同一内容的副本。 软件对硬件和环境有着不同程度的依赖性。这导致了软件移植的问题。 软件的开发至今尚未完全摆脱手工作坊式的开发方式,生产效率低。 软件是复杂的,而且以后会更加复杂。 软件工作牵涉到很多社会因素。,7,1.2 软件的特点,1.软件概述,1.基于软件功能 2.基于软件工作方式 3.基于软件规模,8,1.3 软件的分类,1.软件概述,1.基于软件功能 2.基于软件工作方式 3.基于软件规模,9,1.3 软件的分类,系统软件(OS,DBMS) 支撑软件(各种软件开发包等) 应用软
4、件(各种MIS系统),1.软件概述,1.基于软件功能 2.基于软件工作方式 3.基于软件规模,10,1.3 软件的分类,实时处理软件 分时软件 交互式软件 批处理软件,1.软件概述,1.基于软件功能 2.基于软件工作方式 3.基于软件规模,11,1.3 软件的分类,微型软件 小型软件 中型软件 大型软件 甚大型软件 超大型软件,1.软件概述,软件开发能力不能满足人们的需要。 社会对软件的依赖程度加大,人们普遍关注软件的安全和可靠性。 建造高可靠性、高质量软件的任务任重路远。 若干年前开发的应用软件经过几十次修改已无人认识它的内部结构,己经不可维护。 由于经济原因,嵌入式系统存在许多怪现象,企业
5、不愿意投入资源再生产,而采取打补丁+时髦界面的方法。,12,1.4 软件发展中存在的问题,2.软件危机,1968年北大西洋公约组织的计算机科学家在联邦德国召开的国际学术会议上第一次提出了“软件危机”(software crisis)这个名词。 软件危机指的是软件开发和维护过程中遇到的一系列严重问题。 软件危机包含下面两方面的问题: 如何开发软件,以满足对软件的日益增长的需求; 如何维护数量不断增长的已有软件。,13,2.1 软件危机概念,2.软件危机,产品不符合用户的实际需求; 软件开发生产率提高的速度远远不能满足客观需求; 软件产品的质量差; 对软件开放成本和进度估计常常不准确; 软件的可维
6、护性差; 软件文档资料通常不完整也不合格; 软件的价格昂贵,软件成本在计算机系统总成本中所占的比例逐渐上升。,14,2.2 软件危机表现,2.软件危机,软件的规模加大、复杂性提高、性能增强; 软件是逻辑产品, 尚未完全认识其本质和特点; 缺乏有效的、系统的开发、维护大型软件项目的技术手段和管理方法; 用户对软件需求的描述和软件开发人员对需求的理解往往存在差异,用户经常要求修改需求,开发人员很难适应; 软件开发的技术人员和管理人员缺乏软件工程化的素质和要求,对工程化的开销认识不足; 。,15,2.3 软件危机原因,2.软件危机,在项目的初始阶段对系统若明若暗就开始写程序; 认为软件是灵活的容易修
7、改,对软件需求的改变不以为然; 程序调试成功标志着工作的结束; 程序运行前无法评价程序的质量; 一个软件项目给客户提交的主要是程序,而软件文档则认为可有可无、可多可少等等;,16,2.4 软件危机仍在继续,2.软件危机,虽然发布了软件标准和规范,但在实践中执行需要额外的开销,划不来; 虽然开发了许多软件工具,但很多开发者对使用这些工具兴趣不大; 为了开发软件人们不惜用重金购买最新型号的主机和工作站而不愿意购买软件工具; 在软件开发过程中,进度迟后就增派更多的程序员突击,赶进度; 。,17,2.4 软件危机仍在继续,3.软件工程,1968年秋季,NATO(北约)的科技委员会召集了近50名一流的编
8、程人员、计算机科学家和工业界巨头,讨论和制定摆脱“软件危机”的对策。在那次会议上第一次提出了软件工程(software engineering)这个概念。 在这40年的发展中,人们针对软件危机的表现和原因,经过不断的实践和总结,越来越认识到:按照工程化的原则和方法组织软件开发工作,是摆脱软件危机的一个主要出路。,18,3.1 软件工程,3.软件工程,软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。 软件工程包括两方面内容:软件开发技术和软件项目管理。 软件开发技术包括软件开发方法
9、学、软件工具和软件工程环境。 软件项目管理包括软件度量、项目估算、进度控制、人员组织、配置管理、项目计划等。,19,3.1 软件工程,3.软件工程,软件工程釆用层次化的方法,每个层次都包括过程、方法、工具三要素,20,3.2 软件工程要素,3.软件工程,软件工程过程: 过程贯穿软件开发的各个环节,各环节之间建立里程碑; 管理者在软件工程过程中对软件开发的质量、进度、成本进行评估、管理和控制; 技术人员采用相应的方法和工具生成软件工程产品(模型、文档、数据、报告、表格等)。,21,3.2 软件工程要素,3.软件工程,软件工程方法: 软件工程方法是完成软件工程项目的技术手段。它支持项目计划和估算、
10、系统和软件需求分析、设计、编程、测试和维护; 软件工程方法依赖一组原则,它贯穿软件工程的各个环节; 软件工程方法分两类:传统方法和面向对象方法。,22,3.2 软件工程要素,3.软件工程,软件工程工具: 它为软件工程的过程和方法提供自动化或半自动化的工具支持; 将若干工具集成起来,与软件工程数据库和计算机系统构成一个支持软件开发的系统称“计算机辅助软件工程(CASE)”,系统中某一工具的信息加工结果可以作为另一工具的输入; 集成的软件工程工具再加上人的因素构成了软件工程环境。,23,3.2 软件工程要素,3.软件工程,在给定成本、进度的前提下,开发出具有可修改性、 有效性 、 可靠性、 可适应
11、性、 可追踪性 、 可移植性、 可互操作性并满足用户需求的软件产品。,24,3.3 软件工程目标,3.软件工程,在软件开发过程中,为了达到软件开发目标,必须遵循下列原则: 抽象 模块化 信息隐藏 局部化 一致性 完全性 可验证性,25,3.4 软件工程原则,4.软件生命周期模型,理论上,软件产品的开发步骤如下:,26,4.1 理论上的软件开发,开始,需求,分析,设计,实现,4.软件生命周期模型,但实际上:,27,4.1 理论上的软件开发,开始,需求,分析,设计,实现,实现2,设计2,实现3,分析2,设计3,实现4,需求2,分析3,设计4,实现5,4.软件生命周期模型,软件生命周期模型就是指软件
12、产品开发和维护过程中的一系列要执行的步骤。 根据软件状态、特征、开发活动的目的,可以把这些步骤具体分为软件定义、软件开发、软件使用和维护三部分,具体步骤有: 可行性研究,需求分析,概要设计,详细设计,实现,组装测试,确认测试,软件使用,软件维护和退役。,28,4.2 软件生命周期模型,4.软件生命周期模型,不成熟但常见的生命模型:,29,4.2 软件生命周期模型,实现第一版本,修改直到 客户满意,交付后维护,退役,4.软件生命周期模型,不成熟但常见的生命模型: 缺少规划和设计环节,软件的结构随着不断的修改越来越糟,导致无法继续修改; 忽略需求环节,给软件开发带来很大的风险; 没有考虑测试和程序
13、的可维护性,也没有任何文档,软件的维护十分困难。,30,4.2 软件生命周期模型,4.软件生命周期模型,瀑布模型是 1970 年由 W.Royce 首先提出。将软件生命周期各活动规定为依线性顺序联接的若干阶段的模型。它包括可行性分析、项目开发计划、需求分析、概要设计、详细设计、编码、测试和维护。它规定了由前至后、相互衔接的固定次序,如同瀑布流水,逐级下落。 瀑布模型表示如下:,31,4.3 瀑布模型,4.软件生命周期模型,32,4.3 瀑布模型,特点: 上一阶段的变换结果 是下一阶段的变换的 输入,相邻两个阶段 具有因果关系,紧密 相联。,需求分析,问题定义,可性行研究,计划 时期,概要设计,
14、详细设计,编 码,测 试,开发 时期,运行与维护,运 行 时 期,4.软件生命周期模型,瀑布模型是一种整体开发模型,在开发过程中,用户看不到软件是什么样子,只有开发完成后,整个软件才全部展现在用户面前,这时如果用户发现有不满意的地方,为时已晚。 瀑布模型一般适用于功能、性能明确、完整、无重大变化的软件系统的开发。例如操作系统、编译系统、数据库管理系统等系统软件的开发。应用有一定的局限性。,33,4.3 瀑布模型,4.软件生命周期模型,优点:提供了软件开发的基本框架,比靠“个人技艺”开发好的多, 有利于大型软件开发过程的人员的组织和管理 有利于 开发方法和工具的使用 提高了软件的质量和效率 缺点
15、:初始阶段指出全部需求,不可能 用户和项目负责人需要很长的时间才能拿到需求版本,如果需要修改,则会蒙受损失。,34,4.3 瀑布模型,4.软件生命周期模型,增量模型是一种非整体开发的模型。软件在该模型中是“逐渐”开发出来的。开发出一部分,向用户展示一部分,可让用户及早看到部分软件,及早发现问题。然后逐步完善,最终获得满意的软件产品。 增量模型包括两个部分:迭代和递增。,35,4.4 增量模型,4.软件生命周期模型,36,4.4 增量模型,4.软件生命周期模型,增量模型的缺点: 很难规划出每次迭代的内容和要到达的目标,验证相关的交付和产出 由于各个构件是逐渐加入到已有的软件体系结构中,存在着破坏
16、已有的系统结构 由于需要适应需求的变化而导致更改系统架构,从而使软件过程的控制失去整体性,37,4.4 增量模型,4.软件生命周期模型,增量模型的优点: 可以在早期检查软件的正确性和结构的健壮性 可以较早的减轻风险 可以在任何时候都有一个可工作的版本,38,4.4 增量模型,4.软件生命周期模型,原型系统仅包括未来系统的主要功能,以及系统的重要接口。 为了尽快向用户提供原型,开发原型系统时应尽量使用能缩短开发周期的语言和工具。 它适合于那些不能预先确切定义需求的软件系统的开发,更适合于那些项目组成员(包括分析员、设计员、程序员和用户)不能很好交流或通信有困难的情况。,39,4.5 快速原型模型
17、,4.软件生命周期模型,1988年,Barry Boehm正式发表了软件系统开发的螺旋模型,它将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。 螺旋模型沿着螺线旋转,在四个象限上分别表达了四个方面的活动,即: 制定计划确定软件目标,选定实施方案,弄清项目开发的限制条件 风险分析分析所选方案,考虑如何识别和消除风险 实施工程实施软件开发 客户评估评价开发工作,提出修正建议,40,4.6 螺旋模型,4.软件生命周期模型,41,4.6 螺旋模型,4.软件生命周期模型,螺旋模型缺陷: 螺旋模型强调风险分析,但要求许多客户接受和相信这种分析,并做出相关反应是不
18、容易的,因此,这种模型往往适应于内部的大规模软件开发。 如果执行风险分析将大大影响项目的利润,那么进行风险分析毫无意义,因此,螺旋模型只适合于大规模软件项目。 软件开发人员应该擅长寻找可能的风险,准确地分析风险,否则将会带来更大的风险。,42,4.6 螺旋模型,4.软件生命周期模型,螺旋模型优点: 支持用户需求的动态变化,易于为用户和开发人员共同理解,还可作为继续开发的基础,并为用户参与所有关键决策提供了方便。 螺旋模型特别强调原型的可扩充性和可修改性,原型的进化贯穿整个软件生存周期,这将有助于目标软件的适应能力。 螺旋模型为项目管理人员及时调整管理决策提供了方便,进而可降低开发风险。 适用于
19、需求不明确、特别是大型软件系统的开发,并支持面向规格说明、面向过程、面向对象等多种软件开发方法。,43,4.6 螺旋模型,4.软件生命周期模型,在前期需求明确的情况下尽量采用瀑布模型或改进型的瀑布模型 在用户无信息系统使用经验,需求分析人员技能不足情况下一定要借助原型 在不确定性因素很多,很多东西前面无法计划情况下尽量采用增量和螺旋模型 在需求不稳定情况下尽量采用增量模型 在资金和成本无法一次到位情况下可以采用增量模型,软件产品分多个版本进行发布 对于全新系统的开发必须在总体设计完成后再开始增量 对于编码人员经验较少情况下建议不要采用迭代等生命周期模型 增量和原型可以综合使用,但每一次增量或迭
20、代都必须有明确的交付,44,4.7 选择开发模型时注意事项,练习,A公司是一个生产并销售鞋子的公司,目前需要开发一个用于管理公司生产和销售的软件,管理从接受订单,购买原材料,生产加工到送货,销售的整个过程。 假设由你来负责这个软件项目,请问你在选择生命周期模型时会遵循哪些准则?列出在开发中可能遇到的风险?你将怎样试图降低每个风险?,45,5.软件过程概述,软件过程又称软件开发过程,是指开发软件的方式,它包括方法学和隐含的生命周期模型、技术、所使用的工具,以及所有这些因素中的最重要的因素:开发软件的人。软件开发过程围绕着5个工作流:需求流,分析流,设计流,实现流和测试流。 不同的软件开发组织有不
21、同的软件开发过程,造成这些差异的原因有: 软件开发人员软件工程技能的缺乏 软件管理人员对软件开发管理不善 不同开发组织的管理观点,46,5.1 软件过程概念,5.软件过程概述,软件过程的作用: 有效的软件过程可以提高组织的生产能力 理解软件开发的基本原则,可以帮我们做出明智的决定; 可以标准化你的工作,提高软件的可重用性和团队间的协作; 不断提高,跟上潮流,不断接收新的,最好的软件开发经验。 有效的软件过程可以改善对软件的维护 有效地定义如何管理需求变更,在未来的版本中恰当分配变更部分,使之平滑过渡; 在具体操作和相关支持中定义如何平滑地改造软件,并且这种具体操作和支持是可实施的;不可实施的软
22、件过程将很快被束之高阁。,47,5.1 软件过程概念,5.软件过程概述,自80年代以来,出现了多种面向对象方法学,其中比较典型的方法有Rumbaugh等的对象建模技术(Object Modeling Technique),Grady Booch的booch方法和Jacobson的面向对象的软件工程方法(Object-Oriented Software Engineering),以及P.Coad和E.Yourdon的面向对象分析(OOA)和面向对象设计(OOD)。 94年,Rumbaugh加入了Booch在Rational公司的小组,将OMT和Booch方法综合,提出了统一方法(Unified
23、Method ),95年,随着Jacobson的加入Rational,用例的引入,统一方法也变成了统一建模语言(Unified Modeling Language)。 由于UML仅仅是一种建模语言,不能用于指导软件开发,因此,Rational在推出UML之后,把Rumbaugh,Booch,Jacobson这3个人的面向对象方法综合起来,使用统一软件开发过程(Unified Software Development Process)来表示,通常称为统一过程(UP)。,48,5.2 统一过程,5.软件过程概述,统一过程是一种软件工程过程。它提供了在开发组织中分配任务和职责的严格方法。它的目标是按
24、照预先制定的时间计划和经费预算,开发高质量的软件产品以满足最终用户的需求。 统一过程并不是具体的一系列步骤,它是一个框架,不同的软件开发组织可以根据具体的需求来进行相应的裁剪。,49,5.2 统一过程,5.软件过程概述,UP以一种多数项目和开发组织都能适应的形式,吸收了其他软件开发中的最佳实践。UP中包含了以下几个实践。 软件的迭代开发 管理需求 应用基于构件的架构 为软件建立可视化的模型 对软件质量进行持续的验证 控制软件的变更,50,5.2 统一过程,5.软件过程概述,1987年,美国国防部(DoD)报告“过去20年,在应用新的软件开发方法和软件技术提高软件生产力和软件质量的承诺落空之后,
25、工业和政府部门认识到,软件开发的根本问题在于人们不能对软件过程进行管理”。因此,DoD成立了软件工程协会(SEI)并把它设在卡内基梅隆大学,对软件的过程进行改进,其中一项重要的成功是软件能力成熟度模型(Capability Maturity Model)。,51,5.3 能力成熟度模型,5.软件过程概述,CMM特点: 定义了当一个组织达到不同的过程成熟度时应该具有的软件工程能力; 使用了一个评估调查表和一个五分的等级方案; 定义不同的过程成熟级别上所需要的关键活动。,52,5.3 能力成熟度模型,5.软件过程概述,53,5.3 能力成熟度模型,5.软件过程概述,CMM框架 初始级软件过程的特征是无序的,有时甚至是混乱的。几乎没有过程定义,成功完全取决于个人能力。 本阶段改进重点:建立软件项目开发过程并进行有效管理;建立需求管理,明确客户要求;建立各类项目计划;建立完善的文档体系,严格执行质量监控;按CMM二级所规定的各项核心实践进行开发。,54,5.3 能力成熟度模型,5.软件过程概述,可重复级建立了基本的项目管理过程,能够追踪费用、进度和能力。有适当的必要的过程规范,使得可以重现以前类似项目的成功。 本阶段
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 南充市营山县2025年下半年公开考核招聘事业单位工作人员备考题库及一套完整答案详解
- 2026年重庆大学电气工程学院量子智能传感器团队劳务派遣工程技术人员招聘备考题库完整答案详解
- 2026年遵义市市直事业单位公开选调备考题库及一套答案详解
- 2026年聊城幼儿师范学校第二批公开招聘工作人员9人备考题库及1套完整答案详解
- 2026年梧州市长洲区荣祥投资有限公司招聘备考题库及参考答案详解
- 2026年韶关市大宝山资源综合利用有限公司招聘备考题库参考答案详解
- 2026年玄武区数据局编外人员招聘备考题库附答案详解
- 关于巴中市巴州区川剧艺术保护传承中心2025年下半年公开考试招聘工作人员的备考题库及一套完整答案详解
- 2026年萍乡市赣西公证处委托萍乡市好日子人力资源有限公司公开招聘公证员备考题库带答案详解
- 2026年能建时代新能源科技有限公司招聘备考题库及参考答案详解
- 给女朋友申请书
- 2023-2024学年北京市海淀区八年级上学期期末考试物理试卷含详解
- 2024版房屋市政工程生产安全重大事故隐患判定标准内容解读
- GB 21258-2024燃煤发电机组单位产品能源消耗限额
- 智能法理学习通超星期末考试答案章节答案2024年
- JB∕T 13026-2017 热处理用油基淬火介质
- 人教版高一化学方程式大全
- 长护险护理培训课件
- DB64 1996-2024 燃煤电厂大气污染物排放标准
- 邻近铁路营业线施工安全监测技术规程 (TB 10314-2021)
- 蓝丝带的故事
评论
0/150
提交评论