当前位置: 首页 > article >正文

软件工程的七条基本原理

自从 1968 年提出“软件工程”这一术语以来,研究软件工程的专家学者们陆续提出了100 多条关于软件工程的原理。美国著名的软件工程专家 B.W.Boehm 综合这些专家的意见,并总结了多年开发软件的经验,于 1983 年提出了软件工程的七条基本原理。Boehm 认为,这七条原理是确保软件产品质量和开发效率的最小集合。它们相互独立,缺一不可,并具有完备性。

原理 1:用分阶段的生命周期计划严格管理
在软件开发与维护的漫长生命周期中,需要完成许多性质各异的工作。这条基本原理意味着,应该把软件生命周期划分成若干阶段,并相应地制定出切实可行的计划,按照计划对软件的开发与维护工作进行控制。

原理 2:坚持进行阶段评审
软件的质量保证工作不能等到编码阶段结束之后再进行。统计数据表明,软件中设计错误约占软件错误的 63%,编码错误仅占 37%。在前期改正错误所需要的可能只是橡皮和铅笔;而在交付后改正错误需要的工作就太多了:查找出错的代码,重新组织程序结构和数据结构,测试,修改文档。也就是说,错误发现与改正越晚,所付出的代价越高。因此,每个阶段都应该进行严格的评审,以便尽早发现软件开发过程中的错误,这是一条必须遵循的重要原则。

原理 3:实行严格的产品控制
在软件开发过程中不应随意改变需求,因为改变一项需求往往需要付出较高的代价。但是,在软件开发过程中改变需求又是难免的,由于外部环境的变化,相应地改变需求是一种客观需要,因此不能硬性禁止改变需求的要求,而只能依靠科学的产品控制技术来顺应这种要求,其中主要的技术是实行基准配置管理。所谓基准配置又称基线配置,是经过阶段评审后的软件配置成分。基准配置管理的思想是:一切有关修改软件的建议,特别是涉及到对基准配置的修改建议,都必须按照严格的规程进行评审和控制,获得批准以后才能实施修改。目的是当需求变动时,其他各阶段的文档或代码随之相应变动,以保证软件的一致性。

原理 4:采用现代程序设计技术
从提出软件工程的概念开始,人们一直把主要精力用于研究各种新的程序设计技术。20世纪 60 年代末提出了结构化程序设计技术,以后又进一步发展出结构化分析与设计技术、面向对象的分析和设计技术。实践表明,采用先进的技术既可提高软件开发和维护的效率,又可提高软件质量。

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

原理 6:开发小组的人员应该少而精
这条基本原理的含义是,软件开发小组成员的素质应该好,人数不宜过多。开发小组人员的素质和数量是影响软件产品质量和开发效率的重要因素。素质高的人员开发效率比素质低的人员开发效率可能高几倍至几十倍,并且高素质人员所开发的软件质量高、错误少。开发小组人员过多,信息沟通会成为负担,组成少而精的开发小组是软件工程的一条基本原理。

原理 7:承认不断改进软件工程实践的必要性
仅有上述六条原理并不能保证软件开发与维护的过程能赶上时代前进的步伐,跟上技术的不断进步。因此,Boehm 提出应把承认不断改进软件工程实践的必要性作为软件工程的第七条基本原理。按照这条原理,不仅要积极主动地采纳新的软件技术,而且要注意不断总结经验,例如,注意收集关于项目规模和成本的数据、项目进度和人员组织的数据、开发中出错类型统计数据等等。这些数据不仅可以用来评价软件技术的效果,而且也为今后修正软件工程模型提供依据。


http://www.kler.cn/news/316492.html

相关文章:

  • JdbcTemplate常用方法一览AG网页参数绑定与数据寻址实操
  • pick你的第一个人形机器人——青龙强化学习环境测试
  • Vuex 入门与实战
  • CMake 教程(五):安装和测试
  • [全网首篇]关于 VMSA-2024-0019 安全公告(CVE-2024-38812、CVE-2024-38813)的说明与解决方案
  • 【系统架构设计师】软件架构的概念(经典习题)
  • Vue3.5+ 更新 - 模板引用
  • 【Go】Go语言中深拷贝和浅拷贝
  • PlantUML的使用以及各种图表示例
  • HOJ网站开启https访问 申请免费SSL证书 部署证书详细操作指南
  • 无法将ggplot图保存为PDF文件怎么办
  • 数组高阶应用(C++版)
  • TypeError: expected string or buffer - Langchain, OpenAI Embeddings
  • 力扣3290.最高乘法得分
  • 【PHP小课堂】PHP中的函数相关处理方法学习
  • 【计算机网络 - 基础问题】每日 3 题(十六)
  • 目标检测:滑块验证
  • 2012年408考研真题-数据结构
  • 领夹麦克风哪个品牌好,无线领夹麦克风品牌排名,麦克风品牌大全
  • Python ORM 框架 SQLModel 快速入门教程
  • 每日一道算法题(二)—快乐数
  • STaR: Bootstrapping Reasoning With Reasoning
  • Android 如何实现搜索功能:本地搜索?数据模型如何设计?数据如何展示和保存?
  • 基于YOLOv8+LSTM的商超扶梯场景下行人安全行为姿态检测识别
  • Python3使用websocket调用http代理IP
  • IP包头分析
  • 【SSM-Day2】创建SpringBoot项目
  • 基于丹摩智算平台-手把手拿下经典目标检测模型 Faster-Rcnn
  • H5响应式的文化传媒娱乐公司HTML网站模板源码
  • Linux入门学习:深刻理解计算机硬件与OS体系