第四次团队作业——系统设计

我说的都队

031402304 陈燊 031402342 许玲玲 031402337 胡心颖 031402203 陈齐民 031402209 黄伟炜 031402233 郑扬涛 031402341 王婷婷


一、完善《需求规格说明书》

《需求规格说明书》修改版Git链接

需求规格说明书(修改版)

文档初稿查缺补漏

  1. 文档里未提现可上传Excel文件的版本限制。(原型里有提现,但相应界面未加入1.0版本里)。

  2. 在压力特性要求里未考虑可同时在线的最大人数。

  3. 原型里缺少设置导师是否为实验班的界面。

  4. 数据库设计未和Android的进行商讨,不少字段和Andoird组的产生冲突。

  5. 用户特点部分存在些许冗余,重复描述。

  6. 原型部分界面较为粗糙,样式不统一。

  7. 文档目录结构较为杂乱。

  8. 国标要求的部分要点没有提现。

针对《需求规格说明书》1.0版本存在的不足之处,进行了如下修正

添加

  • 版本历史
  • 第二部分 需求分配 小节
  • 第三部分 外部接口需求 小节
  • 第三部分 性能需求小节 添加 压力特性要求(即对600人同时在线的处理方案)
  • 第三部分 软件系统属性

删除

  • 原2.3.2.3用户场景 part six 对两种分配算法的简介
  • 原4.1.2功能描述(概要)
  • 原4.5数据管理能力要求
  • 原4.6其它专门要求
  • 原第三部分 原型界面

调整

=> 代表调整到

  • 原1.3 预期读者和阅读建议 => 1.1 目的 部分
  • 原第三部分 界面原型 => 3.1.1 用户界面 小节
  • 原4.4 输入输出要求 => 3.1.3 软件接口 和 3.1.4 通信接口 小节
  • 原4.6 故障处理要求 => 3.6 软件系统属性 小节
  • 原4.2.3 灵活性 => 3.6 软件系统属性 小节
  • 替换原型界面的图片
  • 重新撰写3.3.1节精度部分

二、编码规范

编码规范文档链接

关于编码规范,我们有话要说

031402304 陈燊

1、对于每一名程序猿,在刚踏入C语言的世界,蹩手蹩脚得输出Hello world时,便已经开始接触到了编码规范。缩进、命名原则、花括号位置等等,这些规范肯定都曾让每个程序猿头疼好久。在自己大一刚接触C语言的时候,并没有考虑过编码规范的问题,但是随着代码写得越来越多,才逐渐深感一份规范得体的代码的重要性。每当别人叫我去帮忙看哪些排版乱七八糟的代码时,无疑是一种地狱般的体验,于是从那时开始,自己便逐渐注意到编码规范的问题,并在自己日常编程中,尽量提升自己的代码规范性和可读性。
2、自己之前也做过几个Android项目,或多或少对项目开发的编程开发有一定的接触和了解。虽说我们团队所负责的是PHP端的项目,但是编程世界万变不离其宗,大致的编码规范都是相同的。而我们小组也有几名组员接触过PHP和前端的编码,因此在开会讨论编码规范时,整体的过程还是比较顺畅的。不过介于我们所制定的编码规范内容太多,便把编码规范文档上传到github上,以免博客内容太长。

031402342 许玲玲

由于一直都没注意过编码规范这个问题,都是自己看得懂就好的原则,通过这次作业了解了编码规范,发现自己以前都是乱来,这样在团队里面根本是不行的,只有代码规范了之后才能使得整个团队更好的进行编码。开始学习规范编程,从现在开始做起。

031402337 胡心颖

以前写代码都不管编码规范的,什么大写小写驼峰下划线,开心叫什么就叫什么,只要不error不wrong就都可以接受。代码注释更是从来不写,毕竟一个人做,虽然时间久了自己也有点看不懂。这次要规定编码规范,百度了一下,第一反应是:这文档好长。毕竟这次是一群人写一个项目,各种规范还是要做好,万一编程的时候沟通出了差错,轻则几个BUG,重则GG。

031402203 陈齐民

1、每个程序猿都有自己敲代码的风格,而且彼此之前的风格大相径庭,如果多人合作完成一个项目的话,彼此之间做好编码规范和代码风格的确定是非常重要的,因为如果不做规范统一,绝大多数的时间会花在理解代码结构上,而不是代码的逻辑功能;在编写PHP编码规范的时候,我发现自己的编码风格不是特别的规范,在每个接口前我会注释该接口所需参数是什么,何种数据类型,调用方式是什么,返回数据的类型是什么,但是在方法中我很少或者基本不会添加代码注视,这样队友在看我的接口代码的时候,就可能需要花时间去理解逻辑,而且一些细节方面我也会不注意,比如{ 和 }另起一行与否,函数方法变量命名要清晰易懂等等,所以我觉得编写编码规范是很重要的,而且对这门语言也会有更加深入的了解。
2、尤其是PHP,不仅仅是语言本身的编码规范,还包括了给其他开发者阅读的接口说明规范,采用标准的接口说明是很重要的,因为接口是提供给其他开发者使用的,如果不清晰不准确,很容易造成数据的错误,这样就失去了接口本身应该提供便利的特性了。
3、所以,代码的编码规范和风格是我们共同讨论出来的,因此我们每个人对这个编码规范是比较熟悉的,在编程的过程中我也希望自己和队友都能够遵循编码规范,提高开发效率。

031402209 黄伟炜

当你是一个孤胆极客时,不遵守编程规范似乎不是一件大事。因为所有的代码只要你能看懂,可以编译通过,能在机器跑起来就行。但是,如果是一个团队。这样的方式,就不可行了。在一个团队,同一份代码,经手的人可能就有好几个。每个人如果都按照自己喜好来编写,将会有不同的缩进、不同注释、不同命名方法。对接手的人来说这是很棘手的,他需要去适应不同人的不同风格。光是看懂代码,都需要不少的时间。但是,有了编程规范,大家只要共同遵守一份规约,就能很愉快的合作写代码了。而不用去适应不同人的不同风格,节省时间成本。

031402233 郑扬涛

对于编码规范,其实早有耳闻,但是平常自己写代码的时候却不是很在意。而且自己在写acm题目的时候,一般会喜欢“压行”,比如说同类型变量全部定义在一行,大括号不换行,使用逗号表达式等等。但是现在我们是作为一个团队,写出来的代码不仅仅只有自己一个人看,代码也不是为了AC而生,遵守编码规范将给团队交流带来极大的便利。网上有各式各样的编码规范,该如何编写属于自己团队的编码规范呢?于是我们团队就开了会讨论此问题,最后整理了一份大纲。我相信如果每个人都能够遵守编码规范的话,那么后期的开发效率将大大提高。

031402341 王婷婷

以前做php项目时都是一个人完成所有编码,所以对于编码、命名基本都是我行我素,想怎么来怎么来,现在由于多人合作,编码规范自然是要考虑的。不做不知道,一做吓一跳,自己之前的代码规范性简直为0啊,估计除了自己也没谁看得懂了。组员们一起讨论了许久,最终编码规范总算是确立出来了。通过这次的编码规范作业,相信以后我的代码应该越来越规范!

三、数据库设计

用PowerDesigner进行数据库的设计

ER图


四、体系结构与界面设计

MVC角度看体系结构

  • MVC结构由Model(模型)、View(视图)、Controller(控制器)组成。
    MVC将人机交互从核心功能分离出来,模型对于用户来说是透明的,用户只需要观察视图,用户和模型的交互通过控制其提供的安全方法。
  • 模型(Model) 包含核心功能和数据和后台的业务逻辑,在模型这一层封装了访问数据的函数,例如查询导师、学生信息,负责人导入新的学生和导师等。这一层对于用户来说是透明的,用户看不到后台对数据库的操作。
  • 视图(View) 负责向用户显示信息,不同的角色可以看见的视图不同。用户在视图上与系统进行交互,一些用户的行为(例如填报志愿、选择学生、调整结果等)会触发模型的功能,从而向模型传递数据或者得到模型更新后的数据。
  • 控制器(Controller) 与视图一一对应,每个视图都有一个相关的控制器,控制器组件接受事件,并将事件翻译成堆模型或者视图的请求。如果控制器的行为依赖于模型的状态,那么控制器也需要向模型登记请求变更通知。
    例如,导师在视图中点击显示学生信息按钮,控制器接到此事件后,调用模型的查询方法,获得数据库对应的信息,再显示到视图中去。导师查看完学生信息后,点击接受某个学生,控制器从视图中读取到此事件,将相关数据传入模型中,模型进行对应的增加操作。

用户角度看体系结构

从用户角度出发,可将体系结构分为 学生、普通导师、系负责人、院负责人四大模块。

以下是四大模块详细描述:

模块 描述
学生 填报志愿 修改个人信息 查看导师信息 查看志愿结果
普通导师 修改个人信息 设置学生数 选择学生 查看学生信息
系负责人 批量导入学生、导师 手动添加学生、导师 修改学生、导师信息 设置默认志愿数 设置流程期限 选择分配方式 导出分配结果
院负责人 修改分配结果 导出分配结果 设置系负责人

体系结构运行流程

  1. 院负责人首先添加、修改系负责人
  2. 相关系负责人设置该系导师填报选题起止时间、志愿填报起止时间
  3. 该系导师在系负责人所设置的报选题时间内填报选题
  4. 该系学生在系负责人所设置的填报志愿时间内填报志愿导师
  5. 该系导师在志愿互选时间内选择合适的学生
  6. 志愿互选时间截止后,该系负责人有权修改、导出分配结果
  7. 院负责人可再次对系负责人所提交的结果再次修改
  8. 院负责人课导出并公布分配结果

导师互选系统采用ThinkPHP5框架

ThinkPHP5框架目录

主要应用目录

  • database.php 数据库配置文件
    用于配置数据库相关信息,例如:数据库类型、服务器地址、数据库名、用户名等。
  • Config.php 公共应用配置目录
    包含应用设置、模块设置、URL设置、模块设置、异常以及错误设置、日志设置、缓存设置等
  • common.php 应用公共函数文件
    放置一些较为常用的公共函数,比如弹窗报错等。
  • index/controller 控制器目录
    包含导师互选系统index模块所需所有控制器
  • index/model 模型目录
    包含导师互选系统index模块所需所有模型
  • index/view 视图目录
    包含导师互选系统index模块所需所有视图

界面设计

原型(修改版)_链接


五、任务分工及比例

姓名 任务 分工比例
陈燊 项目管理;把控任务进度;博客撰写 14.2
许玲玲 界面设计;原型完善 14.3
胡心颖 体系结构设计 14.0
王婷婷 体系结构设计 14.2
陈齐民 数据库设计;ER图的制作;验证验收标准的改进 14.5
黄伟炜 编码规范的整理以及撰写 14.0
郑扬涛 改进完善《需求规格说明书》 14.8

六、燃尽图


七、总结

031402304 陈燊

1、在之前访谈学长时,学长们一直告诫我,作为项目管理者,最重要的责任是把控全局,协调分工,尽量不参与编程。而在本次作业中,我也尝试着去改变自己以往在团队里的角色,尽可能得把任务平均分配给每个组员,并让每个组员负责自己较为擅长的部分,以求取得1+1>>2的效果。此外,为了让项目管理更为清晰便捷,我把每个组员的分工、任务实时更新在github的issues上面,改变了以往QQ繁杂的文件传送,让任务成果的显示更为直观。而通过close/open的次数统计以及燃尽图的生成,让我对整体任务的完成进度有着一个清晰的了解。尝到了issues给项目管理带来的甜果,我才明白了之前的作业里,栋哥为何一而再再而三得强调对git以及issues的使用了。
2、当然,有甜也必有苦。以前总是以程序猿的角色自居,开着PM的玩笑,而如今角色互换,等到自己真正开始做一些类似PM的工作时,才深感PM的不易。我觉得我们团队是一支战斗力挺强的队伍,队员们各有所长,对待项目都有着自己独特而理智的见解。而如何把这一根根强劲的钢丝凝合成一把无坚不摧的利刃,便是PM的职责所在。硬件设施有了,而整个团体系统的上限,则取决于PM对任务成果的把控力度。在本次作业过程中,对于每个组员所完成的成果,我都尽可能一字不落得去审核把关,并提出自己一些建设性的意见。当然,意见的提出总是避免不了意见的冲突,但是有冲突,才会逼迫大家去思考,这才是一个团队前进的最大动力。
3、在一个团队里面,沟通很是重要,特别作为一个PM,更是要把自己的想法一字不漏、毫无歧义得传达给队员们。在本次作业中,我自认为对于沟通这一块,自己做得并不是很好,对于部分任务的意见,没有清晰了当得传达给队友们,导致了任务进度的拖拉。不过在下次作业中,我会努力去改正自己的不足之处,尽量让团队里彼此之间的思想都透明起来。
4、最后,作为这个团队的组长,我会尽一切努力把这个团队给带好,理解每一名组员的想法,也非常非常希望,组员们能够理解组长,共同造就“产品经理程序猿和谐一家”的美好局面!谢谢!

031402342 许玲玲

这次作业我的主要任务是原型的完善,对于原型设计上面,我和PM有很大的分歧,我认为原型的主要目的是揭示和测试系统的功能与实用性;是通过内容喝结构展示,以及粗略布局,能够像用户说明如何与产品进行交互,应该展示的产品逻辑功能。我花更多的时间在交互上面,PM要求原型的美化,这与我的想法大相径庭。让我重新认识了强迫症患者。在下周的编码实现中,不得不打起精神才能满足PM的要求。

031402337 胡心颖

就很气啊。一模一样的图表黑白的说很粗糙,换个背景色就有感觉。Excuseme?刚开始做体系结构设计的时候一脸蒙逼,以前做项目套过MVC的思想,但是不知道那是体系结构。后面突然想起栋哥上课说过,然后开始照着编。虽然知道什么是体系结构,但是不知道怎么表达,我觉得那张图表足够表达了,但是组长半夜叫我们改。然后就又磨蹭了好几个小时,把图表做的不那么“粗糙”,又把图表内容翻译了一下,强行加了文字。虽然整个过程比较折腾,但是跟负责原型的那位同学比就比较知足了。下次开会要去贵一点的店让组长请客。

031402341 王婷婷

本次的系统结构主要是由我和另一组员共同完成,感想颇多啊。刚开始动笔的时候我两几乎是懵逼的,愣了许久,依旧憋不出半个字,认真翻阅课本,以及参考网络资料后,仍是不知从何下笔。无奈之下只能请教栋帅,在栋帅的教导下,似懂非懂地噼里啪啦写了一些。心里想着算是写完了,于是便草草交差了。然,在要求严格的组长大大的严格检查下,当然是得重做啦。看得出组长非常认真地看了我们的作业,也看得出来组长应该是 **处女座** 的吧(好挑剔啊)。挑剔是真的很挑剔,但是大多是很有道理的。于是我和队友又重新讨论、查阅资料、查看需求规格书、翻阅课本,花了将近一下午总算完成了(希望不要在退回来😭)。除此以外,感触颇深的就是原形设计了,上次作业是原型的粗糙版本,这次要求做精致的原型,然后真的是好艰辛啊(虽然说并没有画原型),在组长的严要求下,字体大小不行、文本框没对齐不行... ... 原型一改再改,感觉玲玲身体都掏空了。。。。。。就这两个进行得不大顺利吧,软件规格书、编码规范什么的好像还蛮顺利。

031402203 陈齐民

1、感觉这周组长的分工很合理,每个人都有自己的比较擅长的任务分工,我分配到的任务是 `编写PHP编码规范和代码风格` `修改验收验证标准` `用powerDesigner进行数据库设计和设计E-R图`,终于开始自己比较得心应手的任务了,感觉充满干劲,而且感觉任务压力不会特别大,不像前两周压力那么大。
2、在编写PHP编码规范的时候,发现了自己编码有很多不规范的地方,比如在接口代码部分很少或者甚至没有代码注释,`{` 和 `}` 是否另起一行等等许多细节的问题,这些细节的问题看似对编码没有什么影响,但是在团队合作中,编码过程是有队友一起共同完成的,这些细节对于彼此阅读代码就起到至关重要的作用,所以PHP的编码规范和风格可以帮助我们统一代码风格,做到彼此的代码整合后也能够清晰整洁、阅读性强,提高接口的开发效率
3、其次是数据库的设计,在用 `powerDesigner` 进行数据库设计的时候,因为共用报课系统的数据库,所以需要考虑到很多的问题,在设计 `E-R 图` 的时候会思考到许多功能逻辑方面的点,如何实现比较方便且效率高、有没有漏了什么字段等等,但是有一个比较大的问题,比如报课系统他们原先的表没有主键的设置,而我们需要和他们的表进行表关联的时候就非常头疼,修改了许多遍,但是也有好处,就是对系统的功能逻辑变得更加清晰
4、下周就进入编码冲刺阶段了,但是对于学长报课系统的代码还不是特别的熟悉,下周还有电工实习,希望自己能够合理安排好时间,完成组长分配的任务,和队友一起在规定时间前把Alpha版本开发出来!

031402209 黄伟炜

本周任务包括,修改完善需求规格说明书、确定编码规范、数据库设计、系统结构设计和界面设计,每一项都对项目的进展有举足轻重的影响。有了上次的魔鬼一周的经历,感受到了队友们的强大。这周的心情就是心安安。这次在团队分工中,我负责的部分是编码规范。在平时自己写的小项目中,也有很注意变量的命名,尽量做到见其名知其义,增强可读性。但是,只是知其然。通过这次的作业,我了解到一份编程规范不仅能够增强代码可读性,提高团队协作效率,还能避免一些编程上易犯但隐蔽的错误。还有,能和强大的队友们一起协作,这种感觉真是棒棒哒!

031402233 郑扬涛

这周我的任务主要是修改完善上周提交的需求规格说明书,基本上是对照《GB-T 9385-2008 计算机软件需求规格说明规范》这份国标来修改的。仔细对照国标,发现之前的文档还有许多不完善的地方,存在目录结构不规范,信息冗余等情况,改文档的过程相比写代码是枯燥乏味的,但是如果没有一份详尽的需求规格说明书提供给开发人员的话,那么将会造成后期诸多不必要的麻烦。同时,这周还阅读了《构建之法》第四章中有关编码规范的内容,读后发现有良好的编码规范对于一个团队来说是一件多么重要的事。因此我们开会确定了编码规范,团队编码规范的形成也将对后续开发过程产生有利的帮助。最后,不得不感叹下团队的力量,虽然每周都有高强度的任务要完成,但是大家经常相互交流合作,我相信再难的任务都能啃下来!加油!
posted @ 2016-10-29 10:57  天涯惟笑  阅读(1363)  评论(1编辑  收藏  举报