软件工程实践总结

一、个人提升

1.学习和使用的新软件

  • 1.Axure Rp

  这款软件用于软件原型的设计,便于我们对项目的整体有一个直观的了解,但由于这款软件设计出来的界面是静态的,只能查看这一界面的设计,如果不参与设计,可能会对按钮的功能及界面的跳转产生混淆。所以,在别的同学的推荐下,我们使用在线的手机原型设计工具--墨刀来设计项目原型,它最大的特色是能够设计出真实性很强的原型来,还可以把设计好的原型下载到手机里运行,这使我们团队的每个人对项目的总体有个比较明确的认识,为我们项目的成功奠定了扎实的基础。

  • 2.PowerDesigner

  这款软件主要用于数据库的设计,它可以帮助我们直观的了解数据库所需表的数量及表间关系,同时,它也可以依据设计好的数据库生成SQL语句,之后在创建数据库的时候可以直接使用。在使用过程中,我发现这款软件还可用来画用例图和类图,只是功能上不如Rational Rose强大。

  • 3.Rational Rose

  这款软件是在实践课上老师在讲解用例图和类图的时候推荐的,但由于自己电脑上没有这一软件,并且发现PowerDesigner也可以画用例图和类图后,我就没有再安装Rational Rose,只是在使用过程中发现PowerDesigner在这一方面还是不如Rational Rose的。

  这两款软件是在团队项目时开始使用的,主要是用于创建并维护项目使用的MySQL数据库,就个人偏好来说,我比较喜欢使用Navicat Premium。

  • 5.花生壳

  这一款软件是用来端口映射的,让外网能访问我们项目的服务器,只是由于使用的是免费的,所以有时会不太稳定,但也没有太大的影响。

2.学习和使用的新工具

  • 1.Github

  github的使用可以说是我在此次软工实践中的一大收获。github是老师推荐我们使用的项目管理工具,一开始,我们是拒绝的,因为我们觉得我们完全可以用U盘拷贝代码或用QQ等软件共享后再手工合并代码,但事实证明我们的想法太天真了。因为如果有多人同时修改同一个文件的话,那么必须把这些地方一个个找出来,然后一行一行筛选比较。这个工作量是及其“庞大”的,而且很可能会遗留下很多问题。

  github的一大功能就是能够将每个人负责的那部分代码整合到同一个项目中去,在pull下别人的代码后,它会把多个人修改的同一个文件出现冲突的地方一个个列出来,你只要在这些地方解决下冲突就可以了。这给我们团队项目的开发带来了极大的方便,随着对github的了解加深,我们也逐渐体会到github在团队项目开发中的作用,对github的使用也开始渐渐熟练,虽然目前只是局限于几个常用的指令。

  • 2.Git Extensions + TortoiseGit

  这两个工具都是用于Git操作的,不过它们是图形化界面,不需要使用命令行,但是由于一开始对git命令的不熟悉,在操作过程中遇到了一些问题。后来,通过上网查找Git教程学习github的相关操作,对这两个工具的使用也渐渐熟练起来,同时也加深了我对github的了解。

  • 3.MarkDown

  一开始使用MarkDown编辑器来写博客是因为老师要求,刚开始的时候需要不停的查看markdown的语法,随着使用次数的增多,常用的语法基本都记住了,而且用markdown编辑器写的博客排版相较于其它编辑器会简洁些,自己也开始喜欢上用markdown来写博客。在这一过程中,我也使用过markdown的在线编辑器MaHua和本地编辑器Miu,它们的共同之处在于可以实时查看编辑效果,这样就可以根据需要及时更改文档,而不用先保存草稿后再预览效果。

  • 4.Junit

  Junit是单元测试工具,在开发过程中,我主要用它来测试我在服务器上写的DAO包里的类,这样可以简化我们的测试过程,不用每次测试服务器时都运行一次客户端或者另写一个main函数用于测试。

3.学习和掌握的新语言、新平台

  • 1.java

  在软工实践前,我就学习过C和C++,没有接触过java,这学期由于Android和服务器的开发都需要用java来实现,所以就学习了java。同时,由于是初学,所以在敲代码的过程中遇到了许多问题。

  • 2.J2EE + MyEclipse Professional 2014

  在团队项目中,我们的服务器是用mysql+Tomcat+servlet的方式搭建的,使用的平台是J2EE。一开始对服务器的搭建我们完全没有概念,通过网上查找及图书馆查阅书籍发现可以用java搭建服务器,我们就跟着用这一方法来实现,在经历了许多困难后我们总算完成了服务器的搭建,并且也能与客户端实现数据的交互,虽然我们的服务器还存在一定的问题,但至少我们对服务器的搭建有了一个大概的了解。

  MyEclipse Professional 2014我只在尝试搭建服务器时使用过,它内部有许多的框架可以用于服务器的搭建开发,但是由于基础知识的欠缺,我们只能放弃使用框架,因此也就没有用它来搭建项目的服务器了。(ps:之后如果有自学Web应用开发的话,可以尝试使用框架。)

  • 3.Android Studio

  这是用于开发Android应用的平台,功能很强大,支持git的操作。但是却会出一些“奇怪”的问题,同时也极占内存。

4.学习和掌握的新方法

  通过这次软工实践,学到了挺多的方法,但真要写的时候却又不知道写什么。主要就是学会了一些调试的策略,比如在程序中打出日志信息,追踪错误原因的来源。另外就是在写接口时发现有的操作是类似的,完全可以写在同一个接口里,不用一个操作写一个接口。最后就是学会了框架和架构的使用,这在一定程度上帮到了我们。

5.其他的提升

  在这次软工实践中我做了我以前很少做的事:撰写文档。不论是个人作业还是结对作业,亦或是后来的团队项目冲刺都需要撰写博客,这使我对文档的排版有了一定的提高。另一方面的提升就是团队协作方面的提升,不论是结对编程还是团队项目,都需要与他人协作完成,这提高了我的团队协作意识,也在一定程度上提高了我的团队协作能力。最后就是时间安排能力的提高,因为在团队项目的冲刺中需要安排详细的冲刺计划,否则会影响到项目的演示。

二、人月神话——项目实践中的经验总结

1.边学边用的能力

  我是以近似0基础的状态开始软工实践的,一开始以为老师会教些知识再开始,然而并不是这样,老师在一开始就让我们直接开始做了(ps:当时我的内心是崩溃的),只能采取边学边用的方式来完成了。但是这样子学到的东西大多都是比较基础的,如果要更进一步的话,需要更为系统的学习相关知识。

2.心态很重要

  临近后期,我们小组开始萌生了一种想法:早点结束软工实践,然后开始复习。但是,我们却经常为了解决一个bug就熬到很晚才睡,但在解决了bug的时候还是挺激动的(ps:曾因为太吵被隔壁宿舍“投诉”过)。之后,这样的日子就一直持续到验收通过的那天。由此,我们明白了:不管你急或不急,软工实践始终在那,有时候越急越容易犯错。

3.编码规范很重要

  在项目开发的初始阶段,我们还是有严格按照小组的编码规范来写,但是后来就乱了,因此我们在后续的开发中开始陆续为自己之前欠下的账买单。

4.不能半途而废

  一开始对于服务器的搭建我是没有一点概念的,通过不断地百度、看书,慢慢的完成了Tomcat环境的搭建,从一个简单的jsp界面的显示开始了我的服务器搭建之旅。之后通过与组员的合作努力完成了服务器的开发,虽然存在一些问题,但在看到自己写的服务器能运行的时候还是很激动的。如果一开始就因为不会而放弃的话,也就不能体会到成功的喜悦了。

三、建议和告知

1.大学不是玩的时候

  在大一的时候一定要学好C语言和C++,这可以让你在之后学习其他语言更快上手。当然,数据结构也一定要学好,算法很重要。(ps:不要一有点时间就想着玩)

2.Github要趁早学

  最好在软工实践开始前就学习github的相关操作,它可以在软工实践中帮到你许多。

3.提高自学能力

  学校能教的是基础性的、理论性的知识,更深层次的或者实践性要求较强的知识还是需要自己去努力学习的,能做到理论联系实际则是极好的。

4.培养团队协作意识

  软工实践不是一个人可以完成的,它需要你与自己的队友多交流沟通,从而共同完成项目。

四、对未来的期许

  回顾课程刚开始的时候,我对写博客还是很排斥的,觉得发博客没有什么用,只要实践做好了就好了,而且每次写博客还要花很多时间。现在想想,从开始到现在的博客记录了我在软工实践的点点滴滴,也见证我在软工实践中的改变。

  对于之后的学习,我希望能做到:1、学以致用,同时继续学习git的使用和Android的开发。2、有机会的话就组队做一个项目,在实践中提高自己。3、对目前掌握的知识进行梳理和系统的学习,以此来提高自己的能力。

五、总结

  现在最大的感想就是软工实践终于结束了,再也不用熬到深夜了,可以好好准备考试了。在软工实践的过程中吐槽最多的就是选错老师跳进坑里,但是如果一切重新来过,我想我还是会跳进这个“坑”。这次软工实践我们小组付出了很多心血,我还记得我们小组在熬夜完成项目时有多累,完成时有多激动。而且自己在这次实践中也学到了不少,如果有人问我软工实践选哪个老师的话,如果他真想学点东西的话,我想我会推荐张栋老师,因为真的可以学到很多东西。

你可能感兴趣的:(软件工程实践总结)