软件工程的视频看完有些时候了,总体感觉是大面清楚,细究就走不出这条路了!不管我对软件工程思想理解到什么程度,但我相信它是一个伟大的思想,同时我也相信,伟大的事情是不可能一下子全梳理清楚的。但它教与我的第一个思想就是自顶向下逐步求精。我认识这门课也便由此思想入手了。
接触这门课,我们自然要清楚软件工程是用来做什么的,即我们用它的目的在于何?而这无非与时间与效益有关。而为了很好达到目的,我们便只有用工程化的思想来指导我们完成软件生命期的各个阶段!如果要想很清楚的理解这门课的意义,那我们就必须对“工程化”这个词有点了解。
原先编程都是个人的行为,软件本身很小,根本提不到什么合作,与之相对应,我们现在做的软件都叫做工程了,而“工程”一词,听起来就像是一个大的项目,听起来就不像是一个人能完成的事情。我对这个词的理解是多人合作,有条理低成本的完成一件了不起的项目。提到合作,我们就一定要有条理,否则结果不如不合作!而有条理就涉及到课程中所讲的,贯穿整个软件生命期的软件工程管理。其实,软件工程管理要完成的目标就是我们之所以学习软件工程的目的。
如果按照自顶向下的分析方法来说,我感觉软件工程管理就是最顶层的了,往下才是软件的生存周期,即生命期。在听生命期中的6个阶段的讲解时,我总是感觉有点迷糊,感觉这一节讲的东西在前几节中涉及到。我相信,任何事情都是不可能一下子做到的,需要经过反复的推敲,对于软件工程来说也是这样,这六个阶段,并不是一条线下来的。比如说,我们的需求分析不可能在写完需求分析报告后就不再变更了,我们所面对的用户并不一定能够很精确的表达出他的真实所需,我们也就不可避免要在设计阶段进行中来修改我们的需求分析(这就又引出了另一个很大的问题“软件设计与需求保持一致”,我们可以了解一下IBM Rational® RequisitePro® 2003 和 IBM Rational® XDE™ Developer v2003 之间的集成对这个问题的解决)所以有知识重复的感觉很正常。
对这门课的认识在向下分解就是理解各个阶段的目的,实现方法,产生的说明书及各个阶段的相互联系了!而在这几个阶段的听课过程中时我感觉分析阶段和设计阶段内容最多,最复杂。在翻看笔记时我才意识到我们的课程对传统软件工程和现代软件工程都进行了较详细的讲解。
传统软件工程的分析设计是以结构化(就是面向过程)的方式来进行的,而现代软件工程则是面向对象的方式进行的。而从两者的优缺点来看,现代软件工程大有取代传统软件工程之势,所以我感觉我们的主要精力还是多用在面向对象的软件工程,而提到此我们就不可能不学UML。这也就是我们下一步要学习的知识,否则我们的软件工程又如何有用武之地!
对软件工程的理解写了个框架,探讨了一下软件工程的思想“工程化“,了解了一下软件工程管理对整个团队的重要性,了解了软件生命期的六个阶段,对比了一下现代软件工程与传统软件工程。当然这些东西还要进一步细化来学习才可能算是学习了。
参考资料:
1 博文:软件工程管理与控制体系
http://blog.csdn.net/qiaodg/archive/2005/08/08/447972.aspx
2 论文:传统软件工程方法与现代软件工程方法比较