首页 > 其他分享 >软件工程的7条基本原理

软件工程的7条基本原理

时间:2023-09-13 15:38:29浏览次数:30  
标签:软件开发 错误 基本原理 软件工程 开发 软件

美国著名的软件工程专家巴利玻姆提出了软件工程的7条基本原理。Boehm认为这7条原理是确保软件产品质量和开发效率的原理的最小集合。

1.用分阶段的生命周期计划严格管理

有统计表明,50%以上的失败项目是由于计划不周造成的。在软件开发与维护的漫长生命周期中,需要完成许多各种各样的工作。这条基本原理意味着应该把软件生命周期划分成若干个阶段,并相应地制定出切实可行的计划,然后严格按照计划对软件的开发与维护工作进行管理。

2.坚持进行阶段评审

据统计结果显示,大部分错误是在编码之前造成的。根据统计,设计错误占软件错误的63%,编码错误仅占37%,而且错误发现与改正得越晚,所需付出的代价越高。因此,在每个阶段都应进行严格的评审,以便尽早发现在软件开发过程中所犯的错误。

3.实现严格的产品控制

在软件开发过程中不应随意改变需求,因为改变一项 需求需要付出较高的代价。但是,在软件开发过程中改变需求又是难免的,由于外部环境的变化,相应地改变用户需求是一种客观需要,这就要采用科学的产品控制技术来顺应这种要求。在改变需求时,为了保持软件各个配置成分的一致性,必须实行严格的产品控制,其中主要是实行基准配置管理。基准配置又称为基线配置,它是经过阶段评审后的软件配置成分( 各个阶段产生的文档或程序代码)。基准配置管理也称为变动控制,一切有关修改软件的建议,特别是涉及基准配置的修改建议,都必须按照严格的规程进行评审,在获得批准以后才能实施修改。

4.采用现代程序设计技术

从20世纪60年代和70年代的结构化软件开发技术到面向对象技术,从第一代、第二代语言到第四代语言,人们已经充分认识到:方法大于力气。采用先进的技术既可以提高软件开发的效率,又可以降低软件维护的成本。

5.结果应能清楚地审查

软件是一种看不见、摸不着的逻辑产品。软件开发小组的工作进展情况可见性差,难以评价和管理。为了更好地进行管理,应根据软件开发的总目标及完成期限尽量明确地规定开发小组的责任和产品标准,从而使所得到的结果能够清楚地审查。

6.开发小组的人员应少而精

开发人员的素质和数量是影响软件质量和开发效率的重要因素,应该少而精。这一条基于两点原因:高素质开发人员的效率比低素质开发人员的效率要高几倍到几十倍,开发工作中犯的错误也要少得多;当开发小组为N人时,可能的通信信道为N(N-1)/2。可见,随着人数N的增大,通信开销将急剧增大。

7.承认不断改进软件工程实践的必要性

遵循上述6条基本原理,就能够按照当代软件工程基本原理实现软件的工程化生产。但是它们只是对现有经验的总结和归纳,并不能保证软件开发与维护的过程能赶上时代前进的步伐,能跟上技术的不断进步。因此,应把“承认不断改进软件工程实践的必要性”作为软件工程的第7条原理。根据这条原理,用户不仅要积极采纳新的软件开发技术,还要注意不断总结经验,收集进度和消耗等数据,进行出错类型和问题报告统计。这些数据既可以用来评估新的软件技术的效果,也可以用来指明必须着重注意的问题和应该优先进行研究的工具和技术。

标签:软件开发,错误,基本原理,软件工程,开发,软件
From: https://blog.51cto.com/zdytesting/7455444

相关文章

  • 2023软件工程专业01
    目录我的初心当初为什么报软件工程这个专业?当初对软件工程这个专业的期待和想象是什么?当初希望自己是如何投入这个专业的学习的?曾经做过什么准备,或者立下过什么FLAG吗?我的简历预期目前最想学的技术我的初心当初为什么报软件工程这个专业?当初原本我是想着在选专业......
  • 软件工程个人项目
    软件工程......
  • 线性回归基本原理和公式推导
    本文所有内容整理自网络。完整内容可以点击这里获取:完整资料下载地址前言线性回归是一种监督式机器学习算法,它计算因变量与一个或多个独立特征之间的线性关系。当独立特征的数量为1时,被称为单变量线性回归;在存在多于一个特征的情况下,被称为多变量线性回归。该算法的目标是找到最佳......
  • 信管知识梳理(三)软件工程相关知识
    软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程,其目的是提高软件生成率、提高软件质量、降低软件成本。一、需求分析软件需求是指用户对新系统在功能、行为、性能、设计约束等方面的期望。1.1软件需求层次软件的需求主要分为三个......
  • 从软件工程师角度聊聊 Kubernetes
    作为软件工程师,我们应该熟悉K8s,尽管它有点像DevOps,但它能让我们更好地了解幕后发生的事情,让我们与部署工作更密切相关,更有责任感。本文将从软件工程师的角度探讨Kubernetes(K8s),我们将介绍其动机、原理和核心组件,助力于开发者们提升Kubernetes的专业知识水平,能更有信心地拥......
  • 前辈从业多年的心得分享 - 读《这就是软件工程师》
    这本书一开始是从左耳朵耗子的推特上看到的出版消息,是耗子叔和郄小虎等几位前辈分享的各自从业多年的经验和心得,在书中得到的启发:看书看文档能让你知道why,而看代码写代码会让你知道how。多看牛人代码,多看牛人的解决办法和思路可以发现门道。和身边的人搭伙学习。避免X-Y......
  • 初识网络爬虫基本原理
    首先精心选择一些URL,把这些精心选择的URL放入URL队列中,从对列中捉取代取的URL读取URL之后开始解析DNS,把这些URL下载下来放入网页库中。基本流程就是:发送请求-获取响应内容-解析内容-保存数据。从网络爬虫的角度可以把互联网分为五种1;已下载未过期网页2;已下载过期网页3;待下载网页4;可......
  • 软件工程能力---开展开发者测试需要考虑的10个问题
    开发者测试的定义:开发者测试(DT),是指开发者所做的测试,有别于专职测试人员进行的测试活动。DT目标是在软件交付转验收测试前,发现和解决绝大多数代码缺陷,而其理论依据是业界研究反复揭示的“前端发现问题的代价远小于后端”。 本文先不讨论开发者测试的优势(作用),也不展开讨......
  • DPDK基本原理
    内核处理网络数据包弊端中断处理处理大量网络数据包时,出现频繁的硬件中断,产生较高的性能开销。内存拷贝网络数据包从网卡到应用程序流程是,数据从网卡通过DMA传到内核缓冲区,从内核态拷贝到用户态。上下文切换硬件中断、多线程、锁竞争产生上下文切换开销。CPU缓存失效数据包处......
  • 扩容Linux文件系统:从基本原理到实践
    一、引言在Linux系统中,文件系统是存储和组织数据的核心组件。随着应用程序和数据的不断增加,有时候需要扩大文件系统的容量。本文将介绍扩容Linux文件系统的方法和步骤,帮助您轻松应对存储需求。二、准备步骤在进行文件系统扩容之前,需要确保以下事项:了解现有磁盘空间:使用df-h命令查......