1

指导理念

  理念是理性的观念,是普遍真理,是做事的指导思想。

  软件开发的指导理念总结为三个方面:沟通、简单、灵活,三者相互作用不可分割。道可道非常道,阐释总是一种限定。“沟通、简单、灵活”三个概念需要在实际工作中不断体会和领悟。

1.1.沟通

(1)有效沟通是前提,一切的前提;

(2)有效沟通需要承认别人的价值;

(3)换位思考即沟通;

(4)结果清晰即沟通;(代码可读即沟通、文档清晰即沟通)

(5)沟通无处不在;

(6)提升个人技能(层次),即提升沟通能力。(先有深度再有广度)

1.2.简单

(1)逻辑简单:理解上简单,思维上直接;

(2)形式简单:外观上简单,简洁有美感;

(3)追求本质:敢于质疑,发掘本质概念(需求);

(4)心态简单:做人简单,心态开放;

(5)可执行:能落地、能实施、能核查。

1.3.灵活

(1)思维不僵化:结合场景,结合实际,思维开放;

(2)简单的灵活:因简单带来的灵活;

(3)复杂的灵活:为灵活带来的复杂;

(4)可扩展:容易接受变动,但要避免过度设计。

基本原则

  原则是原理准则,是遵循规律,是方法论,是做事指导。原则帮助我们在关键环节采取合适的举措,为具体工作提供方法指导。

  软件开发的基本原则总结为“找到感觉”,即在关键环节工作中找到相应的感觉,并遵循这种感觉(原则)。

2.1.需求分析——现场感

  需求分析人员一定要到客户现场并面对面沟通。不具备现场条件的,要学**电影《唐人街探案》中的少年秦风,模拟案发现场,尽量真实的体验各角色的行为。

2.2.原型设计——真实感

  界面原型要高度仿真,仅停留在草图、Axsure或Mockplus效果图上是不能满足要求的,一定要利用H5技术做出仿真软件。客户只有见到真品,才确切知道自己的需要。基于高保真原型的需求确认,才是最有效的沟通。

2.3.系统设计——全局感

  架构师的心中要有项目全局:深度理解需求、怀揣完整流程、深刻理解技术,设计时又不能陷入技术实现细节。设计是设计,实现是实现,思想上要切割。要适度考虑实现,切不可为了实现扭曲了设计。

2.4.代码编写——设计感

  代码编写是实现,但实现中也有设计,设计无处不在。局部逻辑设计、实现步骤设计、变量命名设计等,是代码质量的重要体现,代码质量即产品质量。设计即思想,“思想走在行动之前,就像闪电走在雷鸣之前一样”。

2.5.软件交付——持续感

  小步前进、不断验证,持续部署、一键部署,及早交付、持续交付。围绕主流程、最小闭环、持续高质量交付,切忌低质量交付,低质量交付有时还不如不交付。持续有价值的交付,是快速响应的体现,是与客户最有效的沟通。

2.6.任务分工——拆解感

  没有分工,就没有协作,要清晰界定任务边界。经理人员:拆解拆解再拆解,紧盯紧盯再紧盯!对结果负责:谁的问题?我的问题!沟通是否做到了,心是否操到了?

2.7.工作进度——里程碑感

  工作进展上要有里程碑意识,里程碑是一种承诺,努力捍卫自己的承诺。里程碑是一种责任感,对公司负责,也是对自己负责。对自己负责即主动的自我成长意识。

基本流程

  流程(标准)是做事步骤,是如何做和做的结果,是执行力的体现。

  本部分描述基本开发流程,具体工作结果的界定,可本着简单实用的原则根据实际工作进行细化,并补充为本流程的实施细节要求。流程本质可归纳为“输入-处理-输出”过程,开发流程的“输入-处理-输出”过程简要划分为六个阶段,过程示意如下:

输    入

处    理

输    出

需求确认

界面确认

系统设计

功能开发

系统测试

软件交付

流程并不是完全瀑布式的,各阶段可适当迭代交叉进行;各阶段内都应遵循MVP(最小化可行产品)原则,紧紧围绕主流程不断完备本阶段交付物。

  流程的实施应遵循“先僵化、后优化、再固化”的原则,在执行过程中完善和巩固。在执行过程中,对于大家一致认可、不可二犯的错误,一犯后要反思并约定二犯时的惩罚措施。

3.1.需求确认阶段

  (1)需求面对面沟通:现场感的描述;

  (2)需求分析文档:主要体现项目背景和目标、业务流程(图)、现场感的业务描述(案例描述)、各角色功能清单、主要界面草图;

  (3)需求确认文档:客户代表签字;作为项目合同附件;

  (4)项目合同:合同金额、支付方式、违约责任,界面原型设计周期、功能开发周期、部署交付周期,销售、设计、开发三方经理沟通项目风险并确认合同内容,客户确认。

  工具:需求分析文档模板、项目合同模板、各确认文档模板、项目风险分析文档模板。

3.2.界面确认阶段

  理念:界面即结果,客户要的是结果!开发瞄准的也是结果!

  (1)界面原型草图:纸上原型(手工线框图),体现各角色操作流程;

  (2)高保真界面原型:H5界面,无后端逻辑代码的真实软件,前端即软件;体现各角色真实操作流程和界面效果;与后端无缝对接的代码架构;

  (3)原型确认文档:原型交付、沟通调整,客户确认。

  工具:纸上原型、H5/jQuery、UI框架/模板。

  备注:本阶段可称为前端设计/开发阶段,需要需求分析、美工、前端开发等能力的集成。可交叉进行数据结构设计、架构设计和关键技术探索,但就是不写后端逻辑代码。

3.3.系统设计阶段

  (1)数据库设计:数据库表结构文档、数据库初始化SQL脚本;数据库实际是数据结构,是软件的高度抽象,是系统业务的灵魂,是架构设计和代码开发的根基,设计阶段要极度重视!

  (2)代码架构设计:逻辑模块分解(Solution/Project/Package)、目录结构设计、主要程序文件名确定;Code First实体类代码生成;

  (3)交互接口设计:前后/端交互接口设计(如JSON数据格式、QueryString传参内容)、核心函数接口设计;

  (4)关键技术突破:公共基础代码编写(要逐步模板化,如认证、权限、日志、异常处理),关键点/难点技术突破、易错问题预先避免的设计。

  工具:数据库设计规范、代码架构设计规范、交互接口设计规范、代码自动生成工具、项目代码模板;

  备注:不要把架构师或系统设计想得太高大上,预估程序员的能力及其可能出错的问题,提醒程序员并在设计上尽力避免出错的可能性,就是设计。避免问题,总比解决问题简单。凡事预则立,不预则废!

  我们交付的是功能,不是代码。代码是个无底洞,越晚动手越好。代码的过早付出,会带来负面情绪。因为懒了脑子,所以累了身体。本质还是先动脑再动手,克制不动脑子蛮干的冲动。

  不过度设计,但不能不设计。不能以“敏捷、试错”的名义不设计、不思考、不想静静!

  再次提醒:架构师的心中要有项目全局,深度理解需求、怀揣完整流程、深刻理解技术,设计时又不能陷入技术实现细节。设计是设计,实现是实现,思想上要切割。要适度考虑实现,切不可为了实现扭曲了设计。

3.4.功能开发阶段

  (1)进度清单:进度清单(进度优先级),任务分工,里程碑节点;进度清单更新频率;

  (2)日会制度:前一天做了什么;今天准备做什么;遇到了什么问题。项目经理应时刻关注程序员开发情况,不能仅停留在一日一会上。

  (3)任务细分:项目经理要将开发模块任务细分,明确任务效果——逐条列出任务效果要求,并不断检查任务效果。

  (4)主流程畅通:优先实现主流程,紧紧围绕主流程,确保主流程畅通;优先解决关键路径上的关键问题;

  (5)面向界面编程:界面即结果,结果倒推过程。开发人员要面向界面编程、面向接口编程。

  (6)用注释理思路:找到设计感,理清思路再动手,画草图理流程,列出实现步骤,一定要克制一头扎进代码堆里的冲动!

  (7)自我测试:小步前进,不断测试;步子足够小,不用Debug;单元测试(尝试);

  (8)版本控制:开发与交付版本分离控制;

  (9)一键发布:实现一键发布、自动化部署。

  工具:开发进度一览表模板,任务细分清单模板,单元测试工具,SVN/CVS,自动编译部署工具。

3.5.系统测试阶段

  (1)主流程测试:不断测试主流程、梳理优化主流程;与开发迭代进行;

  (2)系统功能全面测试:人工测试,可用性测试,边界测试;

  (3)上线运行试用:部署文档;针对特殊系统的应用情况自动记录报告;

  (4)Bug追踪管理:Bug记录,Bug处理,统计分析。

  工具:主流程测试用例、系统功能测试用例、Bug管理工具。

3.6.软件交付阶段

  (1)软件发布包/安装包;

  (2)软件部署手册;

  (3)用户使用手册:分角色描述,体现业务流程;

  (4)售后服务:客户沟通与反馈处理。

  工具:软件部署手册模板、用户使用手册模板、客户沟通记录模板。

---------------------

参考文献

1.《实现模式》,Kent Beck著,李剑、熊节、郭晓刚译,人民邮电出版社,2012年12月出版;

2.《原型设计:实践者指南》,Todd Zaki Warfel著,汤海、李鸿译,清华大学出版社,2013年1月出版;

3.《Scrum要素》,Chris Sims, Hillary Louise Johnson著,徐毅译,人民邮电出版社,2013年2月出版;

4.《赢在执行(干部版)》,余世维著,北京联合出版公司,2012年12月出版;

5.《软件企业量化管理》,林锐、周恒、李江博著,机械工业出版社,2012年3月出版;

6.《如何编写可读性好的代码》,夏春涛。

我的软件开发理念和流程相关推荐

  1. android记账软件开发源代码_如何开发直播软件?直播软件开发的具体流程有哪些?...

    知乎视频​ 随着互联网的发展和智能手机的迅速普及,对直播软件的需求也在增加.开发直播软件和直播app开发都属于直播软件开发的服务.那么直播平台的发展过程是怎样的呢?在软件开发期间需要注意什么?小编来说 ...

  2. 总结后软件开发项目基本流程-先流程图-后描述人员分工和具体工作-自己备学

    软件开发项目基本流程和工作 1.项目启动阶段-人员分工 产物名称成果描述–负责人 调研文档了解项目背景,了解项目干系人目标方向-产品经理 团队组建确认团队人员及配置-产品总监 业务梳理明确项目的目标

  3. python软件开发的一般流程-Python各个岗位的开发流程

    根据张大美女提供资料微修改,在这谢谢张大美女! 1.python软件开发工程师 1.1 项目启动会 说明项目目标.阶段划分.组织结构.管理流程等关键事项. 1.2 需求调研 由用户提出,描述产品的功能 ...

  4. 大型软件开发中的流程与规范

    对于长生命周期的大型软件,流程和规范十分必要.IT行业作为一个快节奏的行业,不光技术革新快,人员的更替也是很快的,没有严格的规范和流程,几个大版本迭代下来,可能产品的代码就维护不下去了. 估计很多大厂 ...

  5. 华为2020校招软件开发岗全流程,已签约

    面试是在9月11号,时间有点久了,我应聘的是通用软件开发工程师,公共开发部门 华为面试分两部分,两个专业面,一个部门总管面试 专业面确实就是专业面,因为华为很重视一个方向,就是你的专业知识与你应聘的岗 ...

  6. 软件开发 过程管理流程设计

    根据当前公司的情况,分析整理设计了这个开发管理流程,希望能够解决项目开发中出现的管理问题.

  7. git 软件开发和发布流程(一)

    强烈推荐 - 在游戏中学习git操作:Learn Git Branching 1.分支流程说明 注意: 不强制要求开个人分支,按实际需要执行 2.基础规范 2.1 代码分支命名 功能分支:featur ...

  8. 展讯软件开发的一般流程

    在开始前,得先在XP系统中配置好展讯平台的编译环境,并装好相关软件.然后接到 任务,说要将MP3界面做成什么样子,或是将主菜单改成什么样子,或是将系统中的 List控件做成什么什么风格,或是开发一个独 ...

  9. git 常用简化软件开发和发布流程(二)

    我们项目组常用简化的流程 其他常用流程:

  10. python软件开发的一般流程-django最快程序开发流程详解

    1.建立工程 在工程目录下打开cmd,输入以下命令.其中mysite是项目名称. django-admin startproject mysite 命令运行完后,在该目录下会出现一个名为mysite的 ...

最新文章

  1. FPGA-YC输出一个4边框
  2. 制造业采购审批流程设计示例
  3. ORA-07445导致实例崩溃的解决【The solution of instance crush by ORA-07445】
  4. VB.NET开发人员必备参考10本书目
  5. .dex文件结构学习笔记(4)
  6. 使用 libpcap 实现网络转包
  7. javascript如何阻止事件冒泡和默认行为
  8. 内核态(Kernel Mode)与用户态(User Mode)
  9. 洛谷——P1155 双栈排序
  10. SQL Server 2016 bak文件还原
  11. 微信小程序 — 公立医院申请
  12. 2021 年第一次做核酸检测是什么体验
  13. AtCoder Grand Contest 030 (AGC030) C - Coloring Torus 构造
  14. Python网络编程自动化(HCIA)
  15. 实现内容自动撑开盒子
  16. 用java实现简单绘图
  17. 三星老java手机换字体_三星手机设置字体大小与更换默认字体的图文教程
  18. java毕业生设计房屋租赁平台计算机源码+系统+mysql+调试部署+lw
  19. Docker:第一章:Docker常用命令
  20. 高炉煤气净化提质技术及发展趋势浅谈

热门文章

  1. CleanMyMac X免费的c盘清理工具
  2. Golang优秀开源项目汇总, 10大流行Go语言开源项目, golang 开源项目全集(golang/go/wiki/Projects), GitHub上优秀的Go开源项目...
  3. 自己不优秀,认识谁都没用
  4. 区块链浏览器构建实战
  5. (附源码)node.js外卖平台 毕业设计 151448
  6. 移动端H5强制页面横屏展示
  7. 利用无线串口进行单片机通信(基于MK60)
  8. 获得代理ippython_Python自动获取代理IP
  9. 几种蓝屏分析及解决汇总
  10. 计算机很多术语都是cat,18 个开源翻译工具帮助你的项目本地化