当前位置: 首页 > news >正文

软件生命周期之需求分析和设计

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1. 软件生命周期

 

1.1 什么是软件生命周期

软件生命周期又称为软件生存周期或系统开发生命周期,是指从软件的产生直到报废的整个过程。

软件生命周期过程包括:

*问题定义:

用户需要计算机解决的问题是什么?

电商系统:要计算机实现一个平台,商家通过平台销售自己的商品,一般用户通过平台购买商品。

*可行性分析

用户需要计算机解决的问题是否可行?需要进行可行性分析。

市场可行性分析,是否有市场价值。

技术可行性分析,使用什么技术解决用户提出的问题。 

   *需求分析(重点)

将用户提出的问题进行细化。

先确定大模块:比如电商系统包括:前台(用户购买商品),后台(商家维护商品)。

对每一个大模块进行细化。。。。。

直到细化到不能细化为止(可以对需求分析的结果进行设计 )

*设计(次重点)

确定细化问题的实现方法(比如:要设计什么接口,设计功能什么技术实现。。。)。

*编码

去解决问题,依据需求和设计 文档进行开发。

*测试

验证是否已经解决用户提出的问题。

单元测试(通过在开发阶段由开发人员进行测试)。

集成测试(测试业务整体流程)。

功能用例测试(对每个细化 的功能点进行测试)。

性能测试(使用专业工具进行压力和稳定性测试)

*维护(占整个软件生命周期很大的比重)

修改性维护:前期没有测试出的问题,正式上线运行后bug(缺陷)显示出来了,对这些bug进行修改。

完善性维护:在现有功能的基础上增加或完善功能。

预防性维护:后期根据正式运行的情况对系统进行优化,避免一些问题的发生。


1.2 常用的开发模型

企业开发中对上边开发阶段常使用一些模型:

1.2.1 瀑布模型:

223935_Ihwq_867113.png 

强调:开发的每个阶段是顺序执行,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈(为了解决问题需要重复执行),如何在某个阶段出现问题,需要从上一个阶段甚至更早的阶段去解决排查问题。

适用场合:

需求明确,解决方案明确,常在一些中小型项目中使用。

 

1.2.2 原型模型:

 224015_LIPj_867113.png

强调:逐步求精每一次修改对上次原型的完善)对原型 进行修改优化,开发阶段围绕着原型(当成样品)进行实施。

适用场合:

前期需求不确定,采用原型方法方便搜集需求。


1.2.3 增量模型:

 224107_szte_867113.png

增量模型:瀑布模型加上原型模型,增量模型融合了瀑布模型的基本成分(重复应用)和原型实现的迭代特征。

每一次增量经过了开发的每一个阶段(瀑布模型经过的所有阶段)

每一次增量对功能进行完善(原型模型的逐步求精

适用场合:

大型项目,需求不明确。

 

需求分析(重点)

2.1 什么是需求分析

需求分析是在问题定义及可行性分析完成后细化用户对软件的功能和性能的要求,即用户希望软件能做什么事情,完成什么样的功能,达到什么性能。

包括:需求调研、需求描述(重要)、需求评审。

重要性:

需求分析是软件工发的开端,我们设计的软件产品存在不完整性、不正确性大部分原因是需求分析错误所导致的,因此,需求分析是软件生命周期中最重要的过程。

2.2 需求调研

目标:挖掘用户需求

过程:

    首先确定目标用户,开发人员和目标用户确定一个问题领域,并定义一个描述该问题的系统,用户在这个问题领域和系统下提出需求,需求类型包括:功能需求、质量需求、用户体验需求等。

需求调研方法:

根据不同的项目、不同的用户群体采用不同的方法:

*与客户交谈,向用户提问题

*参观用户工作流程,观察用户操作

*向用户发调查问卷(通常是以选择题和是非题为主)

*与同行、专家交谈,听取他们的意见

*分析已经存在的软件产品,提取需求

*从行业标准、规划中提取需求 

*上网搜索相关资料 

成果物:需求调研报告.doc

 224352_jFRt_867113.png

2.3 需求描述(重要)

通过需求调研对收集到的资料进行分析、鉴别、综合和建模,清除用户需求的模糊性、歧义性和不一致性,分析系统的数据要求,为原始问题及目标软件建立逻辑模型。 

分析人员需要编写“软件需求说明书”并与用户进行交流确认。 

成果物:“软件需求说明书”或“软件需求规格说明书

重要性:

• 需求分析工作完成的一个基本标志是形成了一份完整的、规范的需求规格说明书

• 软件开发人员需要根据“软件需求规格说明书”进行设计和编码。

软件需求规格说明书的内容也是根据公司的项目管理水平而定。 

内容基本包括:系统概述、运行环境、功能模块图、功能用例、性能需求、接口需求、其它需求等。  

功能模块图/功能架构图:通常使用visio画。

 224442_HdEJ_867113.png

使用powerDesigner画用例图:

描述 了每类用户所操作的功能点。

 224517_BJg7_867113.png

功能用例:

描述功能点的具体内容。

 224548_evFF_867113.png

接口需求:

系统对外接口:

接口描述内容:商品支付接口

接口功能描述: 电商网站需要调用网银支付接口进行支付

接口方向: 电商网站-->网银

接口协议:https


接口数据描述(重点)

开发人员依据接口数据描述开发程序。

电商网站要向网银发送什么数据格式(常用格式有xmljson

(包括请求和响应两部分数据)

建议:企业开发必须经过正规的需求分析过程。

2.4 需求评审 

由架构师、技术经理、需求分析人员、设计人员、开发人员对“需求规格说明书”进行审核。

审核内容:

1、看需求规格说明书是否符合文档规范。

2、需求描述 是否详细(设计人员可以依据需求说明书进行设计)

 

设计

     根据软件需求说明书进行设计,设计系统整体架构、系统外部和内部接口、实现算法和核心代码编写等,总之包括两个阶段:总体设计 (概要设计 )、详细设计。

3.1 概要设计

概要设计内容:

总体结构和模块间的关系;

系统架构包括:技术架构和功能架构。

 

技术架构:

系统使用什么技术完成哪些模块的功能。

javaEE常用技术架构:

sshstruts2+spring+hibernate

主要开发中小型的传统企业应用系统。

 224853_LKG3_867113.png

ssmspringmvc+mybatis

主要开发分布式联系网项目。

 224942_1ifi_867113.png

功能架构:

就是需求描述的功能框图。

 225017_xAAt_867113.png

业务流程图:

使用visio画核心业务流程图:

 225049_tZ2T_867113.png

系统网络部署结构;

 225140_BwNC_867113.png

定义系统的外部接口、及模块间的接口;

接口描述内容:商品支付接口

接口功能描述: 电商网站需要调用网银支付接口进行支付

接口方向: 电商网站-->网银

接口协议:https

 

接口数据描述(重点)

开发人员依据接口数据描述开发程序。

电商网站要向网银发送什么数据格式(常用格式有xmljson

(包括请求和响应两部分数据)

3.2 详细设计

详细设计内容:

详细设计的主要任务是设计每个模块的类接口、所需的局部数据结构、物理数据模型、页面原型等。

注意: 一般情况下公司根据人力现状不写详细设计文档的,可以在需求分析阶段和概要设计 阶段对详细设计的内容进行描述。

每个模块的类接口:

通过伪代码实现,描述接口参数、接口功能。

局部数据结构:需要自定义什么数据类型。

物理数据模型(重点)

使用powerDesigner设计物理数据模型(根据公司要求可能在需求分析阶段或概要设计 阶段实现)

 225254_QEag_867113.png

 

通过powerDesigner创建数据库表、存储过程等元素。

 

 

 

 

 

 

 


转载于:https://my.oschina.net/bigdataer/blog/538570

相关文章:

  • 线程的正确停止
  • C++类的存储
  • PHP+Swoole网络通信框架
  • spark-submit提交任务到集群
  • 结合Scikit-learn介绍几种常用的特征选择方法
  • js图片处理
  • bconsole中相关命名说明
  • Oracle更改redo log的大小
  • parallels desktop克隆ubuntu虚拟机网卡丢失
  • 泛型vector
  • [转]SQLServer 2008数据库查看死锁、堵塞的SQL语句
  • Solr5安装部署
  • Scrapy 入门:Hello Scrapy
  • 李嘉诚储藏财富的背后隐藏着什么奥秘?
  • Bitnami Redmine 与 gerrit 整合问题解决
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • angular2开源库收集
  • Flex布局到底解决了什么问题
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • MD5加密原理解析及OC版原理实现
  • React 快速上手 - 07 前端路由 react-router
  • 程序员最讨厌的9句话,你可有补充?
  • 翻译:Hystrix - How To Use
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 云大使推广中的常见热门问题
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • # Java NIO(一)FileChannel
  • #define用法
  • #Java第九次作业--输入输出流和文件操作
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #Spring-boot高级
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (二)JAVA使用POI操作excel
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (九)信息融合方式简介
  • (四)c52学习之旅-流水LED灯
  • .net Application的目录
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .NET导入Excel数据
  • .NET的数据绑定
  • .net分布式压力测试工具(Beetle.DT)
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc
  • .net与java建立WebService再互相调用
  • @NestedConfigurationProperty 注解用法
  • @requestBody写与不写的情况
  • @ResponseBody
  • [] 与 [[]], -gt 与 > 的比较
  • [C++参考]拷贝构造函数的参数必须是引用类型