系统分析师:七、软件工程(含系统规划)

news2024/10/7 10:19:55

一、软件生命周期

        软件生命周期分为5个:获取过程、供应过程、开发过程、运行过程、维护过程,具体如下:

二、软件开发方法

2.1 形式化方法

        该方法的思想是利用形式化语言,严格定义需求,并用数据推演的方法证明需求的性质。形式化规格包含了严格的语法定义以及一系列数据推演规则。

        2.1.1净室软件工程

        净室软件工程是形式化方法的一种实现,它用盒结构规约进行分析和建模,并将正确性验证作为发现和排错的主要机,使用统计测试来验证软件可靠性。

2.2 逆向工程

        维护次数增加会导致软件结构混乱,可维护性降低,束缚软件发展。因此需要对就软件进行再工程,提高其可维护性。

        2.2.1 再工程

        再工程是对现有系统重新开发的过程,包括逆向工程(反工程)、新需求考虑(软件重构)、正向工程三个步骤。

        2.2.2 逆向工程

        逆向工程是分析程序,力求比源代码更高的抽象层次上建立程序表示的过程。

        逆向工程应该能够抽象出 过程设计模型(实现级)、程序和数据结构信息(结构级)、对象模型、数据和控制流模型(功能级)、UML状态和部署图(领域级)。领域级层次最高,实现级层次最低。层次越高,离代码越远,难度越大。

        2.2.3 软件重构

        软件重构是对源代码和数据进行修改,使其易于修改和维护,以适应将来的变更。通常重构不修改软件体系结构,而是关注模块细节。

三、软件开发模型

        软件开发模型有:瀑布模型、增量模型、螺旋模型、喷泉模型、V模型、构建组装模型、敏捷方法和统一过程等。

3.1 开发模型概述

        3.1.1 瀑布模型

        瀑布模型也称为生命周期法,它仅适用于需求明确或变更非常少的项目。分6个阶段,自上而下执行,如下所示:

        3.1.2 演化模型(原型模型)

        演化模型根据客户需求快速画出原型,再基于原型进行开发上线。再针对客户的需求或建议对原型修改,再进而开发,重复这一过程,最终获得信息版本。适合需求不明确的项目。

        3.1.3 快速原型模型

        快速原型模型是出了第一版原型,开发出版本后就抛弃原型,直接对产品迭代开发。

        3.1.4 增量模型

        增量模型融合了瀑布模型的基本成分(重复的应用)和原型实现迭代的特征。第一个发布的应用往往是核心应用,其它功能的应用后续迭代发布。

        3.1.5 螺旋模型

        瀑布模型将瀑布与演化模型结合,软件开发为一系列的增量迭代发布,每次迭代都包含制定计划、风险分析、实施工程和客户评估4个方面,与其它模型(比如增量模型)相比,它强调了风险分析。

        3.1.6 V模型    

        v模型是在快速开发模型演变而来,注重质量,每个开发阶段都有对应的测试。具体如下所示:

        3.1.7 喷泉模型        

        主要支持面向对象的开发方法,有无间歇迭代的特点。无间隙是指分析、设计、编码之间不存在明显的边界。

        3.1.8 智能模型

        基于支持的软件开发模型,它综合了若干模型,并把专家系统(规则知识库)结合在一起。

        3.1.9 迭代模型

        每次迭代包含一次完整的流程,且每次迭代会产生一个可以发布的产品,该产品是最终产品的子集。

        3.1.10 变换模型

        基于形式化说明语言和程序变换的软件开发模型。不断明确原型和形式化的规格说明,直到生成计算机可以接受的目标代码。

        3.1.11 构件组装模型

        基于构件软件开发(CBSD)利用模块化方法,将系统模块化,在一定构件模型的支持下,副总构件库中的一个或多个构件,高效高质量的构造应用。它的本质是演化型的,开发过程是迭代的。核心就是制造可复用构件提升开发效率。比如构造公共组件或API等。

3.2 快速应用开发

        快速应用开发(RAD)比传统的生命周期发快的多,它是瀑布模型的一个高速变种,通过基于构件的开发方法获得快速开发。该方法核心就是创建可复用构件(公共组件,比如使用或改造开源的组件,开发公共API包等),进而加快进度。

3.3 统一过程

        统一过程(UP)是一个通过通用框架,可以用于种类广泛的软件系统、不同的应用领域、不同的组织类型、不同的性能水平和不同的项目规模。比如UML建模,建立的逻辑模型生成物理模型后可以生成不同数据库的SQL,适配不同的项目数据源。其优点是兼容性强。

        RUP是用例驱动,以架构为中心,迭代增量式开发过程(方法论)。每次迭代分为4个步骤:初始、细化、构建、交付。具体细节如下:

        可以看出统一过程比较费时费力,对于小组织和项目来说,统一过程费力不讨好。

3.4 敏捷方法

        敏捷方法强调程序员团队和业务之间的紧密协作、面对面沟通、频繁交付新版本、紧凑而自我组织型团队等。可以理解尽可能为面对面沟通,快速了解需求开发交付。

        敏捷开发的方法有:极限编程(XP)、自适应软件开发、水晶方法、特性驱动开发等。

        开发者关注点:短平快会议、小版本发布、较少的文档、合作为重、客户直接参与、自动化测试、结对编程、适应性计划调整。

        管理者关注点:测试驱动开发、持续集成、重构。

        敏捷方法主要适用于小规模软件或小团队开发,不适合所有项目,因为其设计时间少,匆匆上线容易引起架构等问题,加之文档少,规模大了都理不清或记不起关键需求或代码实现,交接也困难。

四、系统规划与问题定义

        系统规划步骤有:1、对现有系统进行初步调查;2、分析和确定系统目标;3、分析子系统的组成和基本功能;4、拟定系统的实施方案;5、进行系统的可行性研究;6、制定系统建设方案。

4.1 项目的提出与选择

        4.1.1 项目的立项目标和动机

        企业对于信息系统的建设有多种动机,可归结为4种模式:基础性研究、进行应用研发(比如研发办公软件售卖)、提供技术服务(比如提供定制开发或集成或咨询)和产品使用者(比如对现有产品改造)。

        4.1.2 项目立项价值判断

        企业最终需要达成的目标才是价值的体现,比如:获取利润、占有市场份额、提高影响力、社会效益等。需要思考目标并确定开发边界等。

        4.1.3 项目的选择和确定

        需要多方面考虑,比如:选择有核心价值的项目、评估选择的项目、对项目优先级排序、评估项目的实施方式、平衡选择合适的方案。

4.2 初步调查

        初步调查的对象有:(1)企业高管,了解他们的目标以及系统边界、资金、工期等;(2)IT部门负责人,了解现有系统、取得的效果和存在的问题;(3)业务部门领导,征求他们对新信息系统的意见以及功能要求。

        初步调查的内容:(1)用户提出新系统建设的缘由,对新系统的需求和目标;(2)企业的基本状况,包括企业性质、规模、人员等;(3)管理方式和基础数据管理状况;(4)现有系统状况。

4.3 可行性分析

       一般要从技术可行性、经济可行性、操作可行性三方面考虑。其中操作可行性指法律和操作使用可行性,法律指涉及的合同、侵权等问题,操作使用指行政管理、人员素质等是否满足要求。

        最终需要出可行性研究报告,它分析了项目的要求、目标和环境,提出了几种可选方案(评价矩阵),并从技术、经济、法律等方面进行了分析。

4.4 成本效益分析

        成本是信息系统周期内各阶段所有投入之和。而受益是信息系统建成后所有产出之和。       

        4.4.1 成本

        按投资时间分类,可分为:基础性建设投资、其他一次性投资、非一次性投资。

        按成本性态分类,可分为:固定成本、变动成本、混合成本。

        4.4.2 收益

        收益可分为有形收益和无形收益。

        有形收益:也称为经济收益,可以分为一次性经济收益和非一次性经济收益。一次性经济收益主要体现在应用系统使用价值提升而引起的收益,也可以是其他方面的收入,比如多余设备出售回收等。非一次性经济收益则是信息系统生命周期内,运行系统按月按年能用货币数目表示的收益,比如信息系统使用提升了工作效率,节约了人员工资等。

        无形收益:比如服务质量的提高,会使企业形象改善等,进而抢占市场份额等。

       4.4.3 盈亏临界分析 

        利润=(销售单价-单位变动成本)×销售量-总固定成本     

        盈亏临界点销售量=总固定成本/(销售单价-单位变动成本)

        盈亏临界点销售额=总固定成本/(1-总变动成本/销售收入)

        以上公式比较复杂,较难理解,可以看下面这个说明:

        销售额=固定成本+可变成本+利润,其中利润为0时,销售额为盈亏临界销售额,即:盈亏临界销售额=固定成本+可变成本。可变成本会随着销售额(量)的变化而变化,它们的比值一般是固定的。

        这里举例计算,数据如下,求盈亏临界点时的销售额:

        这里求临界销售额,即利润为0时的销售收入。这里可以看出当销售额为800时,固定成本130+150=280,利润120,则可变成本400。这里得到比例:可变成本/销售额=400/800=0.5,即可变成本占销售额的一半!

        根据公式 临界销售额=固定成本+可变成本,而这里可变成本为销售额的一半,即 销售额=280+0.5×销售额,得出销售额=560。

       4.4.3 净现值分析

        单利:每年都按本金计算利息,已取得的利息不再计算利息。F=P×(1+i×n),其中P为本金,i为利率,n为年限,F为P在n年后的价值。

        复利:以本金与累计利息纸盒为基数计算利息:F=P×(1+i)^n。F为本金P在n年后的价值。

        现值:未来的钱在现在的价值,比如利率10%,一年后的110就相当于现在的100!  

        净值:

        由于有利率的存在,会导致我们手里的钱会贬值或升值!具体计算如下题,求折现后的成本和收入。

 这里从静态看没啥问题,2年投入500,5年后收入1000。动态计算折现就有问题了,我们都以年初和年末按照F=P×(1+i)^n,利率=10% 来折现来看看成本和收入。

        甲方案第一年投入350,第二年需要投入150,实际若150存银行1年的话,出来的是不止150,同理,第二年投入150,那么准备资金是不需要150的,根据F=P×(1+i)^n,其中i=0.1,n=1,F=150,得出P=150/1.1=136.4,成本为:350+136.4=486.4。即只要第一年准备486.4即可,先付350,剩余136.4存银行吃利息,第二年增值成为150后付第二年的款。

        同理,得乙方案成本为:300+200/1.1=481.8,丙方案成本为:400+100/1.1=490.9。

        利润也是一样,需要把每年的利息算进去,甲方案利润为:150×1.1^3+200×1.1^2+250×1.1+400=1116.65。同理得乙方案利润:1105.1,丙方案利润为:1143.7。

        最后纯利润为:甲方案是630.25,乙方案是623.3,丙方案是652.8。显然,丙方案盈利是最高的。

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/593195.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

隐藏在Microsoft Designer背后的新科技,让人人都是设计师

编者按:在视觉图像设计中,用户的需求与最终的设计成品往往是“想象很美好,现实很骨感”。这通常是因为用户在与设计师沟通时,双方理解不一致,导致最终设计结果不尽如人意。但是,如果能够“自给自足”&#…

COMSOL晶体取向多晶材料Voronoi泰森多边形力学模拟

多晶材料几何模型模型构建采用的CAD Voronoi V2.3版本,可分图层对晶格进行绘制,分别导入有限元软件后实现三种晶体取向的差异性。 将构建好的Voronoi多晶体几何模型文件导入到COMSOL内,构建好晶体结构模型后,进行材料赋值操作&am…

Oracle常用傻瓜问题100问

大家在应用ORACLE的时候可能会遇到很多看起来不难的问题, 特别对新手来说, 今天我简单把它总结一下, 发布给大家, 希望对大家有帮助! 和大家一起探讨, 共同进步! 对ORACLE高手来说是不用看的. 1. Oracle安装完成后的初始口令? internal/oracle sys/change_on_install system/m…

Spring6《学习笔记(22版尚硅谷)》

Spring6 1、概述 1.1、Spring是什么? Spring 是一款主流的 Java EE 轻量级开源框架 ,Spring 由“Spring 之父”Rod Johnson 提出并创立,其目的是用于简化 Java 企业级应用的开发难度和开发周期。Spring的用途不仅限于服务器端的开发。从简单…

io之socket编程

写在前面 本文通过socket编程来实现一个简单的HttpServer。 1:单线程版本 我们使用单线程来实现一个HttpServer,如下: package dongshi.daddy.io.httpserver;import java.io.PrintWriter; import java.net.ServerSocket; import java.net.…

何为儒家的四书五经?

中国古代的四书五经是儒家经典之一,是中国古代最为重要的经典之一。它们包括了四书:《大学》、《中庸》、《论语》、《孟子》以及五经:《诗经》、《尚书》、《礼记》、《周易》、《春秋》,被誉为“经国之宝”、“德育之本”。 四书…

java服务接入SkyWalking时生成TraceId信息(基于logback)

java服务生成TraceId 一、背景二、配置2.1 pom文件引入依赖2.2 logback-spring.xml配置 三、启动项目 一、背景 springboot服务接入SkyWalking时,想要在控制台输出TraceId信息,如下图的效果: 二、配置 参考文章: https://juej…

2023最全性能测试学习指南【建议收藏】

浅谈软件测试中的性能测试 很多时候,我们都知道软件有黑白盒测试,但往往还遗漏掉了一个性能测试。 在下面的这篇文章中,就带领大家来了解性能测试。一起来学习吧~ 学习目录 一、 性能测试概念 二、 性能测试指标 三、 性能测试种类 四、 性能…

“政会银企”齐聚纵目科技,探索四方合作新模式

近日,纵目科技携手浦东新区工商业联合会、浦东新区金融工作局、上海市人工智能行业协会、交通银行张江支行、招商银行上海分行外滩支行、中信银行上海漕河泾支行、中国建设银行张江分行举办了一场别开生面的“政会银企”座谈会,深入交流、探讨了推动四方…

并发编程学习(十四):tomcat线程池

1、Tomcat 功能组件结构 Tomcat 的核心功能有两个,分别是负责接收和反馈外部请求的连接器 Connector,和负责处理请求的容器 Container。 其中连接器和容器相辅相成,一起构成了基本的 web 服务 Service。每个 Tomcat 服务器可以管理多个 Servi…

同声传译方法有哪些?我来给你介绍三个同声传译的好方法

假设有一场国际性的会议,参会者来自不同的国家和语言背景。在会议中,主要的演讲和讨论都是以主持人或演讲者的母语进行,这个时候场中的其他人很可能因为语言不通而无法理解演讲的内容,而翻译人员人数不足的时候,就更难…

Nmap常用基础命令详解

阅读目录 Nmap 主机发现扫描 Nmap 使用扫描脚本 Nmap 内网服务扫描 Nmap 是免费开放源代码实用程序,用于网络发现和安全审核。许多系统和网络管理员还发现它对于诸如网络清单,管理服务升级计划以及监视主机或服务正常运行时间之类的任务很有用。Nmap以…

2023全国科技工作者日——回顾2023小蛮腰科技大会暨AIGC人工智能峰会,致敬全国科技工作者

文章目录 一、前言二、2023全国科技工作者日三、回顾2023小蛮腰科技大会暨AIGC人工智能峰会3.1 关于小蛮腰科技大会暨AIGC人工智能峰会的背景3.2 2023小蛮腰科技大会:探寻AIGC新未来3.2.1 开幕式暨主论坛3.2.2 平行论坛1&6:迈向智能时代,…

Linux系统下imx6ull QT编程—— C++构造函数、析构函数、this指针(四)

Linux QT编程 文章目录 Linux QT编程一、什么是构造函数?二、什么是析构函数?三、示例四、this指针 一、什么是构造函数? 构造函数在对象实例化时被系统自动调用,仅且调用一次。前面我们学过类,实际上定义类时&#x…

普源DG1062Z函数/任意波形发生器产品介绍

DG1000Z系列函数/任意波形发生器是一款集函数发生器、任意波形发生器、噪声发生器、脉冲发生器、谐波发生器、模拟/数字调制器、频率计等功能于一身的多功能信号发生器。该系列所有型号皆具有2个功能*相同的通道,通道间相位可调。 产品特性 SiFi(Signal Fidelity)…

Android UEvent事件分析

1.背景概述 众所周知,在安卓系统中有状态栏,在插入外设的时候,会在顶部状态栏显示小图标。 比如,camera设备,耳机设备,U盘,以及电池等等。这些都需要在状态栏动态显示。 从上面这张图片可以看出这些设备都有自己的服务一直在跑,并且都是继承了UEventObserver.java这个…

自学网络安全/Web安全,一般人真的不行

本人之前写了不少网络安全技术相关的文章,不少读者朋友知道我是从事网络安全相关的工作,于是经常有人私信问我: 我刚入门网络安全,该怎么学? 要学哪些东西? 有哪些方向? 怎么选&#xf…

Windows和Linux服务器给图片添加水印两种方法,引用字体库和自带字体库

文章目录 一、效果展示二、前提说明三、Windows自带字体库实现方法四、引入字体库实现方法 一、效果展示 水印123如下图 1.可以自定义(类型:汉字、数字都支持) 2.可以定位指定位置 二、前提说明 实现添加水印功能中Windows服务器和Linux服…

系统日志管理

什么是系统日志 系统日志由 Linux/Unix 和其他网络设备(如交换机、路由器和防火墙)生成。系统日志包含有价值的信息,有助于保护网络和解决操作问题。因此,收集和分析系统日志至关重要。 系统日志包含什么 系统日志标准包含三个不…

Linux:MBR 扇区故障处理 (备份|恢复)

大概思路: 我们准备一个硬盘,并分出一个分区用于单独存放MBR备份文件 或者 和别的文件放在一起也可以(前提是不怕乱) 然后将分区挂载 然后进行MBR备份 把备份文件放到分区里 然后对MBR进行破坏(仅供实验参考&…