zoukankan      html  css  js  c++  java
  • 201671030128周琳 实验十四 团队项目评审&课程学习总结

    项目 内容
    这个作业属于哪个课程 2016级计算机科学与工程学院软件工程(西北师范大学)
    这个作业的要求在哪里 实验十四 团队项目评审&课程学习总结
    作业学习目标 掌握软件项目评审会流程;反思总结课程学习内容

    一、实验一问题回答###

    1、实验一博客链接####

    实验一 软件工程准备

    2、问题回答####

    • 1.在之前的学习中都以基础知识和理论为主,但软件工程以实践为主,如何能快速高效的实现这中间的转化过渡?书上讲软件工程各个阶段的要进行的工作与方法,但书上所讲看起来很容易理解,但是好像以现阶段的学习情况用到的并不不多,学习思维停留在就像很多理论课程一样知道有这个东西就行了,并不清楚这中间的因果和具体如何做的细节。
      通过一学期的学习,我认为对于课程方式的过渡首先要从思想上改变,理论可以指导我们进行软件开发,软件工程提供给我们很多的方法,而这些方法也不是全部要用的,我们需要选择有利于我们项目开展的方法进行使用,比如我们在进行团队项目需求分析时,就采用了问卷调查和访谈的形式,而在访谈的过程中为了让用户更直观的理解,我们将设计的原型给用户看,通过小型的软件开发项目,我逐步感受到软件开发过程中的流程和困难,通过和组内成员的沟通学习,一起解决了困难。
    • 2.在正式编写代码前的许多准备工作有什么意义?就如第8章需求分析,如果我一个不懂行业需求的人遇到一个不清楚自己需求的客户,怎样进行需求分析呢,就像P96页上说的一样,现阶段除了一上手就写代码,“没有必要用其他开发方法”,那么这些准备工作有什么必要使得我们必须去做它,这是我想学习到的。
      在编码前要进行可行性分析、需求分析、系统设计和详细设计,这些开发过程都会产生一系列的文档,文档总结了我们在本阶段的工作,在编码的过程中遇到模糊的地方可随时查阅,也是以后测试和维护的依据,这些过程能让我们更加清楚用户需要什么样的系统,而不是凭我们的直觉和个人想法去做,对于需求分析,获得需求分析的方法有很多种,比如访谈、观察法、原型法、调查表格等,遇到一个不懂行业需求的人遇到一个不清楚自己需求的客户这样的情况,我们先要进行一个访谈或者调查,了解该行业其他人对系统的要求,根据这些要求尽快做出一个原型模型拿给用户看,用户看了后能逐步明确自己的需求进而提出需求。
    • 3.软件工程学完之后能对我们的认识有怎样的改变?比如在编写代码方面:书上P69页说“只要有助于程序逻辑的清晰体现,什么方法都可以使用,包括goto”,但在我们的理论课中goto应该尽量避免使用;P77页说“对于外部调用的函数,检查返回值和异常”,这在我们以前的学习中并没有涉及;在团队合作方面:P88页说我们读别人的代码怕麻烦,但我们如何考虑自己的代码便于维护等这些问题都使得我们原来的认识发生了改变。
      通过软件工程一学期的学习,我知道软件工程并不只是编码,编码只占少数部分,文档和开发过程甚至超越了编码本身的工作量,对于大型的系统在由多人进行开发时,我们对自己的部分进行测试成功后,在团队整合的过程中我们的代码可能没有那么好的封装性和移植性,这就导致会出现许多的错误和异常,而对于这时系统的测试和调试任务就非常繁重,因此我们需要规范自己的代码编写,使得自己的代码符合团队的要求,减轻团队的工作负担。
    • 4.教材中对敏捷开发团队成员提出了较高的要求:1.以有进取心的人为项目核心,充分支持信任他们。2.自助管理、自我组织、多功能型。 即便是每日完成工作量,但人都有一定的惰性,时间长了就感觉枯燥,那就失去了信任的价值。那么引入外界压力从而督促团队是否能提高效率呢?
      团队成员的能力不同、思维方式不同,这就需要项目的领导者能够很好的划分工作的数量和强度,善于发现一些进取心强的人,建立合理的奖惩制度来鼓励团队成员工作的积极性,压力也不能过大,使得成员产生破罐破摔的心理,最好能让每个成员分到自己擅长的部分,信任他们的同时也提高了团队效率。
    • 5.书上说“过早的优化是一切罪恶的根源”,那么在编程过程中适当的优化不可以吗?比如在编码过程中发现几十行代码可以精简,一下变为几行代码,这样的程序不是更好吗?
      几十行代码精简为几行代码确实使得代码更加优化,但同时也会带来其他问题,比如在我的程序里删除了许多变量,在实现自己负责的模块功能实现的基础上减少了代码量,看似方便了以后的测试和优化,但是在团队进行整合的过程中,可能需要这个变量的值,那么这时就要在重新写这部分代码,造成团队工作量的增加。

    二、知识点总结###

    • 可行性分析: 从技术可行性、社会可行性、经济可行性和操作可行性三个方面分析项目的可行性,采用NABCD方法进行项目初步分析,其目的是能否用最小的代价在尽可能短的时间内确定问题是否能够解决。
    • 需求分析:需求分析是软件定义时期的最后一个阶段,它回答了“系统做什么”这个问题,需求分析过程建立的三种模型:数据模型、功能模型和行为模型,获取需求分析的方法有问卷调查法、利用mockplus进行原型设计、访谈、观察法,通过需求分析,初步选定系统所具有的功能和要求。
    • 实现:通常把编码和测试统称为实现,编码就是把软件设计结果翻译成某种程序设计语言书写的程序,程序的质量主要取决于软件设计的质量,而代码质量又可从代码规范、重用性等方面进行体现,而编写代码需要依据项目需求分析、概要设计、详细设计、编写编码规范说明书等进行编写。
    • 测试:软件测试是保证软件质量的关键步骤,测试的目的是为了发现错误,通过测试使得系统更加的完善,对每个功能进行单元测试,再将小组成员编写的代码进行整合时进行单元测试和系统测试。
    • 验收:项目验收是我们将自己的项目交付给验收方,为验收方讲明系统的功能和使用,获得验收方的建议,开发方尽量向客户展示自己的成果,让验收方满意。

    三、心得###

    • 刚开始上课时,我不知道这门课到底是做什么的,以为软件工程就是写代码,后来通过一学期的学习,知道这门课可以指导我们进行软件开发,刚上实验课的时候,第一个任务就是申请自己的个人博客并写一篇博客,原以为很简单,几句话就写清楚了,没想到还有一定的格式和规范,花费了很多时间在编辑博客上面。第一个项目为个人项目,由于之前的课程有基础,虽然功能、界面都比较简单,但基本功能都能实现,这个项目比较轻松的完成了,对于博客的撰写,只是机械的依照老师给的模板把每部分填了内容。
    • 第二个项目是结对项目,项目是在个人项目上的改进和扩展,开展形式也从单人变成需要合作沟通的两人编程,这时候,感觉明显有些吃力,因为结对意味着这个项目需要两个人的思想统一,但在完成项目的过程中难免会有冲突,比如时间冲突、想法冲突、技术冲突等,如何有效解决这些冲突就很重要了,我们小组通过制定时间表,在项目整体框架上面进行讨论,项目实现上采取择优的方式一步步解决了这些问题,算是一次满意的合作项目。
    • 对于团队项目,从项目选题,进行项目需求分析和文档的编写、系统设计、详细设计、项目的编码及测试,亲身经历和感受了一个完整的项目的过程,通过撰写一系列的说明书,我了解了编写需求分析说明书、系统详细设计说明书、编码规范说明书的规范等等说明书的规范,学习了一些工具的使用,比如利用mockplus进行项目的原型设计,采用Visio进行项目的建模,在团队项目的过程中,我最大的收获是团队合理的分工 ,这会使得效率很高,让擅长这个技术的人拿到自己擅长的部分,对于都不熟悉的大家就一起学习,小组成员共同协作,共同探讨与研究,遇到意见不统一时大家要及时沟通;其次,对于文档的撰写,我明白了它存在的意义,在进行编码时,经常会忘记这个部分接口是什么、函数名怎么写、用到数据库的话,在数据库中用到的那个属性是什么,这时就会查阅写过的文档,文档不仅是对现阶段工作的总结,也为以后的工作提供保障。

    四、总结和提升###

    1.统计在软件工程实践中,你完成了多少行的代码。
    5千多行
    2.你在软件工程实践的各次作业分别花了多少时间?

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

    3.哪一次作业让你印象最深刻?为什么?
    软件工程作业中结对编程使我印象最深刻,因为这是首次按一定方法进行结对编程尝试,体会了合作编程的过程,期间通过相互的讨论和监督使得代码更规范,功能更完善,逻辑较为严谨,特别是在单元测试和代码复审时,能更快的发现代码的错误,结对编程的效率比较高,在代码规范方面,意识到随意编写的危害,读代码改代码都很费劲,在结对编程中也遇到沟通交流的问题,但是也快速找到了适合我们的解决方法。
    4.累计花了多少个小时在软件工程实践上?平均每周花多少个小时?
    本学期总共在软件工程实践上用时42h,平均每周用时2.3h。
    5.你学习和掌握的新语言、新平台。
    语言:Java Web、Java
    平台:博客园、GitHub、中国大学MOOC
    6.填写下表,总结一学期的学习中,你学习或使用的软件工程开发工具、开发方法和建模方法

    软件开发工具、项目管理工具 软件开发方法 软件建模方法
    process on、墨刀、石墨文档、mockplus 原型方法、面向对象方法 面对对象建模、结构化建模

    7.其他方面的收获或提升
    编程能力、文档撰写能力、逻辑分析能力,任务规划能力、团队协作的能力等通过本学期的个人项目、结对项目、团队项目都有了很大的提升。

    五、课程意见###

    在本学期课程实验过程中,老师按照软件工程的开发流程安排指导我们实验,项目难度可以接受,项目前期的时间安排比较合理,但是到了最后编码实现时,由于到了期末,各科进入项目结交时间,但是还要在短短一周内就完成一个项目的编码工作,有一定挑战,希望以后可以增加至两周。对于文档,我希望老师可以在讲解实验要求的时候,对文档进行一个说明,虽然上面有提示,网上也有许多模板,但是我们在撰写的过程中,不清楚我们这个项目对应文档的一些部分怎么写,所以就在网上找相似的填进去了。

  • 相关阅读:
    comet技术
    OCP-1Z0-052-V8.02-120题
    OCP-1Z0-052-V8.02-121题
    OCP-1Z0-052-V8.02-122题
    OCP-1Z0-052-V8.02-124题
    OCP-1Z0-052-V8.02-125题
    OCP-1Z0-052-V8.02-126题
    OCP-1Z0-052-V8.02-127题
    RMAN 备份脚本
    Oracle DB 性能视图和数据字典
  • 原文地址:https://www.cnblogs.com/zhoulin52/p/11100989.html
Copyright © 2011-2022 走看看