软件工程在我的脑海里就是如何利用工程化管理的技术来做软件。为什么会诞生软件工程呢?王老师不止一次的提到,随着代码量的增大,人对代码的掌控能力越来越弱,代码的逻辑、进度和成本越来越不好控制,产生了软件危机!为了解决软件危机,软件工程应运而生。我比较喜欢线上编程,基本上每次线上课程我都投入了大量的时间和精力。与一些自己想说的话两个方面作为我个人总结的内容。软件工程这门课可以算是我本科期间至今为止最虐的一门课了。但与此同时这门课给我带来的收获和其他课程相比,也不是一个量级的。下面我就在本课程中学习到的对软件工程的理解首先,我先谈谈我对软件工程的理解。
一、软件工程课程心得
所谓软件工程,是一个功能众多,内部逻辑复杂的工程项目。软件工程作业便是一个大型软件工程。与其它科目的作业不同的是,它不是一个可以通过交作业前几天通宵的方式完成的,他需要我们去一点一点积累所要用的东西(当然这是指真的想学好一个东西,如果时间有限,就是边学边做,通过我的观察,大部分同学都是临时学习一些然后就用了)。通过一个学期的作业实践,我发现想做出一个真正的软件,以下几个方面至关重要:
1.清楚的产品规划
在开始开发前,一定要想清楚,需要开发的这个项目到底是一个什么样的东西,它的功能应该包括什么,其中哪些是主逻辑部分功能,哪些是拓展功能,你做出来的软件需要让什么人去用。产品规划也是王老师强调的,软件工程是一个大项目,需要采用自顶向下的设计技术,需要先从整体上把握它,不至于迷失方向。因此我觉得一个好的项目一定要在开发前想清楚要做的产品到底是一个什么样的产品。可以不需要想清楚每一个细节,但是涉及软件核心的逻辑与功能必须想清楚,否则,后患无穷。
2.严谨的开发流程
由于开发的是一个项目,就应该选择项目工程的开发模式,如瀑布模型开发,增量模型开发,快速原型模型开发等等。在开发流程这方面老师要求的比较严格,基本上每周都要求开会和报告。在项目会议上,开始前一般有一个比较粗略的规划,到什么时间点需要大概做到什么程度。在每一次迭代会议上需要给上一个阶段的工作作出总结,细致地确定下一个阶段的工作细节,任务分配,安排下一个迭代集中开发时间与每一次开发要完成的任务点,这样才能做到有条不紊。我也认为这样可以有效防止项目开发只在最后一段时间做,能够把平时的时间利用起来完成项目,使得整个流程合理有序。但是我们目前正值考试,这样的流程要求还真够喝一壶的。
二、个人体会
由于作业开发需要组队,整个项目的开发都是由你选择的团队一起进行的。因此选择一个合适自己的团队至关重要。团队中每一个人都应该对项目有一个相同清晰的目标,大家一起朝一个方向努力。拒绝拖延症,否则睡觉时间不能得到保证。经过项目的前中期,自己还是学到了很多知识,经验和教训,希望自己能在以后的开发过程中注意以上的几点,开发出自己满意的项目。总之,学习软件工程我最大的收获,就是理解了软件工程,初步设计软件,明白软件开发的流程。特别是,由于王老师有着丰富的软件开发经验,所以比只讲软件工程理论要来的有趣、更好理解得多!最大的遗憾是,我希望线上课程能让我和同学共同协作,通过规定接口来完成一个软件项目,因为我感觉软件工程离不开沟通协作。
最后,深深感谢王颖老师给我带来了如此生动、有趣而又丰富的软件工程课程。