201771010114-李晓菁 实验四 软件项目案例分析

项目 内容
课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/nwnu2020SE
这个作业要求链接 https://www.cnblogs.com/nwnu-daizh/p/12616341.html
我的课程学习目标 通过一些较好的案例项目分析并学习,掌握团队开发的模式和流程
这个作业在哪些方面帮助我实现学习目标 通过学习分析项目案例,学习到怎样更好的进行结对协作并发挥最大效益以及如何进行更好的团队协作
结对方学号-姓名 201771010107-冯志霞
结对方本次博客作业链接 https://www.cnblogs.com/fzx201626/p/12677070.html

任务一 :在实验三得分100分以上作业中,任选一份作为案例,对案例项目成果进行评价。

1.案例作业(我选择汪慧和杨野组的项目)
2.案例作业项目仓库链接
3.博客评论:

4.克隆案例项目源码到本地机器



5.案例项目运行及功能总结

  • 项目运行

    • 信息填报界面
    • 查询界面,可按学生姓名查询

    • 二级人员可按学院信息查询

    • 可按目前所在地查询
    • 可按职业查询
    • 可按是否感染查询
    • 图表点击按钮,可点击不同的按钮,生成不同的图
    • 生成学院饼状图
    • 生成学院柱状图
    • 生成师生比饼状图
    • 生成各地填报柱状图
    • 生成感染与否柱状图
    • 填报提醒

  • 功能总结

    • 实现了学生和老师可进行填报的功能
    • 实现了二级防疫部门人员可进行疫情信息的填报与查询;
    • 实现了防疫部门负责人可根据姓名进行模糊查询,根据姓名、学院、感染情况进行准确查询,可查看感染情况的统计数据(用柱状图来表示)。
    • 项目代码规范文档
    • 代码运行时的bug(也由于自己没有理解的缘故)

      案例博文非常清楚的介绍了功能如何使用,并且列出了各种类以及类与类之间的关系,最清晰的还是用一张关系图来直观的体现功能之间的关系以及类之间的关系。项目代码规范文档也很好的说明了类名以及变量名,使得理解代码更加容易。

6.总结案例项目的博客作业及代码设计存在的问题和不足

  • 博客作业的不足
    • 博客中穿插的图比例不是很完美
    • 对于功能界面的介绍有一点点不好理解
  • 代码运行存在的问题
    • 代码导入自己的eclipse时其中的文字出现乱码的问题(已通过百度与同学指点解决)

      代码运行时刚开始出现了乱码的问题,通过百度发现乱码问题的产生最根本的原因就是使用错误的字符集解码字节流或者将给定的字符串,用错误的字符集编码成错误字节流造成的。已通过用UTF-8的字符集进行编码并解决问题。

  • 未实现以及不足的功能
    • 没有对普通人员和管理人员进行区分登录,所有人都可以操作任何功能。
    • 没有设置二级负责人和总负责人的角色,没有区分他们所拥有的权限。
    • 生成的柱状图没有设置标题,可能有一点点不好理解。
    • 没有生成Excel表格的按钮,但是也生成了txt文件。

任务2:与实验三结对伙伴协作学习:阅读《现代软件工程—构建之法》第5-6章内容,理解并掌握软件项目团队的特点、了解软件团队的模式、结合理论课学习内容理解瀑布模型及其变形、渐进交付流程、敏捷流程等典型软件过程模型特点,理解并体会卡内基梅隆大学(CMU)软件工程学院总结的TSP原则;

1.软件项目团队的特点:
(1)团队有一致的集体目标,团队要一起去完成这个目标,一个团队的成员不一定要同时工作。
(2)团队成员有各自的分工,互相依赖合作,共同完成任务。
2.软件团队的模式:比如主治医师模式、明星模式、社区模式、业余剧团模式、秘密团队、特工团队、交响乐团模式、爵士乐模式、功能团队模式、官僚模式等。团队协作过程中会选择一种模式进行项目开发。
3.软件开发流程:它的目的是为了提高软件开发、运营和维护的效率,以及提升用户满意度、软件的可靠性和可维护性。我认为目前就我而言,在软件工程这门课中是“写了再改”模式。
4.典型软件过程模型:
(1)瀑布模型是出现最早,使用最广泛的开发流程模型。它适用与产品的定义非常稳定,但是产品的正确性非常重要,需要每一步的验证;产品模块之间的接口、输入和输出能很好的用形式化的方法定义和验证;使用的技术非诚成熟,团队成员都很熟悉这些技术;负责各个步骤的子团队分属不同的机构,或在不同的地理位置,不可能做到频繁的交流。它的变形有:1)生鱼片模型:各个相邻模块像生鱼片那样部分重叠,这个模型解决了各个步骤之间分离的缺点。2)大瀑布带着小瀑布:为了解决不同子系统之间进度不一,技术要求迥异,需要区别对待的问题,引入了子瀑布模型。
(2)统一流程(RUP):它将软件开发的各个阶段整合在一个统一的框架里,要完成一个复杂的软件项目,团队的各种成员要在不同的阶段做不同的事情,这些不同类型的工作在RUP中叫做规程或者工作流。RUP把软件开发分成四个阶段,一个大阶段结束称为一个里程碑。四个阶段分别为:初始阶段(生命周期目标里程碑)、细化阶段(生命周期结构里程碑)、构造阶段(初始功能里程碑)、交付阶段(产品发布里程碑)。
(3)渐进交付的流程:
      1)MVP:最小可行产品,或者最小功能集。它将产品最核心的功能用最小的成本实现出来,然后快速征求用户意见。为了突出核心功能,别的辅助功能可以不用考虑或者用别的平台提供的服务来代替。
      2)MBP:最强最美产品,对用户的需求非常了解,或是产品团队比用户更加了解用户的需求,将最全最美的产品展现出来,赢得用户。
(4)敏捷流程:敏捷开发的原则有:尽早并持续地交付有价值的软件以满足顾客需求,欢迎需求的变化,并利用这种变化来提高用户的竞争优势,关注技术和设计,才能越来越敏捷等等。在Scrum 方法论中提出:1)Product Backlog:积压的工作、待解决的问题、产品订单。(2)Sprint Backlog:当前的冲刺需要解决的事情。3)冲刺。在此期间通过Scrum Meeting(每日例会)来依次报告昨天都做了什么工作、今天的工作计划以及遇到的问题等等。
5.TSP原则:
(1)使用妥善定义的流程,流程中的每一步都是可以重复的、可以衡量结果的;
(2)团队的各个成员对团队的目标、角色、产品都有统一的理解;
(3)尽量使用成熟的技术和做法;
(4)尽量多的收集数据(包括对团队不利的数据),并用数据来帮助团队做出理性的决定;
(5)制定切合实际的计划和承诺,团队计划要由负责具体执行的角色来制定(而不是从上级而来);
(6)增加团队的自我管理能力;
(7)专注于提高质量,争取在软件生命周期的早期发现问题。最有效提高质量的办法是做全面细而细致的设计工作(而不是在后期匆忙修复问题)。

6.与同伴的讨论截图

任务3:在班级博客园,有很多高校的软件工程课程要求同学们完成团队项目,请与实验三结对伙伴协商,在以下三个班级中选择一个高质量的团队项目案例进行协作学习,要求追踪该团队项目发布所有博客作业,下载项目软件代码。(选择 2016级计算机科学与工程学院软件工程 (西北师范大学))

1.团队项目作业发布账号链接
2.团队项目仓库github链接
3.陈述你选择该团队项目进行分析的理由。
      浏览了众多团队项目,最终选择了这个《家庭理财APP》的项目,首先也尝试了其他团队的项目,但由于其中数据库的原因(本机已下载SQL sever2014,不能再安装其他版本的,否则会导致数据库不能使用),或者给出的源码不完整没有办法运行。其次这个项目的目标人群是使用手机者,所以使用了比较好操作的人机交互界面。项目实现使用手机对家庭财产进行管理,具有传统的手工财产管理所无法比拟的优点,比如:记录和查找更加方便,信息存储量大,可靠性和保密性好,它实现了登陆模块、 成员管理模块、 收入管理模块、支出管理模块、 综合管理模块等,实现了经济上的可行性,操作上的可行性和技术上的可行性。而且他们还加入了对用户具有诱导性的按键设计,使得用户在初次使用的时候就会使用,这对于受众人群的使用是非常便捷,易操作的。然后,这是一款APP的开发,对于现在的学生来讲非常需要一款理财产品来束缚自己,所以出于好奇也想使用一下这个APP。

4.结合项目系列博客文档,总结项目团队成员的分工合作情况。

      该项目团队一共有四人组成。各成员大致分工情况如下:

成员 主要任务
杨XX 设计问卷调查问题并总结、进行系统设计、编码、、模块测试、发布产品
焦XX 进行需求分析生成说明书、进行功能分析、编码规范说明 、编码测试、模块测试
王XX1 学习使用新工具、绘制各类关系图、页面布局、模块测试、安装模拟器进行总体测试
王XX2 人员分工、撰写系概要书、总结每次例会内容、模块测试、设计问卷调查产品使用感进行功能改进设计

团队内四人协调合作,明确分工,完成了此次项目的开发。

5.结合项目系列博客文档,评价项目的软件项目过程特点(TSP)。
在此次项目中遵循了(1)使用妥善定义的流程,流程中的每一步都是可以重复的、可以衡量结果的,在项目开始时便制定了项目流程,使用wps进行工作记录,并按照该流程进行开发。
(2)团队的各个成员对团队的目标、角色、产品都有统一的理解,团队成员进行商议,研讨之后确定了成员分工,以及产品定义。
(3)尽量使用成熟的技术和做法,项目使用了Visio、Rational Rose、PowerDesign等现有的软件和技术。
(4)尽量多的收集数据(包括对团队不利的数据),并用数据来帮助团队做出理性的决定,进行了问卷调查,对于用户对产品的使用感进行了分析并改进功能。
(5)制定切合实际的计划和承诺,团队计划要由负责具体执行的角色来制定(而不是从上级而来),通过每日立会每位成员进行每日工作的总结和今日切实可行的工作计划。
而对于其他的两个原则:
(1)增加团队的自我管理能力(并没有在项目追踪时发现这一点)。
(2)专注于提高质量,争取在软件生命周期的早期发现问题。最有效提高质量的办法是做全面细而细致的设计工作(而不是在后期匆忙修复问题)。(可能是由于时间原因,收到的用户对于产品的反馈只是在最后进行了修改。)

6.观察该团队项目github仓库的源代码文件结构,是否包含代码规范文档?

  • GitHub仓库包含代码规范文档

7.下载团队项目代码,尝试部署项目运行环境并使用软件,描述最简单直观的使用体验,找出至少两个比较严重的功能性bug,在博客中展示截图。

  • 用户登录界面(没有用户注册界面就直接登录了,用户使用时不知道该怎么登录)

  • 登录成功后的界面(既然是家庭理财APP,界面显示为员工管理, 不应该为家庭成员管理吗?)

  • 员工信息添加界面

  • 员工信息修改界面

  • 员工信息删除界面

  • 员工工资管理界面(该界面可以管理财务)

  • 部门管理界面(对于人员所属部门进行了分类,没有看到进行部门划分后的权限有所不同)

  • 使用体验:
          该款APP首先打开后并没有注册界面就直接登录,这一点使用感不是很好,从数据库找到了密码进行了登录,其次进入人事管理界面后有员工信息的添加,修改以及删除,这一功能比较实用,但实不相瞒没有理解既然是家庭理财APP为什么有员工信息这一界面,可能作者想表达家庭成员管理吧。重点界面是进行工资管理的界面,将底薪、奖金等输入后会核算出实发工资金额,将其保存,还有最后一个人事管理的界面,区分了部门等。我的使用体验是这更像是一个企业的财务部对员工工资进行管理的APP。
    8.评价该团队项目是否值得继续开发,并陈述理由?
          我觉得该项目不值得继续开发,从操作可行性考虑:综合现在的社会趋势,对于大多数家庭或者大多数学生来说,一款理财产品在日常开销中是非常需要的,但毕竟是与财产相关的app,所以对于其安全性还需要给予进一步的保证;从经济可行性考虑:APP的开发在目前市场上屡见不鲜,所以其开发成本也比较小,重要的是如何抓住使用用户,增加下载量,收回成本到盈利,这就需要与市场上同类产品去竞争,但是目前微信小程序是流行趋势,使用也更加方便,成本也较低;从技术可行性角度考虑:该项目在GitHub仓库中已经提供了代码编码规范,所以对于之前代码的理解是没有太大问题的,但是由于之前的功能并不完善,所以开发耗时较大。

四、记录完成《实验四 软件项目案例分析》各项任务实际花费的时间。

任务 耗时
任务一 2h
任务二 3h
任务三 5h
任务四 1.5h

五、完成本次作业的感受和体会。

      本次作业首先任务一通过案例项目的分析,我意识到了自己与他人的差别,这也让我明白只有在实践中才能锻炼自己,提升能力,在运行别人源码的过程中,也学到了许多编码的知识,比如生成柱状图的另一种办法,数据的存储除了数据库外的其他方法。其次,在任务二的学习中与同伴在理论上讨论了关于团队的概念和各种团队模式,在后续任务三追踪已完成的项目的过程中,体会到了一个团队要完成一个项目,需要各个成员做好分工协调工作,以及在项目启动时的开发计划尤为重要,这为我之后的团队合作项目奠定了基础。最后,在追踪项目的过程中,最艰难的一项就是下载源码并测试,有许多项目所需要的的环境都很复杂,比如有人用到的数据库版本为SQL sever2000,但是本机装了SQL sever2014,两者不兼容。而且很多项目的源码在GitHub仓库中并不全,也没有说明代码的结构关系,这加大了代码测试运行的难度。

posted @ 2020-04-10 19:01  是木子呀  阅读(414)  评论(4编辑  收藏  举报