随笔 - 216  文章 - 0 评论 - 1138 trackbacks - 0

这门课的教学方案在这里. 根据学生和学校的具体情况, 可以进行调整。 这篇文章主要关注怎么有效地教这门课。为了达到这个目的,我们要讲在这个课程中建立什么样的师生关系?怎么样让学生投入进课程中?老师采用什么样的教育方法?如何判分,如何让学生在课程中,学到软件工程的技能? 

师生关系

首先要明确的是, 在这门课中的师生关系是什么样的.  大学目前的师生关系是怎样, 什么样才是理想的师生关系?  我们先看一些例子:

 

不成关系的蜡烛、春蚕和园丁

一说到老师,很多人就会心情激动,把老师比作燃烧自己的蜡烛,吐丝的春蚕,且不说现在的老师早就不认可这种形象,那么学生是种关系这里面的什么东西呢?另一个比喻是园丁和树苗, 园丁多么崇高啊! 杏坛讲学, 桃李满天下... 其实未必,龚自珍的《病梅馆记》也描述了园丁的不当行为。  当树苗有自己的思想的时候,   “树苗”有时候也不喜欢 “园丁”:

   又来给我施肥,剪枝,喷农药!我的枝条就要这样长,你管不着!农药好臭啊,我不要,差评!滚出!

大学生不是植物,而是有自己独立思想、人格的成年人, 他们在这种关系中不是任人摆布的物品。 如果把大学生当作成年人,我们就会进入下面几种比喻的一种:

 

Retailer / customer (餐馆/食客)?

一些学生说, 我既然交了学费来上学, 就像交了钱去自助餐厅一样, 想吃多少, 想吃什么, 都是我决定.  如果不喜欢, 就去下一个餐厅好了。 上课能这样么?  在饮食行业, 顾客拍拍屁股就可以离开一个餐馆,还可以给餐馆打分。在一些学校里, 是有不同的老师上类似的课程, 同学们可以根据老师的介绍和师兄师姐的提醒选择适合自己的老师。但是大家注意到没有,能看到老师分数的学校已经越来越少了,你的学校公布老师的教学评估分数么? 学生和家长有知情权么?  即使有教学评分,学生的 “选课学习” 和 “去餐馆吃饭” 还是不一样的。 食客会赞许 “菜新鲜,量大,菜品质量要求严格!”  但是大部分同学不会拍手赞美 “哇,老师好棒! 讲得深入,作业量大,考试严格!”  很多学生偏爱的是 “作业少、不点名、给分高” 的老师。  单纯依靠学生评价来驱动教学,会迫使老师把一门重课改成一门水课。 我们说十年树木百年树人, 既然成才需要时间,评价是否也需要时间? 学生给老师评价,最好的时间是什么时候?是上课刚结束时? 考试后?拿到毕业证后?毕业一年后,十年后? 学习最好的同学和学习最差的同学之间,他们评分的权重应该一样么? 最有效的评价教学水平的方式,和去餐馆吃饭点评是有很大区别的。

当老师和学生的关系完全陷入金钱关系之后,会堕落到这种情况:

  老师,我的家人已经给我找到工作了,未必和你的专业相关,我就差一个学位证就可以上班了。我花钱来上学,就是为了得这个证。 你能不能给我过了?

老师怎么回答?如果大学堕落成卖证的地方,那倒也讲得通啊?! 问题是,大学的目的是什么?大学给学生开各种课的目的是什么?更多的情况下,在校学生未必有确定的工作, 他们必须要在一定期限内选课,完成学分。而老师掌握着最后给学生多少分, 学校掌握着毕业证。  所以这不是餐馆/食客的关系。 学生们有时非但不能成为有主动权的顾客, 反而会被人以分数/学位/毕业证相要挟, 成为下一种关系中的弱者:

 

Boss / employee (老板 / 雇员)?

在学校里, 很多学生把自己的指导老师叫做 ”老板”, 学生变成打工仔或打工妹。 不光有大老板, 还有小老板,  因为大老板太忙, 平时都是小老板在管理。 在一些学校, 博士生要延期一年才能毕业成为了众多潜规则之一。学生虽然是"雇员", 但是并没有雇员的权利 (很多事例)。

 

Baby-sitter / babies (保姆 / 幼儿) ?

有时,  老师像保姆一样, 为学生操办一切, 关心学生的宿舍卫生,生怕学生在学校出什么问题。这种关心的态度是好的,但是在学业上,有些老师把把课程内容煮成婴儿食品, 一勺一勺地喂给同学。 同学们有什么问题, 都去找老师搞定。 学生把老师反复咀嚼过的东西再咀嚼一遍, 这种模式也许可以叫做 Learning by re-chewing.  大学生咀嚼这些别人嚼过的东西,会觉得课程很乏味,他们并不会感谢保姆,而是想法逃离这种关系。 这个模式和这门课的 “做中学” (Learning By Doing) 有很大的区别。

 

Buddies / Buddies (哥们 / 哥们) ?

还有一种情况是, 老师和学生心照不宣一起混,  “你对我好, 我就对你好". 这里有一条新闻:

http://edu.163.com/10/1106/10/6KQ4JC8800293L7F.html  

部分大学课堂师生心照不宣一起混

老师与学生一起应付”,这并非大学生们学习之余的调侃之语,而是不少大学课堂的真实写照。

有不少同学认为,  这种关系挺好的, 老师像哥们一样来关心你。当老师在第一节课的时候说“我们一起来学习软件工程” 的时候,很多同学觉得和老师能形成平等的 “朋友” 关系。 其实,  “平等的朋友” 这种亲密关系很少存在于师生之间。 首先, 你上完大学要找工作,老师已经有很稳定的工作了。 “一起学习”  只不过是套话! 其次,老师要面对几十个学生, 以及自己的很多工作与生活,没有时间和你做亲密朋友; 最后,  大学的学习就是有难度的,  就是要付出足够的努力才能及格,  老师就是要评判你的努力程度,  给你不留情面地打分,   一个幻想中的 "哥们儿" 帮不了你。你上课偷懒,逃课,不交作业, 你的“朋友” 看到后会怎么样?你的老师会有一样的反应么? 

 

Stranger / Stranger (路人甲 / 路人乙)?

很多学校有巨大的新校区,  同学们来到新校区,不知道这是大学一年级,还是高中四年级。开学之后,老师乘车来到新校区,对着百人左右的课堂宣讲幻灯片, 下课后就乘车回老校区或市区的家里。 老师不认识学生, 也未必有精力了解具体学生的情况;学生平时也见不到老师,即使碰上了, 双方也形同陌路。

 

Prison Guard / Prisoner (狱警 / 犯人)?

还有一种情况是老师想方设法让学生来上课,  点名, 突然测验, 指纹打卡, 诱惑大家会在课堂上划重点,等等.  学生则想方设法逃课。 学生视上课为坐牢, 巴不得早一点解放。对于一些同学来说,  老师就是学生和 “自由” 之间的一道障碍。  

一些读者幼稚地认为老师和学生的关系未必会堕落如此, 其实还有更差的, 大学老师在学校的教学任务是按照课时来计算的, 只要课时固定, 那么学生太多,反而对老师是负担。一个老师如果教得好, 很多学生来选课, 那么这个老师反而吃亏! 所以很多大学口头声称  “鼓励选课, 老师热爱教学...", 其实都是烟雾弹。 对于很多管理者来说,最好的情况是:

  学生不能选课,老老实实呆几年毕业滚蛋, 然后学校满怀激情地希望毕业生在社会上马上做一个创新的人才...

这种情形类比于狱警/犯人的场景是很贴切的, 就是狱警希望自己上班时间管的犯人越少越好,越老实越好!  一个餐馆的老板当然希望食客越多越好, 但是狱警却不会这么想。大学生可以问自己的老师 “您希望有更多的学生来上这个课么?”  如果老师不希望, 那么,这更像一个 狱警/犯人 的关系。  ;)

 

说了这么多不好的例子,  我心目中理想的师生关系是什么?  是  Coach / Trainee (健身教练 / 健身学员) 的关系。

image

大家可以从各种各样的健身馆中看到这样的关系,  像健身,减肥,瑜珈等等。 在这种关系中, 是谁想提高自己水平?  是那些学员, 这些学员的想法得足够强烈, 他/她才会花钱去参加这样的健身活动。 在健身活动中, 谁要做各种运动, 流汗呢?  是学员。 谁在这个活动中对别人指指点点, 鼓励别人更加努力? 是教练。

那为什么教练可以这样做?  因为教练有下面的资源:

  1. 教练的资质, 教练本身应该在所教的项目中是很有经验的身体力行者。 如果我光看了少量瑜珈的书籍和录像, 或者得到某老师的PPT (如果瑜珈老师用PPT 的话), 我然后就照本宣科去教瑜珈, 虽然我讲的话和一个资深瑜珈教练的话没什么区别 – “现在开始练习冥想, 要尽量让自己内心安静下来,要保持呼吸均匀, 把精神集中在丹田 …” 可以肯定留在我这个班里的学生不会很多。
  2. 教练有一套训练计划和各种练习方法, 教练(场馆) 有仪器, 工具, 设备,  不是每一个人都打算在家里放一套各种重量的哑铃和杠铃。
  3. 教练可以随时指出学员锻炼的进步和不足。
  4. 教练(场馆) 能召集到有一群相似基础的队友, 这在有些类型的锻炼是很重要的。

教练和学员的关系如果确定,  就很好办了。 每一个来学习的学生,  都是想学好软件工程这门技术才来的。  各人的先天条件不同, 目标也未必相同。  有些同学想成为世界一流的程序员,  那老师就会以世界一流的标准来要求学生。有些同学只想拿一个及格的分数, 那老师也会告诉他如何才能及格。 但是,你别想只付出 "及格"的努力,却期望收获“优秀” 的结果。 

谁要在这门课中写代码, 做实验, 找需求, 修bug?

    是学生, 不是老师。

谁要看各种与软件工程相关的书籍, 博客, 思考, 分析, 并定期汇报? 

    是学生。 

谁给各个学生设计练习, 回答疑问, 点评学生? 

    老师。

如果学生的努力低于目标的要求,  谁会批评这个学生? 

    老师。

谁会犯错误? 

  学生,有时老师也会犯错误。

谁是完美无缺的?  

  没人。 老师和学生都会犯错误,在快速变化的 IT 领域,我们要不断探索,犯错误是成长必经的道路。 

有些学生说 - 老师, 你讲的特别好, 我特别想提高, 但是我太忙了, 所以没时间写程序, 我就是来听听。。。

这种情况放在健身学员的类比中会是这样:

    教练, 你讲的特别好, 我特别想减肥健美,  但我太忙了, 没时间练, 所以我办了卡, 就放在兜里,有时候拿出来看看。。。

这种学员还真的有,  据说健身场馆的很大一部分利润是来自于那些办了年卡但是很少来的人。

健身教练/健身学员的关系对教练也有要求, 最基本的就是及时给反馈。  很多老师给同学留下语焉不详的作业, 就听之任之了, 希望学生自主学习,自我提高, 这是不合格的教练!  想象一下,一个教练在16周的练习过程中, 只给学生两次反馈(期中,期末考试), 这是合格的健身教练么? 这种 “教练” 在大学里是不是很常见呢? 如果你经常去健身俱乐部练习各种器械和套路,你希望你的教练何时给你反馈,纠正你的动作,给你鼓励? 如果你的教练有一天说, “你两月前的某个动作不对啊”,  你能回忆起这个动作么?觉得这个教练合格么? 

很多人希望老师和学生之间特别和谐,是否相安无事就是最好?古希腊学者普罗塔戈说过:「头脑不是一个要被填满的容器,而是一束需要被点燃的火把。」那火把在什么时候会被点燃?那么最好的情况是不是老师和学生的思维互相撞击,蹦出火花,一起燃烧?这种情况,会在餐馆/食客, 路人甲/路人乙,狱警/囚犯的模式下发生么?  很显然,教练/学员的关系是最有希望撞击出火星的,老师和学生之间要有张力,有冲突,有鼓励,有质疑,才会出现火花。 

 

师生投入到教学活动中 (Engagement)

怎么让学生投入到教学活动中?

教学方法

那么软件工程课一般是怎么教的呢?  我在这一篇文章里也提到:

软件学院的小慧老师对阿超抱怨,软件工程这门课看似容易,实际太难教。

小慧说:我是按照经典的瀑布模型来讲课的,本来以为会是高屋建瓴,一泻千里,但是实际情况是这样的:

  1. 需求分析:学生们都不懂企业的需求是什么,上课睡觉。
  2. 设计阶段:学生们画了许多 UML 图,用设计工具画了不少矩形框,菱形框,如此而已
  3. 实现阶段:学生们开始讨论非常细节的问题,UML 图早已经扔到一边。
  4. 稳定阶段:学生们中十分之一的人开始写代码,其他人不知道在干什么.代码大部分情况下都不能工作,所有设计好的种种黑箱和白箱测试都无从开始。
  5. 发布阶段:这个只有一天时间,就是最后检查的那一天,同时还有人在调试程序.
  6. 维护阶段:课程结束了,同学们对自己的产品没有任何维护,放假了!

最后大部分同学们都说这门课特别没用,自己根本没学到什么本事,然后下个学期,新的一批学生进来重复这一过程。。。

我在文章中建议, 软件工程的教学应该考虑让学生一直能保持有具体的事情做, 而且做了之后能看到效果。  不要在学生刚上课的时候就要求写一个需求分析, 学生上哪里分析去?  如何看到效果?  

所以在《现代软件工程》 这门课中, 我安排了个人项目, 两个结对项目, 让大家充分有时间把个人技术和一对一的合作技术做好, 然后再开始团队项目。 一个理想的流程应该是这样:

  1. 开始维护以前同学开发出来的程序,理解程序。
  2. 找bug,改bug,重构小部分代码,以满足用户的需求。
  3. 一部分同学可以开发测试用例
  4. 在现有版本的基础上做增量开发
    1. 理解需求 (这个时候理解了客户需求是什么)
    2. 设计
    3. 开发
    4. 回归测试 (用到上面开发的测试用例)

 

负担问题

很多学生一听说我给他们安排的学习计划, 第一个反应往往是 - 负担太重了!  让我们回到健身馆,  如果一个体质正常的青年想健美, 教练安排他举杠铃, 他会说什么呢 – “杠铃太重, 我走了!” 

负担是相对的, 这要看大家要跟谁比了。 我在清华大学上课的时候, 也有学生反映“负担太重”, 我只好和他们一起回忆清华大学校长及各级领导提出来的目标 – “建设世界一流大学" .  如果要建设世界一流大学, 那要跟世界一流大学比。  在软件和软件工程方面世界一流的大学是哪一家呢? 我想唯有跟卡内基·梅隆大学 (CMU) 相比,  才能不辱没清华大学的名声。

CMU 有一门本科生的课 - Build Virtual World,   是由已故的Randy Pausch 教授讲授的, 我们可以比较一下。

CMU – Build Virtual World 现代软件工程

5 projects/semester

2 week/project, done by 4 person team

Rotate team member in each project

4 project/semester:
     1 Idividual Proj.
     2 Pair Proj.
     1 Team Proj.
 
team project has 6 people.
rotate team member in each project.

他们一个学期要做 5 个项目, 我们只做 4 个。谁的负担重?

所以, 不是我要为难大家, 而是校领导的意思, 同学们可以找校领导说 – 我们不想成为世界一流大学, 成为五道口一带的二流大学就可以了。 如果领导同意了, 我当然可以降低负担, 而且我还可以把师生关系调整为 “哥们/哥们”, 要混还不容易吗?!

我们可以看看古代的历史,  为古罗马帝国开拓疆土的士兵, 他们是如何培训的呢?  请选择:

a) 他们不经过培训, 直接上战场

b) 他们只学理论, 没有实战

c) 他们用比实战更轻的武器训练

d) 他们用和实战一样重的武器训练

e) 他们用比实战重一倍的武器训练

先别说成为世界级的士兵或将军, 如果大家想在战场上活得比别人长, 你会选哪一项呢?   

image

这个道理对IT 行业的学生也是一样的, 在人潮汹涌的招聘市场, 我们可以问一下那些学生 -

你平时在学校里是如何为将来的职业准备的?

a) 不经过准备, 直接上

b) 只学理论, 没有实战

c) 用比实际工作要求更低的水平训练

d) 用和实际工作一样的要求训练

e) 用比实际工作高一倍的要求训练

在这片神奇的土地上, 我们或许还可以听到 f) 的回答:

f) 我不用准备, 我爹叫阿刚。 

image

负担通常会带来痛苦, 但是和将来的后悔相比, 哪个更痛一些? 这个问题也写在 NBA 凯尔特人队的训练馆里:

 

 

把压力当朋友,很多读者看到这里, 会问: 这门课貌似有很多作业和规则,不讲情面的老师,是否压力很大? 人们对待压力主要有两种态度

    ① 压力会影响我的健康

    ② 压力不会影响我的健康

有意思的是, 这两种态度都能导致和态度一致的后果! 请看TED 的演讲

除了态度之外,我们还要有具体的手段来帮助我们卸掉压力,或者,把压力转化为令人心情愉快的动力。 就像上面提到的演讲所言, 如果我们能在有压力的课程中互相帮助, 从老师,业界专家,学长,学弟学妹那里得到帮助, 并且反过来,帮助别人,那么,我们学习的过程就会有很多乐趣,这些乐趣会从心理上和生理上让我们更好地进步。这也是为什么我们的课程中设计了结对项目, 团队项目,互相的交流,点评,帮助环节。  

如何判分

“分, 分, 学生的命根。 ”

我在刚开始教这门课的时候, 我看到助教给同学们的作业判分是这样的模式:

最好的作业10分, 次好的9.5, 然后依次平滑下降, 有些学生交作业很迟, 有些学生写的程序都不能编译, 这些学生都得到6分左右。

这样的分数体系看起来非常和谐, 但这不是软件业的实际情况.  我们任选一种软件类型,  例如字处理软件, 最好的软件在市场上有多少份额? 第二名占有多少?  第三名呢? 第四名? 谁知道字处理软件市场的第四名是谁? 搜索引擎呢?  第一名的占有率是多少? 第二, 第三, 第四呢?  第四名的软件也是由优秀的软件人员开发的, 他们也许加班更多,  那为什么只有那么少的份额? 这公平么?

由于软件市场有 ”赢者通吃” 的规律 (第一名会占据 50% 以上的份额),  我们在训练中也要体现这一规律. 所以我规定:

如果大家做同样类型的作业, 则采用以下规则:

完成质量在第一档次的同学(一个或多个), 得满分。

完成质量在第二档次的同学, 得 1/2 的分。

在第三档次的同学, 得1/3 的分数。

以此类推…

在很多作业中,  我或TA会写一个比较平庸的解法 (例如用冒泡排序或线性查找)参加作业评比。 这个平庸的作业会得0分, 那比这个还差的作业, 就会得负分,  从-1, –2, –3 类推下去.  下面是两个评分体系的比较:

image

这样公平么?  很多人会问。  如果一个同学写了没有任何bug 的程序, 得到10分, 另外的同学程序有 1 个bug, 得到9.5 分, 程序编译都不过的同学, 也得6分, 那你觉得这样对写了全对程序的同学公平么?  如果一个同学的程序连普通的冒泡排序都比不过, 老师和助教在花时间陪他玩,  他事实上在无端耗费我们的时间, 这样的人不得负分得什么?

更详细的打分规则请看这里

 

做中学

上《现代软件工程》 的同学, 都是大三到研一的同学,  应该具备基本的学习能力和开发能力,  软件工程和其他类的工程 (如航天工程, 化学工程) 不一样, 我们每天都可以用到软件工程的产物 (软件),  搭建, 学习一个软件开发平台比航天化工要容易很多 (注: 在自家后院放二踢脚不是航天工程), 相关的学习资料也是非常容易获得。 在这个情况下,  学生们可以在“做”的过程中学习, 这也叫”做中学”.  做了, 有疑问, 再问老师, 问专家, 这样学习的效果会好很多。 我为这门课准备了二十本参考书 (对, 20 本), 同学们平时可以多看书。

真实的项目

在这门课中, 我鼓励学生做自己决定的项目, 但是要求他们要做”真实的项目” – 有真正用户的软件。  那些 “经典” 的项目, 例如图书馆管理系统, 学生学籍管理系统等,  如果没有大量模拟用户,不练习一些实战的功能,是不符合要求的。  项目要有活的用户, 只有活的用户才有活的需求, 才有活的场景, 活的测试用例。 只有活的用户才决定同学们写的软件是否值得使用, 有些团队写的小软件很好用,  在合适的用户群中引起共鸣, 短短时间内, 就会有几千到几万个用户, 也有的团队费了老鼻子劲, 写出来的东西用户量小于10, 自己团队成员包括在内。 这些不同的用户数量会迫使项目团队反思当初在需求分析, 设计上的问题。 另外这门课并不是算法竞赛, 或者代码集中营, 大家比的不是如何快速敲打出某个算法, 而是如何在有限的时间内交付有价值的软件给特定的用户。 “真实”这一条件也促使大家做 “现实”的项目和项目管理。 很多学生有宏大的梦想,  但是在短短的 8 周团队项目时间内, 甚至短短的 16 周课程时间内, 他们发现宏大的构想被自己程序的bug 搞得千疮百孔, 轰然倒地。 

既然真实,就会有人员流动的问题,因为:

- 有人想去做更好的项目

- 有人离开公司(退课)

- 有人和团队中的人合不来

- 有人觉得自己应该得到更多报酬 (分数,钱,股票),不愿意在原来的团队干了

- 有人做得很差,团队觉得没有他更好... 

 

 这样才会有人员流动,才要让软件保持 “可维护性”, 否则项目没法活下去。 所以,我们在团队项目的 alpha 阶段后,强制所有团队必须有一个人离开。 这个人要自己找能接纳自己的团队(不是原团队)。 有不少同学做过了一个项目 alpha 版,觉得应该尝试别的项目,他就可以利用这个机制在一学期内做两种项目,有更多的体验和收获。  有的同学抱大腿,打酱油,不想出力,那么,团队就把他请出去,他自己再找别的团队证明自己的价值。 这不是挺好么?详细分析在这里

 

学生的收获

在这门课里, 有付出, 就会有收获, 收获体现在下列方面:

  1. 写出一个可用的, 有实际用户的软件。 这对大多数人来说, 是第一次。
  2. 完整体验软件生命周期, 对于生命周期的各个阶段有实际的了解。对于软件设计有实际的掌握。 对敏捷软件开发的具体技术有实践能力。
  3. 了解软件团队的各个角色, 和各个角色的互动.  对于其中一个角色有实际的深入体验。
  4. 学习如何与不同的角色打交道, 培养团队精神, 学会解决冲突的几种方法

这个课程不讲什么?  这个课程不具体讲某一个程序设计语言, 也不讲 UML, 设计模式。 这些内容都应该属于其它课程。

但是从课后的自我反馈来看, 学生往往在某一门“程序设计语言”很有收获, 为什么呢?  第一是因为这门课的个人项目和结对项目让他们有充分的机会学习和巩固关于某一语言的知识;  另外, 他们第一次把某一门语言用到了一个有分量的实际项目中去, 从而深入地了解这个语言的特性。这可以说是<现代软件工程> 的一个好的副作用。

任何一门课都不会一帆风顺地讲下来, 所有人皆大欢喜。 老师学生需要时间来适应,交流,  才能逐步提高。 吹了这么多, 到底学生反映如何? 下面是清华大学的学生对这门课的不记名评价。

评分内容

2007

2008

2009

热情、认真、投入、严谨,教书育人

95.45±3.80

95.00±3.42

98.90±2.21

讲课思路清晰,重点、难点突出

94.55±4.04

89.29±5.77

98.90±2.21

讲解生动、有吸引力,能激发学生的求知欲

92.73±5.15

90.71±5.37

98.91±2.21

师生互动,鼓励学生质疑,并给予思路的引导

94.55±4.04

93.57±3.69

98.91±2.21

提供或推荐的教学资料有助于学生学习

93.64±4.23

86.43±8.19

99.00±2.21

作业等课程训练有利于课程内容的学习

94.55±4.04

90.00±4.95

99.00±2.21

考核及评价方式能激励学生主动学习与钻研

92.73±5.15

87.86±4.88

97.89±3.04

注重学生创新意识和独立思考能力的培养

92.73±4.37

91.43±4.44

98.91±2.21

对学生课外学习给予指导、建议

92.73±4.37

91.43±4.92

99.00±2.21

学习本门课程后有收获

92.73±4.37

90.00±5.38

97.91±3.04

上好课很难, 老师, 学生都不容易, 这个博客讲了一些。

一些学生清澈的, 充满求知欲的眼神告诉我, 他们最关心的是 -

                怎么用最小的代价, 让我过了这门课!

上了这门课就知道代价了。

 

上完大部分课程之后,看看这个文章,说说软件工程是过时了,还是方兴未艾? 软件工程是手艺,还是工程?

 

http://www.exceptionnotfound.net/software-development-is-not-software-engineering-do-we-want-it-to-be/

 

http://www.computer.org/cms/Computer.org/ComputingNow/homepage/mostread/MostRead-SW-SoftwareEngineeringAnIdeaWhoseTimeHasCome.pdf

 

posted on 2011-05-16 20:07 SoftwareTeacher 阅读(...) 评论(...) 编辑 收藏