• 实验十四 团队项目评审&课程学习总结



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



    任务一:结合本学期课程学习内容,对比的任务5你所提的问题,尝试对提出问题进行解答,并阐明是如何通过学习/实践/讨论弄清楚的;学习中是否产生了新的问题?如有,请提出。

    《实验一 软件工程准备》
    1、那么怎样确定一个完美的软件,怎样确定一个产品呢是否能发布出去呢?软件工程师如何保证在新的改进上保持著原来软件的完整性呢?
    当产品已经足够好的情况下,可以确认是否已经完成。 “足够好”:是指产品已经具备一些可接受的综合属性,如功能、质量、时效性、客户价值、竞争力以及支撑的基础设施已经准备就绪。 
    客户对质量的看法主要取决于可靠性(持续运行无故障)和性能(操作的响应时间) 内部对质量的看法主要设计如下方面:软件在未来的可修改性、可维护性、文档的可理解性等。
    发布准则必须要与成功准则相对应,没有放四海而皆准的发布准则,要确保项目取得最终的成功,反映产品能够上线发布的指标都必须要有一定的可信度和可测度。 如果指定了不符合项目业务目标的宽松的发布准则,可能会造成一种一定会可能会取得成功的假象。 一些宽松的发布准则:广泛的客户群体曝光率,“很高的客户满意度” 。一些模棱两可的措辞:可接受的、足够的、恰当的、广泛的、精确地、高的、改进的、低的、合理的、健壮的、准确无误的和有效率的。这些措辞要尽量避免使用。

    2、什么方法可以提高单元测试的效率?
    制定合适的测试过程规范;
    制定合理的测试计划;
    设计合适的测试方案;
    按照科学的方法涉及测试用例;
    使用工具管理测试发现的缺陷;
    对缺陷进行统计分析,指导过程改进。
    对测试过程规范,测试计划、测试方案、测试用例进行评审。

    3、我们要怎样知道自己适合哪种模式呢?

    任务二:总结自己在项目的 可行性分析/需求分析/软件设计/实现/测试/项目验收/中学到了哪些“知识点”。

    -可行性分析是通过对项目的主要内容和配套条件,如市场需求、资源供应、建设规模、工艺路线、设备选型、环境影响、资金筹措、盈利能力等,从技术、经济、工程等方面进行调查研究和分析比较,并对项目建成以后可能取得的财务、经济效益及社会环境影响进行预测,从而提出该项目是否值得投资和如何进行建设的咨询意见,为项目决策提供依据的一种综合性的系统分析方法。可行性分析应具有预见性、公正性、可靠性、科学性的特点。
    -需求分析是软件计划阶段的重要活动,也是软件生存周期中的一个重要环节,该阶段是分析系统在功能上需要“实现什么”,而不是考虑如何去“实现”。需求分析的目标是把用户对待开发软件提出的“要求”或“需要”进行分析与整理,确认后形成描述完整、清晰与规范的文档,确定软件需要实现哪些功能,完成哪些工作。此外,软件的一些非功能性需求(如软件性能、可靠性、响应时间、可扩展性等),软件设计的约束条件,运行时与其他软件的关系等也是软件需求分析的目标。
    -软件设计是从软件需求规格说明书出发,根据需求分析阶段确定的功能设计软件系统的整体结构、划分功能模块、确定每个模块的实现算法以及编写具体的代码,形成软件的具体设计方案。软件设计是把许多事物和问题抽象起来,并且抽象它们不同的层次和角度。将问题或事物分解并模块化使得解决问题变得容易,分解的越细模块数量也就越多,它的副作用就是使得设计者考虑更多的模块之间耦合度的情况。
    -软件开发是根据用户要求建造出软件系统或者系统中的软件部分的过程。软件开发是一项包括需求捕捉、需求分析、设计、实现和测试的系统工程。软件一般是用某种程序设计语言来实现的。通常采用软件开发工具可以进行开发。软件分为系统软件和应用软件,并不只是包括可以在计算机上运行的程序,与这些程序相关的文件一般也被认为是软件的一部分。 软件设计思路和方法的一般过程,包括设计软件的功能和实现的算法和方法、软件的总体结构设计和模块设计、编程和调试、程序联调和测试以及编写、提交程序。
    -软件测试,描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出之间的审核或者比较过程。软件测试方法的分类有很多种,以测试过程中程序执行状态为依据可分为静态测试和动态测试;以具体实现算法细节和系统内部结构的相关情况为根据可分黑盒测试、白盒测试和灰盒测试三类;从程序执行的方式来分类,可分为人工测试和自动化测试。
    -项目验收,也称范围核实或移交。它是核查项目计划规定范围内各项工作或活动是否已经全部完成,可交付成果是否令人满意,并将核查结果记录在验收文件中的一系列活动。
    

    任务三:结合个人项目/结对编程/团队项目的个人经历,谈谈心得。

    软件工程这门课刚开始是个人项目,但实际完成和预期设想相差还是挺大的,具体编码花费了预期两倍的时间,还是因为对JAVA语言掌握不熟练,上机练习不够。这次实验掌握了软件项目个人开发流程,以及Github上发布软件项目的操作方法。感觉还是团队合作开发项目比较好,遇到问题和不懂的地方可以几个人互相探讨商量完成,可以省下很多时间在项目的优化和完善上。

    第二次实验是第一次结对项目,相比之前的个人项目,这次实验的方法步骤都有很大改变。两个人一起编程时,需要在方法、数据结构甚至是变量和函数名上达成一致。这减少了其中一方随意编写代码的可能性,结对编程时也选择了更加标准的语法、格式。每个人独自进行设计、实现软件的过程中难免要犯这样那样的错误。如果是结对编程的话,解决问题的能力就提高了,程序中的错误就会少很多,设计质量和代码质量也会高很多,还会省下很多以后修改、测试的时间。因为有随时的复审和交流,而且程序各方面的质量都会因为实力较强的同伴而变得更高。还有就是两个人一起合作一件事的时候,精神力更能集中、更专注,从而更能快速高效的完成任务。结对编程时我了解到了不同的解决问题的思路和算法,知道了一些还未接触到的键盘快捷键和调试技巧。和同伴在一起工作让我更好地相互了解对方,从而更加理解她,增强了团队凝聚力。一个成功的软件团队需要很多合作,有效地交流、相互学习和传递经验是很有必要的。

    在完成我们团队项目“家教管理系统”中,从最开始的问卷调查,用户需求的分析,到《软件需求规格说明书》,到基于墨刀的原型系统的实现再到项目的系统改进,最后到系统的实现,这一路走来,每一步都走的不容易,期间也遇到了很多的问题,例如最开始的时候,用户需求分析团队成员的意见出现了分歧,为此我们再次调查了更多的用户后,小组经过认真讨论后达成一致,正是我们在前期的充分调研,才使的我们在后面的具体实现工程中游刃有余,在预期的时间内完成我们的项目。当然,实现过程也不是一帆风顺,在会议栏目编辑富文本框实现的时候,就遇到了麻烦,之前没有接触到,所以不知道如何去实现,在我不知所措的时候,我们的团队成员冯晓同学,挺身而出,在他的帮助下,我顺利的完成了我的任务。团队项目的实现除了学习更多的新知识外,我觉得更重要的是团队成员的相互合作,相互配合。这接下来的时间,我们会更加完善我们的项目。

    任务四:总结这门课程的实践总结和给你带来的提升,包括以下内容:

    1.统计在软件工程实践中,你完成了多少行的代码:

    统计在软件工程实践中,我完成了大约2000行代码。

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

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

    3.哪一次作业让你印象最深刻?为什么?

    软件工程作业中团队项目使我印象最深刻,因为这是第一次按软件工程的方法进行结对编程尝试,体会了合作编程的过程,期间通过相互的讨论和监督使得代码更规范,功能更完善,逻辑较为严谨,特别是在单元测试和代码复审时,能更快的发现代码的错误,结对编程的效率比较高,在代码规范方面,意识到随意编写的危害,读代码改代码都很费劲,在结对编程中也遇到沟通交流的问题,但是也快速找到了适合我们的解决方法。

    4.累计花了多少个小时在软件工程实践上?平均每周花多少个小时?

    累计共花了165个小时在软件工程实践上,平均每周大约花11个小时在软件工程实践上。

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

    语言:Java Web、Java、Markdown
    平台:博客园、GitHub、中国大学MOOC、雨课堂

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

    软件开发工具、项目管理工具 软件开发方法 软件建模方法
    墨刀、GitHub 面向对象方法,Jackson方法,原型方法 数据流图,数据库建模,面对对象建模

    7.其他方面的收获或提升

    通过这学期学习,锻炼了我的编程能力、文档撰写能力、任务规划能力、团队协作等能力,最大的感触就是团结合作的力量比单打独斗的力量大,学习效率也更高,做出来的项目也会比个人项目更完善。遇到问题小组成员集思广益,互帮互助,最后解决问题,体会了完整的项目开发流程。

    任务五:你认为目前的课程存在哪些问题,你有什么更好的建议。

    之前的教学形式都是先期老师引导教学,然后再开设课程设计实践。但这次是课堂教学与实践结合,而且刚开始就做个人项目,让编程不太好的我有点适应不了,希望老师能设置一个过渡。刚开始个人项目一次实验有两周的时间,但到后期冲刺编码的时候一次实验只有一周时间,感觉时间有点赶,希望可以给编码测试的时间长一点。

  • 相关阅读:
    socket选项设置
    shell 备忘录
    VIM中cscope和tags数据库的添加
    MFC程序设计中的BeginPaint/EndPaint和GetDC/ReleaseDC的使用
    shell 命令行参数解析
    do{...}while(0)用法总结
    0长度数组的使用
    在线帮助文档
    GCC编译器帮助文档
    几款优秀的Linux基准测试工具
  • 原文地址:https://www.cnblogs.com/zj-0408/p/11101044.html
Copyright © 2020-2023  润新知