软件项目开发最佳实践

软件项目开发最佳实践

项目开发流程包括这几个方面,我先说一下,让各位有个全局的印象:

  1. 项目立项 (CEO)
  2. 需求收集 (市场)
  3. 产品原型 (产品)
  4. UI设计 (设计)
  5. 开发实施(接口定义+后端开发+前端开发)(软件工程师)
  6. 产品测试 (测试)
  7. 线上部署+运行维护 (运维)
  8. 运营推广 到 产品死亡,服务器停止维护 (运营) 基本一个产品的的生命周期有大概这8个环节,其对应的职位名称,我备注在后面了。

项目立项

通常来说要做一个什么项目,确定业务类型,资金来源,盈利模式等等。这是CEO干的事。他要解决一个问题:那就是为什么要做这个项目

需求收集

这个前期一般是老板或经理,后期是市场的人在做。主要目的是做需求调研,以此来确定这个项目的实际使用需求有哪些,从而确定产品功能。是对项目的进一步细化。

产品原型制作

该工作对应公司职位为产品。他们和需求方讨论完后,将需求整理成一个完整的产品原型,是对需求的整理。使用工具有:墨刀,摹客,Axure等。个人项目偏移动端使用推荐墨刀。团队开发推荐摹客。经典设计,本地传播推荐Axure。

UI设计

设计选择很多,常用工具有PS和 Sketch。PhotoShop是最常用的设计工具,如果是开发移动端APP,Sketch是非常好的选择,它会生成矢量设计图,导出正好符合开发要求的图片组。也有一些现成的设计组件可供直接使用。比如:

开发实施

下面就到最重要的实现阶段了。在上手实际开发之前,需要先评估需求。看看哪些比较难实现,哪些容易实现,对需求的优先级做排序,和对需求的合理性提出质疑。比如:根据用户着装颜色,设置手机屏幕主题的需求,就不太合理。 需求评估完后,不要着急写代码。通常来说一个互联网项目是分为后端和前端。后端用来处理业务逻辑和数据管理。前端用来解决用户交互和数据展示。这时候如果**前后端同步开发就需要有一定的共识。只有在这个共识的基础上作出的开发,才能前后端配合良好。**顺利通过后期测试。而这个共识就是:接口定义。 我们需要先定义好接口,接口的请求参数,接口的返回数据格式,字段类型等等,此处推荐使用 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搜索引擎优化。等等手段。主要目的就是提高曝光度,将产品推送到用户面前,让用户使用。 到此为止,一个项目从立项到运营的全部流程,大概讲解完毕。中间肯定有很多细节没有提到。本文只为给新入行的朋友一点启发。