【系分论文】论软件开发模型及应用
目录
- 论题
- 论题介绍
- 论文要点
- 理论素材准备
- 范文
- 摘要
- 正文
- 论文补充知识
论题
论软件开发模型及应用
论题介绍
软件开发模型( Software Development Model)是指软件开发全部过程、活动和任务的结构框架。软件开发过程包括需求、设计、编码和测试等阶段,有时也包括维护阶段。软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要任务和活动,用来作为软件项目工作的基础。对于不同的软件项目,针对应用需求、项目复杂程度、规模等不同要求,可以采用不同的开发模型,并采用相应的人员组织策略、管理方法、工具和环境。
请围绕“软件开发模型及应用”论题,依次从以下三个方面进行论述。
- 简要叙述你参与的软件开发项目以及你所承担的主要工作。
- 列举出几种典型的软件开发模型,并概要论述每种软件开发模型的主要思想
和技术特点。 - 根据你所参与的项目中使用的软件开发模型,具体阐述使用方法和实施效果。
论文要点
问题1要点:
- 软件系统的概要:系统的背景、发起单位、目的、开发周期、交付的产品等。
- “我”的角色和担任的主要工作。
问题2要点:
- 常用的开发模型:瀑布模型、快速原型模型、演化模型、增量模型、螺旋模型、喷泉模型、敏捷方法。
- 每种软件开发模型的主要思想和技术特点。
问题3要点: - 在项目中所采用的开发模型,具体实施效果如何。
- 还有哪些地方值得改进或提高。
理论素材准备
常见开发模型及特点:
瀑布模型:严格遵循软件生命周期各阶段的固定顺序, 一个阶段完成再进入另一个阶段。 其优点是可以使过程比较规范化, 有利于评审;缺点在于过于理想, 缺乏灵活性, 容易产生需求偏差。
快速原型模型:对于许多需求不够明确的项目, 比较适合采用该模型。 它采用了一种动态定义需求的方法, 通过快速地建立一个能够反映用户主要需求的软件原型, 让用户在计算机上使用它, 了解其概要, 再根据反馈的结果进行修改, 因此能够充分体现用户的参与和决策。
演化模型:也是一种原型化开发, 但与快速原型不同的是, 快速原型模型在获得真实需求时,就将抛弃原型。 而演化模型则不然, 它将从初始的模型中逐渐演化为最终软件产品, 是一种“渐进式” 原型法。
增量模型:它采用的是一种“递增式” 模型, 它将软件产品划分成为一系列的增量构件, 分别进行设计、 编码、 集成和测试。
螺旋模型:结合了瀑布模型和演化模型的优点, 最主要的特点在于加入了风险分析。 它是由制定计划、 风险分析、 实施工程、 客户评估这一循环组成的, 它最初从概念项目开始第一个螺旋。
喷泉模型:主要用于描述面向对象的开发过程, 最核心的特点是迭代。 所有的开发活动没有
明显的边界, 允许各种开发活动交叉进行。
统一过程(UP) :统一过程是一个通用过程框架, 可以用于种类广泛的软件系统、 不同的应用领域、 不同的组织类型、 不同的性能水平和不同的项目规模。 UP是基于构件的, 在为软件系统建模时, UP使用的是UML。 与其他软件过程相比, UP具有三个显著的特点, 即用例驱动、 以架构为中心、 迭代和增量。
敏捷方法:敏捷方法是一种以人为核心、迭代、循序渐进的开发方法。在敏捷方法中,软件项目的构建被切分成多个子项目,各个子项目成果都经过测试,具备集成和可运行的特征。在敏捷方法中, 从开发者的角度来看,主要的关注点有短平快的会议、小版本发布、较少的文档、合作为重、客户直接参与、自动化测试、适应性计划调整和结对编程;从管理者的角度来看,主要的关注点有测试驱动开发、持续集成和重构。
范文
摘要
本文结合作者实践,讨论软件开发模型在出版社ERP系统中的应用。在互联网信息时代,传统出版行业受到冲击,图书发行种类和发行量在下降。当前商业环境要求出版社必须放弃以前粗犷的管理方式,通过系统化的管理思想对企业资源进行调度管控。通过ERP系统改善出版社业务流程,提高企业核心竞争力势在必行。ERP系统复杂度比较高,想保证项目成功,就必须系统的运用软件开发模型作为指导。在本文中首先对出版社ERP系统进行了概要性的描述。然后列举了几种主要的开发模型,以及这些模型的特点,分析哪种模型更适合出版社ERP项目。最后结合我们的出版社ERP系统,具体分析快速原型法的使用方法、实施效果以及经验教训。在本系统的开发过程中,我担负了技术负责人的工作。
正文
我工作的单位是一家跨国出版发行集团,其中图书出版是我集团重要业务板块之一。我集团下有七家出版社,由于各出版社主营图书方向不同,业务上也有很大差异。为加强企业内部控制,规范各社业务流程,提高管理水平、工作效率,我集团于2015年8月开始建设出版社ERP系统。我在该项目中担任了技术负责人的角色。出版社ERP系统主要由编务、出版、发行、财务四个子系统构成。其中编务系统负责图书的内容生产;出版系统负责图书的成品印刷生产;发行系统是图书的批发销售系统;财务系统相对比较传统,与主流生产销售型企业没有大的区别。由于财务和发行系统用户相对比较固定,各出版社在这两个板块上业务差别不大,同时这两个系统又经常需要执行复杂的嵌套表格操作,所以设计为C/S架构,采用VB.NET开发。而编务和出版系统用户会贯穿出版社各业务部门,不同出版社在生产流程上也存在较大差异,所以我们把这两个子系统设计为B/S架构,使用一套基于Java的工作流引擎(JBPM)实现。四个子系统数据库为Oracle 10G,为消除“信息孤岛”,采用数据仓库的方式进行数据集成。该系统对外与电商零售管理系统和物流系统对接,通过Webservice的方式进行数据交换。(项目简介)
我们知道系统开发是一种复杂度很高的工作, 而且需要团队协作。 为保证项目成功率, 就应该使用系统化的方法论来指导开发作业。 软件开发模型作为指导软件开发全部过程、 活动和任务的结构框架, 能清晰、直观地表达软件开发全过程, 明确规定了要完成的主要任务和活动, 用来作为软件项目工作的基础。 对于不同的软件项目, 针对应用需求、 项目复杂程度、 规模等不同要求, 可以采用不同的开发模型, 并采用相应的人员组织策略、 管理方法、 工具和环境。 主要的开发模型有:(主要的开发模型)
1. 瀑布模型。提到软件开发模型, 瀑布模型是不得不讲的, 它是结构化开发时代产物, 是最早用来指导系统开发的成熟方法。 瀑布模型是一种结构化的方法, 它将软件过程严格的定义为软件计划、 需求分析、 软件设计、 程序编码、 软件测试和运行维护几个阶段。 每个阶段都有自己的工作, 应交付的产出物。 完成一个阶段工作,才能启动下一阶段是这种模型的特点。 瀑布模型最大的局限性在于上一阶段潜在的问题经常要等到后续阶段才容易暴露。 而在后续阶段修正问题, 往往要付出很高的代价。 所以瀑布模型更加适合用在需求非常明确,而且几乎不会变更的软件项目上。(瀑布模型)
2. 螺旋模型。螺旋模型采用一种周期性的方法来进行系统开发。 一个完整的周期包括需求定义、 风险评估、 工程实现和用户评审。 整个系统开发包含了若干个周期的迭代, 以循序渐进的方式逐步求精, 最后导出通过用户评审的开发结果。 由于经过多次迭代的需求定义, 螺旋模型可以应付用户需求不明确的情况。 引入风险评估是该模型与其它开发模型最显著的区别。 螺旋模型的局限性在于迭代轮数不可控, 完成整个系统开发时间周期很长, 成本很高。 所以螺旋模型一般用在需求不能完全确认的复杂的大型项目中。(螺旋模型)
3. 增量模型。增量模型与其它演化型的开发模型有共性, 本质上是迭代的。 但有别与其它模型的是增量模型强调每次都发布一个可供用户操作的产品, 这就使得该模型不必等所有用户需求都确认。 只要某个需求增量包得到确认, 就可以开始进行这部分的开发工作。 增量模型可以优先发布用户急需功能或者核心功能, 而每次增量发布都会对之前的功能进行测试, 这也使得增量模型下进行的开发作业可以获取较高的质量。 增量模型需要各个构件逐步并入已有的软件体系结构, 新加入的构件不能破坏已有的系统部分, 这就使得软件必须具有开放式的体系结构。 同时增量模型难于管理, 容易陷入边做边改的模式, 从而使软件过程的控制失去整体性。(增量模型)
4. 原型法模型。原型法是以快速搭建的直观的可交互的界面, 代替僵化的形式的规格说明。 根据系统开发过程中原型系统是否抛弃, 原型法又可以划分为抛弃型原型法和演化型原型法。 用户可以通过在计算机上实际运行的试用原型系统而向开发者提供真实的、 具体的反馈意见, 这就使得原型法在面对不确定的用户需求面前具有先天优势。 原型法符合人们认识事物的规律, 系统开发循序渐进, 反复修改,能够确保较好的用户满意度。 开发周期和成本相对与螺旋模型也比较少, 比较符合我们的出版社ERP系统情况, 所以我们最后选择了原型法模型作为开发框架。 该模型也是现在业内受到普遍欢迎的开发方法。(原型法模型)
我们在开发出版社ERP系统的过程中,对原型法的使用情况如下:(总结与不足)
1. 搭建原型。由于我们集团下有七家出版社,业务各不相同。为了能够快速搭建出可供用户操作的原型系统,我们先选择了其中业务比较规范,产品面向大众,以社科文化类图书为主的一家出版社为开发对象。通过对该出版社各业务部门一轮简要的需求调研,我们使用JBPM(一种基于JAVA的工作流引擎)构件了该出版社编务系统和出版系统的业务流和各业务流上的审批节点。通过对出版社历史单据的分析,为工作流各节点添加需要用户使用过程中填写的数据项,如选题申报过程中填写的选题申报单、三审三校过程中的发稿单等。通过这些工作,就搭建出了一个可以让出版社用户操作试用的系统原型。(搭建原型)
2. 借助原型确认需求。搭建出系统原型之后,我们就组织出版社各业务部门的业务骨干和部门负责人以及出版社领导展开联席会议。首先为出版社人员演示了原型系统,再听取出版社用户修改意见。完成经过确认的修改之后开始组织出版社人员对系统进行功能性的测试,并根据用户测试反馈,再对原型系统进行修改调整。经过几轮迭代之后我们系统开发人员和出版社最终用户,都对需求有了比较清晰的了解,原型系统也比较接近最终结果。项目组根据原型系统导出了取得出版社领导认可的需求规格说明书。(借助原型确认需求)
3. 根据需求规格说明书,我们对原型系统进一步细化。重新设计了数据库,梳理各业务流程中的数据项关系,各工作流节点的权限,最后形成可以上线运行的正式系统环境。解决完一家出版社之后,我们就以该出版社系统为原型,开展其他出版社的ERP系统项目工作。(根据需求规格说明书)
我们的出版社ERP系统已经在2016年10月全部上线运行。经过半年多的使用,目前运行正常,系统功能和性能均达到用户要求,得到各出版社用户的一致好评。现在正在准备项目最终验收。总结原型法在该项目中的应用,我们认为有几点很关键。一是开发环境很重要。由于编务系统和出版系统使用JBPM开发,可以快速的构件工作流, 才能快速搭建出原型系统。而财务系统和发行系统在第一家出版社项目开始时就不能搭建出可供用户操作的原型系统,只能提供绘制的工作界面, 效果没有编务系统和出版系统好。二是用户参与。在搭建原型和验证原型的过程中,都要鼓励用户积极参与,这样才能帮助用户真正弄清自己的需求。三是引导需求。即便用户参与项目,我们也要分析用户的意见是否合理,对需求进行控制,否则原型模型就变成了边做边改模型。通过该项目的顺利实施,让我在系统分析和原型法模型应用方面受益良多,也深刻认识到我们技术工作者要不断学习,拼搏进取,才能为以后解决更加复杂的工作做好准备。(总结与不足)
论文补充知识
JBPM:JBPM(JBoss Business Process Manager)是一个基于Java的开源流程管理框架,用于定义、管理和执行业务流程。JBPM提供了一个完整的流程框架,包括流程定义、流程实例、任务、角色、资源、监控等,可以帮助企业和组织构建健壮、高效、可扩展的业务流程。JBPM被广泛应用于企业应用开发、服务化架构、云计算、大数据等领域。
相关文章:
【系分论文】论软件开发模型及应用
目录 论题论题介绍论文要点理论素材准备范文摘要正文 论文补充知识 论题 论软件开发模型及应用 论题介绍 软件开发模型( Software Development Model)是指软件开发全部过程、活动和任务的结构框架。软件开发过程包括需求、设计、编码和测试等阶段&…...
渗透测试--5.3.使用john破解密码
前言 由于Linux是Internet最流行的服务器操作系统,因此它的安全性备受关注。这种安全主要靠口令实现。 Linux使用一个单向函数crypt()来加密用户口令。单向函数crypt()从数学原理上保证了从加密的密文得到加密前的明…...
Go中的变量类型
Go中的变量类型 1.为什么要使用变量 变量其实指定的是一段内存地址,根据这个内存地址可以找到我们需要找到的东西。 2.变量类型 变量的功能就是用来存储数据的,根据不同的数据类型可以存储不同的数据。常见的变量的类型 整型、浮点型、布尔型等。变…...
基于STM32的NRF24L01 2.4G通讯模块的驱动实验(HAL库)
前言:本文为手把手教学NRF24L01 2.4G通讯模块的驱动实验,本教程的 MCU 采用STM32F103ZET6与STM32F103C8T6,彼此进行互相通讯。通过 CubeMX 软件配置 SPI 协议驱动NRF24L01 2.4G通讯模块(HAL库)。NRF24L01 2.4G是嵌入式…...
DJ5-3 多路访问链路和协议
目录 一、网络链路 二、广播信道要解决问题 三、多路访问协议 1、基本介绍 2、多路访问协议的类型(3) 四、信道划分协议 1、时分多路访问 TDMA 2、频分多路访问 FDMA 3、码分多路访问 CDMA(略) 五、随机访问协议 1、纯…...
技术领导力?
作品集(Portfolio)会比简历(Resume)更有参考意义。 怎么才算有技术领导力? 1) 能够发现问题,并能够提供解决问题的思路和方案,并能比较方案的优缺点。 2) 能用更简洁有效的方式解决问题。 3…...
计算机的基本工作原理
参考资料: L-1.6: Common Bus system| How basic computer works - YouTube 准备好内存单元、不同类型的寄存器,内存和寄存器、寄存器和寄存器之间都是通过总线连接(假设是直接把数据总线、控制总线、地址总线变成一条总线)。 使用多路复用器实现的总线&…...
【论文简述】Cross-Attentional Flow Transformer for Robust Optical Flow(CVPR 2022)
一、论文简述 1. 第一作者:Xiuchao Sui、Shaohua Li 2. 发表年份:2021 3. 发表期刊:arxiv 4. 关键词:光流、Transformer、自注意力、交叉注意力、相关体 5. 探索动机:由于卷积的局部性和刚性权重,有限…...
【JAVA】Java中方法的使用,理解方法重载和递归
目录 1.方法的概念及使用 1.1什么是方法 1.2方法的定义 1.3方法调用的执行过程 1.4实参和形参 2.方法重载 2.1为什么需要使用方法重载 2.2什么是方法重载 3.递归 3.1什么是递归 3.2递归执行的过程 3.3递归的使用 1.方法的概念及使用 1.1什么是方法 方法就是一个代…...
高级网络计算模式复习
P2P 对等网络(Peer-to-Peer Networks)是分布式系统和计算机网络相结合的产物,在应用领域和学术界获得了广泛的重视和成功,被称为“改变Internet的一代网络技术”。 peer指网络结点,在行为上是自由的——任意加入、退…...
【笔试强训选择题】Day15.习题(错题)解析
作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:笔试强训选择题 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!! 文章目录 前言 一、…...
图论专题(一)
图论专题(一) 参考文献 BFS和DFS的直观解释 https://blog.csdn.net/c406495762/article/details/117307841Leetcode岛屿问题系列分析 https://blog.csdn.net/qq_39144436/article/details/124173504多源广度优先 https://blog.csdn.net/peko1/article/details/121989497拓扑排…...
新星计划2023【网络应用领域基础】————————Day4
常见的网络基础介绍 前言 我们学习了一些基础的网络协议,以及子网掩码和vlan,同时也做了个简单的单臂路由实验 这篇文章我将仔细的讲解单臂路由的应用和交换机二层接口类型,以及wireshark的教程。 一,交换机二层接口 交换机的二…...
[CTF/网络安全] 攻防世界 view_source 解题详析
[CTF/网络安全] 攻防世界 view_source 解题详析 查看页面源代码方式归类总结 题目描述:X老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了。 查看页面源代码方式归类 单击鼠标右键,点击查看页面源代码: …...
目前流行的9大前端框架
1. React 2. Vue 3. Angular 、 4. Svelte 官网:https://svelte.dev 中文官网:https://www.sveltejs.cn Svelte 是一种全新的构建用户界面的方法。传统框架如 React 和 Vue 在浏览器中需要做大量的工作,而 Svelte 将这些工作放到构建应用程…...
【mysql】explain执行计划之select_type列
目录 一、说明二、示例2.1 simple:简单表,不使用union或者子查询2.2 primary:主查询,外层的查询2.3 subquery:select、where之后包含了子查询,在select语句中出现的子查询语句,结果不依赖于外部…...
网易云音乐开发--音乐播放暂停切换上下首功能实现
音乐播放暂停功能实现 封装一个控制音乐播放/暂停的功能函数 看一下文档,我需要用的api 这个接口好像没有音频的url,查看一下,换个api 这样就能拿到id,并可以播放了 但是音乐并没有播放 我们少了这个 现在可以播放了ÿ…...
如何学习网络安全?
近半年我一直在整理网络安全相关资料,对于网络安全该怎么入门我谈谈我的看法,网络安全一直处于法律的边缘,学的不好或者剑走偏锋一下子人就进去了,所以我建议入门前先熟读《网络安全法》,除此之外还有《互联网安全产品…...
软件测试适合女生吗?
大家好,我是程序员馨馨,一个混过大厂,待过创业公司,有着 6 年工作经验的软件测试妹纸一枚。之前在也写过几篇文章,之后很多朋友过来咨询女生能不能做软件测试。 今天索性写篇文章,详细的介绍一下软件测试&a…...
华为云——代码托管的使用
一、打开前后端项目 登录华为云,点击页面右上角的用户名——点击个人设置 2.点击代码托管的HTTPS密码管理,设置自己的密码 3.回到代码仓库,复制HTTP地址 4.打开GitHubDesktop,点击左上角进行仓库克隆 (我这里已经cl…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
