软件开发流程
跨行招工作的渣渣!暴风哭泣。。。。
小米(智能硬件部)一面,二面都让我详细说一下软件开发流程
定义
软件开发流程:
- wiki:软件开发过程(software development process)是软件开发的生命周期(software development life cycle),各个阶段实现了软件的需求定义分析、设计、实现、测试、交付和维护。软件开发过程是在开发和构建系统时应遵循的步骤,是软件开发的路线图
常见的过程模型:
敏捷开发-瀑布模型
requirements->design->implementation->verification->maintenance
流程
需求分析->概要设计->详细设计->编写代码->程序测试->软件交付->客户验收->代码维护->项目重构
1.需求分析
建立需求,根据需求可以建立一个功能描述
明确大概的事件流:逻辑模型,分类系统功能模块,包图
指定各功能模块实现的操作者
简单的演示程序(demo):在招标中的作用至关重要
2.概要设计
面向过程的主框架- 事件流,关注细节
面向对象的主框架- 对象的过程
需要哪些模块,哪些接口
3.详细设计
-
1.根据对象抽象类,形成类图
-
2.对类分配责任,主要成员函数。细节问题,函数行为
-
3.通过时序图验证类的成员函数能否实现事件流
-
4.对类设计成员变量,成员变量来自前置条件,后置条件,方法中的临时变量。
-
5.对类分析设计成员函数的返回值、参数、函数名、访控属性(公有私有保护)
-
6.设计成员函数的过程:流程(活动图/状态图),异常
活动图状态图
-
7.其他细节:构造函数,析构函数,拷贝构造函数,操作符重载
-
8.通过继承和多态引入抽象。优化。降低模块之间的耦合。
-
9.套用设计模式。不要为了设计模式而用设计模式。很容易弄巧成拙。
最终形成一份详细的设计文档
接口,控制器,调用
功能性详细描述、类型、函数、各种条件、流程设计、关键算法、关键库的接口
4.编写代码
按照设计文档进行编写代码
编写代码是进行基本的测试验证
-
1.基本测试,每个main函数来测试类及函数定义
-
2.单元测试, 模块级别
-
3.集成测试, 模块都完成后,做集成测试
5.测试验证
黑盒测试
白盒测试
功能测试、性能测试、压力测试、健壮性测试,稳定性测试
6.产品发布
安装手册,用户使用指南
7.客户验收
8.代码维护
软件和根据不同功能进行更改
9.项目重构
有新的技术出现,软件对功能需求没有变,用新的技术将原来的功能重新实现一边