前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一群学生是怎么开发软件项目的

一群学生是怎么开发软件项目的

作者头像
流川枫
发布2018-09-12 10:56:32
1K0
发布2018-09-12 10:56:32
举报
文章被收录于专栏:AI星球AI星球

图片.png

0.前言

伸伸懒腰,决定总结一下自己2016年参与开发的一个软件项目。通过软件开发的工作,除了锻炼我们的编程能力、团队意识,额,还可以提高....增加老师的收入!哈哈,言归正传,我跟实验室的小伙伴总共花了大约半年的时间来完成这个项目,如今,总算是熬到该项目要结题了。一群学生党一块完成一个项目是怎样的感悟呢?我作为这个项目的主要负责人,下面就让我来跟大家分享一下我“悲惨”经历吧!【经历分享=技术+工具+反思】

1.团队背景介绍

首先,自己谈一下学生这个身份,相比于公司的开发人员相比,有什么区别呢?

第一,约束力与执行力的欠缺。学生是没有薪资的,也就是说,我们才是真正的为了追求理想而开发程序…公司职员的薪资是和开发效率挂钩的,我们学生写程序能获得那一点点酬劳,可能也就是导师每月多发几百块钱,而且每个人都是同酬,这就造成了,导师对项目的约束能力是有限的。任务分配下去,学生各自完成相应的功能就行了,我们没有薪金的压力,至于最终实现效果与预期的差距...额,有一点失控也是难免的,更别说代码规范性!代码规范性!代码规范性!【重要的事说三遍】

第二,经验的缺失。我觉得软件开发中的经验是非常重要的,虽然导师也是接过不少项目,在项目的前期规划中,会带领我们一起做一段时间,但到后面的实际程序开发,代码编写方面,那就是学生党们“各显神通”的时候了。我们基本都是第一次写这种完整的软件项目,基本上都没有什么成熟的经验,这样是为什么这次项目经历让我印象深刻。

上面算是对我们项目组成员的背景进行了一个简单的铺垫,一句话概况:技术菜鸟,代码质量看心情。

首先看一下我们项目组的成员分配:

成员组成

核心项目人员,基本就是我们三人:两个Web端+一个移动端,自始至终的参与了完整的项目流程。

2.项目的开发流程

下面简单介绍一下我们这个项目:主要是实现执法队员的执法任务分配与执法结果的记录分析,分为移动端与Web端。Web端发送各种类型任务以及接受执法结果,汇总统计,以及实现与其它市政部门数据的对接等功能,移动端是安装在执法人员的手持终端上,实现任务的接收、分配、上报等功能。下面,我总结一下整个项目的整体流程:

大体把项目流程分为五个阶段,当然,现实情况各个阶段也是有交叉的,比如:项目都要结题了,客户的某些需求还是没有完全搞懂!!!哈哈,其实也不要指望客户来做决定,最好是自己给出几个可行的方案【技术可实现的】,让客户选择。

1.客户的需求分析

这个我们花了很长的时间,不知道在企业开发中是不是也要做这么久的客户需求分析,反正最后我感觉:完全没有必要搞这么久,因为最后开发出来的“东西”基本由程序猿的开发能力决定,这里不只是技术能力,还有把“客户需求”转变为合理的“技术实现”的能力。

当然,做好客户的需求分析是完成一个项目的开始,只有深入的了解客户【使用人员】的真实应用场景、应用过程、流程产物等,才能对后续我们实现“客户需求”------>“软件应用”的转换、设计提供理论依据,对数据库的设计提供思路。

总结一下在客户需求分析阶段得到的一些感悟:

1.重视最初需求文档。调研前,没有认真的读那份看似废纸的、厚厚的“XXX软件需求规格说明书”,如果提前看看过,在调研的时候会更有条例,虽然写的非常*****【为了中标】,但是最终的项目结题,第三方的软件测评都是按照这份文档进行的!

2.调研文档整理规范。需求调研时,一定要做好笔记!不要指望脑子就可以记住!记不住的!记不住的!每个人调研的内容,事后,小组成员之间要进行整理,统一管理,因为将来不一定谁来开发这一块,不要让重复的问题耽误效率!

需求分析阶段就简单的介绍这么多,这个阶段最重要的是:文档的整理一定要条例、准确、统一。程序猿不能只是重视写程序,文档的整理归纳能力也是非常重要的。

2.原型图设计

这里首先介绍一款原型设计软件:Axure,使用它就可以完成简单的Web端、移动端的原型设计,此外,还可以自己导入一些第三方的模板、图标进行扩展。

做原型设计的目的,主要是明确软件的界面布局,某些字段信息,与客户进行简短、有效的交流,继续探究客户的需求,修改、完善,只到初步与客户达成共识之后就可以进入下一阶段了。在本次项目的最终界面布局中,其实与原型的设计还是有一定的差异的,差异源自于哪里呢?我们的编程能力?我觉得除了欠缺沟通的技巧外,更多的是项目经验的不足吧。

3.数据库设计

数据库的设计是一个非常重要的工作,非常重要!非常重要!它关系到你的程序的可扩展性,以及将来开发时的编程难度!怎么把用户的需求转化为程序流程,流程信息存入到数据库,表之间互联互通,外键怎么设计?是一对一关系?一对多关系?要不要中间表?这些都需要一些项目经验做支撑,我作为一个菜鸟,在这方面吃尽了苦头,将来在数据库设计的时候一定要重视,软件开发人员都要参与进来,因为最终编程实现的时候,核心就是按照这份数据库设计来一步步完成的。

在设计数据库的时候,可以使用PowerDesigner这款软件,可以清晰的呈现表与表之间的关系,在后续的开发阶段,我们就是人手一份打印版,按照这份文档写程序!

表之间关系

4.软件实际开发阶段

终于要进入期盼已久的编程阶段了,之前觉得做前面那些工作是对我们这些程序猿的折磨,编程才是我们想要的!

简单的介绍一下我主要负责的Web端的工作以及应用的技术、工具:

软件项目中,实际开发阶段毫无疑问是软件开发中最重要的阶段,而重重之重的就是:编程规范性

初期,对于我们这些菜鸟而言,总觉得编程是自己的事,自己写的代码我自己能看懂就行,注释写的挺多的啊,我能看懂啊......

但是,实际的开发中,编程是一个比较漫长的阶段,经过长时间的开发,慢慢的我都忘记自己最初写的那段代码是干什么的,你是不是也有这种情况?看着自己曾经写的那几行蹩脚的注释,只能默默的一层一层的查看代码,还原出当时写这段代码的逻辑!更别说,给其他人看你写的代码了!真的很痛苦,在最终对代码进行整合的时候,你的团队会欲哭无泪的。所以,在正式的开发前,一定要进行一个集体的统一培训,统一的注释风格,统一的命名方式,统一的代码各层级的功能逻辑【Action>>Service>>ServiceImpl>>Dao>>DaoImpl】。

下面总结一下自己总结的几点经验教训:

1.注重编程规范。开始写代码前,一定要进行集体、面对面的沟通,落实到纸面上,不要依赖说!不要依赖于听!开发规范一定要统一,编程一定要规范!【否则,最后改代码的时候会哭的,不要以为自己写完就再也不会改代码了!!】

2.端正团队意识。写代码,不要抱有:我先这样“不规范的”写上,等会我再改的打算!从一开始就要规范!!发现问题马上修改,否则,等到代码汇总到SVN上,团队最终会被你“接口里的localhost”、页面里的“alert弹窗”给弄崩溃的!

3.重视版本管理软件的正确使用。代码的管理,我们使用了SVN,很好的工具,但是因为我们基本都没有使用经验,所以代码最终还是被搞成了一坨shit!使用这个工具必须要进行统一的培训,都会用,不乱用!否则,你会体会到一颗老鼠屎坏一锅汤的痛苦。

经过这个项目,我对编程的规范上有了深刻的教训与认识,这也是自己想写这篇文章的动力来源,既可以让自己加深地印象,也可以分享给初次参与项目的师弟师妹们,一个优秀的程序猿,不管有多厉害的技术,都要重视编码的规范,这是能够完成一个集体项目的首要条件,毕竟项目开发不是一个人的工作,团队的合作是尤为重要的,遵守团队的编程规范,是合作开发出一个合格的软件的必要保证。

5.软件测试以及文档整理

此时,已经进入了项目开发的尾期,进行全面的、合理的软件测试,是非常有必要的,但是我们并没有很重视测试这一块,只是默认个人在提交SVN之前已经自己测试通过了。这就造成了,等到代码汇总之后,真正打包部署应用到服务器环境之后,总会出现各种意外的Bug。比如“接口中的localhost”,在本机测试的没有发现问题【此时你得程序在本地运行】,这就需要一个合理的测试环境。我觉得可以请其它人员【非开发者】进行测试,一个陌生人更能合理的模拟一个用户的操作情况,这样更有利于发现程序中的Bug。

至于,书写一些软件测试用例、用户使用手册、软件测试报告的整理工作我就不详细说了!毕竟程序猿最讨厌整理文档!

3.总结

与小伙伴们肩并肩,经过半年的努力,合作完成了这套软件的开发,心头也浮现一丝的成就感。作为项目组的组长,自己在技术上、经验上还是有很多的收获,对一个完整的软件开发流程有了一点自己的认识与体会,认识到了编程规范的重要性,这些感悟,也必将会陪伴我走完剩下的程序猿生涯,特写此文与君共“警”!

希望您可以从阅读本文中有所收获,欢迎点赞、评论奥!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.01.07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0.前言
  • 1.团队背景介绍
  • 2.项目的开发流程
  • 3.总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档