软件工程与软件技术
2006-03-30 21:01 Jeff 阅读(1083) 评论(3) 编辑 收藏 举报梁肇新说“所有软件工程的设计方法总是一开始想把所有的问题想清楚或者解决,所以就会有什么概要设计,详细设计,似乎可以把所有问题都解决,剩下的只是像工厂做零件一样,找一群软件工人去按部就班地写代码就行了,但是这种方法在通用软件工程中是不能用的”。
“我们把软件开发分为设计规划阶段,功能设计阶段,测试阶段,所有的产品都可以划分为这三个阶段。事实上如果最核心的部分实现了,那么依赖于此核心,再实现增强一点的功能就是第二阶段,第二阶段完成后,就可以进行第三阶段。”
“按照传统软件工程的方法,即一开始就把所有问题都找到,但是,通常你是不可能预测到程序中会遇到的问题的。退一步说,即使你把所有的框框条条都设计好,也可能当突然遇到问题的时候,一时找不到正确的解决方法,而后你又试图去解决它,这样就可能需要花很长的时间去解决这个问题。当你发现这个问题很难解决或不能解决的时候,整个工程就会流产。按照传统软件工程方法去解决问题是不可行的,因为它假设所有的问题都能被解决或被完成,而实际上这是不可能的“。
现在看看我们软件工程这么课.现在个人感觉软件工程这么课上的毫无意义,没有意义的原因是老师讲的内容对我们提高没有作用,没有作用的原因不是老师讲的内容是不对的或者陈旧的,原因在于他教给我的东西不是我们需要的.也许很多牛人要说我们的浮躁了:软件工程是一种思想,你们现在学的是这种开发软件的思想,有了这种思想在脑海里对你以后有莫大的帮助,不要以为做出一个控件是技术,不要以为用Spring,用Ruby,用AJAX就是技术。很不幸的是, 我们担忧的正是梁肇新所说的“因为某个问题的出现,而使整个工程流产”,当我们面对一个全新的工程的时候,我们没有信心去解决的不是需求,也不是详细设计,我们所担忧的是某个未曾涉及过的技术,或者遇到某个没有深入学习过的专题。譬如我们现在做的项目,遇到的问题不是老师上课讲得那些理论能够解决的:在C/S结构中,多线程应该是怎么处理的。一般的多线程应用当然是会的,但是当把多线程和稍微复杂一点的客户和服务器,和MVC的Swing,和Socket结合在一起时,我觉得难以入手。现在我们不仅需要一个理论引路者,还需要一个技术指引者,而缺失的技术指引者造成了我们对这么课的失望。
个人认为软件工程的定位,它是更偏向于技术而不是管理的,或者说软件工程的管理是基于技术的.以为软件工程是更偏向于管理的想法,把软件工程理想化了。传统的工程有产品的大量复制,并且复制的周期长,一般不会有新技术的加入,软件工程没有复制,软件工程有的只是开发,正在努力追求制造——事实上达到这个目标也很遥远,而且软件工程不断地有新技术的加入.软件技术在软件工程中的作用如同硬件制造技术(无论轮胎还是发动机)在提高汽车性能时的作用!