软件项目开发最佳实践
软件项目开发最佳实践
项目开发流程包括这几个方面,我先说一下,让各位有个全局的印象:
- 项目立项 (CEO)
- 需求收集 (市场)
- 产品原型 (产品)
- UI设计 (设计)
- 开发实施(接口定义+后端开发+前端开发)(软件工程师)
- 产品测试 (测试)
- 线上部署+运行维护 (运维)
- 运营推广 到 产品死亡,服务器停止维护 (运营) 基本一个产品的的生命周期有大概这8个环节,其对应的职位名称,我备注在后面了。
项目立项
通常来说要做一个什么项目,确定业务类型,资金来源,盈利模式等等。这是CEO干的事。他要解决一个问题:那就是为什么要做这个项目
需求收集
这个前期一般是老板或经理,后期是市场的人在做。主要目的是做需求调研,以此来确定这个项目的实际使用需求有哪些,从而确定产品功能。是对项目的进一步细化。
产品原型制作
该工作对应公司职位为产品。他们和需求方讨论完后,将需求整理成一个完整的产品原型,是对需求的整理。使用工具有:墨刀,摹客,Axure等。个人项目偏移动端使用推荐墨刀。团队开发推荐摹客。经典设计,本地传播推荐Axure。
UI设计
设计选择很多,常用工具有PS和 Sketch。PhotoShop是最常用的设计工具,如果是开发移动端APP,Sketch是非常好的选择,它会生成矢量设计图,导出正好符合开发要求的图片组。也有一些现成的设计组件可供直接使用。比如:
- 响应式网站 bootstrap
- 单体Web应用,React组件库Ant Design。VUE组件库 Element UI
- 安卓设计规范 Material Design
- iOS的苹果人机交互指南 还有很多UI素材可以在网上自行搜集,比如easyicon和Iconfont-阿里巴巴矢量图标库
开发实施
下面就到最重要的实现阶段了。在上手实际开发之前,需要先评估需求。看看哪些比较难实现,哪些容易实现,对需求的优先级做排序,和对需求的合理性提出质疑。比如:根据用户着装颜色,设置手机屏幕主题的需求,就不太合理。 需求评估完后,不要着急写代码。通常来说一个互联网项目是分为后端和前端。后端用来处理业务逻辑和数据管理。前端用来解决用户交互和数据展示。这时候如果**前后端同步开发就需要有一定的共识。只有在这个共识的基础上作出的开发,才能前后端配合良好。**顺利通过后期测试。而这个共识就是:接口定义。 我们需要先定义好接口,接口的请求参数,接口的返回数据格式,字段类型等等,此处推荐使用 Swagger 生成API文档。其他类似工具也有一般内置到项目管理工具中,比如禅道和Redmine,还有jira。禅道是PHP开源项目管理工具。Redmine和jira是Java系的。jira的市场份额现在增长最为快速。 接口格式类似这种:
PATH: /user (接口路径)
Method:POST (接口请求方式)
parameters: (接口请求参数)
{
"userId" = 0
}
reponse: (接口返回数据)
{
"data": {
"name": "范",
"age": 0,
},
"errorData": {},
"msg": "string",
"status": 0
}
接口定义完毕就可以实际开发了。
产品测试
当项目开发完毕之后,或基本完毕之后就可以启动测试流程了。测试分为几个步骤:
- 撰写测试用例文档
- 评审测试文档
- 按照测试文档第一遍进行冒烟测试(据说来源于当前的硬件研发,第一步是加电测试,不冒烟说明初步测试通过) 软件的冒烟测试是指将高优先级的测试用例完全跑通
- 完整测试
线上部署
产品测试通过之后,就可以准备上线了。所谓上线是对应的不上线,服务端或者说所有的软件都分为两个环境:开发环境和线上环境。 开发环境就是指在开发阶段代码运行的环境,比如后端一般是在本地电脑开发,然后推送到公司局域网供团队内的其他成员使用。前端代码一般是运行在自己的设备上。 线上环境就是指供用户使用的环境。后端需要将代码部署到有公网IP的服务器上运行。前端需要发布app到应用商店或者将web网页部署到线上服务器。 线上环境可能还涉及到CDN缓存,分布式服务等配置,不过并不是所有项目都涉及到,这里不做细聊。
运营推广
产品上线之后,就开始进行运营推广了。这里一般由运营的同事负责,工作内容主要包括:到各大平台发文推广,撰写软文。微博互动,广告推广,SEO ASO搜索引擎优化。等等手段。主要目的就是提高曝光度,将产品推送到用户面前,让用户使用。 到此为止,一个项目从立项到运营的全部流程,大概讲解完毕。中间肯定有很多细节没有提到。本文只为给新入行的朋友一点启发。