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

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. 软件项目周报应该怎么写?

    定义:什么是项目周报 项目周报是对项目一周的进展情况进行总结和汇报的材料.项目周报是项目执行阶段重要的过程文件,是内部和外部团队了解项目最新进展的重要渠道. 项目周报编写的几个问题 项目周报谁来写? ...

  3. 软件项目周报模板_一份高质量的职场工作周报,要这样写

    周报是会呼吸的痛,它会在每个周五来回滚动. 几乎每个职场人都会为周报所折腰,因为周报看起来是小事,但又不仅仅是小事. 周报,是职场人士对一周工作的总结和记录,是展示自己工作状态和成果的重要载体,是领导 ...

  4. Leangoo项目管理软件阶段式(瀑布式)游戏产品研发流程

    一.概述 本文讲述的是基于阶段模式进行游戏新产品研发过程,以及基于这种研发过程Leangoo提供的项目模板. 二.游戏产品开发流程 通常开发一款新游戏大体上会按照如下流程来进行: 1) 概念阶段 – ...

  5. python第五周项目答案_工作页python流程控制(第五周 ).doc_学小易找答案

    [单选题]Mary is ()hardworking than her sister, but she failed in the exam. (5.0分) [单选题]设a.b为float型变量,则以 ...

  6. 软件产品研发解决方案

    目录 1.软件产品研发 1.1.软件产品研发所面临的问题 1.2.软件产品研发流程 1.3.软件产品研发流程管理目的 2.软件产品研发中团队管理 2.1.软件产品研发基本人力构成 2.2.软件产品研发 ...

  7. 软件项目实施方案概述-转载

    一.软件项目实施方案概述 软件产品,特别是行业解决方案软件产品不同于一般的商品,用户购买软件产品之后,不能立即进行使用,需要软件公司的技术人员在软件技术.软件功能.软件操作等方面进行系统调试.软件功能 ...

  8. 第二章软件项目需求管理

    一.学习目的与要求 目的:认识软件需求是一个项目的开端,是软件设计及实现的基础 要求: 了解软件需求的概念 理解需求开发的步骤和活动 初步具备编写需求规格说明书的能力 掌握需求管理的目标.原则和策略 ...

  9. JAVA软件项目研发流程

    JAVA软件项目研发流程 -- 谈需求(客户提需求,有客户项目经理,技术经理) -- 可行性分析报告(市场调研)[接项目]{人员配比,项目成本}(竞标) -- 概要设计 -- 静态模型(建模工具)[产 ...

最新文章

  1. jenkins运行日志时间与linux,Jenkins 用户文档(运行多个步骤)
  2. 7、kubernetes 核心技术-Controller 控制器
  3. java for循环 暂停_类中的2个for循环不想在第一次迭代后迭代c [暂停]
  4. 逻辑推理篇:数据分析中违背常理的悖论:辛普森悖论
  5. React div加载背景图
  6. 笔记本超频会烧吗_笔记本电脑cpu超频是什么意思?超频会怎样啊?
  7. 恒大汽车向技术人员等授出3.24亿股购股权:占公司股本的3.31%
  8. 有钱鹅!腾讯奖励万名员工每人一台16999元华为手机,员工“十动然鱼”
  9. 互利网上数字金融典型场景: 网络借贷
  10. vue让元素固定_vue 监听dom元素的滚动事件 实现某元素吸顶或者固定位置显示
  11. MariaDB的简单使用
  12. 终端 ssh 上传文件_记一次将文件添加到github
  13. python实现部分实例
  14. c语言判断二叉树是不是二叉排序树_判断
  15. Node.js局域网文件共享
  16. linux wipe命令,如何使用wipefs命令擦除磁盘上的签名
  17. 电脑桌面计算机打开不显示硬盘信息,电脑加硬盘后不显示不出来怎么办
  18. 利用python脚本批量自动下载Sentinel-1(哨兵1号)数据
  19. java两个字符串相等却总返回false
  20. 工程制图 ( 制图的基本知识和基本技能)

热门文章

  1. ASP.NET WebForm和Mvc开发的比较
  2. 关于.NET编译的目标平台(AnyCPU,x86,x64)
  3. 数组和指针、数组指针和指针数组
  4. IOS14.3开发之使用纯代码创建UIButton以及弹框的使用
  5. 计算机网络实验数据链路层分析,计算机网络第三次实验-数据链路层
  6. 机器学习基础自学笔记2
  7. linux内核grub的作用与用途,linux中grub是干嘛的
  8. linux p2p视频播放器,avplayer: 一个基于FFmpeg、libtorrent的P2P播放器实现.
  9. 电脑实用mysql后C盘内存不足_电脑高手用这方法,终于解决了C盘空间不足的问题,网友:这操作服了...
  10. osg::ComputeBoundsVisitor用法(二)