软件工程第三周
可行性研究 续
表达工作量的方式
LOC估算:Line of Code
估算公式S=(Sopt+4Sm+Spess)/6
FP:功能点
1. LOC (Line of Code) 估算
-
定义:LOC是指一个软件项目中的代码行数。
2. FP (Function Points) 估算
-
定义:FP是基于软件的功能性和复杂性来估算的。FP的计算考虑了输入、输出、用户查询、文件和外部接口等因素。
估算公式含有PERT (Program Evaluation and Review Technique) 估算中的三种估算类型:
Sopt
:乐观估算Sm
:最可能的估算Spess
:悲观估算
使用这三种估算可以给出一个期望值和估算的方差,从而更好地理解估算的不确定性。
逻辑模型:工作业务的流程。可以使用系统流程图和数据流图表示这样的系统。
操作上可行:比如火影新忍者审核。可研是抓住主要矛盾!
系统流程图
系统流程图是带有物理部件的数据流动的表示。
在不同的图形工具中,图形表示的含义不一定相同。
数据流图
描述的是一个逻辑模型。控制流涉及到HOW,而数据流图不提供控制流,只关于WHAT。
数据流图(Data Flow Diagram, DFD)是一种用于描述信息系统的图形化工具,它表示了系统中数据的流动、加工过程以及数据存储。DFD是系统分析与设计过程中常用的工具,可以从宏观到微观逐步细化系统的功能和数据流程。
数据流图由以下基本组件构成:
- 过程:通常用一个圆形或矩形表示,它代表系统中的一个功能或任务。过程中的数据会被转换或处理。
- 数据流:用箭头表示,显示数据在系统中的流动方向。数据流旁边通常会标明数据的名称或描述。
- 数据存储:通常用两条平行线表示,代表数据在系统中的存储位置,如数据库或文件。
- 外部实体:用矩形表示,代表系统的外部用户或其他系统。它们与系统交互,向系统提供输入数据或从系统获取输出数据。
顶层数据流图(High-Level DFD)
顶层数据流图,是表示系统整体情况的DFD。它通常只包含一个过程(代表整个系统)和与之交互的外部实体(若干个数据源点和终点)。数据流显示了从外部实体到系统的输入以及从系统到外部实体的输出。这种DFD为读者提供了对系统的总体概述,其实就是下图的基本系统模型。
基本系统模型:系统和外部的实体有关联,是设计的基础和起点。将顶层图(基本系统模型)分解,形成0级图,再分解形成1级图。分解的目的是把数据的加工流程进一步细化,比如将上面的呢订货系统进一步拆分,形成更加细致的数据流图。
系统会和哪些人、软硬件打交道,界定了整个系统的范围。
可行性研究报告标准格式
课内实验和大作业是两个东西,这两个东西是通过实验连接在一起。
实验报告只要结论不要过程。
大作业报告写上过程。
第三章 需求分析
架构师:关注系统实现的整体结构,不是具体的设计内容。
需求工程师:关注需求调研和分析,产品的业务设计和应用设计。
两者结合,就是整个软件的最高价值所在。
确切描述,完整、准确、清晰、具体的要求。
可行性研究:浓缩度很高,会提出一些解决方案(包含了简单初步的需求分析等内容),不仅仅在于定义阶段,也可能在开发阶段,往往会忽略一些细节。需求分析和后续开发阶段就是一步步分析找到这些细节的过程。
需求导出:Feasibility study and report
在项目管理和系统开发中,可行性研究是一个评估项目计划可行性的重要步骤。它包括分析项目的所有关键方面,例如技术可行性、经济可行性和法律合规性。基于这些分析,将生成一份报告,概述项目的可行性和潜在问题。报告还应包含关于如何解决潜在问题的建议或替代方案。
需求排序和分析:Requirement elicitation and analysis
根据重要性对需求进行排序是确保项目成功的关键步骤之一。通过使用不同的项目管理模型(如快速原型和增量模型),可以更灵活、更迅速地响应项目中最重要的需求。
例如,在增量模型中,项目被分为几个小部分或增量,每个增量代表项目的一部分功能或需求。通过优先分配资源到最重要的增量,可以确保项目按照优先级顺序推进。
(需求)规格说明:Requirement specification
规格说明文档提供了关于系统或项目需求的详细信息。这包括对系统功能、性能标准和界面的详细描述。授权用户可以查询系统需求和系统描述以更好地理解系统的工作方式和功能。
同时,也应该允许用户查询自己的需求,从而确保系统满足他们的期望和需求。举个例子,如果是一个软件项目,那么在项目的某个阶段(比如在开发阶段或者测试阶段),应该让用户了解或者试用这个软件,让他们了解这个软件是否符合他们的需求和期望,是否解决了他们的问题或者满足了他们的目标。通过这种方式,可以在项目早期发现问题和不符合需求的地方,从而做出相应的调整和优化,确保项目的成功和用户的满意。
需求确认:Requirements validation
在项目开发过程中,需求确认是确认所有项目需求都已正确理解和记录的过程。需求命名有助于确保所有团队成员都对需求有相同的理解。通过为需求设置测试工具和标准,项目团队可以在项目结束时评估其有效性。这确保了项目不仅按照预定计划完成,而且满足了所有既定的需求标准和质量标准。
委托项目需求分析过程
访谈:极其重要的形式!访谈一定要有前期的准备,但是有局限性:访谈对象非常少!
问卷或interview:深入理解,把想要看到的推导给问卷被调查对象。
观察用户:细节问题
市场分析、网络搜索
创新项目需求分析过程
起始点:市场分析,头脑风暴,逐渐清晰我们的需求。
相关文章:
软件工程第三周
可行性研究 续 表达工作量的方式 LOC估算:Line of Code 估算公式S(Sopt4SmSpess)/6 FP:功能点 1. LOC (Line of Code) 估算 定义:LOC是指一个软件项目中的代码行数。 2. FP (Function Points) 估算 定义:FP是基于软件的功能性和…...
动态链接那些事
1、为什么要动态链接 1.1 空间浪费 对于静态链接来说,在程序运行之前,会将程序所需的所有模块编译、链接成一个可执行文件。这种情况下,如果 Program1 和 Program2 都需要用到 Lib.o 模块,那么,内存中和磁盘中实际上就…...
力扣:118. 杨辉三角(Python3)
题目: 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 来源:力扣(LeetCode) 链接:力扣(LeetCode)官…...
QGIS文章二——DEM高程裁剪和3D地形图
经常看到别人基于高程文件制作出精美的3D地图,笔者按照互联网几种制作方式进行尝试后,写的DEM高程裁剪和3D地形图教程,或许其中有一些错误的,也请指出。 本文基于海南省的shp文件和海南省DEM高程文件,制作海口地区的3D…...
【kubernetes】kubernetes中的StatefulSet使用
TOC 1 为什么需要StatefulSet 常规的应用通常使用Deployment,如果需要在所有机器上部署则使用DaemonSet,但是有这样一类应用,它们在运行时需要存储一些数据,并且当Pod在其它节点上重建时也希望这些数据能够在重建后的Pod上获取&…...
创建文件夹
/storage/emulated/0/代码文件/ 没有就创建 文件名命名方法:编号. 库 时间戳 使用Python的os模块来检查目录是否存在,并在不存在时创建它。下面是一个示例代码,演示了如何检查指定路径下的目录是否存在,若不存在则创建…...
点击router-link时候会发生什么?
当你点击链接或按钮时,将会导航到 User 组件,就会显示相应的用户 ID。 这里说一下执行流程,当点击一个 router-link 时,Vue Router会执行以下流程: 1)点击事件触发: 当你点击 router-link 组件时…...
【Spring】@Bean方法中存在继承如何分析
文章目录 1. 提问:如果让您分析Spring MVC的原理,您如何开始分析呢2. 如何破局3. 资料参考 本文主要介绍:如何分析 Bean方法存在继承 或 Bean方法中存在调用子类方法。 1. 提问:如果让您分析Spring MVC的原理,您如何…...
【Vim 插件管理器】Vim-plug和Vim-vbundle的区别
- vundle是一款老款的插件管理工具 - vim-plug相对较新,特点是支持异步加载,相比vundle而言 Vim-plug 是一个自由、开源、速度非常快的、极简的 vim 插件管理器。它可以并行地安装或更新插件。你还可以回滚更新。它创建浅层克隆shallow clone最小化磁盘…...
电子计算机核心发展(继电器-真空管-晶体管)
目录 继电器 最大的机电计算机之一——哈弗Mark1号,IBM1944年 背景 组成 性能 核心——继电器 简介 缺点 速度 齿轮磨损 Bug的由来 真空管诞生 组成 控制开关电流 继电器对比 磨损 速度 缺点 影响 代表 第一个可编程计算机 第一个真正通用&am…...
SDI-12协议与STM32 进行uart通信
场景是用stm32与一款温湿度传感器通信,不过是基于SDI-12协议,SDI-12时序和UART类似,故采用UART传输,原理图如下 其中DIR_OUT_SDI是一个IO引脚,控制UART_TX_SDI是否使能,U10是三态门IC,即拉低DIR…...
JS中的强制类型转换
JavaScript 中有多种强制类型转换的方式,可以将一个数据类型转换为另一种数据类型。这可以通过一些内置函数或操作符来实现。 显式类型转换(强制类型转换): 显式类型转换是通过特定的函数或操作符来明确指定要进行的类型转换。以下…...
WebSocket实战之四WSS配置
一、前言 上一篇文章WebSocket实战之三遇上PAC ,碰到的问题只能上安全的WebSocket(WSS)才能解决,配置证书还是挺麻烦的,主要是每年都需要重新更新证书,我配置过的证书最长有效期也只有两年,搞不…...
veImageX 演进之路:Web 图片加载提速50%
背景说明 火山引擎veImageX演进之路主要介绍了veImageX在字节内部从2012年随着字节成长过程中逐步演进的过程,演进中包括V1、V2、V3版本并最终面向行业输出;整个演进过程中包括服务端、客户端、网络库、业务场景与优化等多个角度介绍在图像处理压缩、省成…...
WebSocket实战之五JSR356
一、前言 前几篇WebSocket例子服务端我是用NodeJS实现,这一篇我们用Java来搭建一个WebSocket服务端,从2011年WebSocket协议RFC6455发布后,大多数浏览器都实现了WebSocket协议客户端的API,而对于服务端Java也定义了一个规范JSR356,即Java API for WebSoc…...
flask-sqlalchemy结合Blueprint遇到循环引入问题的解决方案
想要用flask_sqlalchemy结合Blueprint分模块写一下SQL的增删改查接口,结果发现有循环引入问题。 一开始,我在app.py中使用db SQLAlchemy(app)创建数据库对象;并且使用app.register_blueprint(db_bp, url_prefix/db)注册蓝图。 这使得我的依…...
05_对象性能模式
对象性能模式 面向对象很好地解决了“抽象”的问题,但是必不可免地要付出定的代价。对于通常情况来讲,面向对象的成本大都可以忽略计。但是某些情况,面向对象所带来的成本必须谨慎处理。 典型模型: SingletonFlyweight Singleton 单件模式…...
快速选择排序
"你经过我每个灿烂时刻,我才真正学会如你般自由" 前些天有些无聊,想试试自己写的快排能否过leetcode上的排序算法题。结果是,不用截图可想而知,肯定是没过的,否则也不会有这篇文章的产出。 这份快排算法代码…...
国庆中秋特辑(六)大学生常见30道宝藏编程面试题
以下是 30 道大学生 Java 面试常见编程面试题和答案,包含完整代码: 什么是 Java 中的 main 方法? 答:main 方法是 Java 程序的入口点。它是一个特殊的方法,不需要被声明。当 Java 运行时系统执行一个 Java 程序时&…...
Centos7 安装mysql 8.0.34
Centos7 安装mysql 8.0.34 准备工作 centos7 服务器 xshell 安装教程 安装并配置 在安装MySQL之前,我们应该确保系统已经更新到最新的软件包和安全补丁。打开终端,输入以下命令来更新系统 yum update为了方便安装MySQL,我们需要下载并…...
如何在 Google Earth 中创建轨迹、路线并制作动画
如何创建航迹 https://kurviger.de/en Google 地球飞行教程(天桥动画) 选择合适的点 (可调整视图快照)点击录制,依次点击图标即可...
蓝桥杯每日一题2023.9.30
蓝桥杯大赛历届真题 - C&C 大学 B 组 - 蓝桥云课 (lanqiao.cn) 题目描述 题目分析 对于此题,首先想到了dfs进行一一找寻,注意每次不要将重复的算进去,故我们每次循环可以记录一个开始的位置,下一次到这个位置时,…...
springboot和vue:十、vue2和vue3的差异+组件间的传值
首先用vue-cli创建一个vue2的项目。 vue2和vue3的差异 main.js的语法有所差别。 vue2是 import Vue from vue import App from ./App.vuenew Vue({render: h > h(App), }).$mount(#app)vue3是 import { createApp } from vue import App from ./App.vuecreateApp(App).…...
SQL:增、删、改、查 基本语句 Navicat建库(用法 + 例子)
文章目录 新建数据库新建表 增、删、改、查select 查找insert 添加delete 删除update 修改where 扩展 < > < > ! <> 比较运算符and or 逻辑运算符between...and... 介于..和..之间in 包含like 模糊查询is null 为空的 查询扩展order by 排序limit start coun…...
vue-cli搭建过程(HBuilder X搭建)
vue.js:前端主流框架(对某一方面技术完整的封装,是一套完善的解决方案) vue-cli搭建项目(官方提供脚手架) vue脚手架:是一套项目搭建的快捷方式,可以将项目中的依赖集成进来,生成统…...
MySQL索引:结构、语法、分类和优化
MySQL索引是数据库中非常关键的性能优化手段。它们提供了快速访问数据的方法,同时也可以极大地提高查询效率。本文将深入介绍MySQL索引的结构、语法、分类,以及如何使用Profile和EXPLAIN来优化查询性能,带有详细的实例演示。 索引结构 MySQ…...
Vue中添加旋转动画
// transform: scale(1.2) rotate(-180deg); 放大 旋转 // transform: rotate(-180deg); 旋转 <i class"el-icon-close"></i>i {font-size: 20px;line-height: 24px;transition: transform 0.2s linear;}i:hover {color: red;transform-origin: cen…...
基于SSM农产品商城系统
基于SSM农产品商城系统的设计与实现,前后端分离,文档 开发语言:Java数据库:MySQL技术:SpringSpringMVCMyBatisVue工具:IDEA/Ecilpse、Navicat、Maven 系统展示 农产品列表 产品详情 个人中心 登陆界面 管…...
基于matlab创作简易表白代码
一、程序 以下是一个基于MATLAB的简单表白代码: % 表白代码 clc; % 清除命令行窗口 clear; % 清除所有变量 close all; % 关闭所有图形窗口 % 输入被表白者的名字 name input(请输入被表白者的名字:, s); % 显示表白信息 fprintf(\n); fprintf(亲爱的…...
pandas
一、pandas初级 安装matplotlib:pip install matplotlib 安装pandas:pip install pandas 本地C:\Users\Administrator\pip,在此目录配置清华园的远程下载 配置内容: [global] index-urlhttps://pypi.tuna.tsinghua.edu.cn/simple [install] trusted-ho…...
廉洁四川官方网权威发布/汕头seo推广外包
本文为美国罗切斯特理工学院(作者:Sandeep Aswath Narayana)的硕士论文,共56页。 硅工艺技术的不断改进使得在单个芯片上集成数百个核成为可能。然而,功耗和散热已经成为设计这些大规模多核芯片的主要限制,…...
网站的建设与管理/武汉做seo
Linux 启动过程 实模式时内存分配 从实模式切换到保护模式 启用分段,就是在内存里面建立段描述符表,将寄存器里面的段寄存器变成段选择子,指向某个段描述符,这样就能实现不同进程的切换了。启动分页。能够管理的内存变大了&#…...
内贸在什么网站做/石家庄限号
支付宝沙箱环境支付demo 下载电脑网站的官方demo: 下载地址:https://docs.open.alipay.com/270/106291/ 解压导入demo项目 3.配置AlipayConfig 3.1 注册蚂蚁金服开发者账号 注册地址:https://open.alipay.com/platform/home.htm ÿ…...
2023年免费进入b站/精准客户数据采集软件
学习web编程的方法:1、学习html和css;2、学习javascript;3、了解web服务器;4、学习一门服务器端脚本语言;5、学习数据库及SQL语法;6、学习web框架。如何学习web开发,需要掌握哪些方面࿱…...
阿勒泰高端网站建设公司/网络营销常见的工具
据权威英国《金融时报》调查:全球25个国家的1000位CEO、基金经理认为:微软仍是最受尊敬的公司,并在企业创新、投资价值两项中排名第一。 调查结果发现:商界舵手最重要的表现,是越来越注重领导的创新能力。在企业增长方…...
怎么免费建设个人网站/企业宣传软文
1. 在Groovy可以用def定义无类型的变量(定义变量方面def与JavaScript中的var相似),和返回值为无类型的方法,而在Java中没有def 2. Java中的equals方法对应Groovy中的 , 而Java中的(判断是否引用同一对象)对应Groovy中的is方法 3…...