软件项目开发最佳实践

软件项目开发最佳实践

项目开发流程包括这几个方面,我先说一下,让各位有个全局的印象:
1. 项目立项 (CEO)
2. 需求收集 (市场)
3. 产品原型 (产品)
4. UI设计 (设计)
5. 开发实施(接口定义+后端开发+前端开发)(软件工程师)
6. 产品测试 (测试)
7. 线上部署+运行维护 (运维)
8. 运营推广 到 产品死亡,服务器停止维护 (运营)

基本一个产品的的生命周期有大概这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
}

接口定义完毕就可以实际开发了。

产品测试

当项目开发完毕之后,或基本完毕之后就可以启动测试流程了。测试分为几个步骤:
1. 撰写测试用例文档
2. 评审测试文档
3. 按照测试文档第一遍进行冒烟测试(据说来源于当前的硬件研发,第一步是加电测试,不冒烟说明初步测试通过) 软件的冒烟测试是指将高优先级的测试用例完全跑通
4. 完整测试

线上部署

产品测试通过之后,就可以准备上线了。所谓上线是对应的不上线,服务端或者说所有的软件都分为两个环境:开发环境和线上环境。
开发环境就是指在开发阶段代码运行的环境,比如后端一般是在本地电脑开发,然后推送到公司局域网供团队内的其他成员使用。前端代码一般是运行在自己的设备上。
线上环境就是指供用户使用的环境。后端需要将代码部署到有公网IP的服务器上运行。前端需要发布app到应用商店或者将web网页部署到线上服务器。
线上环境可能还涉及到CDN缓存,分布式服务等配置,不过并不是所有项目都涉及到,这里不做细聊。

运营推广

产品上线之后,就开始进行运营推广了。这里一般由运营的同事负责,工作内容主要包括:到各大平台发文推广,撰写软文。微博互动,广告推广,SEO ASO搜索引擎优化。等等手段。主要目的就是提高曝光度,将产品推送到用户面前,让用户使用。

到此为止,一个项目从立项到运营的全部流程,大概讲解完毕。中间肯定有很多细节没有提到。本文只为给新入行的朋友一点启发。

发表评论

电子邮件地址不会被公开。 必填项已用*标注