软件开发流程是通过一系列步骤保证软件产品的顺利开发,和在软件生命周期内的管理方法学。
开发流程与技术没有关系,是开发团队必须遵守的规则。
常见软件开发流程模型
即兴模型(Build-and-Fix Model)
--与最终用户交流后立即进行开发
--没有需求分析和需求发掘的过程
--没有相关软件文档,维护性差
即兴模型适用于需求明确且软件功能很少的项目,即兴模型即使没有模型没有规则,随心所欲的开发,在正规软件开发很少用。是一种很混乱的模型,在软件开发早期多应用于小型软件开发。
瀑布模型(Waterfall Model)
--通过自上而下的明确步骤进行软件开发: 需求分析->架构设计->开发实现->系统测试->最终发布
--每个开发步骤都是不可逆的。
对于需求固定的项目使用与瀑布模型。
增量模型(Incremental Model)
--将系统功能分解为互不重叠的子功能模块
--每次全力实现一个子功能
--子功能全部完成后系统开发结束
功能1: 分析->设计->开发->测试
功能2: 分析->设计->开发->测试
。。。
子功能运用瀑布模型,团队并行开发子功能模块,最后链接各个子功能模块成为最终软件并发布。
螺旋模型(Spiral Model)
--采用一种迭代的方式来进行系统开发
--软件项目分解成多个不同的版本完成
--每个版本的开发过程都需要用户参与
--根据前一个版本的反馈计划下一个版本
开发多个版本,由用户提意见更改需求再一次开发,用户会使用到多个版本,直到和用户的需求相吻合。对于需求变更的反应不够快。
敏捷模型(Agile Modeling)
--一切从简
--拥抱变化
--高效工作
--持续开发
敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。