zoukankan      html  css  js  c++  java
  • 《软件工程思想》摘记(一)

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

    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)分析人员或客户理解有误。

  • 相关阅读:
    你知道这高效的12个Java精品库嘛?
    一篇文章带你吃透,Java界最神秘技术ClassLoader
    带你认真了解一下Java分布式系统的基本特性
    因为选定的用户拥有对象,所以无法除去该用户
    mysql自定义函数与过程中写法的注意事项
    使用nssm在windows服务器上部署nodejs
    shopnc 手机网站配置
    关于navicat远程连接mysql问题
    KindEditor 4.1.2版本,在上传图片的时候 设置为绝对路径
    微信分享图标制作
  • 原文地址:https://www.cnblogs.com/yao/p/624645.html
Copyright © 2011-2022 走看看