您好,欢迎访问三七文档
第一讲软件工程学概论提纲※软件概念、分类、特征※软件工程概念:软件危机、工程、软件工程核心问题、魔鬼四角、四大挑战※软件工程学学科性质与发展简史学科知识体系※软件工程师分类、职业路线图、职业道德、胜任力品质软件—定义※软件=程序+数据+文档程序——计算机指令集数据——支持程序的数据及其结构文档——各类文档制品※软件是:人造产品(制品、工件)脑力劳动的结晶3软件—分类※分类依据很多规模、领域、成本投入、…※从受众的角度,分为:涉众软件面向广大用户群体如:MSOffice、Linux、…定制软件面向特定用户或用户组织如:在线银行系统、特定硬件的驱动软件、…4软件—基本特征※非物质,不遵循物理定律※逻辑实体,不可触摸※无磨损故障率曲线5硬件故障率变化曲线磨损时间缺陷修正5软件故障率变化曲线理想情形真实情形副作用提升故障率修正失败率时间软件—基本特征※非物质,不遵循物理定律※逻辑实体,不可触摸※无磨损故障率曲线※手工开发,过程复杂※维护成本高※充满创造性,因而唯一※复制成本极低6软件—突出特征※软件是复杂的!软件是迄今为止最复杂的人造产品——F.Brooks※软件是频变的!※软件是商品!软件无关乎比特、字节和协议,仅关乎利润和损益——LouisGerstner7软件也许根本不同于历史上已经出现的任何产品。故而,软件实践不能、也不应完全参照传统实践进行。8MichealMahoney(1939—2008)是美国普林斯顿(Princeton)大学科学史教授,对软件工程学科有独到研究。个人网址:~hos/Mahoney/MichealMahoney提纲※软件概念、分类、特征※软件工程概念:软件危机、工程、软件工程核心问题、魔鬼四角、四大挑战※软件工程学学科性质与发展简史学科知识体系※软件工程师分类、职业路线图、职业道德、胜任力品质软件危机—概念※“软件危机”1968年NATO-SE会议首次正式使用原意:低下的软件生产效率难以满足日益快速增长的计算需求的现象泛指:如下典型现象:软件生产率低成本高质量低风险高失败率高…10危机一半是危一半是机危中有机机中存危软件危机—实证Standish机构组织的Chaos年度系列报告总结:111995199820002002200420062008项目失败比例31%28%23%15%18%19%24%项目平均成本超支比例180%69%45%43%56%47%54%项目平均时间拖延比例164%79%63%82%84%72%79%软件危机—为什么存在?※主因一:软件的固有复杂性软件及其开发实践都极其复杂,且越来越复杂。※主因二:人的局限性事务越复杂,认知和处理难度就都越大。※还有,软件重要性的增强不重要的事物当然没有危机(Why?!)12软件危机—为什么存在?软件危机将长期存在!※“危机”---不恰当暗示一种短期的、急性的严重问题上述问题则是长期的、慢性的近年常用“软件困扰”或“软件苦恼”来替换13EdsgerDijkstra软件危机真是一个无药可治的顽疾。声称能医治它的人都是庸医、骗子和吹牛皮的人。1968NATO(北约)—SE首会14危机工程化解决方法※为了应对“软件危机”,专家们主张以工程化方法开发软件产品,即软件工程(SE)该词于1968年NATO会议首次使用力求辟除以往实践的“非工程”特征※SE主题:控制软件及其开发过程的复杂性从而消减软件危机及其负面影响15“工程”—不同于科学※工程不同于科学※工程教育尤其不应同于科学教育!16人类行为观察度量实验构造评估科学工程更好的工具更多的知识“工程”—概念框架17软件工程—定义※软件工程(SE)指科学知识和工程方法在软件开发、维护和演化过程中的系统应用,即软件的工程化。为应对软件危机而提出18核心问题工程师如何以快速、便宜和高质量的方式开发出正确的软件产品?软件工程—“魔鬼四角”※“四角”之间总存在冲突或制约关系,无法全被完整有效地满足。在传统“魔鬼三角”之上新增了“功能”:※直接影响其他三角※客户的首要关注对象※用户的首要关注对象事实:产品的大部分功能都没能准确映射用户需求。(之后阐述)19软件产品功能质量时间成本软件工程—“魔鬼四角”※功能越多,成本越高,且时间越长。20软件工程—四大挑战21①规模②生产率与质量③可重复④频变四大挑战—规模22规模改变一切。LindaNorthrop是一位知名的软件工程学者,负责SEI的软件产品线项目。LindaNorthrop四大挑战—规模※待开发软件的规模越大,项目失败率就越高。23DeRemer规模定律24能有效用于小型软件产品和项目的工程技术和经验都不能同等有效地应用于大型软件产品和项目。四大挑战—生产率与质量※软件危机的典型体现:低生产率低质量※软件的生产率与质量之间存在必然联系。Brooks“银弹”定律Mills生产率定律※“银弹”:原意:能够在十年内提高软件生产率、可靠性和简化程度十倍以上的工程技术泛指:能够在短时间内迅速而显著改善软件生产率和质量的技术、过程、语言或工具25Brooks“银弹”定律出自FrederickBrooks在1986年发表的经典论文《没有银弹》26软件开发没有“银弹”,即不存在能够在短时间内显著改善软件生产率和质量的技术、过程、语言和工具。Mills生产率定律出自HarlanMills在1988年提出的论断27软件的生产率与质量存在紧密关联关系;一般的,低质量软件的生产率肯定不高。HarlanMills四大挑战—可重复性※软件过程欠缺可重复性受影响的因子过多,无法控制※工程师和团队也无法保持稳定的生产性能智力劳动本身就缺乏稳定性※学者们普遍认为,“可重复性”是本世纪软件工程研究和实践所要着重关注的议题。※警告:实践者不是机器人,对于创造性工作,当然无法表现出稳定的工作效能。28四大挑战—频变性※变更创造一切,但同时又毁掉一切。※回顾上一讲的“软件频变性”常识:29软件必然会持续变更,且还将更加频繁。变更的影响范围必须得到有效控制,以避免对软件整体造成不必要的负面影响。提纲※软件概念、分类、特征※软件工程概念:软件危机、工程、软件工程核心问题、魔鬼四角、四大挑战※软件工程学学科性质与发展简史学科知识体系※软件工程师分类、职业路线图、职业道德、胜任力品质软件工程学—学科性质※软件工程的学科特征独特:独特的对象---软件及相关制品艺术特征:过程充满创造性,不可重复工艺特征:长期被认为是工艺活尚未成熟:缺乏规范以及对规范的认可工程学科:使用工程化方法和过程31警告:目前,软件工程学科尚未成熟。软件工程学—学科发展简史321950年代1960年代1970年代1980年代1990年代2000年代软件出现天才程序员小程序编程难软件危机软件工程过程模型开发原则过程工程化结构化方法面向对象需求管理架构设计质量控制敏捷方法构件组装???软件工程学—学科知识体系※“软件工程知识体”指南(SWEBOK)第3版定义软件工程知识框架,包括15个知识域33软件需求软件设计软件构造软件测试软件维护变更管理工程管理工程过程软件工程模型与方法软件质量软件工程专业实践工程经济学计算基础数学基础工程基础参考SWEBOK官网:技术域管理域基础域软件工程学—核心知识体※核心知识,即在学科知识体系中处于核心地位的知识常识理念法则定律最佳实践34概念常识法则最佳实践定律理念软件工程学—核心知识体※常识:专业实践所需的最基本知识如:软件复杂性和频变性常识※理念:经长期实践和反思而形成的思想观念的抽象概括如:分而治之和拥抱变更理念※法则:描述“怎么做”(即“How”)如:关注点分离法则※定律:描述“某现象是什么或怎么发生”(即“What”)如:DeRemer定律、银弹定律、…※最佳实践:由法则衍生的应用或技术实例如:需求分簇实践35提纲※软件概念、分类、特征※软件工程概念:软件危机、工程、软件工程核心问题、魔鬼四角、四大挑战※软件工程学学科性质与发展简史学科知识体系※软件工程师分类、职业路线图、职业道德、胜任力品质37你最大的敌人是你自己.21世纪的工程师应该是什么样的?一边学习、一边决策、一边行动!※本世纪的工程师应当具备如下四项特征:什么都能懂什么都能做与任何地方的任何人都能协同工作富有想象力且能将梦想变成现实38软件工程师—范围与分类※软件工程师:从事软件产品开发、维护或演化的专业人才及职业需求工程师软件设计师(包括架构和界面设计师)程序员质量工程师(包括测试工程师)维护工程师…※软件管理者区别于一般的工程师39职业路线图—以IBM为例40程序员(副工程师)项目经理职能经理系统经理部门主管高级工程师首席工程师技术顾问技术院士2年+2年+3年+3年+3年+2年管理型路线技术型路线(项目)工程师职业道德IEEE—ACM颁布了《软件工程师职业道德和操守规范》,给定了如下方面的职业道德:①对待公众:当以公众利益为至上目标②对待客户和雇主:在不违背公众利益的前提下,致力于满足客户和雇主的最高利益③对待产品:确保产品及相关改进都符合最高的专业标准④对待判断:维护职业判断的完整性和独立性⑤对待管理:管理者应提倡并践行合乎道德规范的软件工程管理41微软的十大工程胜任力特征①问题分析和解决能力②精湛的工程技术③执着追求质量④充满自信⑤能跨界合作⑥面向客户的创新⑦懂得管理个体和项目⑧有战略远见⑨冲击力和影响力⑩有人际意识42小结※软件=代码+数据+文档(+知识)。软件开发必须有效处理高复杂度,敏捷拥抱变更,并重点关注成本投入和价值产出。※软件工程实践的四大挑战:规模、生产率与质量、可重复、频变※软件工程学独特、艺术特征、工艺特征、尚未成熟、工程学科Q&A
本文标题:1_软件工程学概论
链接地址:https://www.777doc.com/doc-3207579 .html