第7章 软件工程思想

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

软件工程导论(7)软件工程思想zhu.kerry@gmail.com思想?我们太过倾向于遵循我们自己的乐观主义。我们太喜欢忽视真理的声音,而去听从万灵药贩卖者的诱惑zhu.kerry@gmail.com本章内容4.1永远不可低估思想的作用4.2以人为本4.3软件开发不是一门艺术4.4向传统工业学习4.5软件工程的例外4.6软件工厂思想zhu.kerry@gmail.com本章内容4.1永远不可低估思想的作用4.2以人为本4.3软件开发不是一门艺术4.4向传统工业学习4.5软件工程的例外4.6软件工厂思想zhu.kerry@gmail.com永远不可低估思想的作用软件工程思想决定了软件工程的策略和方法水流经管道的时候,它的形状是管道的形状;生命的泉水流经你的时候,它的形状就是你的思想的形状.思想决定行为,行为决定命运.因此,要改变命运,就要改变行为;要改变行为,就是改变思想。zhu.kerry@gmail.com本章内容4.1永远不可低估思想的作用4.2以人为本4.3软件开发不是一门艺术4.4向传统工业学习4.5软件工程的例外4.6软件工厂思想zhu.kerry@gmail.com以人为本管理学的佐证由智力活动所决定软件工程是知识工程管理中心从物本管理到人本管理,经济人社会人以人为本尊重软件团队的每一个人,调动每一个人的工作激情和创造能力,发挥每个人的潜力知识工程的管理就是一种人性化的管理和全员参与的管理,组织的价值需要每个人的价值体现出来zhu.kerry@gmail.com本章内容4.1永远不可低估思想的作用4.2以人为本4.3软件开发不是一门艺术4.4向传统工业学习4.5软件工程的例外4.6软件工厂思想zhu.kerry@gmail.com软件危机软件是高科技的智力产品,需要很高的创造性,但还是不能抹去其工业性软件质量问题直接危害到人们的生命财产、会造成国家经济的严重损失,企业会为此付出很大的代价艺术可以定义为“人类以创造美为主要目的的技术及其产品”zhu.kerry@gmail.com本章内容4.1永远不可低估思想的作用4.2以人为本4.3软件开发不是一门艺术4.4向传统工业学习4.5软件工程的例外4.6软件工厂思想zhu.kerry@gmail.com向传统产业学习什么?zhu.kerry@gmail.com4.4向传统工业学习4.4.1客户为导向4.4.2需求分析是基础4.4.3过程决定结果4.4.4持续改进过程4.4.5缺陷预防4.4.6围绕项目开展工作4.4.7验证和确认缺一不可4.4.8以架构设计为中心zhu.kerry@gmail.com客户为导向满足客户的期望超越客户的期望一切从客户出发体现在具体过程中让客户参与到公司的质量管理中客户为导向就是以客户为中心,将客户的需求、期望和关心作为组织管理的活动原则和价值准则,充分体现了“以客户为关注焦点”的原则客户为导向是一种文化,也是一种策略和方针。zhu.kerry@gmail.com质量=客户满意度zhu.kerry@gmail.com以客户为导向,最直接体现在客户需求工作之上对需求不重视,导致软件开发的返工率很高、成本高、质量低等一系列问题在项目的最后阶段修正需求错误比在需求阶段修正它要多花费200倍的代价需求分析是基础在传统的制造业,产品的每个新特性都是经过仔细推敲后才确定下来zhu.kerry@gmail.com过程决定结果有什么流程,就有什么结果,流程决定了结果产品是构建于过程之中自动化生产线就是一个很好的例子“七人分粥”故事质量不是检验出来的,而是构建出来的zhu.kerry@gmail.com过程活动决定了成本zhu.kerry@gmail.com持续改进过程PDCAIDEALDMAICQIP持续改进,正是冰冻非一日之寒,不能三天打鱼、两天晒网zhu.kerry@gmail.comPDCAzhu.kerry@gmail.comIDEALzhu.kerry@gmail.comDMAIC定义测量分析改进控制zhu.kerry@gmail.comQIPzhu.kerry@gmail.com缺陷预防软件的劣质成本占开发的总成本在40%以上如果第一次就把事情做对了,就消除了劣质成本相比软件测试/质量检验,更有效的方法是开展预防缺陷的活动在开发的每个阶段实施根本原因分析,为有效开展缺陷预防活动提供依据zhu.kerry@gmail.com项目管理已经很成熟,形成比较完整的体系不管大大小小的事情,都可以看作一个项目把一个个项目做好了,就把整个工程做好了围绕项目开展各项工作围绕项目开展工作项目zhu.kerry@gmail.com验证和确认缺一不可验证过程:Arewebuildingtheproductright?是否正确地构造了软件?即是否正确地做事,验证开发过程是否遵守已定义好的过程规范。确认过程:Arewebuildingtherightproduct?是否构造了正确的软件?即是否正在做用户真正所需要的产品zhu.kerry@gmail.com以架构设计为中心软件架构设计决定了软件系统的性能、可靠性、扩充性和维护性等良好的架构设计能适应用户不同的需求、支持用户需求的改变RUP也提倡“以架构设计为中心”的理念zhu.kerry@gmail.com本章内容4.1永远不可低估思想的作用4.2以人为本4.3软件开发不是一门艺术4.4向传统工业学习4.5软件工程的例外4.6软件工厂思想zhu.kerry@gmail.com软件工程有什么不同?zhu.kerry@gmail.com4.5软件工程的例外4.5.1迭代4.5.2敏捷开发思想4.5.3持续构建和集成4.5.4永远的Beta4.5.5面向对象是一种思想4.5.6软件工程应归为知识管理zhu.kerry@gmail.com为什么选择迭代?市场的压力和竞争策略的需要产品开发的资金、周期和资源是有限的软件的复杂程度不断提高,增加了项目失败的可能性,将一个产品进行分阶段处理,可以尽早发现产品的市场问题或方向错误,降低风险。对于越来越复杂、庞大的系统,多数情况下不容易一次性整体实现,而是通过分解逐步实现。软件比较容易修改或扩充,在技术上可以保证软件迭代的可行性。zhu.kerry@gmail.com迭代增量开发迭代zhu.kerry@gmail.com迭代开发流程螺旋模型RUP模型zhu.kerry@gmail.comXP-eXtremeProgramming极限编程最简单的可能就是最有效的极限编程适合小团队(2-10programmers)“高风险”快速变化或不稳定的需求强调可测试性格言“沟通、简化、反馈、激励”KentBeckzhu.kerry@gmail.comXPLifecycle-生命周期zhu.kerry@gmail.comTDD-Test-DrivenDevelopment测试驱动开发为新功能写测试脚本开始编译修正编译错误执行测试查看结果(失败)写代码重新执行测试直到“Pass”代码重构zhu.kerry@gmail.comTDD–流程zhu.kerry@gmail.com持续构建和测试系统的集成从写代码的第一天就开始,而且持续集成借助于持续集成,绝大多数缺陷在其引入的同一天就可以被发现每日验证,包含了持续的集成验证,可以配合每日构建和持续集成的工作在持续集成的驱动下,也加快了项目的进展良好的开发环境和自动化测试可以保证持续构建和测试的实现zhu.kerry@gmail.com永远的Beta简单、朴素的Web2.0思想“追求卓越、永无止境”的境界对持续构建的发展充分挖掘大众的智慧和体验“永远的Beta”正在成为互联网软件开发的主流思想之一,创造一个更为灵活、发展更为迅速的软件工程环境zhu.kerry@gmail.com面向对象是一种思想封装、继承性和多态性从具体到抽象,再从抽象到具体需求定义更彻底改善软件的稳定性和可维护性zhu.kerry@gmail.com面向对象的编程语言zhu.kerry@gmail.com软件工程知识管理需要同化和集成的概念工作是和人打交道能产生无形的智力产品软件工程是一种智力活动,应归为知识工作和管理,是因为其符合知识工作的特点zhu.kerry@gmail.com知识管理的原则工作人员了解自己的工作,或者说比其他人员(如管理人员)更理解自己的工作对于开发人员不能完全靠工作成果的量化来完成绩效考核,不能实施计件工资等,所以必须让知识工作人员管理自己,这样才能真正发挥他们的潜力需要不断激励他们,不断指导和帮助他们,培养他们的领导力zhu.kerry@gmail.com知识管理体系个体知识组织化隐性知识显性化零散知识系统化zhu.kerry@gmail.com本章内容4.1永远不可低估思想的作用4.2以人为本4.3软件开发不是一门艺术4.4向传统工业学习4.5软件工程的例外4.6软件工厂思想zhu.kerry@gmail.com软件工厂存在吗?zhu.kerry@gmail.com4.6.1模块化思想4.6.2面向构件思想4.6.3软件复用4.6.4中间件4.6.5自动化无处不在4.6软件工厂思想zhu.kerry@gmail.com模块化思想“化繁为简”朴素思想的一种表现将复杂的系统分解为相对简单的模块,对单一模块容易各个击破新产品(系统)=通用模块(不变的部分)+专用模块(变动的部分)模块能标准化和通用化zhu.kerry@gmail.com面向构件的思想体现在需求和设计的层次上构件是可独立配置的单元构件的实现是严格封装的构件可以在适当的环境中被复合使用面向构件思想还强调程序在动态运行时构件的自动装载,和“软件工厂”的概念已非常接近面向构件思想面向构件是一种前沿的软件设计思想,将成熟的工业化生产中标准构件、组装、自动化生产线等概念引入到软件开发过程中,并吸收了软件开发的结构化方法和面向对象方法中的一些优点而形成的zhu.kerry@gmail.com软件复用软件复用就是设法使用已有的软件组成元素来构成新的系统,以减少软件开发所需的费用和时间,提高软件的可维护性和可靠性基于软件函数库的软件复用生成方式,即对模式的复用组装方式zhu.kerry@gmail.com中间件中间件(middleware)可以看作是面向构件的开发思想的一个实例,或者说是软件复用思想的延伸中间件可以为不同领域内的应用提供系统结构上的支持和标准的服务组件等中间件已成为许多标准化工作的主要部分zhu.kerry@gmail.com自动化无处不在(1)软件开发的自动化思想可以说是来源于现代工业的自动化生产线,也可以说来源于计算机本身软件开发的自动化思想应该无处不在,从自动构建软件包开始,到自动传递软件包、自动部署、自动验证和测试、自动生成报告、自动发出邮件通知等,形成一个自动化的开发环境zhu.kerry@gmail.com自动化无处不在(2)zhu.kerry@gmail.comQ&A

1 / 53
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功