软件工程思想1
综合能力考核表详细内容
软件工程思想1
第一章 软件工程基本观念 本章讲述软件工程的基本观念,是关于软件工程宏观上的探讨。如果你是软件公司的 老板,用不着在第一线工作,那么看这一章就够了。但你一定要让员工们相信不停地工 作是人生最大的快乐,并且让他们把本书看完。 1.1节讲述软件工程的目标和常用的软件工程模型。1.2节讲述软件开发的基本策略: “复用”、“分而治之”、“优化——折衷”,有助于指导实践者选择方法和产生新方法。1.3节 例举一些不正确的观念,取材于早期软件人员比较幼稚的想法,初学者可以引以为戒。 1.4节探讨一些有争议的观念。 看完本章,要树立这样的信念:软件开发过程中的坎坎坷坷,仿佛只是人脸的凹凸不平 ,用热水毛巾一把就可抹平。让我们高举程序主义、软件工程思想的伟大旗帜,紧密团 结在以Microsoft为核心的软件公司周围,沿着比尔·盖茨的生财之道,不分白天黑夜地 编程,把建设有中国特色的软件产业的伟大事业全面推向21世纪。 1.1 软件工程的目标与常用模型 软件工程的目标是提高软件的质量与生产率,最终实现软件的工业化生产。质量是软 件需求方最关心的问题,用户即使不图物美价廉,也要求个货真价实。生产率是软件供 应方最关心的问题,老板和员工都想用更少的时间挣更多的钱。质量与生产率之间有着 内在的联系,高生产率必须以质量合格为前提。如果质量不合格,对供需双方都是坏事 情。从短期效益看,追求高质量会延长软件开发时间并且增大费用,似乎降低了生产率 。从长期效益看,高质量将保证软件开发的全过程更加规范流畅,大大降低了软件的维 护代价,实质上是提高了生产率,同时可获得很好的信誉。质量与生产率之间不存在根 本的对立,好的软件工程方法可以同时提高质量与生产率。 软件供需双方的代表能在餐桌上谈笑风生,归功于第一线开发人员的辛勤工作。质量 与生产率的提高就指望程序员与程序经理。对开发人员而言,如果非得在质量与生产率 之间分个主次不可,那么应该是质量第一,生产率第二。这是因为:(1)质量直接体现 在软件的每段程序中,高质量自然是开发人员的技术追求,也是职业道德的要求。(2) 高质量对所有的用户都有价值,而高生产率只对开发方有意义。(3)如果一开始就追求 高生产率,容易使人急功近利,留下隐患。宁可进度慢些,也要保证每个环节的质量, 以图长远利益。 软件的质量因素很多,如正确性,性能、可靠性、容错性、易用性、灵活性、可扩充 性、可理解性、可维护性等等。有些因素相互重叠,有些则相抵触,真要提高质量可不 容易啊! 软件工程的主要环节有:人员管理、项目管理、可行性与需求分析、系统设计、程序 设计、测试、维护等,如图1.1所示。 图1.1 软件工程的主要环节 软件工程模型建议用一定的流程将各个环节连接起来,并可用规范的方式操作全过程 ,如同工厂的生产线。常见的软件工程模型有:线性模型(图1.2),渐增式模型(图1 .3),螺旋模型,快速原型模型,形式化描述模型等等 [Pressmam 1999, Sommerville 1992]。 图1.2 软件工程的线性模型 时间 进度 图1.3 软件工程的渐增式模型 最早出现的软件工程模型是线性模型(又称瀑布模型)。线性模型太理想化,太单纯 ,已不再适合现代的软件开发模式,几乎被业界抛弃。偶而被人提起,都属于被贬对象 ,未被留一丝惋惜。但我们应该认识到,“线性”是人们最容易掌握并能熟练应用的思想 方法。当人们碰到一个复杂的“非线性”问题时,总是千方百计地将其分解或转化为一系 列简单的线性问题,然后逐个解决。一个软件系统的整体可能是复杂的,而单个子程序 总是简单的,可以用线性的方式来实现,否则干活就太累了。线性是一种简洁,简洁就 是美。当我们领会了线性的精神,就不要再呆板地套用线性模型的外表,而应该用活它 。例如渐增式模型实质就是分段的线性模型,如图1.3所示。螺旋模型则是接连的弯曲了 的线性模型。在其它模型中都能够找到线性模型的影子。 套用固定的模型不是程序员的聪明之举。比如“程序设计”与“测试”之间的关系,习惯 上总以为程序设计在先,测试在后,如图1.4(a)所示。而对于一些复杂的程序,将测 试分为同步测试与总测试更有效,如图1.4(b)所示。 (a) (b) 图1.4 (a)程序设计在先测试在后 (b)测试分为同步测试与总测试 不论是什么软件工程模型,总是少不了图1.1中的各个环节。本书擗开具体的软件工 程模型,顺序讲述人员管理、项目管理、可行性与需求分析、系统设计、程序设计、测 试,以及维护与再生工程。其中程序设计部分以C++/C语言为例。 1.2 软件开发的基本策略 人们都有自己的世界观和方法论,能自然而然地运用于生活和工作中。同样,程序员 脑子里的软件工程观念会无形地支配其怎么去做事情。软件工程三十年的发展,已经积 累了相当多的方法,但这些方法不是严密的理论。实践人员不应该教条地套用方法,更 重要的是学会“选择合适的方法”和“产生新方法”。有谋略才会有好的战术。几千年前, 我们的祖先就在打闹之际写下了很多心得体会,被现代人很好地运用于工业和商业。本 节讲述软件开发中的三种基本策略:“复用”、“分而治之”、“优化——折衷”。 1.2.1 复用 复用就是指“利用现成的东西”,文人称之为“拿来主义”。被复用的对象可以是有形的 物体,也可以是无形的成果。复用不是人类懒惰的表现而是智慧的表现。因为人类总是 在继承了前人的成果,不断加以利用、改进或创新后才会进步。所以当我们欢度国庆时 ,要搞清楚祖国远不止50岁,我们今天享用到的财富还有上下五千年人民的贡献。进步 只是应该的,不进步则就可耻了。 复用的内涵包括了提高质量与生产率两者。由经验可知,在一个新系统中,大部分的 内容是成熟的,只有小部分内容是创新的。一般地可以相信成熟的东西总是比较可靠的 (即具有高质量),而大量成熟的工作可以通过复用来快速实现(即具有高生产率)。 勤劳并且聪明的人们应该把大部分的时间用在小比例的创新工作上,而把小部分的时间 用在大比例的成熟工作中,这样才能把工作做得又快又好。 把复用的思想用于软件开发,称为软件复用。据统计,世上已有1000亿多行程序,无 数功能被重写了成千上万次,真是浪费哪。面向对象(Object Oriented)学者的口头禅就是“请不要再发明相同的车轮子了” 。 将具有一定集成度并可以重复使用的软件组成单元称为软构件(Software Component)。软件复用可以表述为:构造新的软件系统可以不必每次从零做起,直接使 用已有的软构件,即可组装(或加以合理修改)成新的系统。复用方法合理化并简化了 软件开发过程,减少了总的开发工作量与维护代价,既降低了软件的成本又提高了生产 率。另一方面,由于软构件是经过反复使用验证的,自身具有较高的质量。因此由软构 件组成的新系统也具有较高的质量。利用软构件生产应用软件的过程如图1.5所示。 软件复用不仅要使自己拿来方便,还要让别人拿去方便,是“拿来拿去主义”。面向对 象方法,Microsoft公司的COM规范 [Rogerson 1999],都能很好地用于实现大规模的软件复用。 存在 构件不存在 图1.5 利用软构件生产应用软件的过程 1.2.2 分而治之 分而治之是指把一个复杂的问题分解成若干个简单的问题,然后逐个解决。这种朴素 的思想来源于人们生活与工作的经验,完全适合于技术领域。软件人员在执行分而治之 的时候,应该着重考虑:复杂问题分解后,每个问题能否用程序实现?所有程序最终能 否集成为一个软件系统并有效解决原始的复杂问题? 解决原始问题 分解 集成 图1.6 软件领域的分而治之策略 图1.6表示了软件领域的分而治之策略。诸如软件的体系结构设计、模块化设计都是 分而治之的具体表现。软件的分而治之不可以“硬分硬治”。不像为了吃一个西瓜或是一 只鸡,挥刀斩成n块,再把每块塞进嘴里粉碎搅拌,然后交由胃肠来消化吸收,象征复杂 问题的西瓜或是鸡也就此消失了。 1.2.3 优化——折衷 软件的优化是指优化软件的各个质量因素,如提高运行速度,提高对内存资源的利用 率,使用户界面更加友好,使三维图形的真实感更强等等。想做好优化工作,首先要让 开发人员都有正确的认识:优化工作不是可有可无的事情,而是必须要做的事情。当优 化工作成为一种责任时,程序员才会不断改进软件中的算法,数据结构和程序组织,从 而提高软件质量。 著名的3D游戏软件Quake,能够在PC机上实时地绘制高度真实感的复杂场景。Quake的 开发者能把很多成熟的图形技术发挥到极致,例如把Bresenham画线、多边形裁剪、树遍 历等算法的速度提高近一个数量级。我第一次看到Quake时不仅感到震动,而且深受打击 。这个PC游戏软件的技术水平已经远胜于我所见识到的国内领先的图形学相关科研成果 。这对我们日益盛行的点到完止的研发工作真是莫大的讽刺。所以当我们开发的软件表 现出很多不可救药的病症时,不要怨机器差。真的是我们自己没有把工作做好,写不好 字却嫌笔钝。 就假设我们经过思想教育后,精神抖擞,随时准备为优化工作干上六天七夜。但愿意 做并不意味着就能把事情做好。优化工作的复杂之处是很多目标存在千丝万缕的关系, 可谓数不清理还乱。当不能够使所有的目标都得到优化时,就需要“折衷”策略。 软件中的折衷策略是指通过协调各个质量因素,实现整体质量的最优。就象党支部副 书记扮演和事佬的角色:“…为了使整个组织具有最好的战斗力,我们要重用几个人,照 顾一些人,在万不得已的情况下委屈一批人”。 软件折衷的重要原则是不能使某一方损失关键的职能,更不可以象“舍鱼而取熊掌”那 样抛弃一方。例如3D动画软件的瓶颈通常是速度,但如果为了提高速度而在程序中取消 光照明计算,那么场景就会丧失真实感,3D动画也就不再有意义了(如果人类全是色盲 ,计算机图形学将变得异常简单)。 人都有惰性,如果允许滥用折衷的话,那么一当碰到困难,人们就会用拆东墙补西墙 的方式去折衷,不再下苦功去做有意义的优化。所以我们有必要为折衷制定严正的立场 :在保证其它因素不差的前提下,使某些因素变得更好。 下面让我们用“优化——折衷”的策略解决“鱼和熊掌不可得兼”的难题。 问题提出:假设鱼每千克10元,熊掌每千克一万元。有个倔脾气的人只有20元钱,非 得要吃上一公斤美妙的“熊掌烧鱼”,怎么办? 解决方案:化9元9角9分钱买999克鱼肉,化10元钱买1克熊掌肉,可做一道“熊掌戏鱼 ”菜。剩下的那一分钱还可建立奖励基金。 1.3 一些不正确的观念 本节例举并分析一些不正确的软件工程观念,可帮助初学者少犯相似的错误。 观念之一:我们拥有一套讲述如何开发软件的书籍,书中充满了标准与示例,可以帮助 我们解决软件开发中遇到的任何问题。 客观情况:好的参考书无疑能指导我们的工作。充分利用书籍中的方法、技术和技巧, 可以有效地解决软件开发中大量常见的问题。但实践者并不能因此依赖于书籍,这是因 为:(1)现实的工作中,由于条件千差万别,即使是相当成熟的软件工程规范,常常也 无法套用。(2)软件技术日新月异,没有哪一种软件标准能长盛不衰。祖传秘方在某些 领域很吃香,而在软件领域则意味着落后。 观念之二:我们拥有最好的开发工具、最好的计算机,一定能做出优秀的软件。 客观情况:良好的开发环境只是产出成果的必要条件,而不是充分条件。如果拥有好环 境的是一群庸人,难保他们不干出南辕北辙的事情。 观念之三:如果我们落后于计划,可以增加更多的程序员来解决。 客观情况:软件开发不同于传统的农业生产,人多不见得力量大。如果给落后于计划的 项目增添新手,可能会更加延误项目。因为:(1)新手会产生很多新的错误,使项目混 乱。(2)老手向新手解释工作以及交流思想都要花费时间,使实际开发时间更少。所以 科学的项目计划很重要,不在乎计划能提前多少,重在恰如其分。如果用“大跃进”的方 式奔向共产主义,只会产生倒退的后果。 观念之四:既然需求分析很困难,不管三七二十一先把软件做了再说,反正软件是灵活 的,随时可以修改。 客观情况:对需求把握得越准确,软件的修修补补就越少。有些需求在一开始时很难确 定,在开发过程中要不断地加以改正。软件修改越早代价越少,修改越晚代价越大,就 跟治病一样道理。 1.4 一些有争议的观念 本节探讨一些有争议的观念,目的不在于得出“正确”或“错误”的评断,而在于争议会 激发更多理性的思考。 争议之一:如果软件运行较...
软件工程思想1
第一章 软件工程基本观念 本章讲述软件工程的基本观念,是关于软件工程宏观上的探讨。如果你是软件公司的 老板,用不着在第一线工作,那么看这一章就够了。但你一定要让员工们相信不停地工 作是人生最大的快乐,并且让他们把本书看完。 1.1节讲述软件工程的目标和常用的软件工程模型。1.2节讲述软件开发的基本策略: “复用”、“分而治之”、“优化——折衷”,有助于指导实践者选择方法和产生新方法。1.3节 例举一些不正确的观念,取材于早期软件人员比较幼稚的想法,初学者可以引以为戒。 1.4节探讨一些有争议的观念。 看完本章,要树立这样的信念:软件开发过程中的坎坎坷坷,仿佛只是人脸的凹凸不平 ,用热水毛巾一把就可抹平。让我们高举程序主义、软件工程思想的伟大旗帜,紧密团 结在以Microsoft为核心的软件公司周围,沿着比尔·盖茨的生财之道,不分白天黑夜地 编程,把建设有中国特色的软件产业的伟大事业全面推向21世纪。 1.1 软件工程的目标与常用模型 软件工程的目标是提高软件的质量与生产率,最终实现软件的工业化生产。质量是软 件需求方最关心的问题,用户即使不图物美价廉,也要求个货真价实。生产率是软件供 应方最关心的问题,老板和员工都想用更少的时间挣更多的钱。质量与生产率之间有着 内在的联系,高生产率必须以质量合格为前提。如果质量不合格,对供需双方都是坏事 情。从短期效益看,追求高质量会延长软件开发时间并且增大费用,似乎降低了生产率 。从长期效益看,高质量将保证软件开发的全过程更加规范流畅,大大降低了软件的维 护代价,实质上是提高了生产率,同时可获得很好的信誉。质量与生产率之间不存在根 本的对立,好的软件工程方法可以同时提高质量与生产率。 软件供需双方的代表能在餐桌上谈笑风生,归功于第一线开发人员的辛勤工作。质量 与生产率的提高就指望程序员与程序经理。对开发人员而言,如果非得在质量与生产率 之间分个主次不可,那么应该是质量第一,生产率第二。这是因为:(1)质量直接体现 在软件的每段程序中,高质量自然是开发人员的技术追求,也是职业道德的要求。(2) 高质量对所有的用户都有价值,而高生产率只对开发方有意义。(3)如果一开始就追求 高生产率,容易使人急功近利,留下隐患。宁可进度慢些,也要保证每个环节的质量, 以图长远利益。 软件的质量因素很多,如正确性,性能、可靠性、容错性、易用性、灵活性、可扩充 性、可理解性、可维护性等等。有些因素相互重叠,有些则相抵触,真要提高质量可不 容易啊! 软件工程的主要环节有:人员管理、项目管理、可行性与需求分析、系统设计、程序 设计、测试、维护等,如图1.1所示。 图1.1 软件工程的主要环节 软件工程模型建议用一定的流程将各个环节连接起来,并可用规范的方式操作全过程 ,如同工厂的生产线。常见的软件工程模型有:线性模型(图1.2),渐增式模型(图1 .3),螺旋模型,快速原型模型,形式化描述模型等等 [Pressmam 1999, Sommerville 1992]。 图1.2 软件工程的线性模型 时间 进度 图1.3 软件工程的渐增式模型 最早出现的软件工程模型是线性模型(又称瀑布模型)。线性模型太理想化,太单纯 ,已不再适合现代的软件开发模式,几乎被业界抛弃。偶而被人提起,都属于被贬对象 ,未被留一丝惋惜。但我们应该认识到,“线性”是人们最容易掌握并能熟练应用的思想 方法。当人们碰到一个复杂的“非线性”问题时,总是千方百计地将其分解或转化为一系 列简单的线性问题,然后逐个解决。一个软件系统的整体可能是复杂的,而单个子程序 总是简单的,可以用线性的方式来实现,否则干活就太累了。线性是一种简洁,简洁就 是美。当我们领会了线性的精神,就不要再呆板地套用线性模型的外表,而应该用活它 。例如渐增式模型实质就是分段的线性模型,如图1.3所示。螺旋模型则是接连的弯曲了 的线性模型。在其它模型中都能够找到线性模型的影子。 套用固定的模型不是程序员的聪明之举。比如“程序设计”与“测试”之间的关系,习惯 上总以为程序设计在先,测试在后,如图1.4(a)所示。而对于一些复杂的程序,将测 试分为同步测试与总测试更有效,如图1.4(b)所示。 (a) (b) 图1.4 (a)程序设计在先测试在后 (b)测试分为同步测试与总测试 不论是什么软件工程模型,总是少不了图1.1中的各个环节。本书擗开具体的软件工 程模型,顺序讲述人员管理、项目管理、可行性与需求分析、系统设计、程序设计、测 试,以及维护与再生工程。其中程序设计部分以C++/C语言为例。 1.2 软件开发的基本策略 人们都有自己的世界观和方法论,能自然而然地运用于生活和工作中。同样,程序员 脑子里的软件工程观念会无形地支配其怎么去做事情。软件工程三十年的发展,已经积 累了相当多的方法,但这些方法不是严密的理论。实践人员不应该教条地套用方法,更 重要的是学会“选择合适的方法”和“产生新方法”。有谋略才会有好的战术。几千年前, 我们的祖先就在打闹之际写下了很多心得体会,被现代人很好地运用于工业和商业。本 节讲述软件开发中的三种基本策略:“复用”、“分而治之”、“优化——折衷”。 1.2.1 复用 复用就是指“利用现成的东西”,文人称之为“拿来主义”。被复用的对象可以是有形的 物体,也可以是无形的成果。复用不是人类懒惰的表现而是智慧的表现。因为人类总是 在继承了前人的成果,不断加以利用、改进或创新后才会进步。所以当我们欢度国庆时 ,要搞清楚祖国远不止50岁,我们今天享用到的财富还有上下五千年人民的贡献。进步 只是应该的,不进步则就可耻了。 复用的内涵包括了提高质量与生产率两者。由经验可知,在一个新系统中,大部分的 内容是成熟的,只有小部分内容是创新的。一般地可以相信成熟的东西总是比较可靠的 (即具有高质量),而大量成熟的工作可以通过复用来快速实现(即具有高生产率)。 勤劳并且聪明的人们应该把大部分的时间用在小比例的创新工作上,而把小部分的时间 用在大比例的成熟工作中,这样才能把工作做得又快又好。 把复用的思想用于软件开发,称为软件复用。据统计,世上已有1000亿多行程序,无 数功能被重写了成千上万次,真是浪费哪。面向对象(Object Oriented)学者的口头禅就是“请不要再发明相同的车轮子了” 。 将具有一定集成度并可以重复使用的软件组成单元称为软构件(Software Component)。软件复用可以表述为:构造新的软件系统可以不必每次从零做起,直接使 用已有的软构件,即可组装(或加以合理修改)成新的系统。复用方法合理化并简化了 软件开发过程,减少了总的开发工作量与维护代价,既降低了软件的成本又提高了生产 率。另一方面,由于软构件是经过反复使用验证的,自身具有较高的质量。因此由软构 件组成的新系统也具有较高的质量。利用软构件生产应用软件的过程如图1.5所示。 软件复用不仅要使自己拿来方便,还要让别人拿去方便,是“拿来拿去主义”。面向对 象方法,Microsoft公司的COM规范 [Rogerson 1999],都能很好地用于实现大规模的软件复用。 存在 构件不存在 图1.5 利用软构件生产应用软件的过程 1.2.2 分而治之 分而治之是指把一个复杂的问题分解成若干个简单的问题,然后逐个解决。这种朴素 的思想来源于人们生活与工作的经验,完全适合于技术领域。软件人员在执行分而治之 的时候,应该着重考虑:复杂问题分解后,每个问题能否用程序实现?所有程序最终能 否集成为一个软件系统并有效解决原始的复杂问题? 解决原始问题 分解 集成 图1.6 软件领域的分而治之策略 图1.6表示了软件领域的分而治之策略。诸如软件的体系结构设计、模块化设计都是 分而治之的具体表现。软件的分而治之不可以“硬分硬治”。不像为了吃一个西瓜或是一 只鸡,挥刀斩成n块,再把每块塞进嘴里粉碎搅拌,然后交由胃肠来消化吸收,象征复杂 问题的西瓜或是鸡也就此消失了。 1.2.3 优化——折衷 软件的优化是指优化软件的各个质量因素,如提高运行速度,提高对内存资源的利用 率,使用户界面更加友好,使三维图形的真实感更强等等。想做好优化工作,首先要让 开发人员都有正确的认识:优化工作不是可有可无的事情,而是必须要做的事情。当优 化工作成为一种责任时,程序员才会不断改进软件中的算法,数据结构和程序组织,从 而提高软件质量。 著名的3D游戏软件Quake,能够在PC机上实时地绘制高度真实感的复杂场景。Quake的 开发者能把很多成熟的图形技术发挥到极致,例如把Bresenham画线、多边形裁剪、树遍 历等算法的速度提高近一个数量级。我第一次看到Quake时不仅感到震动,而且深受打击 。这个PC游戏软件的技术水平已经远胜于我所见识到的国内领先的图形学相关科研成果 。这对我们日益盛行的点到完止的研发工作真是莫大的讽刺。所以当我们开发的软件表 现出很多不可救药的病症时,不要怨机器差。真的是我们自己没有把工作做好,写不好 字却嫌笔钝。 就假设我们经过思想教育后,精神抖擞,随时准备为优化工作干上六天七夜。但愿意 做并不意味着就能把事情做好。优化工作的复杂之处是很多目标存在千丝万缕的关系, 可谓数不清理还乱。当不能够使所有的目标都得到优化时,就需要“折衷”策略。 软件中的折衷策略是指通过协调各个质量因素,实现整体质量的最优。就象党支部副 书记扮演和事佬的角色:“…为了使整个组织具有最好的战斗力,我们要重用几个人,照 顾一些人,在万不得已的情况下委屈一批人”。 软件折衷的重要原则是不能使某一方损失关键的职能,更不可以象“舍鱼而取熊掌”那 样抛弃一方。例如3D动画软件的瓶颈通常是速度,但如果为了提高速度而在程序中取消 光照明计算,那么场景就会丧失真实感,3D动画也就不再有意义了(如果人类全是色盲 ,计算机图形学将变得异常简单)。 人都有惰性,如果允许滥用折衷的话,那么一当碰到困难,人们就会用拆东墙补西墙 的方式去折衷,不再下苦功去做有意义的优化。所以我们有必要为折衷制定严正的立场 :在保证其它因素不差的前提下,使某些因素变得更好。 下面让我们用“优化——折衷”的策略解决“鱼和熊掌不可得兼”的难题。 问题提出:假设鱼每千克10元,熊掌每千克一万元。有个倔脾气的人只有20元钱,非 得要吃上一公斤美妙的“熊掌烧鱼”,怎么办? 解决方案:化9元9角9分钱买999克鱼肉,化10元钱买1克熊掌肉,可做一道“熊掌戏鱼 ”菜。剩下的那一分钱还可建立奖励基金。 1.3 一些不正确的观念 本节例举并分析一些不正确的软件工程观念,可帮助初学者少犯相似的错误。 观念之一:我们拥有一套讲述如何开发软件的书籍,书中充满了标准与示例,可以帮助 我们解决软件开发中遇到的任何问题。 客观情况:好的参考书无疑能指导我们的工作。充分利用书籍中的方法、技术和技巧, 可以有效地解决软件开发中大量常见的问题。但实践者并不能因此依赖于书籍,这是因 为:(1)现实的工作中,由于条件千差万别,即使是相当成熟的软件工程规范,常常也 无法套用。(2)软件技术日新月异,没有哪一种软件标准能长盛不衰。祖传秘方在某些 领域很吃香,而在软件领域则意味着落后。 观念之二:我们拥有最好的开发工具、最好的计算机,一定能做出优秀的软件。 客观情况:良好的开发环境只是产出成果的必要条件,而不是充分条件。如果拥有好环 境的是一群庸人,难保他们不干出南辕北辙的事情。 观念之三:如果我们落后于计划,可以增加更多的程序员来解决。 客观情况:软件开发不同于传统的农业生产,人多不见得力量大。如果给落后于计划的 项目增添新手,可能会更加延误项目。因为:(1)新手会产生很多新的错误,使项目混 乱。(2)老手向新手解释工作以及交流思想都要花费时间,使实际开发时间更少。所以 科学的项目计划很重要,不在乎计划能提前多少,重在恰如其分。如果用“大跃进”的方 式奔向共产主义,只会产生倒退的后果。 观念之四:既然需求分析很困难,不管三七二十一先把软件做了再说,反正软件是灵活 的,随时可以修改。 客观情况:对需求把握得越准确,软件的修修补补就越少。有些需求在一开始时很难确 定,在开发过程中要不断地加以改正。软件修改越早代价越少,修改越晚代价越大,就 跟治病一样道理。 1.4 一些有争议的观念 本节探讨一些有争议的观念,目的不在于得出“正确”或“错误”的评断,而在于争议会 激发更多理性的思考。 争议之一:如果软件运行较...
软件工程思想1
[下载声明]
1.本站的所有资料均为资料作者提供和网友推荐收集整理而来,仅供学习和研究交流使用。如有侵犯到您版权的,请来电指出,本站将立即改正。电话:010-82593357。
2、访问管理资源网的用户必须明白,本站对提供下载的学习资料等不拥有任何权利,版权归该下载资源的合法拥有者所有。
3、本站保证站内提供的所有可下载资源都是按“原样”提供,本站未做过任何改动;但本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。
4、未经本网站的明确许可,任何人不得大量链接本站下载资源;不得复制或仿造本网站。本网站对其自行开发的或和他人共同开发的所有内容、技术手段和服务拥有全部知识产权,任何人不得侵害或破坏,也不得擅自使用。
我要上传资料,请点我!
管理工具分类
ISO认证课程讲义管理表格合同大全法规条例营销资料方案报告说明标准管理战略商业计划书市场分析战略经营策划方案培训讲义企业上市采购物流电子商务质量管理企业名录生产管理金融知识电子书客户管理企业文化报告论文项目管理财务资料固定资产人力资源管理制度工作分析绩效考核资料面试招聘人才测评岗位管理职业规划KPI绩效指标劳资关系薪酬激励人力资源案例人事表格考勤管理人事制度薪资表格薪资制度招聘面试表格岗位分析员工管理薪酬管理绩效管理入职指引薪酬设计绩效管理绩效管理培训绩效管理方案平衡计分卡绩效评估绩效考核表格人力资源规划安全管理制度经营管理制度组织机构管理办公总务管理财务管理制度质量管理制度会计管理制度代理连锁制度销售管理制度仓库管理制度CI管理制度广告策划制度工程管理制度采购管理制度生产管理制度进出口制度考勤管理制度人事管理制度员工福利制度咨询诊断制度信息管理制度员工培训制度办公室制度人力资源管理企业培训绩效考核其它
精品推荐
下载排行
- 1社会保障基础知识(ppt) 16695
- 2安全生产事故案例分析(ppt 16695
- 3行政专员岗位职责 16695
- 4品管部岗位职责与任职要求 16695
- 5员工守则 16695
- 6软件验收报告 16695
- 7问卷调查表(范例) 16695
- 8工资发放明细表 16695
- 9文件签收单 16695
- 10跟我学礼仪 16695