《软件工程思想》摘记(一)

《软件工程思想》,作者:林锐

1.软件开发中的三种基本策略:“复用”、“分而治之”、“优化——折衷”。
折衷的立场:在保证其它因素不差的前提下,使某些因素变得更好。

2.当一个组织被出色地领导时,雇员甚至不知道他们已被领导。

3.好的程序经理应该具备以下几个条件:
一、技术水平是程序员队伍中的最高级别
二、能做最多且最难的工作
三、有人格魅力
如果程序经理发现有两个程序员趴在机器旁睡觉,不能只对其中一个大声吼叫:“你一编程就想睡觉,看看人家,在睡觉时都想着编程。”
结论:一个有活力的软件公司的各级经理都不会这样感叹,“因为我啥也不会干,所以只好当领导。”

4.程序员升为经理后一定要编程。

5.软件公司总希望能物色到既精通技术又善长商业的优秀人才做经理。但已经出名了的优秀人才难以请到,也难以留住。所以把公司中的普通员工培养成为优秀人才是重要的举措。

6.一个程序员队伍的等级制度:
把技术水平分为四级,第一级最低,第四级最高。第一级技术水平的程序员主要考核编程基本功,要求质量合格(他们主要来自刚毕业的大学生)。第二级技术水平的程序员编程质量要高,做过几个软件项目,有数年的工作经验,并能指导新手的工作。第三级技术水平的程序员主要考核系统分析与系统设计的能力,要求其技术有足够的深度和广度。第四级技术水平的程序员是成功的软件产品的设计师,他不仅技术超群,并且能使技术转化为有价值的商品。

7.把管理(这里仅指软件业务的管理,不考虑行政事务)水平也分成四级。第零级最低,第三级最高。第零级管理水平的人没有管理职务,就是普通员工。第一级管理水平的人是开发小组的组长,可带领几名程序员工作。第二级管理水平的人是项目经理。第三级管理水平的人决定某些产品是否要开发,以及如何去占领市场。

8.每个程序员都有明确的技术级别和管理级别。技术级别与管理级别有一定的联系:

      技术级别         管理级别
      四级             决策者
      三级             项目经理
      二级             开发组长
      一级             普通员工

9.错误的根源在自己身上:
知识贫乏、才能低下、经验不足、骄傲自负……

10.如果软件运行较慢,是换一台更快的计算机,还是设计一种更快的算法?
如果开发软件的目的是为了学习或是研究,那么应该设计一种更快的算法。如果该软件已经用于商业,则需谨慎考虑:若换一台更快的计算机能解决问题,则是最快的解决方案。改进算法虽然可以从根本上提高软件的运行速度,但可能引入错误以及延误进程。技术狂毫无疑问会选择后者,因为他们觉得放弃任何可以优化的机会就等于犯罪。

11.有最好的软件工程方法,最好的编程语言吗?
在软件领域永远没有最好的,只有更好的。能解决问题的都是好方法或是好语言。
如今的 Visual Basic、Delphi、Visual C++、Java 等语言各有所长,真的难分优劣。开发人员应该根据客观条件,选择自己熟悉的方法和语言,才能保证合格的质量与生产率。 程序设计是自由与快乐的事情,不要发誓忠于某某主义而自寻烦恼。

12.微软的一些开发小组将错误分成四个等级  [Cusumano 1996]。 
一级严重:错误导致软件崩溃。
二级严重:错误导致一个特性不能运行并且没有替代方案。
三级严重:错误导致一个特性不能运行但有替代方案。
四级严重:错误是表面化的或是微小的。
上述分类是非常技术性的,并不是普适的。开发人员应该意识到:所有的错误都是严重的,不存在微不足道的错误。

13.软件的项目计划重在“准确”而非“快速”。

14.“知已知彼”才能做出合理的项目计划。
“知已”是指要了解有多少可用资源,如可调用的程序员有几个?他们的水平如何?软硬件设施如何?“知彼”是指要了解项目的规模、难度与时间限制。

15.以下一些事件经常会导致项目被延误:
(1)上级领导主管臆断,制定了不现实的期限。项目经理与程序员们被迫按照不合理的进度表开展工作。
(2)客户的需求发生了变化,但没有对进度表作出相应的修改。
(3)低估了项目的规模与难度,导致投入的人力和物力不足。
(4)并未预见到存在难以克服的技术障碍。
(5)并未预见到开发人员会发生问题,如生病,辞职等等。
(6)开发人员之间不能很好的交流、协作,导致各阶段任务难以如期完成。

16.避免项目被延误的有益建议:
(1)制定进度表的人最好就是项目负责人,进度表要经过开发小组的讨论,在得到大部数人的支持后才能实施。
(2)进度安排并不见得一定要符合逻辑顺序。应尽可能地先做技术难度高的事,后做难度低的事。
(3)开发一个大的软件项目,应该将进度表分为若干个里程碑。一个里程碑之内的多个任务可以同步进行。
(4)进度表中必须留有缓冲时间,并将缓冲时间用到不确定的事情上。
(5)如果发现项目应交付的期限非常不合理,就要跟领导或跟客户据理力争,请求放宽期限、调整进度。

17.“零缺陷”质量管理至少有两个核心内容:一是高目标,二是可执行的规范。

18.“运行正确”的程序不见得就是高质量的程序。

19.软件的质量因素很多,如正确性、精确性、可靠性、容错性、性能、效率、易用性、可理解性、简洁性、可复用性、可扩充性、兼容性等等(还可以列出十几个)。

20.软件质量检查措施[Pressman 1999]:
(1)事先把检查的主要内容制成一张表,使检查活动集中在主要问题上。
(2)只评审工作,不评审开发者。评审的气氛应该是融洽的。存在的错误应该被有礼貌地指出来,任何人的意见都不应被阻挠或小看。
(3)建立一个议事日程并遵循它。检查过程不能放任自由,必须排照既定的方向和日程进行。
(4)不要化太多的时间争论和辩驳。
(5)说清楚问题所在,但不要企图当场解决所有问题。
(6)对检查人员进行适当的培训。

21.可行性分析的四大要素:经济、技术、社会环境和人。

22.俗话说“嫌货才是买货人”。

23.软件的成本有:
(1)办公室房租。
(2)办公用品,如桌、椅、书柜、照明电器、空调等。
(3)计算机、打印机、网络等硬件设备。
(4)电话、传真等通讯设备以及通讯费用。
(5)资料费。
(6)办公消耗,如水电费、打印复印费等。
(7)软件开发人员与行政人员的工资。
(8)购买系统软件的费用,如买操作系统、数据库、软件开发工具等。有些老板买盗版的
系统软件,却按市场价算成本,可从美国佬那里赚一笔。
(9)做市场调查、可行性分析、需求分析的交际费用。
(10)公司人员培训费用。
(11)产品宣传费用。如果用 Internet 作宣传,则要考虑建设 Web 站点的费用。
(12)如果客户是政府部门,还要充分考虑用于吃喝玩乐、行贿的费用。
(13)如果公司的风水不好,会有很多莫名其妙的管理费。每戳一个红艳艳的公章都要化一
把钞票。

24.技术可行性分析可以简单地表述为:做得了吗?做得好吗?做得快吗?

25.有句名言:“人分四类——人物,人才,人手,人渣。”
如果一个软件公司里上述四类人齐全了,那么最好的分工是让“人物”当领导,“人才”
做第一线的开发人员,“人手”做行政人员,“人渣”负责行贿。

26.学到的远比失去的多,下一次会做得更好。

27.有几种原因使需求分析变得困难:(1)客户说不清楚需求;(2)需求自身经常变动;(3)分析人员或客户理解有误。

posted on 2007-01-19 12:30  三千  阅读(656)  评论(1编辑  收藏  举报