一个软件的大致生命周期可以分为:项目启动、需求调研分析、系统设计、编码实现、系统测试、系统测试、系统投产、系统验收等阶段;下面分别详细讲解一下这几个阶段。

1. 项目启动

在项目启动阶段,主要确定项目的目标、范围及其可行性,我们需要对项目的背景、干系人、决策人等等进行了解。编制项目章程和组建项目团队,包括:产品经理、架构师、UI工程师、开发工程师、测试工程师等;明确项目管理制度,每个阶段的成果产物及评审方式及过程,评审要有相应的《会议纪要》,从项目启动起,项目经理每周提供《项目周报》;测试阶段,测试工程师每周提供《项目测试周报》等等都属于项目管理制度。

2. 需求调研及分析

2.1 需求调研

了解相关对接系统的业务需求,比如该软件是为其它业务提供服务的平台,那一定要了解清楚相关对接方的具体需求才能设计出最佳的系统架构。又比如该软件是一个业务系统那必须要了解清楚业务方的具体需求才能达到业务满意、用户满意。

2.2 需求分析

需求分析阶段主要对调研阶段收集到的各项需求进行细化分析,对业务需求进行去粗取精、去伪存真、准确理解,然后把它用软件工程开发语言(形式功能规约,即需求规格说明书)表达出来。需求明确后应当有PRD文档、UI/UE设计图、高保真图等产出,项目经理也应当产出一份详尽的项目计划并严格执行。

3. 系统设计

3.1 概要设计

概要设计就是结构设计,其主要目标就是给出软件的模块结构,用软件结构图表示整个系统的架构,其中应当包含但不限于以下几部分: - 系统架构设计: 需要对系统的整体技术架构做出设计,采用何种技术框架及架构,包含技术选型如web容器的选择、高速缓存组件的选择等;是否采用分层技术,是否采用分模块设计等等一系列技术方向进行明确。

  • 业务架构设计: 考虑到系统是一个满足业务满足市场的长期存在,所以我们的系统需要应对未来业务的发展,那就需要做出相应的业务架构设计,包含系统未来的产品可扩展性、系统收缩性等相关方面的设计。
  • 网络架构设计: 针对系统的网络结构进行设计,是部署在内网还是外网,分模块的系统需明确哪些模块部署外网区、哪些模块部署DMZ区、哪些模块部署内网区,模块之间的访问关系及端口要求等。
  • 数据库设计: 针对系统的数据结构进行设计,包含是否采用分库分表技术,是否采用读写分离设计等,系统中所有的表结构设计及字段设计。
  • 接口设计: 针对系统内部接口及外部接口进行设计,包含接口通讯方式、接口字符编码、接口数据规范、接口报文规范、接口报文格式、接口字段等进行设计。
  • 安全设计: 包含数据的传输与存储安全、安全认证方式、数据的加解密签名验签方式、共计及防范方案等进行相应设计。
  • 非功能设计: 主要包含系统性能、可靠性、可用性、可扩展性、可维护性等相关设计。

3.2 详细设计

详细设计主要任务就是将软件分解成模块,是指能实现某个功能的数据和程序说明、可执行程序的程序单元。可以是一个函数、过程、子程序、一段带有程序说明的独立的程序和数据,也可以是可组合、可分解和可更换的功能单元,其中要包含具体功能的简介、功能流程、输入输出项、数据库操作、异常处理等,可以理解成好的详细设计其实就是伪代码。

4. 编码实现

软件编码就是根据产品原型图、UI/UE设计图、设计文档转换成计算机可以接受的程序,即写成以某一程序设计语言表示的源程序清单。开发人员应当充分了解软件开发语言、工具的特性和编程风格,严格遵守开发规范进行代码编写;良好的编码风格、清晰的编码注释等都有助于提升软件产品的开发质量。

5. 系统测试

5.1 功能测试

对软件进行测试是保证软件质量的重要手段。开发工程师开发完成后,可以交由测试工程师测试。测试工程师测试到BUG要反馈给开发,开发进行修改;功能测试通常需要多轮反复的测试多次,直至测试通过达到软件质量要求。

5.2 用户验收测试

用户验收测试阶段,也是通常的UAT(User Acceptance Test)阶段,用户验收测试是最终用户可以检查软件是否符合业务要求的最后阶段。UAT由了解要求并了解构建软件目的的最终用户执行。此测试是在软件运行之前执行的最后一次测试。最终用户使用现实生活场景并为真实数据构建UAT测试用例,用户验收测试在最终用户在上线之前验证软件是否满足这些业务需求方面具有重要作用。

5.3 性能测试

通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试,以此可以预估出系统的最大承受能力以及推算出能否满足系统上线后的性能要求。通常包含以下几个方面:

  • 基准测试: 在给系统施加较低压力时,查看系统的运行状况并记录相关数做为基础参考
  • 负载测试: 是指对系统不断地增加压力或增加一定压力下的持续时间,直到系统的某项或多项性能指标达到安全临界值,例如某种资源已经达到饱和状态等 。
  • 压力测试: 压力测试是评估系统处于或超过预期负载时系统的运行情况,关注点在于系统在峰值负载或超出最大载荷情况下的处理能力。
  • 稳定性测试: 在给系统加载一定业务压力的情况下,使系统运行一段时间,以此检测系统是否稳定。
  • 并发测试: 测试多个用户同时访问同一个应用、同一个模块或者数据记录时是否存在死锁或者其他性能问题

6. 项目上线试运行

所有测试通过,并与客户或者上级达成一致后,系统进行试运行(通常指小范围运行),稳定后上线。上线包括:上线前期准备,包括要上线的代码程序包、数据库DDL、DML脚本、系统初始化参数配置等;上线部署、部署后业务验证;投产完毕后的系统运行状况监控:各业务功能是否正常运行、系统资源、数据库资源等是否在合理使用范围内。

7. 投产验收

整理交付物:项目需求文档、项目设计文档、安装部署手册、系统操作手册等等,并移交至相关运维部门或人员进行后期系统维护。释放项目团队,进行项目回顾总结,项目汇报,完成项目结项等工作。

软件的接口设计图_软件产品研发流程相关推荐

  1. 软件项目周报_软件产品研发流程

    一个软件的大致生命周期可以分为:项目启动.需求调研分析.系统设计.编码实现.系统测试.系统测试.系统投产.系统验收等阶段:下面分别详细讲解一下这几个阶段. 1. 项目启动 在项目启动阶段,主要确定项目 ...

  2. 软件的接口设计图_软件的生命周期amp;测试基本流程

    软件的生命周期&测试基本流程 软件的生命周期 问题定义及规划- - - 需求分析阶段- - - 系统设计 - - - 软件编程 - - - 软件测试 - - - 软件维护 瀑布模型有弊端 1用 ...

  3. 软件的接口设计图_产品基础 | 软件生命周期

    一.什么是软件生命周期? 软件生命周期又称为软件生存周期或系统开发生命周期,是软件的产生直到报废的生命周期,周期内有问题定义.可行性分析.总体描述.系统设计.编码.调试和测试.验收与运行.维护升级到废 ...

  4. 软件的接口设计图_软件工程复习6670组考题

    黑色字体为原本答案,蓝色字体修改补充了 复习题组「66-70/66-70/14/14」 一名词解释 71.压力测试 在软件工程中,压力测试是对系统不断施加压力的测试,是通过确定一个系统的瓶颈或者不能接 ...

  5. 软件的接口设计图_基于GJB 5000A的软件配置管理研究与系统实现

    郝延刚 (海军装备部驻南京地区第二军事代表室,南京 211153) 摘 要:采用Spring.MyBatis以及Activiti等技术,设计了符合GJB 5000A软件配置管理要求的软件配置管理系统. ...

  6. 软件的接口设计图_面向服务架构(SOA)的汽车软件分析和设计

    --后台回复"资料",领取特斯拉专利技术解析报告-- 文章转自:联合电子 本文将先重温下SOA架构的核心要素与优势,并重点讨论话题"面向服务架构(SOA)的汽车软件分析和 ...

  7. 软件的接口设计图_刚进装修公司该学什么软件

    学室内装饰设计需要先学什么软件 楼主 1.AutoCAD 精确绘制建筑施工图 --主要是大致的框架,用CAD可以绘制精确的墙线和房屋内部构造框架 2.3DMax 三维建模,装修效果图或者虚拟装修实境 ...

  8. 软件的接口设计图_你真的懂电脑吗?电子设备的硬件及软件认识,一起分享学习!...

    海商报业集团这里是你梦想的栖息地关注 电脑已经是工作生活中不可缺少的电子产品,无论工作.娱乐都离不开他们.那么经常运用电脑,在熟练掌握最基本的操作技巧之外,有一些在日常运用中的错误认知是需要我们了解并 ...

  9. 软件的接口设计图_【学术论文】高速接口JESD204B的灵敏放大器设计

    摘要 采用UMC 28 nm CMOS工艺,在低电源电压下设计实现了一种高速.低失调的灵敏放大器.在传统差分放大器.AB类锁存器等电路的基础上进行改进,提出了一种新型结构的灵敏放大器.利用Cadenc ...

  10. 软件的接口设计图_App软件开发的完整在线流程(一看就懂)

    App软件开发其实并不复杂,完整的在线App开发不过9个步骤,一看就明白到底是怎么回事. 第一步:需求评估 在App项目正式启动前,客户应该对自己的需求进行评估,确认项目的开发周期和成本.登录APIC ...

最新文章

  1. AngularJS开发指南7:AngularJS本地化,国际化,以及兼容IE低版本浏览器
  2. C51 特殊功能寄存器英文全称
  3. NOIP2007 树网的核
  4. windows7系统适合哪个python_Python3.6.4在Windows7系统下安装配置教程
  5. 第61课 查分程序 《小学生C++趣味编程》
  6. 跨服务器查询信息的sql
  7. csu 1812: 三角形和矩形 凸包
  8. 钉钉签到自动签到python_原来实现钉钉自动签到如此简单,每天准时上下班不是梦...
  9. 利用html表格制作个人简历
  10. Exadata想要补装Oracle 11g的注意事项
  11. 蚁群算法原理c语言,蚁群算法原理及其应用--详细介绍
  12. 三维激光扫描后处理软件_甘肃靠谱的激光三维扫描仪_天原地信商贸
  13. 解决vscode没有文件图标(亲测有效)
  14. Jmeter 线程数、Ramp-Up、循环次数 详解
  15. 超调量怎么计算公式_matlab超调量怎么计算 求超调量、上升时间、峰值时间、调节时间 - 西部娱乐网...
  16. 在oled屏幕上显示汉字
  17. 好用的谷歌浏览器插件
  18. 分享史上java最牛逼 最简短的代码
  19. android 修改系统默认时间24小时制
  20. Java程序员不得不了解的5款IDE神器

热门文章

  1. Jdk(1.6和1.8)中英文Api文档
  2. lisp怎么改成vlx_如何用CAD自带的VLisp修改Lisp文件并且生成vlx文件??
  3. VS2017 Visual Assist X破解方法
  4. batch script learn
  5. UVM_COOKBOOK学习【Testbench Architecture】
  6. 9008刷机工具_黔隆科技刷机教程OPPOR9S忘记密码免刷机保资料解屏幕锁教程
  7. AD18绘制AHT20原理图及PCB电路设计
  8. oracle两天教程,Linux菜鸟的两天Oracle安装生活
  9. VS编译器的使用——VS2019新建控制台工程
  10. 有项目管理模板提供吗?(模板和管理工具对过程改进的帮助)