收藏 分享(赏)

软件工程 ch1 软件工程基本概念.ppt

上传人:kpmy5893 文档编号:5163175 上传时间:2019-02-11 格式:PPT 页数:52 大小:275.50KB
下载 相关 举报
软件工程 ch1 软件工程基本概念.ppt_第1页
第1页 / 共52页
软件工程 ch1 软件工程基本概念.ppt_第2页
第2页 / 共52页
软件工程 ch1 软件工程基本概念.ppt_第3页
第3页 / 共52页
软件工程 ch1 软件工程基本概念.ppt_第4页
第4页 / 共52页
软件工程 ch1 软件工程基本概念.ppt_第5页
第5页 / 共52页
点击查看更多>>
资源描述

1、第一章,软件工程基本概念,内 容,软件的概念、特点及分类 软件的发展和软件危机的原因 软件工程及其基本目标和原则 软件工程知识体系指南的目的、内容及其相关学科 软件过程和软件过程改进 CMM模型的概念、特点及分类 面向对象技术的概念和特点 软件体系结构的概念、特点及分类 高质量软件生产知识集成支持结构,软件(software)是计算机系统中与硬件相互依存的另一部分,它包括程序、数据及相关文档的完整集合。 软件危机的根本原因是软件系统高度复杂、难于驾驭。,软件及其复杂性,软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。 软件的开发与硬件不同。在软件的开发过程中没有明显的制造过程。 软

2、件在运行和使用过程期间,没有硬件那样的机械磨损、老化问题。 软件的开发和运行常常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。 软件的开发至今尚未完全摆脱手工艺的开发方式。 软件是复杂的。 软件成本相当昂贵。 相当多的软件工作涉及到社会因素。,软件的特点,NATO关于软件工程问题报告(1968),客户和设计者缺少对系统需求的了解。 由于估算技术差劲、没有为客户需求的变化预留时间,以及没有很好地了解系统就将程序任务分块。从而使得对于开销和时间上的估计往往与实际的花费有巨大的差距。 变数很大。例如,根据一项研究,程序员的生产率水平有可能相差26倍。 很难区分设计和开发(编程)工作,有些设

3、计方面的决策仍必须在编程中做出。 由于“程序开发通常并不是一系列步骤的简单叠加,每一个步骤都是相互关联的”,因此很难监控软件项目的进度。 软件系统规模的快速增长。 同一项目下各工作小组之间缺乏沟通,许多事情没有有效地协调或充斥大量无用的信息,这使得沟通效果更加糟糕,并且处理所需信息的自动化程度不高。 开发在线产品控制工具需要巨大的花费。 很难客观地度量程序员绩效和系统的性能。 软件开发人员之间在系统开发过程中,追求的不是“实用”而是“更新”和“更好”,这使得他们在单个项目中既有研究、又有开发和商品化,从而使得预测和管理变得极其困难。 对程序员需求呈快速增长之势,然而训练有素、经验丰富的程序员数

4、量有限。 难以保证大型软件系统的可靠性(减少错误及提高系统的容错性)。 软件依赖于硬件,这使得很难在不同的计算机之间实现软件的标准化。 缺少可辅助构建新的程序的可重用的软件组件。 软件维护成本往往超过系统最初的开发成本。,软件生产的复杂性 (Brook,1975),复杂性:数学和物理的简化技术之所以有用,只是因为那些系统的复杂性是非本质问题,而不是像在软件产品中那样,复杂性是本质问题。 一致性:第一类一致性是软件必须和现有系统接口,从而使软件的复杂性达到了不必要的程度;第二类一致性是人们错误地认为软件是最容易调整的部分,使得软件的复杂性达到了不必要的程度。 可变性:系统的功能体现在它的软件中,

5、通过修改软件,就可以收到改变系统功能的效果。他认为可变性是软件的本质属性,是一个不可克服的固有的复杂性问题。 不可见性:软件无法形象化表示的结果,不仅使软件难以理解,而且严重妨碍了软件专业人员之间的联系。,软件生产改进途径,软件工程定义(IEEE),软件工程是开发、运行、维护和修复软件的系统方法”。其中“软件”的定义为:计算机程序、方法、规则、相关的文档资料以及在计算机上运行时所需要的数据(1983年)。 软件工程是:把系统化的、规范的、可度量的途径应用于软件开发、运行和维护的过程,也就是把工程化应用于软件中;研究中提到的途径(1993年) 。,软件工程项目的基本目标,付出较低的开发成本 达到

6、要求的软件功能 取得较好的软件性能 开发的软件易于移植 需要较低的维护费用 能按时完成开发工作,及时交付使用,21世纪的软件生产(杨芙清,1995),软件工程演化的黑格尔的观点,永恒的法则和正在过时的实践(Boehm, 2006),未来50年软件工程教育的挑战,保持课程持续更新 预期未来的趋势并为之准备好学生 从过时的实践中分离出永恒的法则 练习与大型产业实践相关的小型学生项目 参与研究,并将结果融入课程 帮助学生学会学习 为实践者提供终生学习,知识域的组织结构类图,软件工程知识体系指南2004版,软件过程成熟度模型,软件过程(Software Process)是用来生产软件产品的一系列工具、

7、方法和实践。 软件能力成熟度模型(Software Capability Matured Model, SW-CMM)给软件组织提供如何增加对其开发和维护软件过程的控制,如何向软件工程和管理的优秀文化进化等方面的指导。,成熟度等级是妥善定义的向成熟软件组织前进中的阶段,SW-CMM的结构,SW-CMM的关键过程域,SW-CMM五个公共属性,执行约定(Commitment to Perform):描述一个组织在保证将过程建立起来并持续起作用方面所必须采取的行动。执行约定一般包括制定组织的方针和规定高级管理者的支持。 执行能力(Ability to Perform):描述为了能实施软件过程,项目或

8、组织中必须存在的先决条件。执行能力一般包括资源、组织机构和培训。 执行的活动(Activities Perform):描述为实现一个关键过程域所必须的角色和规程(即描述必须由谁做什么)。执行的活动一般包括制定计划和规程,执行计划,跟踪执行情况,必要时采取纠正措施。 度量和分析(Measurement and Analysis):描述对过程进行度量和对度量结果进行分析的需要。度量和分析一般包括一些为了确定所执行活动的状态及有效性所能采用的度量和分析。 验证实施(Verifying Implementation):描述保证遵照已建立的过程进行活动的措施。验证一般包括管理者和软件质量保证部门所作的评

9、审和审计。,成熟度提问单 (2级),软件质量保证活动是否独立于软件开发的项目管理? 在接受委托开发合同以前,是否有严格的步骤进行软件开发的管理评审? 是否有严格的步骤用以估计软件的规模? 是否有严格的步骤用以得到软件的开发的进度? 是否有严格的步骤用以估计软件开发的成本? 是否对代码错误和测试错误做了统计? 高层管理机构是否有一种机制对软件开发项目的状态进行正规的评审? 是否有一种机制能够控制软件需求的变更? 是否有一种机制控制代码变更?,成熟度提问单 (3级),是否有一个小组专门考虑软件工程过程的问题? 是否有针对软件开发人员的软件工程培训计划? 是否有针对设计评审负责人的正规培训计划? 每

10、个项目是否采用标准化、文档化的软件开发过程? 软件设计错误是否做了累积统计? 设计评审中提出的问题是否已追踪到底? 代码评审中提出的问题是否已追踪到底? 是否有一种机制确保对软件工程标准的符合性? 是否做过软件设计的内部评审? 是否有一种机制用以控制软件设计的变更? 是否做过代码评审? 是否有一种机制验证根据软件质量保证所检查的内容确能对整个工作具有代表性? 是否有机制保证回归测试的充分性?,成熟度提问单 (4级),是否有管理和支持引进新技术的机制? 是否有代码评审的标准? 设计错误和测试错误是否已预计到,是否与实际做过比较? 设计评审与代码评审覆盖是否做了度量和记录? 对每个功能测试覆盖是否

11、做了度量和记录? 是否已为所有项目的过程度量数据建立了可控制的过程数据库? 在设计评审中收集到的评审数据是否得到分析? 为确定软件产品中残留的错误分布和特征,是否对代码评审和测试中发现的错误数据做了分析? 是否对错误做了分析,以便确定出错过程与其原因的关系? 项目评审的效率是否分析过? 是否有一种机制对软件工程过程实现定期评估,并实施已经指出的改进?,成熟度提问单 (5级),是否有判别并替换过时技术的机制? 是否有分析错误原因的机制? 是否有一种机制可以得到避错的措施? 为确定避错所需的过程变更,错误原因是否已经过评审?,CMMI模型的要素,过程域列表,万维网工程的多学科性,Web工程的总体设

12、计,面向对象技术,一种软件开发方法,包括利用对象进行抽象、封装的类、通过消息进行通信、对象生命周期、类层次结构和多态等技术。,对象软件系统的6个特性,利用对象进行抽象 封装的类 通过消息进行通信 对象生命周期 类层次结构 多态性,面向对象技术关键概念,软件体系结构的定义,常见的软件体系结构构件类型及实例,常见的软件体系结构连接件类型及实例,管道和过滤器风格的体系结构,黑板风格的体系结构,数据抽象和面向对象风格的体系结构,分层风格的体系结构,模型一视图一控制器风格的体系结构,知识科学(Nonaka),组织都是通过隐性知识和显性知识之间的互动,即知识转化过程,来创造和使用知识的。 知识转化包含四个

13、过程(或称四种形式):社会化(Socialization)、外部化(Externalization)、组合化(Combination)和内部化(Internalization),即著名的SECI知识螺旋模型。 组织只有建立起动态商业系统(Dynamic Business System),才能真正有效率(Efficiently)和有效果(Effectively)地创造并应用知识。,知识系统工程(王众托),组织管理的技术系统工程 知识技术是为人类经济和社会活动增加价值而进行的知识的识别、获取、存储、处理、分发及创造的相关的方法论、方法、规程及工具的学科。不仅有显性知识、也包括隐性知识及其关系。途径

14、不仅有面向技术的,也包括面向人类行为的。 知识管理主要是知识循环,包括组织中知识的获取、分析和交流,也与有用信息的搜索和发现问题相关。 知识系统工程就是对知识进行组织管理的技术。,软件管理三大原则(Humphrey),承认您所从事的业务与软件相关 质量必须是最优先考虑的事情 只有有纪律的且积极向上的员工才能开发出高质量软件,第八个管理怎样赶超印度、美国软件(罗叶明),美国经验 中国设计 全球销售,科学模型的论域 (Warfield),知识模型的论域 (杨建梅),哲学信仰 理论 方法论 方法 应用,高质量软件生产的知识集成支持结构,要点,软件工程是:把系统化的、规范的、可度量的途径应用于软件开发

15、、运行和维护的过程,也就是把工程化应用于软件中;研究中提到的途径。 SWEBOK包括10个知识域:(1)软件需求;(2)软件设计;(3)软件构造;(4)软件测试;(5)软件维护;(6)软件配置管理;(7)软件工程管理;(8)软件工程过程;(9)软件工程工具和方法;(10)软件质量。 SWEBOK涉及到了8个相关的学科:计算机工程、计算机科学、管理、数学、项目管理、质量管理、软件人类工程学和系统工程。,要点,软件体系结构(architecture)方法试图以类似建筑学的观点去构造软件,并以更精确的方式刻画软件的结构。 软件体系结构作为一门新的学科,其研究范围包括软件系统整体的组织和控制结构、通讯

16、、同步和数据存取的协议、系统单元的功能分配、物理分布、系统单元的集成、系统性能及在设计方案间进行选择等问题。 软件体系结构是成功解决软件复杂度问题和质量问题的一把金钥匙。作为软件系统的自然属性,体系结构存在于每一个软件系统之中。 软件体系结构奠基于程序算法、数据结构和对象设计,它是系统实施的抽象描述。 软件体系结构概括了整体系统结构、功能部件分解、部件的本质和特性、部件的界面和部件之间的通讯协议和整体性布局策略及法则。,要点,高质量软件生产要掌握图1-23的知识集成支持结构,发展成为一个言传性知识和意会性知识的不断转化、创新和集成的设计过程。 这个过程也是从系统直觉、知识融合、过程设计和实施,

17、项目商业运作到软件商务的不断解决认知复杂性的组织学习实施过程。,相关中国系统分析员论文试题,论软件开发范式的选用原则(1995) 论面向对象技术及其应用(1996) 论企业网络计算的组成与特性(2000) 论用例的获取方法(2004) 论应用系统开发范围和功能的确定(2004),相关世界软件工程大会论文,A view of 20th and 21st century software engineering Empirically driven SE research: state of the art and required maturity Challenges in automotiv

18、e software engineering, Living assistance systems: an ambient intelligence approach Five years of product line engineering in a small company,相关世界软件工程大会论文,Controlling the Complexity of Software Designs Architecting in the Face of Uncertainty: An Experience Report The modular structure of complex systems Software engineering in 1968 Research directions in software technology,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > 软件工程

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报