标题: 以后想学软件工程
→thorn
LU新生
Rank: 1



UID 10083
精华 0
积分 1
帖子 2
活跃指数 0
LU金币 2006 个
LU金条 0 个
阅读权限 10
注册 2004-1-27
 
发表于 2004-1-27 20:25  资料  个人空间  短消息  加为好友 
我们只是很粗糙的学了C语言,现在进了软工版什么也不懂 awkard.gif .以后想学软件工程,希望大家对软工做一下简单的介绍,软工的特点是什么?怎么入这个门?从现在起要注重什么学科的学习?学的时候要注意什么?学了软工,以后考研,就业的方向是什么?
高手帮忙啊 smile.gif

顶部
carol
荣誉斑竹
Rank: 14Rank: 14Rank: 14Rank: 14
幻想懒王++


UID 1859
精华 66
积分 5139
帖子 10006
活跃指数 32
LU金币 2596 个
LU金条 0 个
阅读权限 200
注册 2003-11-7
 
发表于 2004-1-27 21:11  资料  个人空间  短消息  加为好友 
计算机专业到高年级的时候,有《软件工程》这门课的。不过国内的状况是,大多数人学这门课的时候,都没有项目操作的经验,因此学的都是理论,很抽象。

这门课偶大学的时候没有学,所以具体也说不准什么。
还是建议,不要急于细化自己的学习方向,把每门课都学好。

顶部
ghostfly
大学士
Rank: 14Rank: 14Rank: 14Rank: 14
懒人一个



LU爱心使者  
UID 36
精华 7
积分 1173
帖子 2283
活跃指数 9
LU金币 6445 个
LU金条 265278 个
阅读权限 200
注册 2003-9-18
来自 山水安徽
 
发表于 2004-1-28 13:40  资料  个人空间  短消息  加为好友  添加 ghostfly 为MSN好友 通过MSN和 ghostfly 交谈
别着急啊,慢慢来laugh.gif





吃到老,玩到老。
顶部
Bell
LU天使
Rank: 4
三军总司令



UID 1782
精华 9
积分 699
帖子 1361
活跃指数 0
LU金币 2006 个
LU金条 0 个
阅读权限 50
注册 2003-11-6
来自 MIT
 
发表于 2004-1-28 18:21  资料  个人空间  主页 短消息  加为好友 
别的咱先不说,建议楼主把头衔改一下,改成“马甲大王”最最合适。 tongue.gif tongue.gif





Ensemble à tout jamais!
user posted imageuser posted image
顶部
→thorn
LU新生
Rank: 1



UID 10083
精华 0
积分 1
帖子 2
活跃指数 0
LU金币 2006 个
LU金条 0 个
阅读权限 10
注册 2004-1-27
 
发表于 2004-1-29 20:26  资料  个人空间  短消息  加为好友 
QUOTE(nolwenn @ 2004-01-28 18:21:42)
别的咱先不说,建议楼主把头衔改一下,改成“马甲大王”最最合适。 tongue.gif  tongue.gif

楼上的,知道偶,也不给个建议,什么的,不够意思啊! glare.gif

顶部
蓝色的忧郁
版主
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
禁止发言


UID 274
精华 10
积分 645
帖子 1120
活跃指数 76
LU金币 2674 个
LU金条 0 个
阅读权限 210
注册 2003-10-1
来自 南京
 
发表于 2004-1-29 20:37  资料  个人空间  短消息  加为好友  添加 蓝色的忧郁 为MSN好友 通过MSN和 蓝色的忧郁 交谈 QQ
QUOTE(CU sakulagi )
[1]如果要入门的话,最好先到书店找点“软件工程”入门的书来看。在书店这类的书不是很多,不过不是没有。一些网上书店也可以看一下。另外就是大学计算机系的软件工程课程的教材。
[2] 软件工程本身就是研究生的一个方向。
[3] 就业么,如果是大公司,即使是一个程序员也是需要较好的软件工程的。小公司么,可能很多时候可以作项目经理,更多的时候是用不上。tongue.gif





关注于c/c++,symbian c++的开发
对UNIX/Linux下的c开发也有兴趣

MSN: lee_vincent83615@hotmail.com
QQ:  3603108
顶部
[广告] 记录自己的思想火花,留住每日的技术积累,尽在拥有属于自己独立域名的博客。
蓝色的忧郁
版主
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
禁止发言


UID 274
精华 10
积分 645
帖子 1120
活跃指数 76
LU金币 2674 个
LU金条 0 个
阅读权限 210
注册 2003-10-1
来自 南京
 
发表于 2004-1-30 00:47  资料  个人空间  短消息  加为好友  添加 蓝色的忧郁 为MSN好友 通过MSN和 蓝色的忧郁 交谈 QQ
转自 http://www.vchome.net/swengineer/allengineer.htm

我的关于软件工程的一些观点

目前国内的软件方面的人才开始大量的关注软件工程这门学科,大有80年代末90年代初国人追捧汉字系统的劲头,但是实事求是的理解国内的开发过程,我认为软件工程固然是一个方面(甚至可能是非常重要的一面),但隐藏在表象后的问题也是不容忽视的,我认为目前开发环节中存在着一些问题或理解的偏差,其中典型的表现在:

1、 学而优则士

这个问题很普遍,很多人都是这样想:开发到35岁以后就应该考虑管理的问题了。这个想法是“学而优则士”的想法,好的开发人员,不一定是好的管理人员,因为侧重的面不一样,知识结构也不一样。但是,由于很传统的思想,认为领导就是应该各方面都好些,所以强把“学”推为“士”。这样不但没有更好的提高效率,反而浪费了很好的人才。同时,也是由于传统的思想,“士”更受人尊敬,而“学”往往被认为是蓝领,所以很多的“学而优”者也就有成为“士”的激励诱因了。我认为,这是一个不正常的现象。“学而优”的地位及受人尊敬应该有相应的评判机制,比如说:系统设计师应该比项目经理更加受人尊敬。也只有这样,“学”者才可以安心设计,“士”者也可以更好发挥“士”的职能。

2、过程与阶段

只有过程没有阶段是没有意义的,我们都知道,任何一个软件产品的开发是需要很长时间的开发过程的,这个过程也是充满风险的,如果没有有效的把过程细化,只是简单的严格的按照需求、设计、开发、编码、测试的流程去做,问题也就蕴含其中了。必须明确的是没有绝对成功的软件工程,也没有满足一切情况下的绝对的开发过程,将过程阶段化只是将风险降低,将蛋糕切细,一次吃不了多次吃。这个在软件工程中的相应的解决方法是里程碑。在绝大多数的开发过程中,里程碑的作用是非常重要的。在有些开发过程中讲究的是渐进式的开发,螺旋式的过程,其实也是对里程碑的一种扩展而已,只不过这些开发过程的里程碑是定义在自己的开发过程中而已。
好的开发过程应该是在风险管理上的尽量灵活,我不赞成将里程碑式的阶段管理放入到开发过程中的明细规定中,而是应该在不同的产品或项目开发上灵活掌握。有时一个里程碑可能只是在需求分析阶段的初期,但是如果符合实际的开发的需要,我认为就是好的开发方法。用这种观点观察RUP,我认为RUP中关于里程碑的定义有些刻板,RUP基本上是一个演化式的开发方法,演化的层次很清楚,但是,对于实际的开发中的里程碑定义的灵活性表现的不够充分。当然,任何开发方法不可能满足所有要求,在相对固定的需求的项目上,RUP还是有很大的长处的。在这一点上,我比较偏向于MSF的开发方法。

3、软件工程的左与右

以前学马列的时候学了一个概念,就是左倾与右倾,好像是这样定义的:左倾是指的把将来的事现在做,右倾指的事把过去的事现在做。这两种都是不好的。实事求是的讲,我认为现在的推崇RUP、CMM等有些左倾的味道。从管理的角度来讲,管理有三个阶段:能人管理、制度管理、标准管理。我认为RUP、CMM等属于标准管理的范畴。现阶段很多的公司的能人管理还没有做好,就急于开展标准管理不是正确的方向。首先将能人管理方式进化到制度管理才是当务之急。所谓制度管理就是建立符合公司实际的规章制度,做到人尽其才,在一个游戏规则下做事,这样就可以很大的提高工作效率,更好的沟通开发中的方方面面问题。也只有这样,才能更加深刻的理解标准管理的重要。越过这个阶段,直接跳向更高层次,就象在现阶段实现共产主义的想法一样,有些不切实际。当然,少数公司的制度管理已经很好了,工作效率确实很高了,那就另当别论了。

4、缺少什么样的人才

记得一个笑话说:外国人搞软件工程是在一个黑屋子里面抓黑猫,不过到现在还是没有抓住,而中国人是在一个黑屋子里面,而里面连猫都没有,然后有人说,我已经抓到猫了。这个笑话一方面是说明直到现在,软件工程还是一个在继续探索、发展的过程,另一个侧面也说明中国搞软件工程摸不着边的局面。(以上摘自《我有一个梦》,作者:胡朝晖,详细参见ChinaByte.com)

那么中国最缺少什么样的人才呢?我认为是系统构架师。很多人会说:我们缺少软件工程人员、缺少良好的项目经理、缺少……,是的,这些人我们确实也缺,但最重要的是系统设计师。因为,无论是项目经理、精通软件工程的人员,我们都可以培养,相对的培养成本也不是很高,而系统构架师却需要多年的行业经验和高超的设计水平,这些都不可能短时间内得到。

很多人说,我们的项目大多都是低成本的包工头似的项目,但是大家是否想过,如果,真的有一个项目是让大家去完成很尖深的系统,又有几个公司可以胜任?!为什么很多的Open Source的系统可以做的很大,不是因为这些Open Source有多么的软件工程,只是由于有一些优秀的系统设计师在参与设计而已。软件工程只能使得可以做到的工作做的更好,不能解决连做都做不出来的工作。这也可以说明为什么商业软件中软件工程的重要性,其原因很简单:在大家都能做到的情况下,就要比较谁的作的更好了。

软件工程是贴在楼房上的马赛克,有了当然更好,但是如果楼房的结构不好,贴在多的马赛克也可能只是金玉其外、败絮其中。

5、对程序员的正常理解

程序员是要求有创造性的,几乎每个人都是这样想。但在实际的情况下,又有很多人开始谈论如何将程序员当作运转机器的一个齿轮!这是很不对的,是对软件工程的一个曲解!首先,程序员不是打字员,程序员之所以重要,在于他的脑袋而不是他的键盘。程序员又不是设计师,这就不要求他有宏观的观点。程序员是要求对某个方面非常的精通的,哪怕是很小的一部分。系统设计师不可能将设计做到可以编程序的地步,他需要把握的是整体。而相对的,程序员需要把握的是局部。当然,如果任何局部都做的很好,整体不一定好,反之也一样。就想一条船,设计师是舵手,他需要有宏观的能力、需要知道那有险滩、需要辟其风险,而程序员是划手,他需要做到和大家行动一致、需要使用最佳的划船姿势、需要有吃苦耐劳的精神。

不要认为程序员是机器,在他的岗位上一样可以知道船航行的轨迹,要仔细听取他们的建议,因为,有时航行的问题往往都是先被划船的人发现的。

6、讨论的也需一定的标准

有时候会有这样的问题:一帮市场人员与一帮技术人员讨论,为了要解决市场与技术的协调问题,其中市场人员说市场的问题,技术人员说技术的问题,结果往往公说公有理、婆说婆有理。所以,讨论的也需一定的标准!如何定义这个标准在不同的场合和环境下是不尽相同的。技术人员最终需要解决市场上的问题,可是解决的方法并不是简单的服从。如果那样,是不可能做出真正符合市场的产品,因为市场人员看到的只是一定阶段的市场表象,他们并不清除这里面的原因,也不清楚原因的本质。

比如说:比如说现在人们常说的3层结构,往往客户需要让你使用3层结构的思路去解决实际的问题,可是他们并不清除为什么,只是认为很多人都是这样的做的。我不是否定3层结构的优点,只是说,在很多的项目中并不一定要求使用3层结构,因为那会使复杂度增加,而灵活性的掌握又需要很多客户的支持(客户的很明确的说明业务逻辑),同时,真正发挥3层结构的好处,还需要很强的设计师的良好的设计。在很多的小项目中完全没有必要多此一举,把两层的问题3层化。

建立这个讨论的标准就要求,技术人员理解问题的缘由,清楚问题的实质。我说的意思并不是要求技术人员要有很强的市场的眼光,而是需要把这些更深层次的原因及时的说明给市场人员听。

简单的服从市场人员的意志往往是项目可控性失败的直接原因。

7、片面的理解管理学;

现在有一股势头认为,软件工程中的管理者只要拿个手册照搬执行,肯定10有8、9不会有大的问题。但是问题真是这样吗?在《软件工程—实践者的研究方法》中有这样一段关于管理者的神话:
神话:我们已经有了关于建造软件的标准和规程的书籍,难道它们不能给人们提供所有其需要知道的信息吗?
事实:不错关于标准的书籍已经存在,但真正用到了它们吗?……它们完整吗?很多情况下,对于这些问题的答案均是“不”。(P.11)
我们必须明确管理的责任、实质与优劣。优秀的管理是无为管理,管理的目标就是不管理。不管的前提是有一套符合实际的游戏规则,大家按照游戏规则做游戏。有些人理解管理就是天天跟到被管理者的后面,不定的催促、不停的调度。这是不对的,这样的管理者是妨碍了正常的工作,是对管理的曲解。
所以说,优秀管理的前提是建立一套大家都能遵守的有效的游戏规则,在此规则下,达到高效工作的目的。
那种认为管理就是找人谈话、挑人问题、催促进度的理解是错误的,如果,真的遇到了这样的问题,我认为那确实是需要重新审视一下自己定义的规则的时候了。

8、您有一个持续发展的框架吗?

明知不可为而为之的后果是怎样的呢?可能是这样的:项目进度太紧、产品问题很多、每天陷入到工期的泥潭之中……。很多人说项目太紧是市场的时间给的太紧、是项目计划不严密、是软件工程不到位等等,但是,回头想想,如果真的做到了:市场的时间给的充分、项目计划严密、软件工程符合实际,那么,您有把握完成一个符合用户实际需要的、优秀的、低维护的项目吗?我认为,还不行。
可能很多人不会反对,如果客户的要求是让我们做一些Word、PowerPoint的模板(无需编写很多的代码),我们可以很容易的满足客户的需求。但是,如果客户让我们做一些关于MIS、POS、甚或是如教育、政务等软件,我们的成功的把握度就大大降低了。为什么呢?如果,我们做其他类的软件如同做Word的模板一样容易的话,我们还会没有把握吗?我们缺什么呢?我们在做这些软件的时候为什么就有些信心不足呢?
问题的症结在于:您是否有一个持续发展的框架。您如果有一个基本满足用户需要的semi-application的话,您将不会遇到那些问题。
如果您在实际工作中屡战屡败又屡败屡战的时候,您会不会问自己这样一个问题:您有一个持续发展的框架吗?

9、对过程范型的误解;

任何过程范型都有它的优点和缺点。我们不能否定瀑布模型的优点也不能否认其缺点,我们不能否定演进模型的优点同时也不能否认其缺点,其他范型也一样。很多人推崇RUP、XP等过程范型,但是前提是我们必须知道这样的模型是演进模型,有很多的优点,同时也不可避免的有其缺点的存在。
比如说:我们需要做一个需求很明确,并且在一段时间内需求不易改变的项目的时候,如:一个数据结构类库、一个通讯底层库等,这时候,使用瀑布模型可能会得到更好的效果。为什么呢?首先,演化模型的任何一次跌代的终点就是下一次跌代的起点,这样有助于用户更好的把握系统,可以更好的理解需求,但这种模型并不适合需求非常清晰的情况,如果需求非常清晰,这种跌代只能更多的产生冗余的文档,更可能产生很多过渡的设计,而这些显然是一种浪费。有些人,干脆就把演进模型当作瀑布模型来使用,讲究的是一步到位,这种做法就更有问题了!
如果需要一步到位的系统(即需求非常明确,同时需求很少改变),演化就变成了瀑布,这时候提倡演化无非就是多走了几个弯路而已。

正确的理解过程范型是正确的使用过程范型的前提。

10、对测试工作的误解;

我们应该重视测试工作,但是,过度的重视测试又会产生严重的问题。测试工作最重要的是要发现问题,是保证提交给客户的软件中不再出现问题,从这个观点说,测试很重要,但是,我们不能因为测试而测试,很多问题不是能够通过测试而解决的。
发现问题的时候解决是对的,正如亡羊补牢,未为晚已。但是对于问题的源头我们需要更加的重视。我们更加需要重视对于需求分析的审核、对于设计的复审、对于代码的复审。将问题消灭在摇篮中,总比与问题搏斗来的容易。
对软件的测试固然重要(无论是单元测试还是系统测试),但这种只对产生了问题征兆的测试是一种狭义的测试。我们决不能忽略对需求分析的测试(需求复审)、对设计的测试(设计评测),这样的种种测试的综合,才是软件工程中对测试的广义理解。
如果,您发现在工作中测试的环节上发现了太多的问题,您就是真正应该考虑在其他环节上“测试”是否出了问题的时候了。有时候,羊亡的太多,补牢也就晚了。

测试在软件工程中是一个狭义的概念,但是我们应该努力广义的去理解。

11、对文档作用的错误理解;

文档在开发过程中是很有用的,但文档泛滥就不好了。有些人说,开发过程中文档越多越好,我认为这种观点是不对的。首先我们要明确开发过程中为什么要写文档,文档的最根本的作用是为了沟通!一个项目或产品可能需要延续很长的时间,开发过程中可能需要很多的环节,可能会遇到很多的问题和很多的解决的方法,这时,我们需要文档的帮助,我们需要有一个记录,我们需要有一个共同的声音。文档不过是一个准绳,将开发中的各个树枝树叶扶正。如果,这个准绳太多太紧,大树可能会发育的很高很直,但是就是有些畸形,如果这个准绳太少太松,大树可能就会变成灌木丛。文档的多少、繁简是有度的,绝对不能说越多越好。
那么这个度是多少最好呢?我觉得有几个标准:1、文档需要说明解决问题的方法而不是解决问题的理论;因为解决问题的理论是在文档形成中做到的。2、文档完整即可,每一份文档说明一个问题,无需将多个文档的内容放在一个文档的里面;3、除了重要阶段形成文档,其它部分都只是讨论或者说是想法(这些通过其它工具可以有效的管理起来);4、不要让文档成为累赘,如果真是这样,我认为就是该考虑写作这些文档的必要性的时候了。

我们在文档的时候,一定要明白为什么要写这些(无论是为了现在还是为了将来)。

12、仔细审视神话!

在实际的软件工程的实施过程中,我们往往会遇到很多的神话,“软件神话具有一些特征使得它具有欺骗性……软件神话仍被不少人相信着”(参见《软件工程—实践者的研究方法》P.10),如果,我们使用审视的眼光,而不是盲听盲信的话,我们就有可能发现其中更多的玄妙了。

希望和大家共同努力,仔细审视软件工程中存在的神话!





关注于c/c++,symbian c++的开发
对UNIX/Linux下的c开发也有兴趣

MSN: lee_vincent83615@hotmail.com
QQ:  3603108
顶部
[广告] 记录自己的思想火花,留住每日的技术积累,尽在拥有属于自己独立域名的博客。
蓝色的忧郁
版主
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
禁止发言


UID 274
精华 10
积分 645
帖子 1120
活跃指数 76
LU金币 2674 个
LU金条 0 个
阅读权限 210
注册 2003-10-1
来自 南京
 
发表于 2004-1-30 00:52  资料  个人空间  短消息  加为好友  添加 蓝色的忧郁 为MSN好友 通过MSN和 蓝色的忧郁 交谈 QQ
转贴自 http://www.estandard.com.cn/ruanjiangongcheng/wenda.htm
软件工程专家问答



人们总是谈论软件工程,工程的含义到底是什么?您认为作为这样一门具有较高理论和应用水平的科学,在软件的开发和应用中是否起到了应有的作用?
据我们所知,软件工程的研究与应用近年来虽有不小的突破,但软件危机依然存在,也就是说,软件工程任重道远,您能否分析一下原因何在?
软件工程究目前集中在哪些方面,也就是说,软件工程研究的热点在哪里?
我国工程管理中,软生产过程质量管的研究水平是否实现了与际先进平的接轨?
作为软件工程国家工程研究中心的专家,您认为我国在建立软 的进程中,有关的项目研究,软件工用软件产业建发更的作用?
问: 人们总是谈论软件工程,工程的含义到底是什么?您认为作为这 样一门具有较高理论和应用水平的科学,在软件的开发和应用中 是否起到了应有的作用?

答: 我们可以从考察工程这个概念入手来分析这个问题。沿用Webster 大辞典1720年的定义,“工程”一词是科学和数学的某种应用;通 过这一应用,使自然界的物质和能源的特性能够通过各种结构、 机器、产品、系统和过程,成为对人类有用的东西。因而,“软件工 程”就是“科学和数学的某种应用;通过这一应用,使计算机设备 的能力借助于计算机程序、过程和有关文档成为对人类有用的东 西。”

然而,当前我们在使 用“工程”一词时,还隐含着如下意思:这是一件比较大的工作,通 常意味着需要较多人员的参与与合作,消耗较多的资源。换句话 说,一个人在家里打一件毛衣,编写一个小程序,都不能叫做“工 程”。与此相应,软件工程项目通常意味着programminginmany 和programminginlarge。由于消耗资源较多,因此,它既关注人 员的组织与参与情况,又关注资源的消耗情况。

我们要求工程目标能在一定的时 间、一定的预算之内完成。软件工程是针对软件危机提出来的。从 微观上看,软件危机的特征正是表现在完工日期一再拖后、经费 一再超支,甚至工程最终宣告失败等方面。而从宏观上、从整个社 会对软件的需求来看,软件危机的实质是软件产品的供应赶不上 需求的增长。软件工程的成果不是供最终用户使用的一般工具产 品,而是为软件设计和开发人员提供的思想方法和工具;而软件 开发是一项需要良好组织,严密管理且各方面人员配合协作的复 杂工作。软件工程正是指导这项工程的一门科学。软件工程在过 去一段时间内已经取得了长足的进展,可以说在软件的开发和应 用中起到了其应有的作用。

[Goto Top]


问: 据我们所知,软件工程的研究与应用近年来虽然有不小的突破, 但软件危机依然存在,也就是说,软件工程任重道远,您能否分析 一下原因何在?

答: 的确,我们也看到,计算机硬件在性能价格比方面呈指数级的飞 速发展常常使人瞠目结舌。与之相比,计算机软件的发展不免相 形见绌,但它仍然有相当大的发展。最主要的表现之一是:软件产 品的规模以及复杂程度与以前相比,也有了数量级的增长。另一 方面,如你所说的,软件危机依然存在。分析起来这里面有两方面 的原因:在宏观方面,这是由于软件日益深入社会生活各个层面, 对软件的需求的增长速度大大超过了技术进步所能带来的软件 生产率的提高。而就每一项具体的工程任务来看,许多困难来源 于软件工程所面临的任务和其他工程之间的差异以及软件和其 他工业产品的不同。

首先,我们要注意到,其他工业领 域里的工程的建设目标(比如建设一座桥梁)以及工程在整个工 期内所处的环境是相对固定的。而软件工程则不然。众所周知,许 多软件项目(例如MIS)的用户往往说不清楚自己的需要是什么。 不仅如此,由于技术进步,由于软件的使用改变了用户的工作环 境,由于用户周围环境的变迁,由于用户自身对软件的功能和使 用软件带来益处的认识的加深,软件工程的建设目标在工程进行 期间就会不断地变更。如果说传统工业领域里的工程任务好比去 射击一个十分清晰而又固定的目标,那么在软件工程领域里,你 的任务往往是去捕捉一团随风飞行而又边缘模糊的云团。

其二,也是更为糟糕的,传统工业 能够在相当短的时期内建立起一套与供应商无关的部件分解体 系以及与之相应的、受到全社会承认的工业标准,从而形成了严 密而有效的社会分工体系。反之,对于软件产业来说,在很长的时 期里,每一项开发工作几乎都要从头做起。软件部件的重复利用 处于很低的水平。开发者很少能够“从不同厂商采购软部件,再加 上自己的东西,迅速形成一个系统”。这种情况只是到近几年才开 始改变。

第三,工业产品只是软件的一个侧 面。软件不仅可以是一种在市场上推销的工业产品,它往往又是 与文学艺术作品相似的精神作品,有一种创作心理和效应在里面( 软件产权用版权法来加以保护的原因正在这里)。与体力劳动相 比,精神活动过程的特点是“不可见性”,这大大增加了组织管理 上的困难。

与其他工业产品相比,软件产品还 有三个重要特点是:其一,用户界面十分复杂。这意味着用户的使 用学习(培训)投资巨大。其二,与其他工业产品相比,软件产品的 设计成本高昂而生产成本极低。第三,使用软件产品的用户相互 之间经常需要交换文件与通讯,从而使得用户在设备选型的问题 上互相影响,“从众效应”严重(洗衣机、电视机的用户之间不存在 这类问题)。这三点给软件市场带来的后果是市场的先入为主现 象十分显著。一旦市场被某厂商的产品占领,其他与之不兼容的 产品即使在性能上更为优秀,也难以立足。由于软件大量生产(复 制)十分方便,优秀软件产品的扩大生产不像其他工业产品那样 要受到原材料、能源、场地、劳动力的限制,因而市场份额往往相 对集中于一个或最多两三个优秀产品。综上所述,软件产业涉及 的问题十分广泛,除了工程技术问题之外,还有市场、人才、政策、 资金运作乃至文化方面的问题。“软件工程”终究只是从“技术”和“ 技术管理”的角度来研究和探讨问题,充其量通过《软件工程经济 学》把“微观经济”方面也包括在内。所以我们不能说,只要解决软 件工程问题就能推进软件产业。

[Goto Top]


问: 软件工程的研究目前集中在哪些方面,也就是说,软件工程研究 的热点在哪里?

答: 软件工程的研究热点是随着软件技术的发展而不断变化的。即便 在软件工程的领域内,研究热点也在不断转移。最初的重点自然 是着眼于提高程序员的工作效率。于是开发了形形色色的软件工 具(编辑、编译、跟踪、排错、源程序分析、反汇编、反编译等等)。随 后把零散的工具归拢起来成为在一定程度上配套的工具箱。再后 来又增加了文件管理、数据库支持、版本管理、软件配置管理等功 能,逐步形成了所谓的软件工程环境。接下来,软件工程所关心的 就是“模型”问题。也就是如何划分软件开发过程的不同阶段(需 求分析,概要与详细设计,编程,测试,维护等等)。“瀑布模型”的 出现就是企图把其他行业中进行工程项目的做法搬到软件行业 中来。其隐含的基本假设之一是“项目标固定不变”。因此强调一 定要把“需求”彻底弄个明白,“前一阶段的工作没有彻底做好之 前决不进行下一阶段的工作”。然而对于软件来说,“项目目标固 定不变”这一假设多半不现实,因此做事严格认真的日本人首先 感到不对劲:大型项目进行到后期,往往发现几年前规定的项目 目标已经没有意义了。为了解决这一问题,在“瀑布模型”中添加 了种种反馈。随后又针对“用户自己也不知道自己到底需要什么” 的问题提出了“原型开发(prototyping)”思想以及与之相关的若 干变形。

软件开发涉及许多十分复杂而微 妙的思想与概念。用户与开发人员之间,开发人员与开发人员之 间的通讯与交流过程中常常引入许多误解。在有许多人参加的“programming inmany”的项目中,这一问题尤其严重。软件工程学中有很大一 部分内容是用来解决这一问题的。大致说来有以下几种途径。

第一,强调文档的重要性。“口说无 凭,立字为据!”是其格言。

第二,在当前阶段,除了程序之外, 软件文档几乎都是用自然语言书写的。然而自然语言本身具有模 糊性。因此有一部分专家从事“形式化描述与不同形式化语言之 间的转换”工作。这类工作难度较大,也不容易为一般人所接受, 往往处于“曲高和寡”的境地。但是由于越来越多的大型软件的复 杂程度与日俱增以及这些软件一旦出错所引起的后果十分严重, 对“形式化”的要求正在增加。

第三,一般用户绝对无法接受“形 式化的描述”,因此“原型开发方法”和“Demo示范”的做法日益流 行。

第四,一个工程项目中涉及的人数 越多,当然通讯过程中可能发生的误解和延误也越多。先进工具 和开发环境的提供可以大大提高开发人员的效率,可以“以一当 十”,从而使开发队伍变得精干,这就从另一方面减轻了通讯问题 带来的麻烦。

第五,软件开发过程的质量控制将 逐步得到重视。现在大家都已经知道,开发过程一旦结束,想要通 过测试来保证软件产品的质量是行不通的。

第六,软件重用与软构件的思想不 仅要建立,而且要在实施上有所表现。如前所述,软件生产率提高 缓慢的重要原因是不能像其他工业那样以合理而标准的方式清 晰地将系统划分为部件并重复使用已有的成果。近年来,软件技 术的进步以及CORBA,DCOM,JavaBean等标准的出现已经使情况 开始改变。这给软件危机的真正缓和带来了希望。

[Goto Top]


问: 我国在软件工程管理中,软件生产过程质量管理的研究和应用水 平是否实现了与国际先进水平的接轨?

答: 上面说到,软件开发过程中精神活动的“不可见性”大大增加了过 程组织管理上的困难。因此软件工程管理中的一项指导思想就是 千方百计地使这些过程变为“可见的”以及事后可以检查的记录。 只有从一开始就在开发过程中严格贯彻质量管理,软件产品的质 量才有保证。否则,开发工作一旦进行到后期,无论怎样通过测试 和补漏洞,都会无济于事。这就是近年来国际上十分重视的“软件 生产过程质量管理”思想。

为了考核软件公司是否认真地在 软件生产过程中进行质量管理,国际标准化组织ISO已经颁布了ISO9000-3( 注:ISO9000族标准适用于所有工业产品,但考虑到软件产品的特 殊性,所以专门制定了ISO9000-3),它是在软件产业贯彻ISO9000 族标准的指南。英国政府连同英国计算机协会于几年以前发布了 TickIT指南,指导软件公司实施ISO9000保证。美国CarnegieMellon 大学软件工程研究所根据美国国防部的要求制定了SW-CMM(软 件成熟度模型),描述了不断改进软件过程的科学方法,根据软件 公司在软件质量管理方面达到的成熟程度,将它们划分为五个级 别,使软件开发组织能自我分析,找出尽快提高软件过程能力的 方法,这个方法已得到国际软件产业界和软件工程界的广泛关注 和认可。国际上已经有数以千计的软件公司通过了ISO9000标准 认证,分别获得了TickIT的称号或者达到CMM中的一定级别。我国 这方面的工作也开始启动。国内软件公司如用友、东大阿尔派已 经通过了ISO9000标准认证。软件开发的质量保证作为软件产业 的重大课题,已受到电子工业部、国家科委和国家技术监督局等 部门的高度重视。

[Goto Top]


问: 作为软件工程国家工程研究中心的专家,您认为我国在建立软件 产业的进程中,应怎样加强与软件工程有关的项目研究,使软件 工程的研究和应用在软件产业的建设中发挥更大的作用?

答: 尽管软件工程涉及许多方面,但在当前,我认为最值得注意的重 点有两个:一个是开展中国软件过程评估,这牵扯到软件管理方 面的内容;另一个是软构件的大规模开发与使用,这直接涉及到 软件技术方面的内容。

软件过程评估就是说,所有的软件 公司都必须严格按照软件工程的标准去做,严格评估,一切都是 有跟踪、有检查的。有眼光的软件企业领导人都在关注这一动向, 积极采取措施,使自己的企业达到ISO9000标准的要求。这一方面 是为了提高企业的声望,更重要的是可以利用这个机会,提高员 工对质量问题的认识,通过这一活动整顿企业的技术流程和组织 情况,使企业的工作质量达到一个新的高度。

如前所述,以往软件工程一直不能 像其他产品一样,做到标准化,以一些现成的工具为基础,“踩着 别人的肩膀往上走”,而是一切都要从头开始。现在则不同了,技 术条件已经开始成熟,相应标准也已经出台,许多单位已经开始 重视这方面的工作。这实际上是将许多软件工作分成许多部件去 构造。很有可能今后的软件队伍会分为两个部分,一部分专门从 事评估,另一部分专门从事集成。

软构件的开发与运用可以说刚刚 开了一个头。在一些公共领域,例如软件的用户界面,通用软构件 的使用已经屡见不鲜。国内许多单位在开发软件时,已经普遍使 用Delphi,PowerBuilder等环境和工具,大大提高了工作效率。 然而,对于各行各业的专业领域来说,领域构件(DomainComponent) 的开发和使用还是基本处于空白状态。这一工作的进行,一方面 意味着各行各业对本专业领域内的知识形态加以归纳整理,然后 以最新的软件形式表达出来。如果全面铺开,就是一件规模浩大 的社会工程,需要各行各业的领域专家和软件专家通力合作才能 完成。

另一方面,在少数大型跨国公司对 软件市场垄断的压力下,现在许多国家和地区的软件行业感到发 展空间日益缩小,纷纷讨论一个问题:“难道我们只好替别人做代 理,搞推销?我们的niche在那里?”如果这上述软件生产的“构 件-集成”格局的趋势成为现实,各种应用领域里的构件的设计 与生产将开辟出一个十分广阔的新天地,产生出巨大的市场需求。 由于软构件的使用可以渗透到符合软构件标准规范的所有系统 中,做到“你中有我,我中有你”,不必耗费巨资开发自己的系统去 与大公司竞争,即使中小公司也可以在市场中找到自己的位置, 从而将给这些国家和地区的软件产业带来另一个新的发展机会。





关注于c/c++,symbian c++的开发
对UNIX/Linux下的c开发也有兴趣

MSN: lee_vincent83615@hotmail.com
QQ:  3603108
顶部
[广告] 记录自己的思想火花,留住每日的技术积累,尽在拥有属于自己独立域名的博客。
Bell
LU天使
Rank: 4
三军总司令



UID 1782
精华 9
积分 699
帖子 1361
活跃指数 0
LU金币 2006 个
LU金条 0 个
阅读权限 50
注册 2003-11-6
来自 MIT
 
发表于 2004-1-30 07:32  资料  个人空间  主页 短消息  加为好友 
QUOTE(→thorn @ 2004-01-29 13:26:40)
楼上的,知道偶,也不给个建议,什么的,不够意思啊! glare.gif

这话说的。其实学这个东西也没什么可说的,就和 CU 那个人说的一样,重视每一门专业课,要有扎实的基本功。

况且,你自己这不是找的挺好的吗?就不用我再废话了吧。





Ensemble à tout jamais!
user posted imageuser posted image
顶部
[广告] 记录自己的思想火花,留住每日的技术积累,尽在拥有属于自己独立域名的博客。
 



当前时区 GMT+8, 现在时间是 2008-10-11 19:05
乐悠LoveUnix论坛-京ICP备05005823号

Thanks to Discuz!  © 2001-2007    Power by LoveUnix.net
Processed in 0.055758 second(s), 6 queries , Gzip enabled

清除 Cookies - 联系我们 - 乐悠LoveUnix - Archiver