软件开发生命周期-3-每个阶段的输入输出

2023-05-16

记录下一点自己的心得体会,分享给大家,有不足之处,望指教。

第一阶段:假想阶段

本阶段是整个软件开发的开始阶段,输入可以是为了提高工作效率的某个好的想法或者是公司领导为了帮助管理发出的命令。输出就是业务需求文档,英文称为Business Requirement Document。这个文档的文字描述的抽象层次很高,比如业务人员说我需要一个软件,能够实现无纸化办公,能够管理合同,管理客户信息,能够在登录时选择角色,选择显示语言,登录成功后自动列出登录人的当前要做的任务项,等等。这个文档主要来自业务人员,所以主要完成业务概念的描述。

第二阶段:需求开发阶段

本阶段的主要工作是基于业务需求文档进一步分析业务人员的真实需求,输入是假想阶段的业务需求文档,输出是功能说明文档,英文称为Funtion Specification。功能说明文档与业务需求文档的主要区别是业务需求文档主要描述业务概念,而功能说明描述的是信息技术概念,此文档的主要功能是完成从业务概念到信息技术概念的匹配和对齐,在保证实现业务人员真实想法的同时还要结合信息技术保证系统功能的逻辑合理性和优化性。可以说通常业务需求文档描述的一个点到这里都会扩展成为一个面。作者认为本阶段的工作至关重要,这个阶段的工作输出会直接影响到下面的设计阶段和实现阶段的工作。所以本阶段需要很多重要角色的参与,之前提到过的有软件产品设计师,软件开发架构师,软件开发负责人,软件测试负责人和业务负责人。这些角色要共同齐心合力完成一份高质量的功能说明文档。

第三阶段:设计阶段

本阶段的输入是功能说明文档,输出是软件架构设计文档,硬件架构设计文档,测试计划文档。这三份文档可以同时进行,值得一提的是软件架构设计和硬件架构设计通常是同时考虑完成的,没有绝对的谁先完成谁后完成,并且都可以再细分。硬件设计可以分为概要设计和详细设计,概要设计通常要描述出有几个环境,每个环境有几台服务器,使用的是虚拟服务器还是物理服务器,每个服务器的作用,分别在哪个级别的安全区域,防火墙分布,负载均衡设备的分布,数据库产品信息,是单实例还是集群;详细设计除了要描述出这些信息还要描述出每台服务器的硬件配置信息,地址,开放的端口,HTTP请求或者其他类型的请求的走向,是单方向还是双方向,每台服务器上运行的操作系统,应用服务器的产品信息和版本信息,防火墙的设置,负载均衡设备的设置,数据库实例名称,软件的所有组件在每个应用服务器上的分布信息等。

软件设计可以分为概要设计和详细设计,概要设计通常要描述出有几个主要组成部分,每个部分的存在形式和功能。举个简单的例子,有这样一个系统,它包括业务子系统,存储子系统,打印子系统,银行对接子系统,政府对接子系统;存在的形式可能是Java开发的独立系统,操作硬件设备的服务接口,外部机构官方提供的对外公开的Web Service接口,外部机构官方提供的对外公开的官网。详细设计通常要描述出各个子系统的对接形式,通信协议,权限控制。比如是基于TCP/IP协议的数据库层面的对接,还是基于TCP/IP协议的socket形式的对接,还是基于HTTP协议的web service形式的对接;当然如果对方的存在形式不容易实现对接可以在子系统内部做适当的转换处理,比如说对方是公开出来的网站。对于每个子系统的内部通常要描述出权限控制机制,系统的分解和集成机制,实现技术的组成;权限控制要结合具体的系统分析判断;系统的分解和集成通常要结合实现技术考虑,模块和层次的划分都有成熟的可供参考的原则和解决方案;值得一提的是展现层的设计,输出应该包括动态形式的原型系统和静态形式的文档,前者的重点是软件的行为定义,后者的重点是软件的业务逻辑定义;实现技术部分要把所有用到的运行时环境,编程语言,第三方类库描述清楚。作者不主张在这个阶段对类和成员的定义已经类之间的调用做出规定,这个层次的问题留给实现阶段来考虑。所以在本阶段作者更多地是关注架构模式和框架模式的考虑,对于设计模式的考虑则留给实现阶段。

测试计划分为功能测试计划,性能测试计划,安全测试计划。通常要描述出测试案例,测试环境的组建,测试工具,测试技术。每个测试的话题都可以作为一个专业的方向单独拿出来描述,限于篇幅,这里就不多说了。

第四阶段:实现阶段

如果设计阶段的工作做得足够充分,那么这个阶段的工作将变得容易得多。这个阶段的输入是设计文档。输出是源代码和构建出来的软件安装包。源代码的书写必须遵循统一的规范,必须遵循设计阶段定义的统一的架构,必须达到规定的安全标准,用合理的方式实现设计文档所设计的功能。

第五阶段:质量检查阶段

这个阶段的输入是准备测试的系统和测试案例。输出是缺陷记录和缺陷报告。

第六阶段:部署阶段

这个阶段的输入是可供部署的软件安装包和部署文档。输出是可供用户使用的业务系统,备份和恢复计划。

总结:

我们可以这样看待一个业务软件,对于一个业务软件有业务线,软件线,硬件线三条线,业务想法由软件来实现,软件需要运行在硬件上。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

软件开发生命周期-3-每个阶段的输入输出 的相关文章

  • ffmpeg系列-解决ffmpeg获取aac音频文件duration不准

    这个问题是这样产生的 xff0c 一同事反应会随机出现ijk获取到的aac文件的duration不准 xff0c 发来一看 xff0c 确实不准 xff0c 在AE或者系统mediaplayer中得到的都是8 4秒 xff08 准确时间是M
  • 基于librtmp的推流实现

    1 推流 配置好rtmpdump库后 xff0c 我们可以先用命令行来推流看下效果 2 流程图 使用librtmp发布RTMP流的可以使用两种API xff1a RTMP SendPacket 和RTMP Write 使用RTMP Send
  • ijkplayer-音视频变速播放实现

    本文主要分析变速播放框架实现细节 xff0c 不分析sonic以及soundtouch变速算法 在我的sonic变速变调原理一文中会详细讲解基于基音周期来实现变速变调的原理 1 变速入口分析 从jni层的 setPropertyFloat函
  • 提升树,bagging与随机森林

    提升树是一种以分类树或者回归树为基本分类器的提升方法 对于分类树只需将adaboost算法中的基函数设置为二分类二叉树即可 而回归树则是根据残差来训练下一个分类器的回归二叉树 下面主要介绍一下回归提升树的算法 回归提升树 回忆一下 xff0
  • Android_WakeLock使用

    1 前言与WakeLock简介 1 1 前言 一些手机app xff08 如微信 QQ等 xff09 有新消息来到达 xff0c 手机屏幕即使在锁屏状态下也会亮起 xff0c 并提示用户有新消息 但是 xff0c 一般情况下手机锁屏后 xf
  • ContentResolver.query详解

    1 查询手机的联系人 public void getContacts ContentResolver contentResolver 61 this getContentResolver Cursor cursor 61 contentRe
  • jni开发-GetMethodID与CallObjectMethod的坑

    在java层中声明一个方法用于创建一个audiotrack xff0c 在C层中调用这个方法并获取audiotrack对象 先看下面的代码 xff1a SuPlayer java public AudioTrack createAudioT
  • docker启动rabbitMQ访问不了管理界面-问题解决

    rabbitMQ可以在docker上面去安装启动 xff0c 这样快捷方便 xff0c 也利于本地开发的调试 先在docker下去拉取docker docker pull rabbitmq 这样拉取了rabbitMQ最新的版本后 xff0c
  • Royal TSX 从入门到高效使用

    Royal TSX 是一款 macOS 下可用的远程连接软件 xff0c 类似于 Windows 系统的 XShell 免费版最多支持 10 个连接 xff0c 对于个人开发而言 xff0c 已经足够了 目录 引言 一 下载安装 二 基础配
  • PIP升级错误解决方法

    pip span class token function install span upgrade pip 执行后报如下错误 Looking span class token keyword in span indexes https p
  • 使用自定义菜单等接口类功能出现“SSL connect error”的错误原因及解决方案

    这种情况很少出现 xff0c 但是出现了很难排查 xff0c 因为环境检测结果就是curl openssl都开启了 xff0c 为什么还是不行呢 xff1f 通过技术人员耐心的排查发现是CURL中SSL的版本太低 xff0c 不支持CURL
  • 删除数组中的某个数字

    span class hljs comment 这个程序是今天多益网络的编程题 xff0c 很简单的删除一个数组中值为2的元素 span span class hljs comment 看着很简单 xff0c 但是我没有做出来 xff0c
  • 强化学习和控制

    马尔科夫决策过程MDP值迭代和政策迭代 值迭代政策迭代比较 MDP模型无限状态的MDPs 离散化值函数估计 使用一个模型或模拟器适应值迭代 在强化学习中 xff0c 我们将提供一个奖赏函数 xff0c 当目标完成的好时 xff0c 便奖赏
  • Centos7——防火墙(Firewall)开启常见端口命令

    Centos7 默认安装了 firewalld xff0c 如果没有安装的话 xff0c 则需要YUM命令安装 xff1b firewalld真的用不习惯 xff0c 与之前的iptable防火墙区别太大 安装Firewall命令 xff1
  • FTP服务器下载视频,自定义保存路径

    FTP服务器下载视频 xff0c 自定义保存路径 controller层方法 当前使用 xff0c 浏览器自动弹框 Description 从FTP服务器下载文件 64 param host FTP服务器hostname 64 param
  • OEPNCV_摄像头采集显示

    span class token macro property span class token directive keyword include span span class token string lt stdio h gt sp

随机推荐

  • ArchLinux系统安装(BIOS)

    一 简介 Arch linux 是朝向轻量 xff08 lightweight xff09 以及简单 xff08 simple xff09 的 Linux 发行版 其中 简单 xff08 Simplicity xff09 被定义为 避免不必
  • Android 常见的抓log方法总结

    1 kernel log 1 adb shell dmesg gt c log dmesg txt 2 adb shell cat proc kmsg gt c log kmsg 3 findstr xx 只看xx相关的log 4 查看特定
  • 工作纪实_24-使用@Sl4j注解但是确无法使用log.info打印日志

    如果出现这种情况 xff0c 第一时间先执行打包mvn clean package命令 xff0c 这么做是为了检查log日志包是否齐全 xff0c 此次我打包报错是找不到org slf4j包 xff0c 很明显 xff0c 我们检查一下相
  • gradle-wrapper.properties中各属性的含义

    gradle wrapper properties中各属性的含义 1 gradle wrapper properties 每一个用gradle编译的工程 xff0c 都会有一个gradle wrapper目录 该目录下有2个文件 xff1a
  • cordova 打包步骤

    年底了 xff0c 好多资料都在整理 xff0c 为了避免遗忘 xff0c 也为了利益他人吧 直接上步骤吧 xff1a 增加运行环境的模板 cordova platform add android 编译android的程序 cordova
  • 视图绑定

    视图的绑定从另一个角度看就是implicit的转换 主要用在两个场合 1 当一个T类型的变量t要装换成A类型时 2 当一个类型T的变量t无法拥有A类型的a方法或变量时 其实视图的绑定是为了更方便的使用隐式装换 如果我们不用视图绑定看看 这个
  • 【Settings随记:二】一级菜单,二级菜单的添加与隐藏,添加辅助功能

    我们可以先从Settings的启动来看 先进入到AndroidManifest xml 找到启动的Activity span class token tag span class token tag span class token pun
  • 新加装的硬盘,装上系统后发现EFI分区没有被创建,还是用旧硬盘的EFI分区

    引发问题 xff1a 如果没有旧硬盘就没法引导系统 xff0c 没法开机 解决办法 xff1a 在新硬盘增加一个EFI分区 目前情况大概就是这个样子 xff1a xff08 本人忘了截图 xff0c 用别人的 xff09 可见 xff0c
  • 信息安全重点知识

    一 信息安全概述 网络空间安全的重要性 xff1a 没有网络安全就没有国家安全信息安全 xff1a 防止数据未授权的访问 xff0c 数据有意和物一的威胁 网络安全是信息安全的子集 信息安全的三要素 xff08 CIA xff09 xff1
  • 线程同步的四种方式

    一 xff0c 什么是线程同步和互斥 同步就是协同步调 xff0c 按预定的先后次序进行运行 如 xff1a 你说完 xff0c 我再说 这里的同步千万不要理解成那个同时进行 xff0c 应是指协同 协助 互相配合 线程同步是指多线程通过特
  • 海天注塑机KEBA系统数据采集

    本文章只针对海天注塑机的KEBA系统 xff0c 因为其他注塑机厂家也用KEBA系统 xff0c 他们的采集方式可能不太一样 xff0c 所以后续有时间我将写其他文章来解释 xff08 默认你已经向海天采购了OPC组件 xff09 一 采集
  • Axure基础:事件和动态面板

    这一篇文章我们主要是将如何做系统左侧的导航 xff0c 并且告诉大家如何动态的切换各个页面 一 事件 1 事件基础 事件的核心就是什么时候做什么事 其中的什么时候可以是如下 xff1a 能做的事情如下 xff1a 2 远程监控云中的事件 监
  • 设备联网调试三板斧

    在实际的工业互联网项目中 xff0c 设备联网所占的比重越来越大 有的一期项目为了简单快速上线 xff0c 让客户直观体会到工业互联网的效果 xff0c 直接会把设备联网放在一期项目的重点 那么在做此类项目时 xff0c 设备联网调试就显得
  • 光立方完全解析

    转载请注明出处 xff1a http blog csdn net ruoyunliufeng article details 37903899 这个4 4 4的三色光立方是我在初学单片机的时候做的一个小项目 很适合给初学单片机和C语言的同学
  • 远程视频监控之应用篇(mjpg-streamer)

    转载请注明出处 xff1a http blog csdn net ruoyunliufeng article details 38515311 这篇文章将主要结合源码介绍mjpg streamer xff0c 使小伙伴们了解视频监控的实现
  • Matplotlib 入门(三):多图合并

    一 多合一显示 1 subplot方法 xff1a 设置行 列和起始点 plt subplot 2 1 1 分成两行一列 xff0c 起始点为1 2 代码 coding utf 8 34 34 34 Created on Sun Sep 2
  • python毫秒级延时

    一 毫秒延时 近期有一个ms级别延时的需求 xff0c 实际测试了一下 xff0c 环境 xff1a win7 64位 xff0c python2 7 13 结果 xff1a 毫秒级别的延时是能够支持的 xff0c 微妙是不支持的 二 de
  • 数据分析之乳腺癌预测

    零 定义问题 1 1 数据介绍 http archive ics uci edu ml machine learning databases breast cancer wisconsin breast cancer wisconsin n
  • 关于mongodb占用内存过大的问题

    一 现象 最近发现自己服务器内存越来越少 xff0c 查了一下原来是部署的mongodb使用内存在线性增加 不查不知道 xff0c 一查吓一跳 xff0c 竟然占用了3G的内存 二 分析 1 内存增加的原因 mongo为了优化他的读写效率
  • 软件开发生命周期-3-每个阶段的输入输出

    记录下一点自己的心得体会 xff0c 分享给大家 xff0c 有不足之处 xff0c 望指教 第一阶段 xff1a 假想阶段 本阶段是整个软件开发的开始阶段 xff0c 输入可以是为了提高工作效率的某个好的想法或者是公司领导为了帮助管理发出