![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
软件工程
文章平均质量分 65
赵星汉同学
基本啥都不懂
展开
-
关于一个程序错误的归零想到的
挺简单的一个错误,也应该是很常见的错误,但在企业的内部单元测试、配置项测试、系统测试中居然都没有测出来(集成测试在体系中被裁剪掉了),一直到联调的时候才被发现。个人感觉这个错误,即使是进行人工走查,也不容易看出来,因为在调用时,5个数的排序也会下意识的写5,特别是如果A、B函数写在不同的位置,那么审查到B的时候很可能忘了A的实现细节了。我觉得在联试期间能发现这个错误,应该还是比较幸运的,毕竟这种指针问题,到底会导致什么不可知的错误,是非常难预测的,也可能会隐藏的很隐秘,直到关键的时候再爆发出来。原创 2023-04-02 20:07:17 · 537 阅读 · 3 评论 -
想按照软件需求计算功能点,真的是件非常麻烦的事情
最近在做一个研究课题,其中的工作之一就是将需求分析文档中的功能点按照GJB8000中的要求进行标注,通过功能点来进行软件的规模预测和软件缺陷的预测。在没做之前,觉得这个工作应该不是很复杂,毕竟有很明确的方法,问题应该不大,而且功能点的计算相对还是比较成熟的,国内国际上也有很多案例。做过以后才发现,这东西是真TMD麻烦。1、一个软件的需求,哪怕是不大的软件(几万行),其软件需求也有上百条,如果来上十几个软件配置项,如果靠人工,真的能算死。2、软件功能点,最终的加权系数,人与人之间的衡量差距还是很大的,原创 2022-05-26 19:35:51 · 343 阅读 · 0 评论 -
IFPUG软件功能点计算方法
再次学习GJB8000的功能点计算方法,将笔记记一下什么是功能点估算方法功能点估算方法是从用户角度来估算软件规模,是基于客观的外部应用接口和主观的内部应用复杂度以及总体的系统性能特征,对软件功能规模进行间接定量估算。GJB8000的功能点是通过IFPUG功能点估算方法进行估计的。功能点估算步骤确定用户功能需求分解功能需求确定加权因子计算未调整功能点数确定调整因子计算交付功能点数流程图如下:#mermaid-svg-ODEfGibjMfLs4REE {font-family:"原创 2022-05-14 16:22:16 · 2973 阅读 · 0 评论 -
功能点规模预测方法
步骤计算每种类型的函数数量计算未调整函数点(UFP)找到所有影响角度(TDI)计算矫正因子值(VAF)找到功能点数量(FPC)计算下边所列出的各个类型的数量:外部输入:进入系统的与数据相关的功能外部输出: 从系统出去的数据有关的功能外部查询: 从系统中检索数据,但不改变系统状态的功能内部文件: 系统内部维护的逻辑文件,此处不包括日志文件外部界面文件:提供给我们系统内的其他程序使用的逻辑文件计算未调整的功能点 (UFP):根据其复杂性对五种功能类型中的每一种进行分类,例如简单、原创 2022-05-07 09:16:23 · 2064 阅读 · 0 评论 -
软件工程预测模型之COCOMO
原文为GeeksforGeeks网站Link分类Cocomo(Constructive Cost Model)是基于代码行的回归模型。它是软件项目的程序成本估算模型,通常用作可靠地预测与项目相关的各种参数的过程,例如大小、工作量、成本、时间和质量。它由Barry Boehm在1981年提出,该研究基于63个工程,使他成为了记录最好的模型之一。模型的关键参数有两个,工作量和进度。工作量: 完成单个任务所需要的人工,通常用人月来表示。进度: 完成整个工程所需要的时间,和工作量成比例。通常用时间单位表翻译 2022-05-05 20:43:43 · 4593 阅读 · 0 评论 -
对国内软件工程学术圈研究现状的一些吐槽
首先,在这里感谢浙大和华为的相关同仁,给予我这次学术交流的机会,在这里表示感谢。但是,这次交流我也有很多感触,就在这里对国内软件工程学术圈吐槽一番,仅仅是个人发牢骚,只陈述现象,不针对个人。首先,感觉学术圈很多老师的选题的目的有点太偏重于发论文了。这可能和现在高校的职称评定有关系。但是毕竟也是浪费很多人力物力的研究项目,咱们能不能与实际工程贴合更紧密一些?报告的议题中,与华为合作的题目我认为都还是很不错的。但是有些老师的题目却明显超出我的认知了。我是真不明白用AI分析代码,让其自动生成Commit里边的原创 2021-06-27 22:38:36 · 348 阅读 · 1 评论 -
聊一聊软件配置项
我们在讨论软件工程化的时候经常会说起配置项这个名词,讨论软件测试时也经常说配置项测试,那到底什么叫配置项?配置项(CI)和软件配置项(CSCI)到底有什么关系?配置项到底应该怎么划分才是合理的?我们搞技术的,说话要有依据,让我们从国标的定义说起。首先搞清楚什么是配置项:在国标《GB/T 11457-2006 信息技术与软件工程术语》里,对这几个概念都有明确的定义:配置项(configuration item,缩写为CI),是为配置管理设计的硬件、软件或两者的集合。它在配置管理中作为单个实体来对待。原创 2021-03-25 16:42:01 · 11922 阅读 · 3 评论 -
在安全关键软件领域,架构师角色的意义作用
前段时间听丛斌博士的公开课,里边谈到了中国国内最缺的人才就是软件架构师。我们经常提到软件架构,但到底什么才是软件架构?软件架构和产品设计,需求分析和编码到底有什么关系?另一个近期发生在自己身边的真实案例:去年和一个朋友聊天,谈起来他负责的一个公共服务平台建设项目的进展,他说他聘请了一个架构师,已经把软件架构设计完毕了,然后要了一笔钱,说下边应该找个专业的需求分析把需求分析做一做,然后找个编码团队把代码编一下就可以交付了。我听后就觉得我朋友被骗了。很多人对架构师有些误解,认为架构师就应该高屋建瓴,设计一原创 2021-03-24 21:34:06 · 319 阅读 · 0 评论 -
ISO:31000-2018 Risk Management-Guideline读书笔记
概述标准的结构本标准是分成了三个相互联系的部分进行描述的,分别是principles(理论),framework(框架),process(过程).什么是风险标准里原文如下:risk - effect of uncertainty on objectives.风险就是对目标的不确定性的影响。影响是期望的偏离。它可能是正面的,负面的或者两者都有,它能被解决,创造,并导致机会或威胁。目标可以有不同的方面和类别,并可以应用于不同的级别。风险可以采用四个参数来表征:风险源、可能的事件、导致的原创 2021-02-15 11:02:46 · 1003 阅读 · 0 评论 -
把我以前翻译的《故障树手册》重新进行了修订
重新修改了《故障树手册》里的部分内容,对一些名词,句子和图进行了修订,并生成了PDF版,估计未来一段时间不会再去动它了,有兴趣的凑合着看吧,直接做成了PDF,方便大家使用。网盘链接密码: rquu...原创 2021-01-10 23:42:47 · 369 阅读 · 7 评论 -
在小组织里实现和保持CMMI的5级成熟度
赵星汉 译前几天和丛斌老师简单讨论了下小组织里贯彻执行高成熟度CMMI的可行性,丛斌老师发了这篇文章给我参考。我觉得挺好的,就翻译了一下,以供国内相关学者老师参考。研究人员和从业者都进行了多年的过程改进研究。由CMMI研究室提供的CMMI模型,它由许多指引产品和服务的改进活动组成。CMMI并没有告诉你如何将其应用到你的工程和服务中,但是它规定了通用和专用的实践需求。CMMI评定的成熟度等级范围从2到5,其中5表示一个组织被认为是“优化的” 因为它具有高度成熟的实践,可以利用其复杂性定量技术的测量策划并有原创 2021-01-04 19:58:51 · 445 阅读 · 0 评论 -
软件(定型)测试大纲检查单
摘录自前一篇文章中介绍的梅老师的书。1.软件定型测评大纲按照《军用软件产品定型管理办法》以及《GJB6921-2009《《军用软件定型测评大纲编制要求》的规定,列举一个具体的审查内容和要求参考示例如下:a)是否列出了文档的标识、标题、所适用的被测软件的名称与版本,以及文档中采用的术语和缩略语。b)是否概述了文档的主要内容和用途。c)是否描述了此次定型测评任务委托方、被测软件承研单位及定型测评机构的名称、地址、联系人及联系电话。d)是否概述了被测软件的等级、使命任务、结构组成、信息流程使用环境、安原创 2020-12-25 19:20:41 · 1290 阅读 · 3 评论 -
软件各项会议评审意见模版
读梅老师主编的书,觉得评审意见模板很有参考价值和实用价值,帮梅老师安利一波,顺便记一下笔记。《系统/子系统规格说明》评审意见模板20XX年XX月XX日,XXX(主管机关)在XXX(会议地点)主持召开了“《XXX(产品名称)系统规格说明》评审会”。参加会议的有XXX机关,XXX院校,XXX研究所共XX名代表(名单见附件1),会议成立了评审组(名单见附件2),听取了XXX(单位)做的《XXXX报告》。经讨论质询,形成评审意见如下:系统规格说明对系统的研制目标和范围、工作状态、运行方式以及所要满足的能力需原创 2020-12-23 21:07:45 · 9919 阅读 · 2 评论 -
减少琐事
这两天在读谷歌运维,感觉相关内容很有参考价值,在软件工程里也有很强的知道意义,所以在此记一下笔记。什么是琐事当前手动性的,重复性的,可以被自动化的,战术性的,没有持久价值的工作,琐事与代码(产品)规模呈线性关系。琐事的特性手动性:如脚本里的每一个步骤可以自动执行,但是执行脚本如果是手动的,那么就可以被认为是琐事。重复性的:不停反复做的工作。可以被自动化的:如果计算机可以很好的完成该任务,或者可以通过某种设计或流程优化彻底消除某项任务的需求,那么这项任务就可以被认为是琐事。战术性的:琐事是突然原创 2020-12-20 23:07:49 · 148 阅读 · 0 评论 -
改进软件过程管理的分析能力
改进软件过程管理的分析能力原文《ANALYTIC CAPABILITIES FOR IMPROVED SOFTWARE PROGRAM MANAGEMENT》,卡耐基梅隆大学SEI实验室,发表于2020年10月。赵星汉翻译于2020年12月13日。问题软件与关键系统能力的联系不断扩大,这促使软件工程组织不得不采用更有效的技术来管理他们的系统和软件交付。国防部(DOD)系统和软件采购和开发正在进行转变。国防部软件适应性采购框架中的软件获取途径(下图)阐述了冲刺和交付是如何产生软件迭代并最终生成可用的基线翻译 2020-12-13 22:00:36 · 289 阅读 · 0 评论 -
Scrum 2020 的学习笔记
Scrum 2020 的学习笔记scrum的基础知识Scrum 是一个用于开发和维护复杂产品的框架 ,是一个增量的、迭代的开发过程。在这个框架中,整个开发过程由若干个短的迭代周期组成,一个短的迭代周期称为一个Sprint,每个Sprint的建议长度是2到4周(互联网产品研发可以使用1周的Sprint)。在Scrum中,使用产品Backlog来管理产品的需求,产品backlog是一个按照商业价值排序的需求列表,列表条目的体现形式通常为用户故事。Scrum团队总是先开发对客户具有较高价值的需求。在Sprin原创 2020-12-07 22:24:24 · 304 阅读 · 0 评论 -
Git在添加目录时遇到了Fatal: unpopulated submodule的解决办法
Git在添加目录时遇到了Fatal: unpopulated submodule的解决办法今天,在把以前的一个目录整体拷贝到git的目录下时,在add的时候遇到了报错,提示unpopulated submodule的信息,无法添加。后来经过查证,可以采用如下的方法解决.针对提示的目录papersgit rm -rf --cached Papersgit add Papers/* 问题完美解决。...原创 2020-06-30 03:02:29 · 2301 阅读 · 1 评论 -
SpaceX Lessons Which Massively Speed Improvement of Products 翻译以及心得体会
本文翻译自NextBigFuture网站原文地址,作者Brian Wang,发表于2018年12月。肯特·内伯格(Kent Nebergall)在macroinvent.com上撰文。肯特在第21届国际火星学会年度大会上发表了有关逆向工程SpaceX的演讲,因此我们可以像埃隆一样加速前进。他首先关注Elon生成产品的一般过程。这是视频中肯特演讲的摘要。我建议您观看嵌入式视频并观看肯特的完整演讲。但是,这是我从肯特演讲中获得的主要收获。注意:Elon并未发明全新的方法。Elon确实从计算机软件开发或其原创 2020-06-04 06:32:48 · 524 阅读 · 0 评论 -
《ELC:SpaceX的经验教训》中文翻译与自己的一些见解
原文地址:英文版地址,作者作者Jake Edge,发表于2013年3月6日。文中灰色背景的是我的一些不成熟的看法,部分数据和资料来源于网络和相关论文,由于是非正式发表,也就不标注来源了,有兴趣的朋友可以自行查证,欢迎留言讨论。在2013年嵌入式Linux大会的第二天,SpaceX的罗伯特·罗斯(Robert Rose)谈到了“从经验中学到的航天器开发软件”。在演讲中,他讨论了SpaceX如何开发其基于Linux的软件,以完成将航天器送入轨道甚至最终超越轨道所需的各种任务。他说,Linux在SpaceX.原创 2020-06-03 02:55:48 · 1085 阅读 · 0 评论 -
一种融合CMMI和敏捷的策略的前进路线
本文的英文版为CMMI官方推荐文章《The Way Forward A Strategy for Harmonizing Agile and CMMI》,发表于2016年的CrossTalk。赵星汉学习兼翻译于2020年5月摘要: 敏捷和CMMI就像是完全相反的两种范例——或许它们是否能互相融合或增强?敏捷和CMMI的临界点是什么?以及为什么是这样。在LinkedIn的博客里,敏捷或CMMI的支持者们都是如此的极力反对另一个学派的观点,以至于让两方理性的共存是一个不可能的任务,这种情形一直持续到如今。一种翻译 2020-05-15 06:08:16 · 1013 阅读 · 0 评论 -
故障树手册(Fault Tree handbook)(6)
第十章 概率与统计分析1 概述在这章中,我们将试图去描述和故障树相关的概率与统计概念中的基本元素。这些知识也是故障树量化的基础。在这方面基础好的读者可以直接跳过本章去阅读第十一章,在后边需要的时候再来回顾对应的内容。我们现在先来讨论概率分布理论。我们首先会讲解二项分布,接着学习常规的分布原理,并重点学习一些在系统分析中常用到的特殊分布。然后我们将具备统计评估的基础知识。我们的表示法或许不是...原创 2020-04-13 02:32:10 · 2860 阅读 · 0 评论 -
故障树手册(Fault Tree handbook)(5)
第八章 压力罐的例子8.1 系统定义和故障树构建在本章和下一章里,我们将用两个简答的例子来定义非预期事件。读者将看到在第V章的帮助下,故障树是怎样一步一步的建立起来的。在故障树的建立过程中,可以得到一些比较浅显的结论,但是详细的评估过程将在第11章才会介绍。考虑图VIII-1的压力罐的例子,里边有一个管道马达装置和一些相关控制组件。首先我们先看系统功能,系统的功能模型如图VIII-2所示。...原创 2020-04-12 01:50:14 · 1404 阅读 · 0 评论 -
故障树手册(Fault Tree handbook)(4)
第六章 概率理论:关于事件的数学描述6.1 概述通过学习前边的内容我们已经奠定了故障树的基础,我么几乎已经可以开始进入一些真实的故障树案例教学。但是,因为我们在第八章和第九章的例子中不仅有故障树的构建,还有故障树的评估,所以我们必须在第六章和第七章先把评估涉及的数学概念讲清楚。第六章讲解了定量评估故障树所涉及的基础的数学知识:概率理论。概率论是故障树分析的基础,因为它提供了对事件的分析处理,...原创 2020-04-11 03:34:10 · 986 阅读 · 0 评论 -
故障树手册(Fault Tree handbook)(3)
第四章 故障树的基本元素4.1 故障树的模式故障树分析可以简单的描述为一项分析技术,凭借一个特定系统的非期望状态(通常是一个安全方面的关键状态),该系统会根据环境和操作的上下文信息来找到非期望事件发生的所有可信途径。故障树本身是一种图形描述方式,这种图形方式描述了各类导致预定义的非期望事件发生的故障的并行和串行组合。(The fault tree itself is a graphic mod...原创 2020-04-10 03:07:42 · 7149 阅读 · 0 评论 -
故障树手册(Fault Tree handbook)(2)
文章目录第二章 归纳法概论2.1 概述2.2 部件计数方法2.3 故障模式和效果分析(Failure Mode and Effect Analysis, FMEA)2.4 故障模式效果和关键性分析(Failure Mode Effect and Criticality Analysis, FMECA)2.5 预先危险性分析(Preliminary Hazard Analysis, PHA)2.6 ...原创 2020-04-09 11:17:07 · 1676 阅读 · 0 评论 -
故障树手册(Fault Tree handbook)(1)
文章目录前言第一章 系统分析的基础概念1.1 系统分析的目的1.2 系统的定义1.3 分析方法1.3.1 归纳法(Inductive Approaches)1.3.2 演绎法(Deductive Approaches)1.4 风险与陷阱1.4.1 子系统接口1.4.2 规程接口本文原书为Fault Tree Handbook,所有者为美国核管理委员会(NUREG-0492)。当时学习的时候感觉...原创 2020-04-09 10:59:14 · 2433 阅读 · 0 评论 -
Json文件读写技术
获取目录String dir = Environment.CurrentDirectory //当前应用程序的路径,最后不包含'\';读写JSON文件本程序利用Newtonsoft读写Json,下载地址如下:https://archive.codeplex.com/?p=json读取的示例代码:using Newtonsoft.Json;string json = @"{...原创 2019-01-03 16:39:58 · 434 阅读 · 0 评论 -
CMMI的过程文件自动化(一)
目的近期在学GJB 5000A和CMMI,里边涉及到大量的表单,手动整理太麻烦,打算借助json将word表单自动化实现。设计中想让文档与程序尽量分离,后期的变更尽量少变更代码,仅通过改变json和WORD模板就实现自动化出具表单。第一步先实现的是将json文件的内容填入word模板中,第一步实现后,后期只要实现不同的json文件与word模板就能出具相应额表单了。思路本软件涉及的技术主...原创 2019-01-03 16:32:42 · 326 阅读 · 0 评论