Chapter-1_Why-Software-Engineering
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
♦ Three models to assess ROI(Return on investment)(投资回 报)
– A payback model(偿还模型) – An accounting rate-of-return model(记帐的回报率模型) – A discounted cash flow model(折扣现金流模型)
What is Software Engineering?
♦ 工业工程(机械工程,电子工程,建筑工程 等)就是综合运用各种专门知识和技术,为 把生产要素组成更有效的系统所从事的规 划、设计、评价和创新活动。 ♦ 软件工程就是综合运用计算机和计算的知 识,为把生产要素组成更有效的系统(软 件系统)所从事的分析、规划、设计、测 试评价和创新活动。 ♦ 简单地说,就是运用计算机和计算的知识 来更有效地解决问题的活动。
CMM-SEI能力成熟度模型
•CMM五级成熟水平 •能力评定 已管理级 已确定级 可重复级 初始级 优化级
不断改进 的过程
可预测的过程 标 Context of the Business Environment
♦ 通过内嵌软件的商业所提供的产品和服务 来衡量质量的。商品价值(价格) ♦ 但软件工程很少将范围扩展到商业领域。 ♦ 就是说,我们考虑的是产品的技术价值而 不是更广泛地考虑它们的商业价值,并且 我们仅仅是基于生产产品的技术质量来做 决策的。 ♦ 换言之,我们假定改进技术质量将自动转 化为商业价值。
运用计算机和计算的知识来帮 助解决问题
其他学科的理论
解决方案
Problem-Solving
♦ 工程本质上是研究解决问题的过程 ♦ 一般来说,问题是如何被解决的呢?或者 说解决问题的一般过程是怎样的呢? ♦ 以如何到达纽约为例
– 活动,技术,方法,工具
Analysis vs. synthesis of a problem
problem-solving
Method,Tools,procedures,Paradigm
♦ Method or technique: procedure for producing a result 产生某种结果的过程 ♦ Tool: instrument or automated system for accomplishing something能以更好的方式完成某件事情的设备或自动化 系统 ♦ Procedure: recipe for combination of tools and techniques一致地产生特别产品的工具和方法的组合 ♦ Paradigm: style of doing something它提供了一个特别的
Quality in the Context of the Business Environment
♦ Technology value→ Business value ♦ 几次想以定量和有意义的方式将技术价值和商业价值关联起来 的尝试
– 按照CMM改进开发过程,Hughes Aircraft 将生产率提高了4 倍,节省了 几百万美元。 – 在过程改进后,Raytheon 生产率加倍,且每投资一美元就得到7.7 美元 的回报。 – 位于俄克拉荷马州的Tinker 空军基地的技术人员说生产率有6.35 倍的改 进。
The Quality of the Process
♦ 软件开发过程中中的许多活动影响最终产 品质量。 ♦ 因此,开发和维护过程质量跟产品质量同 等重要。
– 何时何地我们可能发现一个特定种类的fault?
– 在开发过程中怎样较早地发现fault? – 我们怎样固定fault容忍度以便我们最小 化一个fault成为failure的可能性? – 有替代活动使得过程更有效(率)确保 质量?
Why Software Engineering?
中国科学技术大学软件学院 孟宁
2010年03月
Agenda
♦ 工程及软件工程的概念 ♦ Analysis vs. synthesis of a problem – Method,Tools,procedures,Paradigm ♦ What Is Good Software? – 质量的观点 • The quality of product产品质量 • The quality of process过程质量 • The quality in the context of the business environment 商业环境中的质量 ♦ Who Does Software Engineering? – 用户、客户与开发者 ♦ 系统方法和工程方法 ♦ Members of Development Team ♦ 7 key factors that have changed software engineering ♦ 8 Discipline of Software Engineering
♦ 系统(System)定义为如下事物的集合 (collection):一个实体集、一个活动集、一 个实体与活动的关系的描述,和一个系统 边界的定义。
McCall’s quality model
♦ 将用户外部视角和开 发者的内部视角关联 起来的模型
可维护性 适应性 可测试性 产品 修改 产品 变迁 产品 运行 正确性 可靠性 完整性 可用性 效率性 可移植性 可复用性 互用性
The Quality of the Product
♦ ♦ ♦ ♦ ♦ ♦ McCall’s quality model Boehm’s quality model ISO quality model IEEE quality model …… in Chapter 12
软件工程 — 经典定义3
♦ “Software engineering is that form of engineering that applies the principles of computer science and mathematics to achieving cost-effective solutions to software problems.” [CMU/SEI-90-TR003] ♦ 软件工程就是应用计算机科学和数学的原 理来经济有效的解决软件问题的一种工程。
What Is Good Software?
♦ 好的软件工程必须总是想方设法保证软件 质量。 ♦ 软件质量意味着什么?
Garvin 质量的观点
♦ 超越的观点(Transcendental view):质量是可以认识
而不能定义的(something we recognize but can’t define)
相联系的(tied to inherent product characteristics)
♦ 基于价值的观点( Value-based view):质量取决于
顾客愿意支付的金额(depends on customer’s willingness to pay)
质量的内部视角与外部视角
♦ 用户和制造业的视角是从外面考虑产品, 而产品视角从内部窥视并评估一件产品的 内部特性。 ♦ 一般好的内部质量指标将导致好的外部质 量指标,如可靠性和可维护性。 ♦ 好的外部质量指标能断定会有好的内部质 量指标吗? ♦ 需要开发出联结产品视角和用户视角的模 型。
软件工程==可工作的代码?
♦ 同一个问题的解决方法可能有多中,其中 一种方式可能更有效率、更精确、更易修 改、更易使用或更易理解。(选择最优解) ♦ 任何黑客都能写出可工作的代码,但是要 产生健壮的、易于理解和维护、其工作起 来尽可能最有效率和效果的代码,是需要 有专业软件工程师的技能和理解力的。软 件工程是设计和开发高质量的软件。
软件工程 — 经典定义1
♦ “The establishment and use of sound engineering principles in order to obtain economically software that is reliable and works on real machines.” [Fritz Bauer] ♦ 软件工程就是为了经济地获得可靠的且能 在实际机器上高效运行的软件而建立和使 用的完善的工程原理。
软件工程 — 经典定义2
♦ “The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software” [IEEE 1990] ♦ 软件工程是将系统的、规范的、可度量的 方法应用于软件的开发、运行和维护的过 程,即将工程化应用于软件中,并研究上 述提到的途径。
CMM模型
♦ 软件开发能力的成熟度模型(Capability Manurity Model for Software,CMM)是软件 工程协会SEI(Software Engineering Institution)在卡内基.梅隆大学开发完成的对 一个组织软件开发能力进行评价的标准,它 侧重于对软件开发过程和开发方法论的考 察。
Who Does Software Engineering?
软 件 开 发 中 的 参 与 者
Systems
♦ 系统元素
– 一个活动(Activity)就是发生于系统中的某事。 – 活动中涉及的元素被称为对象(object)或实 体(entity)。 – 将实体和它们的活动匹配-实体和活动间的关系
软件工程 — 概念
♦ 什么是工程? ♦ 什么是工程化? ♦ 什么是软件工程?
软件工程 — 概念
“软件工程” ----Software Engineering
于1968年 NATO 组织在 德国召开的一次会议上提出
是把软件当作一种工业产品,要求 “采用工程化的 是把软件当作一种工业产品, 原理与方法对软件进行计划、 原理与方法对软件进行计划、开发和维护 ”。
Process Models
♦ 在20 世纪90 年代,在软件工程中过程建模 和过程改进是极力宣扬的焦点。 ♦ CMM ( Capability Maturity Model ) ♦ CMMI ( Capability Maturity Model integration ) ♦ ISO 9000 model ♦ SPICE ( Software Process Improvement and Capability dEtermination )
构建软件的方案或哲学
♦ 软件工程师使用工具、方法、程序和范例来增强他们软件 产品的质量,目标就是使用有效的富有成果的途径来产生 有效的问题解决方案。
Quality terminology
♦ Error(错误): human mistake ♦ Fault(缺陷): result of mistake, evidenced in some development or maintenance product - 系统内部 ♦ Failure(故障): departure from the system’s required behavior - 外部
Quality in at Least Three Way
♦ The quality of product产品质量 ♦ The quality of process过程质量 ♦ The quality in the context of the business environment商业环境中的质量
♦ 用户的观点(User view ):质量是恰好达到目的(fitness
for purpose )
♦ 制造的观点( Manufacturing view):质量是与需求说
明的一致(conformance to specification)
♦ 产品的观点( Product view):质量是与产品的内在特性