201671030122 杨凡亿 实验十四 团队项目评审&课程学习总结

项目 内容
课程名称 2016级计算机科学与工程学院软件工程(西北师范大学)
作业要求 实验十四 团队项目评审&课程学习总结
课程学习目标 (1)掌握软件项目评审会流程
(2)反思总结课程学习内容。

  • 对实验一问题回答

    《实验一 软件工程准备》
    • 在构建之法P15,提到软件工程的目标是——创造“足够好”的软件。那么紧接着的一个问题就是——什么样的软件是“足够好”的或者说如何定义“足够好”的边界?

      通过一学期的学习和实际以后,我对于这个的问题的理解是,软件的开发出来最终是要投入具体使用的,只要最后开发完成后能够符合用户的需求的软件就是好的软件,对于任何一款软件来说,它不是完美的,但只要后续能够继续维护使用的就是足够好的软件。

    • 在第五章作者提出了软件开发的一些流程。由于是粗略的看了一下,对于每一种开发流程的优缺点把握的不是很好。但是我想知道的是,当一个全新的项目开始时,要如何选择一种模式作为团队模式?一个团队的模式是固定的还是可以根据一些项目有所变动?

      软件团队模式分为很多种,如主治医师模式、社区模式、爵士乐模式,官僚模式等等,它们各有优缺,应用于不同环境,不同类型的团队成员。在这学期的团队项目中,我们主要选择的是交响乐模式和功能团队模式,交响乐模式的主要特点是门类齐全,各司其职,有共同方向的。其优点是在开发过程中分工明确,大家可以术业有专攻,效率比较高。功能团队模式的主要特点是:人人平等,没有管理与被管理的关系。优点是小组间交流比较频繁,不同能力的人可以平等协作共同完成一个功能并且完成一个工作后可以再和别人完成另外的工作,效率较高。缺点是:要适应别人的编程规范。一个团队最重要的的合作的,这样就必须让每个团队成员充分发挥自己的特长,还有一点就是团队成员之间的不断磨合产生的默契,当一个团队磨合好后,对于团队的模式也可以根据具体的项目的合理灵活的选择。

    • 读完第六章敏捷流程后,感觉到敏捷流程确实和之前提到的软件开发流程不一样。软件工程这门课更多的是注重实践,对于初学软件工程的我们来说,敏捷流程是否适合我们学习过程中团队的开发模式?

      敏捷流程是一系列价值观何方法论的集合。从一学期的学习中我的理解是,敏捷流程应该很是适合团队的开发,其中感受最大的是迭代开发,在本学期的团队项目中自始至终贯穿着迭代的做法,迭代可以很好的对当前的已经的完成的工作进行改进和总结,避免到最后出现无法挽回的问题。另外团队成员之间可以面对面进行交流,可以明确出现问题的根本原因和最真实的想法。


  • 知识点总结

    • 可行性分析:可以从技术可行性,经济可行性,操作可行性以及法律、社会效益等方面对项目进行可行性分析。并且可以采用NABCD法对项目进行初步的评审。
    • 需求分析:在需求分析阶段,主要是尽可能全方位的获取用户需求。常见的需求获取方式有问卷调查,访谈,情景模拟,调研会议等,不同的系统针对的用户不同,因此需求调研方式也不仅相同。在获取需求时可以根据具体的用户将不同的方法结合起来。在需求获取之后需要建立数据模型,功能模型和行为模型,并快速建立软件原型,让需求更加清楚的呈现的在用户面前,学习了原型开发工具mockplus的使用。
    • 软件设计:软件设计主要是软件概要设计和详细设计。在概要设计时主要是根据需求分析阶段的成果将系统进行功能结构的划分。首先需要进行系统设计,从数据流图出发设想完成系统功能的若干合理的物理方案,然后和用户选定一个最佳方案,然后进行软件结构的设计,确定软件有哪些模块组成以及这些模块的之间的动态调用关系。可以用层析方框图来描述习题的总体结构,在面向对象的设计中也可以采用类图,用例图,活动图,顺序图等来描述。在软件详细设计阶段主要是确定怎么具体地实现用户需要的软件。结合具体的开发模式细化每个模块的算法流程,数据结构,和接口设计。在面向对象设计中,主要是完善类图,精化类的属性和操作,详细定义类中服务参数和具体实现逻辑,依据软件开发环境调整类的层次关系和关联关系,定义软件数据库表结构等
    • 实现:主要包括编码何测试部分。编码主要是把软件设计的结果翻译成用某种高级语言书写的程序,因此,程序的质量主要取决设计的质量,但是高级语言对选择,特别是书写程序的风格,也对程序的质量有很大的影响。测试主要是发现程序中的错误,主要测试方法有白盒测试和黑盒测试。
    • 验收:将我们的项目交付给验收方,为验收方展示系统实验的功能和具体的操作。需要准备开发中设计的各类文档。

  • 心得体会

    刚开始上课的时候以为软件工程这门课就是写代码开发一些软件的,但没有想到的是一个软件的的开发需要做很多的工作,而写代码只是其中的很小一部分。从个人项目开始慢慢设涉及到一些软件开发的流程,个人项目内容比较简单,但是完成项目的时间却花费很多,更多的时间是主要是在文档的编写,以及熟悉GitHub的一些操作,在之前的课程中也有些过一些文档,但没有感觉到它很重要,从学习完软件工程这门课程以后觉得认真编写文档是一件很重要的事情。在结对编程中,真的感受到了两人合作完成任务效率真的很高,错误率也明显降低,但是两个人合作避免不了会有一些分歧,这就需要两人之间进行交流,协商出合理的解决方案。在团队项目中,从开始的团队的初步组建到最后完成整个项目,我们从最开始不知道怎么合作,到最后能够很有默契的完成每次任务,这和我们每个人的努力分不开。作为一个团队,团队意识是很重要的,每个人都应该为团队项目考虑和负责,缺少每一个人都不行。作为整个小组的组长,每次都要进行任务分工,刚开始拿到任务总是很随意的进行分工,导致最后任务总是很急的完成,弄得每个人都很累,后来就让每个自己根据自身情况领任务,发现效果的还是可以的,合理的分工会让事情事半功倍。


  • 总结

    • 1.统计在软件工程实践中,你完成了多少行的代码。
      大约四千多行代码。

    • 2.你在软件工程实践的各次作业分别花了多少时间?

      |实验|用时(min)|
      |:--|:--|
      |实验一 软件工程准备|100|
      |实验二 软件工程个人项目|204|
      |实验三 作业互评与改进|70|
      |实验四 软件工程结对项目|270|
      |实验五 软件研发团队组建|70|
      |实验六 团队项目选题|75|
      |实验七 团队项目原型设计与开发|110|
      |实验八 基于原型的团队项目需求调研与分析|150|
      |实验九 团队项目需求改进与系统设计|210|
      |实验十 团队项目系统改进与详细设计|310|
      |实验十一 团队项目设计完善与编码|120|
      |实验十二 软件测试与Alpha冲刺|410|
      |实验十三 Beta冲刺与团队项目验收|450|

    • 3.哪一次作业让你印象最深刻?为什么?
      应该是整个团队项目。因为这个项目是我第一次从开始可行性分析开始一直到最后项目交付都参与的,让我学习到了一个软件开发过程中需要这么多的步骤和各种工具。也感受到团队合作的重要性,团队合作中会遇到各种各样的问题,我们小组也不例外,合作过程中也有很多建议不合和争吵,但最终都和平解决了,这次团队合作也给我留下了深刻的印象。

    • 4.累计花了多少个小时在软件工程实践上?平均每周花多少个小时?
      本学期总共在软件工程实践上用时46h,平均每周用时2.5h。

    • 5.你学习和掌握的新语言、新平台。
      语言:Java Web、Java
      平台:博客园、GitHub、中国大学MOOC

    • 6.其他方面的收获或提升
      通过本学期的学习我在编程能力、文档撰写能力、任务规划能力、团队协作的能力,自我学习能力等都有了进一步的提高,更多的是学会了在团队合作中和其他成员之间的交流和沟通以及遇到问题时自我解决的能力。

    • 7.填写下表,总结一学期的学习中,你学习或使用的软件工程开发工具、开发方法和建模方法

软件开发工具、项目管理工具 软件开发方法 软件建模方法
Visio,墨刀、mockplus,GitHub,leangoo 原型方法、面向对象方法 UML建模、结构化建模

  • 课程意见

    本学期的课程主要集中在实践上,让本来跟枯燥的一门课程变得很有意思。实践可以让我们对理论知识立马得到应用。这一点感觉做的非常好。但是在时间安排上,前面部分时间安排比较宽裕,但是在编码阶段,由于快到期末了,每门课程的项目都到了提交检查阶段,时间就感觉有点紧张。总的来说,通过这门课我也学到了很多知识既有课本上的也有课本之外的,很感谢老师在这门课上对我们的付出。
原文地址:https://www.cnblogs.com/yangfy2019/p/11107049.html