文章目录
一、软件工程的定义
Software engineering is “ the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, that is, the application of engineering to software,” and “ the study of approaches as in .” –– IEEE Standard 610.12
软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过实践考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。
二、解释导致 software crisis 本质原因、表现,述说克服软件危机的方法
- 本质原因
- 落后的软件生产方式无法满足迅速增长的计算机软件需求及软件系统的复杂性与软件开发方法之间的矛盾
- 表现
- 软件开发进度难以预测
- 拖延工期
- 软件开发成本难以控制
- 用户对产品功能难以满足
- 软件产品质量无法保证
- 软件产品难以维护
- 方法
- 借鉴其他工程项目行之有效的原理、概念、技术与方法,特别是吸取人类从事计算机硬件研究和开发的经验教训。在开发软件的过程中做到良好的组织,严格的管理,相互友好的协作。
- 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和做法。
- 根据不同的应用领域,开发更好的软件工具并使用这些工具。将软件开发各个阶段使用的软件工具合成一个整体,形成一个良好的软件开发环境。
三、软件生命周期
软件生命周期(Software Life Cycle,SLC)是软件的产生直到报废或停止使用的生命周期。软件生命周期一般包括可行性分析与计划、需求分析、设计 (概要设计和详细设计)、编码实现、测试、运行与维护等活动。常见模型有瀑布模型、螺旋模型、敏捷的模型。
四、SWEBoK 的 15 个知识域(An Overview of the SWEBOK Guide 请中文翻译其名称与简短说明)
-
软件需求:真实世界问题而必须展示的特性。软件需求的知识域包括七个子域,即软件需求基础、需求过程、需求获取、需求分析、需求规格说明、需求确认和实践考虑。
-
软件设计:软件设计的知识域包括六个子域,即软件设计基础、软件设计关键问题、软件结构与体系结构、软件设计质量的分析与评价、软件设计符号、软件设计的策略与方法。
-
软件构造:它指通过编码、验证、单元测试、集成测试和排错的组合,具体创建一个可以工作的、有意义的软件,其知识域包括软件构造基础、管理构造、实际考虑三个子域。
-
软件测试:它是由在有限测试用例集合上,根据期望的行为,对程序的行为进行的动态验证组成, 测试用倒是实际上无限的执行域中适当选择出来的。软件测试包括五个子域,即软件测试基础和测试级别、测试技术、需求分析、与测试相关的度量、测试过程。
-
软件维护:软件一旦投入运行,就可能出现异常,运行环境可能发生改变,用户会提出新的需求。生命周期软件维护阶段从软件交付时开始,但是维护活动出现得还要早。软件维护的知识域包括四个子域,即软件维护基础、软件维护的关键问题、维护过程、维护技术。
-
软件配置管理:是一种标识、组织和控制修改的技术,维护整个系统生命周期中软件配置的一致性和可追踪性。内容包括配置管理过程的管理、软件配置鉴别、配置管理控制管理、配置管理状态记录、配置管理审计、软件发布和交付管理。
-
软件工程管理:运用管理活动,确保软件开发和维护是系统的、规范的、可度量的。它设计基础设施管理、项目管理、度量和控制计划三个层次。度量是软件管理决策的基础。
-
软件工程过程:生产一个最终能满足用户需求且达到工程目标的软件产品所需要的步骤。软件工程过程主要包括开发过程、运作过程、维护过程。它们覆盖了需求、设计、实现、确认以及维护等活动。
-
软件工程模型与方法:建模、 模型类型、分析、和软件开发方法。
-
软件质量:涉及软件质量需求、软件质量度量、软件属性检测、软件质量管理技术和过程等。
-
软件工程专业实践:关注软件工程师必须具备的专业,负责和符合伦理的软件工程知识,技能和态度。
-
软件工程经济学基础。
-
计算基础。
-
数学基础。
-
工程基础。
五、简单解释 CMMI 的五个级别。例如:Level 1 - Initial:无序,自发生产模式
- Level 1 - Initial:初始级, 软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力。管理是反应式的。
- Level 1 - Initial:可管理级, 建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。
- Level 1 - Initial:已定义级, 已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。
- Level 1 - Initial:量化管理级, 分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个做出结论的客观依据,管理能够在定量的范围内预测性能。
- Level 1 - Initial:优化管理级, 过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。
六、用自己语言简述 SWEBok 或 CMMI
SWEBok即软件工程知识体系指南,是IEEE针对软件工程编写的一套知识体系。
目标有五点,我认为前两点最重要。
1.促进世界范围内对软件工程的一致观点。即对软件工程下一个定义。之前大家都对SE有一个大概的认识,但官方并没有总结民间的观点形成统一的定义。现在就是要针对软件工程体系内的概念,编写出大家都认可的定义。
2.阐明软件工程相对于其他学科的位置与界限。任何一个职业如果要被认可,就应该需要在核心知识体系上达成一致。SWEBok为了让软件工程成为一个合理的学科,给其划分了10个知识领域,包括软件需求、软件设计等。又累出7个辅助领域,包括计算机科学、数学等。有了这样的知识辅助领域,软件工程才能真正成为合理的学科以及被认可的职业。