1. 软件生命周期
1.1 什么是软件生命周期
软件生命周期又称为软件生存周期或系统开发生命周期,是指从软件的产生直到报废的整个过程。
软件生命周期过程包括:
*问题定义:
用户需要计算机解决的问题是什么?
电商系统:要计算机实现一个平台,商家通过平台销售自己的商品,一般用户通过平台购买商品。
*可行性分析
用户需要计算机解决的问题是否可行?需要进行可行性分析。
市场可行性分析,是否有市场价值。
技术可行性分析,使用什么技术解决用户提出的问题。
*需求分析(重点)
将用户提出的问题进行细化。
先确定大模块:比如电商系统包括:前台(用户购买商品),后台(商家维护商品)。
对每一个大模块进行细化。。。。。
直到细化到不能细化为止(可以对需求分析的结果进行设计 )
*设计(次重点)
确定细化问题的实现方法(比如:要设计什么接口,设计功能什么技术实现。。。)。
*编码
去解决问题,依据需求和设计 文档进行开发。
*测试
验证是否已经解决用户提出的问题。
单元测试(通过在开发阶段由开发人员进行测试)。
集成测试(测试业务整体流程)。
功能用例测试(对每个细化 的功能点进行测试)。
性能测试(使用专业工具进行压力和稳定性测试)。
*维护(占整个软件生命周期很大的比重)
修改性维护:前期没有测试出的问题,正式上线运行后bug(缺陷)显示出来了,对这些bug进行修改。
完善性维护:在现有功能的基础上增加或完善功能。
预防性维护:后期根据正式运行的情况对系统进行优化,避免一些问题的发生。
1.2 常用的开发模型
企业开发中对上边开发阶段常使用一些模型:
1.2.1 瀑布模型:
强调:开发的每个阶段是顺序执行,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈(为了解决问题需要重复执行),如何在某个阶段出现问题,需要从上一个阶段甚至更早的阶段去解决排查问题。
适用场合:
需求明确,解决方案明确,常在一些中小型项目中使用。
1.2.2 原型模型:
强调:逐步求精(每一次修改对上次原型的完善)对原型 进行修改优化,开发阶段围绕着原型(当成样品)进行实施。
适用场合:
前期需求不确定,采用原型方法方便搜集需求。
1.2.3 增量模型:
增量模型:瀑布模型加上原型模型,增量模型融合了瀑布模型的基本成分(重复应用)和原型实现的迭代特征。
每一次增量经过了开发的每一个阶段(瀑布模型经过的所有阶段)
每一次增量对功能进行完善(原型模型的逐步求精)
适用场合:
大型项目,需求不明确。
2 需求分析(重点)
2.1 什么是需求分析
需求分析是在问题定义及可行性分析完成后细化用户对软件的功能和性能的要求,即用户希望软件能做什么事情,完成什么样的功能,达到什么性能。
包括:需求调研、需求描述(重要)、需求评审。
重要性:
需求分析是软件工发的开端,我们设计的软件产品存在不完整性、不正确性大部分原因是需求分析错误所导致的,因此,需求分析是软件生命周期中最重要的过程。
2.2 需求调研
目标:挖掘用户需求
过程:
首先确定目标用户,开发人员和目标用户确定一个问题领域,并定义一个描述该问题的系统,用户在这个问题领域和系统下提出需求,需求类型包括:功能需求、质量需求、用户体验需求等。
需求调研方法:
根据不同的项目、不同的用户群体采用不同的方法:
*与客户交谈,向用户提问题
*参观用户工作流程,观察用户操作
*向用户发调查问卷(通常是以选择题和是非题为主)
*与同行、专家交谈,听取他们的意见
*分析已经存在的软件产品,提取需求
*从行业标准、规划中提取需求
*上网搜索相关资料
成果物:需求调研报告.doc
2.3 需求描述(重要)
通过需求调研对收集到的资料进行分析、鉴别、综合和建模,清除用户需求的模糊性、歧义性和不一致性,分析系统的数据要求,为原始问题及目标软件建立逻辑模型。
分析人员需要编写“软件需求说明书”并与用户进行交流确认。
成果物:“软件需求说明书”或“软件需求规格说明书”
重要性:
• 需求分析工作完成的一个基本标志是形成了一份完整的、规范的需求规格说明书
• 软件开发人员需要根据“软件需求规格说明书”进行设计和编码。
软件需求规格说明书的内容也是根据公司的项目管理水平而定。
内容基本包括:系统概述、运行环境、功能模块图、功能用例、性能需求、接口需求、其它需求等。
功能模块图/功能架构图:通常使用visio画。
使用powerDesigner画用例图:
描述 了每类用户所操作的功能点。
功能用例:
描述功能点的具体内容。
接口需求:
系统对外接口:
接口描述内容:商品支付接口
接口功能描述: 电商网站需要调用网银支付接口进行支付
接口方向: 电商网站-->网银
接口协议:https
接口数据描述(重点):
开发人员依据接口数据描述开发程序。
电商网站要向网银发送什么数据格式(常用格式有xml或json)
(包括请求和响应两部分数据)
建议:企业开发必须经过正规的需求分析过程。
2.4 需求评审
由架构师、技术经理、需求分析人员、设计人员、开发人员对“需求规格说明书”进行审核。
审核内容:
1、看需求规格说明书是否符合文档规范。
2、需求描述 是否详细(设计人员可以依据需求说明书进行设计)
3 设计
根据软件需求说明书进行设计,设计系统整体架构、系统外部和内部接口、实现算法和核心代码编写等,总之包括两个阶段:总体设计 (概要设计 )、详细设计。
3.1 概要设计
概要设计内容:
总体结构和模块间的关系;
系统架构包括:技术架构和功能架构。
u 技术架构:
系统使用什么技术完成哪些模块的功能。
javaEE常用技术架构:
ssh:struts2+spring+hibernate
主要开发中小型的传统企业应用系统。
ssm:springmvc+mybatis
主要开发分布式联系网项目。
u 功能架构:
就是需求描述的功能框图。
u 业务流程图:
使用visio画核心业务流程图:
u 系统网络部署结构;
u 定义系统的外部接口、及模块间的接口;
接口描述内容:商品支付接口
接口功能描述: 电商网站需要调用网银支付接口进行支付
接口方向: 电商网站-->网银
接口协议:https
接口数据描述(重点):
开发人员依据接口数据描述开发程序。
电商网站要向网银发送什么数据格式(常用格式有xml或json)
(包括请求和响应两部分数据)
3.2 详细设计
详细设计内容:
详细设计的主要任务是设计每个模块的类接口、所需的局部数据结构、物理数据模型、页面原型等。
注意: 一般情况下公司根据人力现状不写详细设计文档的,可以在需求分析阶段和概要设计 阶段对详细设计的内容进行描述。
u 每个模块的类接口:
通过伪代码实现,描述接口参数、接口功能。
u 局部数据结构:需要自定义什么数据类型。
u 物理数据模型(重点):
使用powerDesigner设计物理数据模型(根据公司要求可能在需求分析阶段或概要设计 阶段实现)
通过powerDesigner创建数据库表、存储过程等元素。