1、总览
图1 软工思想-思维导图
2、目标
软件工程的目标是提高软件的质量与生产率,最终实现软件的工业化生产。质量是软件需求方最关心的问题,用户即使不图物美价廉,也要求个货真价实。生产率是软件供应方最关心的问题,老板和员工都想用更少的时间挣更多的钱。质量与生产率之间有着内在的联系,高生产率必须以质量合格为前提。如果质量不合格,对供需双方都是坏事情。从短期效益看,追求高质量会延长软件开发时间并且增大费用,似乎降低了生产率。从长期效益看,高质量将保证软件开发的全过程更加规范流畅,大大降低了软件的维护代价,实质上是提高了生产率,同时可获得很好的信誉。质量与生产率之间不存在根本的对立,好的软件工程方法可以同时提高质量与生产率。 软件供需双方的代表能在餐桌上谈笑风生,归功于第一线开发人员的辛勤工作。质量与生产率的提高就指望程序员与程序经理。对开发人员而言,如果非得在质量与生产率之间分个主次不可,那么应该是质量第一,生产率第二。
3、人员
作为一名合格的程序员,需具备一下要求:
一、 诚实
二、 简单——实用主义
三、 爱憎分明
四、 工作单调但不乏味
作为一名项目经理,如何管理组织呢?
一、 技术水平是程序员队伍中的最高级别
二、 能做最多且最难的工作
三、 有人格魅力
开发人员作为一个团队,分工合作是主旋律。勤劳勇于创新,智慧都是程序猿的标签。90 年代初期,中国出现了一些程序员英雄,曾让我们激动过、崇拜过。 但这些孤胆英雄们很快地几乎全消亡了, 他们只留下故事, 没留下更多的价值。 再一次让我们意识到“振兴民族软件产业” 不能依靠几个人一朝一夕的辉煌。 软件人员勤奋学习和工作, 不该只图将来能做成几件事情的快意, 而应力求事业长盛不衰, 才能推动整个民族软件产业持久稳健地发展。
4、开发策略
一、复用:复用就是指“利用现成的东西”, 文人称之为“拿来主义”。 复用的内涵包括了提高质量与生产率两者。 由经验可知, 在一个新系统中, 大部分的内容是成熟的, 只有小部分内容是创新的。 一般地可以相信成熟的东西总是比较可靠的(即具有高质量), 而大量成熟的工作可以通过复用来快速实现(即具有高生产率)。 勤劳并且聪明的人们应该把大部分的时间用在小比例的创新工作上, 而把小部分的时间用在大比例的成熟工作中,这样才能把工作做得又快又好。 软件复用不仅要使自己拿来方便, 还要让别人拿去方便, 是“拿来拿去主义”。面向对象方法, Microsoft 公司的 COM 规范 [Rogerson 1999],都能很好地用于实现大规模的软件复用。
图2 利用软构件生产应用软件的过程
二、分而治之是指把一个复杂的问题分解成若干个简单的问题, 然后逐个解决。
这种朴素的思想来源于人们生活与工作的经验, 完全适合于技术领域。软件人员在执行分而治之的时候,应该着重考虑: 复杂问题分解后, 每个问题能否用程序实现?所有程序最终能否集成为一个软件系统并有效解决原始的复杂问题?
图3 软件领域的分而治之策略图 3 表示了软件领域的分而治之策略。 诸如软件的体系结构设计、 模块化设计都是分而治之的具体表现。 软件的分而治之不可以“硬分硬治”。 不像为了吃一个西瓜或是一只鸡,挥刀斩成 n 块, 再把每块塞进嘴里粉碎搅拌, 然后交由胃肠来消化吸收, 象征复杂问题的西瓜或是鸡也就此消失了。
三、优化——折衷
软件的优化是指优化软件的各个质量因素,如提高运行速度,提高对内存资源的利用率,使用户界面更加友好, 使三维图形的真实感更强等等。 想做好优化工作, 首先要让开发人员都有正确的认识: 优化工作不是可有可无的事情, 而是必须要做的事情。 当优化工作成为一种责任时,程序员才会不断改进软件中的算法,数据结构和程序组织,从而提高软件质量。 所以当我们开发的软件表现出很多不可救药的病症时,不要怨机器差。真的是我们自己没有把工作做好,写不好字却嫌笔钝。就假设我们经过思想教育后, 精神抖擞, 随时准备为优化工作干上六天七夜。 但愿意做并不意味着就能把事情做好。
优化工作的复杂之处是很多目标存在千丝万缕的关系, 可谓数不清理还乱。当不能够使所有的目标都得到优化时,就需要“折衷”策略。软件中的折衷策略是指通过协调各个质量因素, 实现整体质量的最优。 就象党支部副书记扮演和事佬的角色:“ …为了使整个组织具有最好的战斗力,我们要重用几个人,照顾一些人,在万不得已的情况下委屈一批人”。软件折衷的重要原则是不能使某一方损失关键的职能, 更不可以象“舍鱼而取熊掌” 那样抛弃一方。 所以我们有必要为折衷制定严正的立场: 在保证其它因素不差的前提下,使某些因素变得更好。
5、项目流程
图4:软件工程的主要环节
小结:每个人经历过后都会有新的体会,站在不同的位置看风景会看到别样的美丽。同理,小编把自己的想法拿出来,我们一起分享,一起思想碰撞,如有不对的地方,还请赐教!