软件的本质与软件工程科学(一)

软件工程的定义

软件工程是是软件开发领域里对工程方法的系统应用。

1968年秋季,在NATO(北约)召开的科技委员会上,软件工程(software engineering)这个概念首次被提出,研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来的学科。它涉及到程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。

1993年,电气电子工程师学会(IEEE)给出了一个更加综合的定义:“将系统化的、规范的、可度量的方法用于软件的开发、运行和维护的过程,即将工程化应用于软件开发中”。

软件工程包括两种构面:软件开发技术和软件项目管理。

  1. 软件开发技术:软件开发方法学、软件工具和软件工程环境。
  2. 软件项目管理:软件度量、项目估算、进度控制、人员组织、配置管理、项目项目等。

软件危机

导致软件危机的本质原因

软件危机的本质原因是计算机的发展。软件具有复杂性、一致性、不可变性、可视性的本质特点,落后的软件生产方式无法满足计算机的迅速发展。

软件危机的表现

软件危机主要表现在几个方面:

  • 项目运行超出预算。
  • 项目运行超过时间。
  • 软件质量低落。
  • 软件缺少适当的文档资料
  • 软件通常不匹配需求。
  • 项目无法管理,且代码难以维护。

克服软件危机的方法

软件工程的目标就是克服软件危机,构建生产软件的方法与知识体系。

通过在软件开发过程中研制和使用软件工具,用以辅助进行软件项目管理与技术生产,并将软件生命周期各阶段使用的软件工具有机地集合成为一个整体,形成能够连续支持软件开发与维护全过程的集成化软件支援环境,可以期望从管理和技术两方面解决软件危机问题。

在软件工程理论的指导下,发达国家已经建立起较为完备的软件工业化生产体系,形成了强大的软件生产能力 。软件标准化与可重用性得到了工业界的高度重视,在避免重用劳动,缓解软件危机方面起到了重要作用。

软件生命周期

软件生命周期(Life Cycle)在时间维度对软件项目任务进行划分,又称为软件开发过程,是指由软件定义、软件开发和软件维护等阶段组成的全过程。

软件生命周期反映软件生存期内各种工作得组织以及各个阶段如何衔接。常见的软件开发模型有瀑布模型、螺旋模型、敏捷模型等。

SWEBoK 的 15 个知识域

  1. 软件需求(Software requirements):是用于确定软件软件产品的需求和约束,要对软件需求进行引出、商议、分析、规范和确认,保证产品的完整。
  2. 软件设计(Software design):是为一组或多组问题设想和定义解决方案的过程,通常设计解决问题和规划软件解决方案,包括低级组建和算法设计以及高级架构设计。
  3. 软件构建 (Software construction):通过编码、验证、测试的组合,详细创建有意义的软件。这部分与软件设计和软件测试有极大关联。
  4. 软件测试(Software testing):这是对软件进行测试,旨在为利益相关者提供有关被测软件产品或服务质量的信息。他也能提供客观、独立的软件试图,让组织企业能够理解软件实施的风险。
  5. 软件维护(Software maintenance):这是软件产品编程完成之后在对其进行的修改以纠正错误,旨在提高软件性能或其他属性。
  6. 软件配置管理(Software configuration management):是一种标识、组织和控制修改的技术,应用于整个软件工程过程。
  7. 软件工程管理(Software engineering management):是管理实践在工程实践中的应用。它将工程技术解决问题的能力和管理的组织、行政和规划能力结合起来,以监督复杂工程驱动企业的经营业绩。
  8. 软件工程过程(Software engineering process):在软件工程中,软件开发过程是将软件开发工作划分为不同的阶段,以改进设计、产品管理和项目管理的过程。它也被称为软件开发生命周期。
  9. 软件工程模型与方法(Software engineering models and methods):也称软件开发模型。它是指软件开发全部过程、活动和任务的结构框架,通过该模型能清晰、直观地表达软件开发全过程,明确地规定要完成的主要活动和任务。
  10. 软件质量(Software quality):软件质量分为软件功能质量,反映了它如何根据功能需求或规范很好地符合或符合给定的设计;还有软件结构质量,指它如何满足支持功能需求交付的非功能需求,例如健壮性或可维护性。
  11. 软件工程专业实践(Software engineering professional practice):软件工程专业是一种将软件工程变成专业的运动,包括学位和认证项目、专业协会、职业道德和政府许可。
  12. 软件工程经济学(Software engineering economics):主要是研究软件工程的经济效益分析,分析方法,分析意义。
  13. 计算基础(Computing foundations):涵盖了为软件工程实践提供必要的计算背景的基本主题。
  14. 数学基础(Mathematical foundations):数学基础涵盖了为软件工程实践提供必要的数学背景的基本主题。
  15. 工程基础(Engineering foundations):工程基础涵盖了为软件工程实践提供必要的工程背景的基本主题。

简单解释 CMMI 的五个级别

Level 1 - Initail:初始级。无序,自发生产模型。

Level 2 - Managed:已管理。程序用于描述项目特征,并且通常具有反应性。

Level 3 - Defined:已定义。程序用于描述组织特征,并且通常具有积极主动性。

Level 4 - Quantitatively Managed:已量化管理。程序测量与控制过程。

Level 5 - Optimizing:优化中。程序优化和改进。

在这里插入图片描述

简述 SWEBok

SWEBok(软件工程知识体系指南 software engineering body of knowledge)是软件工程知识体系的索引。SWEBOK把软件工程知识体系进行分类、组织,将原本混杂的软件工程知识体系化,将原本存在的知识分类整理,最后形成一个具有共识性和方向性的指南。SWEBok为软件工程学科的范围提供一致的确认,为支持该学科的本体知识提供指导。

在解决与软件工程相关问题时,通过 SWEBok 能够快速定位到相应的知识领域和参考资料

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值