文章目录

  • 一、实训介绍
    • 1.1 实训目的
    • 1.2 角色职责分配
      • 产品经理
      • 项目经理
      • IT 总监
      • 后端程序员
      • 前端程序员
      • 测试人员
    • 1.3 实训过程
  • 二、实训记录
    • Day 1 需求文档
    • Day 2 项目管理文档
    • Day 3 数据库设计、接口设计和详细设计
    • Day 4 前后端编码和测试
    • Day 5 使用手册与评估
  • 三、实训总结

一、实训介绍


本次软件工程实训是我们专业大四开设的一门课程,是大四学年唯一的一门实践课。从 9月5日 ~ 9月9日,共5天时间,前四天早上8点20到晚上9点20,最后一天早上8点20到下午4点,共 50+ 课时,其中大部分时间是我们小组讨论。正式结束,共五天时间。

小组成员共有三位:

  • 龙 L 同学
  • 浩 H 同学
  • 超 C 同学(我)

正常情况下一个小组是六个人来着,不过老师说可以自由组队,最后没有剩下的同学了,就我们三人组成了一队,然后本次实训中是一人同时分担两个角色。(超累的)

本次实训的内容接下来会进行说明,简单理解就是模拟企业中一个软件产品开发的整个流程,我们各自分担不同的角色,担任不同的职责,当然只是开发一个小Demo,达不到企业中真正的水准,主要是以熟悉为主。

以上是关于本次实训的简单介绍,接下来我将以老师提供的资料为主,对本次实训的内容、过程、收获进行总结。

1.1 实训目的

1.提升软件开发综合能力

  • 使用需求分析,项目管理,模型设计,软件编码,测试等技能进行软件综合开发。

2.提升沟通与合作方法

  • 具备良好的团队意识、团队合作与沟通、团队协调或组织能力,能够在多学科背景下的团队中根据需要承担成员或负责人的角色。

3.熟悉软件文档的书写

  • 能够依照相关的工程标准或行业规范,进行大数据系统工程相关工程技术文档(如需求分析报告、项目管理文档、数据库文档、接口文档、系统测试文档等)的撰写与交流表达。

总结: 除了编码能力外,还需要提升软件开发过程中其他步骤的能力,同时加强沟通能力以及提升各种文档的撰写能力。

1.2 角色职责分配

序号 角色名称 工作职责 负责人
1 产品经理 负责调查并根据用户的需求,确定开发何样软件产品 H
2 项目经理 负责软件开发过程的协调与管理,主要有范围管理,进度管理,人力资源管理等 L
3 IT总监 负责数据设计与接口设计 C
4 后端程序员 负责后端代码开发 H
5 前端程序员 负责前端代码开发 C
6 测试人员 负责软件测试 L

如上表,我们三人每个人都有两个角色,而每个角色的任务不仅仅是 “工作职责” 里的内容那么轻松,接下来我根据老师给的资料对每个角色的具体任务进行汇总。

产品经理

序号 类别 描述
1 技能要求 精通墨刀,UML产品分析
2 工作职责 负责调查并根据用户的需求,确定开发何样软件产品
3 产出结果 软件需求文档与需求原型
4 学习目标 需求分析方法

项目经理

序号 类别 描述
1 技能要求 精通IT项目管理
2 工作职责 主要有范围管理【工作包分解】,资源管理、进度管理【时间】,人力资源管理【业绩】等
3 产出结果 项目管理计划、项目管理执行过程文档,日报整理
4 学习目标 it项目管理的范围管理,进度管理,成本管理,沟通管理
5 能力培养 组织和协调

IT 总监

序号 类别 描述
1 技能要求 精通MySQL,UML数据建模,JavaWeb开发
2 工作职责 负责数据库建模与接口开发
3 产出结果 接口文档
4 学习目标 单表建模方法,一对一建模方法,一对多建模方法

后端程序员

序号 类别 描述
1 技能要求 精通MySQL,UML数据建模,JavaWeb开发
2 工作职责 后端接口实现
3 产出结果 后端代码
4 学习目标 数据库的增、删、改方法。

前端程序员

序号 类别 描述
1 技能要求 精通html+css+Javascript,以及一些前端框架,如Vue、React、Angular等
2 工作职责 负责前端代码开发
3 产出结果 前端代码
4 学习目标 单表结构数据的新增、修改、展示、删除; 一对多结构新增,修改,展示,删除, 一对一结构新增,修改,展示,删除。

测试人员

序号 类别 描述
1 技能要求 精通测试用例构造,多种测试方法
2 工作职责 负责软件测试
3 产出结果 测试文档
4 学习目标 表单测试,列表展示测试、流程测试、统计测试

1.3 实训过程

我们本次实训共有五天时间,是以线上的形式,正好将实训分为了五个过程,每天轮到一个过程,这五个过程分别如下:

  1. 产品设计
  2. 项目管理
  3. 设计与软件编码
  4. 软件评测
  5. 考评(由老师按一定指标综合评判打分,每个小组自评出一位最佳员工)

每天实训开始前段时间,老师会花1-2个小时时间进行讲解,关于今天需要熟悉的角色与职责,包括今天小组要完成的任务。在所有过程中,我们小组使用 语雀 记录所有文档,这个用起来很方便,支持协同操作,而且可以导出为 docx、md、pdf 等多种格式。

二、实训记录


以上是关于实训介绍的相关内容,接下来则是这五天实训的记录,以天为单位,我会记录一些新学的知识,以及遇到的问题和解决措施。

Day 1 需求文档

确立选题,确立技术架构,由产品经理编写需求文档。

关于选题,我们老师提供了一个现成的测试环境,是一个成熟的仓库管理系统,里面包含了多种模块,技术架构的话我看前端应该是用到了 layui 库,其他的就不清楚了。

我们小组经过讨论,打算做一个类似的管理系统,没有前台页面,只有后端管理的页面,这样设计起来难度会低很多。

最终我们起名为 TMS 物理管理系统

在确立选题后,我们按照以往的惯例,先去找一些关于数据库设计的资料(这里是错误的做法…最后会说明)

然后我们讨论了数据库该如何设计,共涉及多少个MySQL 表,一开始我们参照 Gitee 上某个仓库的sql文件,共有十几张表,后来我们觉得时间肯定不够,于是将其减少成了4张表。

大致确立 MySQL 数据表后我们开始需求文档的编写,这个是由 产品经理 H同学 来完成。他根据我们的数据库设计画出了UML用例图,以及UML用例说明,还有原型图,可以说工作量是非常大的。

为保护我们的辛苦劳动成果和隐私,我们做的具体成果是不公布的,以下内容相同,不过这里可以给出一个大致的模板,有需要的朋友可以作为参考。

通过图表可以看出,我们主要就只有管理员用例,在整个系统中共有三个角色,分别是顾客、司机和管理员,其中顾客和司机都是被管理的对象,没有操作,本套系统皆由管理员来进行操作。

除了上述的 UML 用例图,产品经理 H 同学还设计了图中每个用例的文档,以登录用例为例:

类似这样的表格,在 UML 用例图里的每一项都需要设计出对应的 UML 用例说明,这就是产品经理的职责之一。

接下来则是原型图设计,老师推荐我们使用磨刀,以登录为例:

通过 UML 用例图设计、UML 用例说明 和 原型图设计,一个需求文档的雏形就出现了,这份由产品经理设计出来的需求文档接下来需要交给项目经理,由项目经理进行整个项目阶段的分工安排。

最后记录一下上面过程中我们做错的以及值得注意的地方:

1. 切忌不要一来就进行数据库设计。

在产品经理进行需求分析阶段是不考虑数据库设计的,这是 IT 总监的工作,是在项目经理安排工作后进行的操作,这里我们应该先确立选题,然后辅助产品经理撰写好需求文档,之后通过 UML 用例图就能知道需要几张表,每张表大概需要哪些字段了。

2. 需求文档中切忌不能出现英文的字段

关于UML用例说明需注意,里面有提到一些属性,比如在登录的时候,提到了用户名和密码,这些其实就是在数据库设计时要参考的因素,数据库设计肯定是按照需求文档来设计的。如果发生差异了就需要申请需求变更,这个特别麻烦。我们不能将 username、password 这种英文的字段,类似数据库里表的字段写到需求文档,因为在需求分析过程中,还没有进行数据库设计,我们所讨论的属性都只是根据需求来的。

因为登录需要用户名和密码,所以产品经理就将其写到登录的用例说明中,这个阶段是完全不考虑数据库设计的,所有属性都直接用中文来表示。

3. 分清 UML 用例说明和原型图的作用

UML 用例图是在 IT 总监进行数据库设计、接口设计、详细设计时用到的。

原型图是前端在进行页面设计时用到的。

这两个对之后的软件设计有着重要作用,所以不能随便修改,否则就引起需求变更了,需求变更需要由 项目经理 到客户那进行审批,我们光是模拟就觉得很麻烦了。

其实在设计过程中,我们怕时间来不及,在第一天我们就在确立技术选型了,后端采用 Spring Boot + Swagger,前端就 Vue2 + Element UI,之前我学了一小段时间,比较熟悉。

本来我们打算使用 Ruoyi 脚手架的,但是下载过后发现里面内容涉及的太多了,不好删除,后来还是干脆直接从零开始了。

Day 2 项目管理文档

项目经理 L 同学在获得产品经理输出的需求文档后,负责分配任务给 IT 总监、后端和前端。

项目管理文档的目录如下:

所谓工作包计划,就是将每个需求文档里需要完成的 UML用例分成一个单元,这个单元称之为工作包,以小时为单位进行记录,意味着不同工作包的具体时间,这个是方便项目经理之后计算绩效的。


如上图,是我们的项目经理 L 同学做出的表格,按照老师提供的规范,我觉得 L 同学设计的这个表格更加清晰,而且预计工时设计的挺合理的,其实我们实际编码的时间就两三天,按照计划来说的话。

有了具体的工作安排以后,接下来就是人力资源分配:

这个表格是按照工作包的编号来的,可以理解为给所有的工作包分配负责人,同时标注一下工作包的类型,十分的清晰。

综上,有了工作包计划和人力资源分配,接下来就是 时间计划和监管跟踪

对于整个项目的开发落实到每一天,包括每天的执行情况也需要记录:


下一步是业绩管理和成本估计。

业绩管理就是根据每个人所完成的工作包来计算的,它是根据上面的监管跟踪 来统计每个人工作包完成情况。

成本估计又是根据业绩管理表格来的,每个工作包的预计工时、实际工时、日新和实际成本都需要记录到这里面。

最后就是需求变更记录和计划变更处理部分。

当客户需要变更需求时,向项目经理进行申请,而项目经理就将这些记录写道文档中,同时是需要进行审批的。

而计划变更处理则是在整个过程中,如果有因为某些原因延期或者其他情况,都需要记录在这个表格中。

综上,项目经理的职责还是挺多的, L 同学负责项目经理还有测试,工作量非常大。

在这里需要注意的地方就是:文档一定要按照标准来编写,而且项目经理要随时变更文档内容,根据实际情况来填写,负责整个项目流程的管理,还是非常关键的。

除了项目经理的职责外,其实在这个过程中我们就已经开始编码了,就是怕后面来不及敲,在真实企业中还是听项目经理的安排比较好,不然容易累到秃头。

Day 3 数据库设计、接口设计和详细设计

这一天主要是 IT 总监来负责的,需要写三份文档,而且需注意,这里的文档必须完全按照需求文档来写,不能根据自己的想法来写。

数据库文档需设计 ER图、具体的关系表和常量设计。

ER 图最好是下面这种形式的,中文的,这样方便非编码人员理解。

根据 ER 图,接下来就是关系表的设计,注意这里的关系表也是按照需求文档的 UML 用例设计来的,需求文档里需要哪些属性,我们就设计哪些字段,而不能凭空想象的去设计出字段,所以之前我们一来就直接设计数据库是错误的做法,当时被老师指正出了错误,以后会注意。

数据库文档最后一部分就是常量设计,其实这里不仅仅设计数据库了,还涉及了前后端,我们有的字段是 enum 枚举类型,那么相当于枚举我们就设计了对应的常量,这样方便前后端在进行交互时统一信息。

比如 MAN 表示男性,WOMAN 表示女性。

接下来,IT 总监需设计的第二个文档就是接口设计,其中还需要确立项目的技术架构。

这部分是我参照网上资料撰写的,就直接放出来了:

其实我们后来没有用到 Nginx ,因为本地环境下, SpringBoot 作为服务器可以直接通过 @CrossOrigin 允许所有请求进行跨域访问,于是就省略了 Nginx 。

在接口设计文档中,我详细撰写了后端架构以及相关的技术,还有前端架构以及相关的技术,作为一个说明,这样能确保前后端程序员能明确我们项目的技术架构,到时候编码的时候就比较清楚了。

接口设计的关键部分,第一则是实体类设计,在前面的数据库文档设计后,接下来就是实体类的设计,其实就是按照数据库里面不同表的字段,设计出对应的 Java 类型这样子。

不过除了上面这种简单做法外,我将前后端交互的类分离了出来,根据阿里巴巴Java开发手册里的开发规范,在实体类分层中选择了 VO 层,即 View Obejct,视图对象,专门用于渲染到前端。

比如分页条件查询数据时的查询条件、后端返回的结果对象等等。

这些对象都不是和数据库对应的实体类对象对应的,而需要单独的设计,于是将它们抽取出来到 VO 层,我觉得非常清晰,而且前后端交互基本上也是通过 VO 层的实体类进行的。

其中最重要的一个VO 对象就是响应的VO对象:

public class ResponseVO {Boolean success;            // 请求是否成功Integer code;               // 响应代码String message;             // 消息Map<String, Object> data;   // 响应数据
}

我们的接口是在 MVC 中的 Controller 层,而 View 视图则由前端框架 Vue 实现。

Controller 层的每一个接口都需要对应于 需求分析文档 的 用例说明,

要确定请求方式、输入参数和输出参数,而且最好是遵循 RESTful 规范,在请求 URL 中不带任何的操作相关的英文,而是使用请求方式来区分,这样的话整个文档看起来就很清晰明了。

例如,删除顾客的接口撰写:

IT 总监最后的工作是详细设计,这个过程描述了每一个接口具体是怎样实现的,可以使用时序图、活动图、流程图、协作图等图形来表示,这里我选择了比较清楚的时序图,例如:管理员登录

对于每个接口都要设计这样的时序图,可以说工作量是非常的大了…

Day 4 前后端编码和测试

如果按照实训进度,依我们的设计肯定是来不及的,编码只花两三天完全不够,而且我们一人担任两个角色,还要撰写详细的文档,这种情况下我们选择了加班,这几天一直在肝,不过好在最后结果不错,得到了老师的肯定。

其他大部分同学都是在准备考研,所以没有多少时间来准备这次实训,问题不大,这作为一次实训只是让我们熟悉软件开发的流程,并不是要做出多好的作品,而且我们最终做出的作品也只实现了基础的增删改查,没有涉及多难的技术。

前端 C 同学(我),后端 H 同学,我们两个先根据 IT总监输出的 三个文档 进行编码,后端负责创建数据库、设计接口,前端则负责按照产品经理的原型图进行编码(其实这里是在第二天产品经理输出需求文档后就开始的操作,不过问题是这时候接口设计文档还没出来,只能做个雏形。)

后端使用 Swagger 进行接口测试非常方便,整个过程比较难的就是 Service 层的业务逻辑编写, 好在我们用的是 MyBatis-Plus,基本上不用写SQL,都是用现成的模板,不然可能来不及。

我们在大致写好以后,由 测试 L 同学进行测试,编写一份测试文档。

一开始我们还信心满满,自己编写的程序应该没什么BUG,结果让测试的同学一测,突然就漏洞百出。

然后我们三个人就积极讨论,有一个BUG就及时 DeBug,前端和后端是分离的,所有 DeBug 非常方便,我们还用 Git 进行版本控制,万一操作失误了可以版本回退。

最终可算是完成了这次的实训任务。

总结一下这个过程:

前端是在产品经理给出需求文档后,由项目经理分配工作后开始的,但我在实际中是直接就开始了,因为大概知道要做什么,不过这样会导致很累。

后端是在 IT 总监给出数据库设计文档、接口设计文档和详细设计文档后开始编码的。

测试则是在前端和后端完成某一个工作包后开始测的。

理清楚上面这三个过程我觉得就算是一份有意义的收获了。

Day 5 使用手册与评估

使用手册由项目经理 L 同学 撰写,同时由 产品经理 H 同学 进行补充,里面是关于我们本次项目如何使用的具体说明。

最后的评估阶段,由项目经理 L 同学 进行项目交付,向老师演示了我们这几天的成果,做出来的软件,以及绩效上的计算。

然后老师给我们每个人作为一个角色提出了一个问题,我深刻的记得我的问题是架构设计和数据库设计哪一个先进行,当时我迟疑了几秒,最终回答的是架构设计,迟疑的原因是:我之前一直以为数据库设计是最重要的。然后通过这次实训改变了我错误的想法,还是架构设计最重要,而且是由 IT 总监来做的,不是后端人员来做的。

最后的成果:

三、实训总结


这次时间安排得比较紧,就只花了五天时间来做,还好我们三个都是执行力比较好的,另外两位同学执行力都比我高,而我也是尽力在做,最终能及时完成软件就很不错了,也算是给大四一个圆满的交代了,接下来我们大四没有课咯,就剩下专业实习和体测。

本次实训的小伙伴,包括我,我们的关系都挺好的,所以在交流上没什么问题,就算有分歧也能很快解决,俗话说三个臭皮匠顶一个诸葛亮,我们三这波配合的可以,除了团队配合以外,我还收获了软件开发流程的大致理解,通过这一段经历,可以口述出软件开发的大致流程了,而且是凭实践来的,不需要去硬记,这种感觉挺好的。

或许将来不一定会走这条路吧,但是这一次经历非常值得,也为我们的大四开了一个好头,接下来继续加油~

大四软件工程实训 总结 | TMS 物流管理系统 | 我们各自担任了产品经理、项目经理、IT总监、后端、前端和测试相关推荐

  1. 软件工程实训有必要吗_软件工程实训报告的总结.docx

    软件工程实训报告总结 软件工程实践作为软件工程专业本科生企业实习前的综合实践课程在培养体系中占有重要地位,怎样写软件工程实训报告? 篇一:软件工程实训总结 转眼间实训已过去一段时间,之前的兴奋.喜悦如 ...

  2. 软件工程实训有必要吗_软件工程实训心得体会

    软件工程实训心得体会 最新发布的<软件工程实训心得体会>的详细范文参考文章,觉得有用就 收藏了,这里给大家转摘到.软件工程实训心得体会 软件工程实训心得体会 我一直认为软件开发无非是努力的 ...

  3. 高校数字化实验室(实训室)综合管理系统

    一.系统概述      高校实验室管理流程和管理基本事务为核心,以规范实验室管理实现信息化为准则,充分提高利用学校实验室资源,更好的服务于学生.整个管理依托校园网络构建管理模式平台,系统采用B/S结构 ...

  4. 2020七月实训GUI学生信息管理系统

    2020七月实训GUI学生信息管理系统进一步完善 遍历所有的用户信息与通过ID查询用户信息 一.遍历用户信息 2.具体操作步骤如下: 3.进行java对数据库的操作 (关键部分): 3.对该项目的结果 ...

  5. 实训总结(图书管理系统java)

    实训总结(图书管理系统java) 1设计任务 完成用户登录验证,图书品类的增.删.查.改并保存到数据库中,打印购买图书订单,并将购买图书订单信息数据保存到数据库中. 2总体设计 序号 类名 说明 1 ...

  6. 软件工程实训报告需求文档测试文档,《软件工程实训》实习报告模板

    <软件工程实训>实习报告模板 计算机与信息管理专业 软件工程课程设计 题目:图书信息管理 专业:计算机与信息管理 班级: 学号: 姓名: 2008年12月15 日 一.实习目的与要求 由x ...

  7. 轻大数据结构与算法实训在线餐馆预订管理系统

    使用c++语言,用了两天实现所有功能,等写完报告后,整理一下遇到的问题和解决办法. 一共620行代码 任务书要求使用中文作为key,建立散列表,但是使用c++很难把中文转unicode编码,我找到的代 ...

  8. 《C语言程序设计》实训报告——学生成绩管理系统

    <C语言程序设计>实训报告--学生成绩管理系统 一.课程设计题目 <学生成绩管理系统> 二.课程设计要求 综合利用顺序.选择.循环等各种程序结构,使用自定义函数和二维数组,完成 ...

  9. 第七课——【软件实训之从调研到设计,换发型产品设计的从0到1】

    [软件实训之从调研到设计,换发型产品设计的从0到1] 授课时间:星期五0601 儿童节 知识来源: 网络资源汇总整理.张森鹏讲课视频汇总整理 课程: 软件项目实训                    ...

最新文章

  1. 配置cisco路由器特定时间重启
  2. android6.0源码分析之Camera API2.0下的初始化流程分析
  3. mysql 时间 本周 本月_mysql查询当天、本周、上周、本月、上月信息
  4. [css] 你知道全屏滚动的原理是什么吗?它用到了CSS的哪些属性?
  5. 使用U盘驱动器安装Linux,使用U盘安装Ubuntu的详细图文教程
  6. 全自动备份vss和sql数据库(含源码下载)
  7. python列表转化为数字信号_python 经典数字滤波实例 Python 数字信号处理程序实现分享解...
  8. java多线程小游戏_java控制台贪吃蛇小游戏(多线程版)
  9. 联合促经济 伟库网在江门普及SaaS
  10. 一、用于数据分析的Excel技巧
  11. RB-PEG2000-Pyrene,含有芘丁酸和罗丹明的PEG,Pyrene-PEG2000-Rhodamine
  12. 骚操作:Mac局域网控制Windows10主机
  13. 互联网推荐系统比较研究
  14. 服务器虚拟化 魔力象限,Gartner:VMware成虚拟化魔力象限领导者
  15. 58同城复试面试复盘
  16. windows批处理脚本bat命令解析【7】EXIT /B 0
  17. 关于Android写入文件失败的问题
  18. ArcGIS API for JavaScript之基础篇(二)
  19. 618新手必看:电视盒子哪个好?热销网络电视盒子排行榜
  20. 【​观察】探索中小企业SaaS定制化之路 解读搭搭云三大“颠覆式”创新

热门文章

  1. gdc服务器开机后显示器无法显示,开机后显示器没反应怎么办?开机后显示器没反应原因及解决方法...
  2. VBA学习之复制粘贴表
  3. 计算机密码锁定了怎么重装,Win7开机限制输错密码次数锁定计算机的设置方法...
  4. java攻击_【技术分享】如何攻击Java反序列化过程
  5. 学计算机的考不考研,普通专科生不上本科能直接考研吗?计算机专业怎么考?...
  6. Android学习笔记(四)——Button
  7. QT 在release 模式下构建项目使用断点调试
  8. 维吉尼亚密码 (原理+代码)
  9. maskedtextbox控件的使用
  10. linux机启动 工具下载,Linux liveusb creator(u盘启动盘制作工具) 2019电脑版v3.12.0