个人总结

回想开学初对于软件工程这门课的期望,总结本课程对你带来的提升:

1.学习和使用的新软件
  • Dreamweaver(以前简单的使用过的软件,通过做课程设计又重新学习了,主要用于前端设计)
    Dreamweaver提供模板和库可以加速页面的生成和制作Dreamweaver会自动更新所有链接。
2.学习和使用的新工具
  • Enterprise Architect(主要用于UML建模工具,画各种图)
    它覆盖了系统开发的整个周期,除了开发类模型之外,还包括事务进程分析,使用案例需求,动态模型,组件和布局,系统管理,非功能需求,用户界面设计,测试和维护等。

  • Bootstrap(在课程设计时使用的前端开发框架,主要用于前端设计)
    Bootstrap简洁灵活,包含了丰富的Web组件,根据这些组件,可以快速的搭建一个漂亮、功能完备的网站。其中包括以下组件:下拉菜单、按钮组、按钮下拉菜单、导航、导航条、路径导航、分页、排版、缩略图、警告对话框、进度条、媒体对象等,是一个CSS/HTML框架。

  • MySQL(在课程设计时使用的软件,用于存放用户数据)
    MySQL是一个关系型数据库管理系统,其体积小、速度快、总体拥有成本低,开放源码,一般中小型网站的开发都选择 MySQL 作为网站数据库。

3.学习和掌握的新语言、新平台。
  • Java (以前也使用过但掌握的不太扎实,在编写计算器界面时又重新学习使用的编程语言)

  • PHP(在课程设计时使用的网页脚本语言)

  • 微信公众平台(在课程设计时使用的平台)
    微信公众平台,简称公众号。

  • coding(学习软件工程时使用的云端开发平台,就我而言,目前主要用于提交作用)
    Coding 是一个面向开发者的云端开发平台  ,目前提供代码托管,运行空间,质量控制,项目管理等功能。

  • Sina App Engine(在课程设计时使用的平台,主要用于Web开发,作为服务器使用)

  • GIT(在将代码上传至coding时托管时使用的控制系统)
    Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

4.统计一下,你在这软件工程实践中,完成了多少行的代码
  • 我在软件工程实践中,完成的大概2000行左右的代码。但我自己知道我完成的代码质量并不高,在数据结构的选择和功能实现上都有一定的缺陷,在今后的学习生活中也会多加注意。争取每一次都有新的进步。
5.学习和掌握的新方法
  • 需求分析:开发软件之前,对软件的功能要进行一个全面的设想;多考虑用户的需求。
  • 基于UML对象面向对象分析建模:用各种图形的形式展现软件。
  • 团队协作:通过合作开发软件的形式,学会在保留自己意见的同时,接受及肯定他人的建议。
  • 功能测试:通过单元测试,白盒测试,黑盒测试等测试方法检查软件有没有什么错,以及功能是否实现。

总结与展望

1.记录自己在软件工程课程上的经验总结
  • 其实最开始学习软件工程的时候,我并不了解这门课存在的意义。可能是我并没有正确的认识这门课,以至于听课时也没有太大的收获,甚至感觉这并不像计算机系的专业课,倒像是金融销售方面的专业课。但是随着我们深入的学习,到了要自己进行课程设计的时候,这门课真正的意义也就体现出来了。我才明白,学习计算机专业并不意味着一直低头写代码,我们将来要走上社会,走上工作岗位,我们会做软件开发、游戏开发等一系列与编程有关的工作,但是我们工作的最终成果是要服务于用户的,比起自己的想法,用户的需求更重要。软件工程这门课程就是教会我要有开发软件的系统性思维的一门课程,它的意义并不止是写在书上的哪些方法。他更教会了我今后工作甚至是处事的方法;前期看似复杂繁琐的分析设计其实是为了避免今后的麻烦;我想这就是这门课程的意义了吧。遗憾的是我对其中的一些思想掌握的不是很好,今后我也会不断的学习和理解软件工程的方法和思想,争取打造出只属于自己的意识形态。
2.对于下一届的学弟学妹你有什么建议和告知呢?
  • 学习软件工程,只跟着老师学习课本上的知识是远远不够的,你们要自己自学一些语言,软件,工具,平台的使用方法,在开始课程之初就要在脑海中设想自己设计制作的软件是哪种形式,需要用到的什么。当让不懂的东西会比你想象的多。需要做好心理准备的:大量的、形式丰富的各种作业是免不了的;各种对学习的困惑和不解是免不了的,持续不断的对新事物的学习理解以及发表意见是免不了的。不过别害怕,既然逃不掉,就好好享受吧,虽然有千难万险在等着你们,但受益匪浅也是必然的,毕竟天下没有免费的午餐。
3.分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》团队合作的阶段,你们团队经历过么?最后到达了哪一阶段?
  • 我所处的团队是“基于微信的一校通”开发团队,我们在前期的团队合作经历了萌芽阶段、磨合阶段、规范阶段、创造阶段,每个人各司其职,共同分担着每一次的团队工作,但是到了最后的软件实现和答辩阶段时,就自然而然的转变成了散伙阶段,几个人负责主要的工作,几个人负责剩下的简单工作,甚至不乏工作量极少的,在这里我也不多做评价,其中的原因我们也能理解,毕竟每个人的编程基础都不同,而且每个人对于知识的理解、掌握、运用能力也不同。总之,在这次团队协作过程中我也学到了很多,我会总结经验教训,运用在今后的团队协作中。

作业补充---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

在一周之内快速看完《构建之法》,列出你不懂的5-10个问题,发布在自己的博客。

1.如何利用单元测试准确高效的保证程序基本模块的正确性?(第二章2.1)
  • 单元测试是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。我在看完第二章时对单元测试这个问题感到困惑,在目前的学习生活当中,我从未接触过单元测试,不知道如何去写,也不知道怎样控制时长,也不理解如何能够将单元测试自动化。尤其是当我看到“100%的代码覆盖率并不等同于100%的正确性!”(见构建之法P27)的时候,我更加困惑,假使我完成了单元测试,又该怎样去判断它的准确性和高效性?
答:在代码编写完成后的单元测试工作主要分为两个步骤人工静态检查和动态执行跟踪。人工静态检查是测试的第一步,主要任务是检查代码,应可能的寻找代码中的错误,包括代码规范。动态执行跟踪是用单元测试,白盒测试,黑盒测试的方式测试代码在功能实现上有没有什么问题。

 

2.如何掌握效能分析的度?(第二章2.2)
  • 效能分析是根据影响效能的主要因素,运用一般系统分析的方法,在收集信息的基础上,确定分析目标,建立综合反映某事物达到规定目标的能力测度算法,最终给出衡量某事物效能的测度结果。效能分析能有效地帮助我们分析程序的效能,让我们更好的优化程序,但是我们应该在什么时候,进行什么程度的效能分析呢?
答:效能是指系统在规定条件下达到规定使用目标的能力。“规定的条件”指的是环境条件、时间、人员、使用方法等因素;“规定使用目标”指的是所要达到的目的;“能力”则是指达到目标的定量或定性程度。效能评估是根据影响装备效能的主要因素,运用一般系统分析的方法,在收集信息的基础上,确定分析目标,建立综合反映装备达到规定目标的能力测度算法,最终给出衡量装备效能的测度与评估。
3.在实际开发过程中如何判断是否需要选择敏捷流程?(第六章)
  • 敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。但是,我们如何判断我们所开发的项目是否需要敏捷开发呢?
答:敏捷开发就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。敏捷开发适用于软件,因为软件可以改。它适用于客户不知道自己要啥的情况,需要和客户沟通,合作,倾听反馈,持续改进。。。它适用于竞争激烈的市场,这样的情况下,赶在竞争对手前交付一个不完美但至少能用的产品非常重要。它适用于快速变化的市场。 它适用于小团队,这样能使敏捷中主要的沟通方式“Face to Face” 是可行的。
4.怎样理解并有效运用MSF?(第七章)
  • MSF是一套大型系统开发指南,它描述了如何用组队模型、过程模型和应用模型来开发Client/Server结构的应用程序,是在微软的工具和技术的基础上建立并开发分布式企业系统应用的参考。框架结构可以增强分析和开发大型项目的能力。MSF能够确定项目最大的风险在何处,强调制定计划和确定进度,确保成功发布一个产品所必备的条件。
    * MSF积累了三个关键的成功因素:
    * 一种帮助提供技术决策指南的观点。
    * 一组反复跟踪、监控和管理项目及其进展的参考方法。
    * 一致的重用性保证在灵活的计算环境中有效的利用已有的知识和技能。
    但是我们从未接触过MSF,我们应该怎样着手去运用它呢?
答:(转载至 百度百科)在项目实施的过程中运用MSF,其效果将是显著的,它能够将技术变成产品,由产品变成效益; 它能够帮助用户少走或不走弯路,从而更快地达到自己的商业目标。开发大型复杂的软件项目是一项充满风险的工作。统计结果表明大型IT项目的失败比例相当高,失败有很多原因:不断变更的需求,不稳定的或不完善的需求说明书,低质量的编码,过大的应用范围,不合适的组队模式,低效的工作过程,不明确的目标等等。 微软解决方案框架结构(MSF)通过其核心模型来解决这些问题。组队模型着重于解决在复杂软件工程项目中如何组建项目组、分配合适的角色、项目组的管理、职责划分和质量控制等问题。虽然组队模型是起源于软件开发过程中的规范和准则,但它也同样被成功的应用于基础信息结构设施的实现过程。简单来说分为六步:开发 、测试 、系统实施 、用户教育 、产品管理 、程序管理 。
5.如何培养自己分析和创新的能力?(第九章,第十六章)
  • 在读完本书之后,我深知对一个软件开发人员来讲分析问题的能力和创新研发的能力有多么的重要,但我一直按部就班的学习和生活,自觉天资不够,分析问题只能看到片面的部分,发现问题时也想不出什么新颖的解决思路,这些都不利于我今后的发展和成长,我该进行怎样的训练才能有效的提高分析和创新的能力呢?
答: 首先要培养自己的独立思考的能力,大学的学习不同于以往的被动式学习,学生自己要打破以前的思维定势和心理状态,“打破标准答案”,学会用自己的声音表达,即使是蹩脚的甚至是错误的。“但那是自己的想法”,而不是段落大意、内容提要那些统一的程式。 信息化时代的学习必须利用互联网,但又必须警惕它。互联网使记忆性的东西更为弱化,为快节奏的生活带来了各种方便,但是在解放记忆之苦的同时也更为强调人的思考能力,尤其是跨学科的思考,任何时候都不能忘了个人独立的思考。 学习是多方面的,如参加各种社团活动,多与老师老生交流,阅读更多更广的图书都有利于能力的提高,有利于去把握和发掘自己的心智、情感、经验与直觉;去寻找那个你的能力、激情和才智的最佳结合点。大学是这样一个过程:你去学会怀疑,也学会理解,发现自己的趣味,并不断地测试自己的能力,找到自己最佳状态的过程。大学就是在不断地选择,但这个过程不是面向“标准答案”,不是面向知识,而是面向趣味,或者是去发现自己能做什么,愿意做什么和能做好什么,从而确定自己将终生为之奋斗的目标。
posted @ 2017-06-20 21:23  1500802064  阅读(184)  评论(2编辑  收藏  举报