简答题
软件工程的定义
- 软件工程是将系统化的、规范的、可度量的方法用于软件的开发、运行和维护的过程,即将工程化应用于软件开发中。软件工程是强调使用生存周期方法和各种结构分析及设计方法的技术。
解释导致software crisis
本质原因、表现,述说克服软件危机的方法
- 本质原因:随着计算机的发展,计算机的计算能力超过了程序员有效利用这些计算能力的能力。
- 表现:
- 软件危机主要体现在软件的大量需求与软件生产效率之间的矛盾,以及软件系统的复杂性与软件开发方法之间的矛盾。
- 具体表现为软件需求增长得不到满足;软件生产高成本、价格昂贵;软件生产进度无法控制;软件需求定义不准确;软件质量不易保证;软件可维护性差等。
- 克服的方法:探索用工程的方法进行软件生产的可能性,即用现代工程的概念、原理、技术和方法进行计算机软件的开发、管理、维护和更新
软件生命周期
- 是软件的产生直到报废或停止使用的生命周期,是将软件开发工作分成不同的阶段以提高设计、产品管理和项目管理的过程
- 软件的生命周期一般可分为一下几个阶段(4时期7阶段):
- 软件分析时期:问题定义、可行性研究、需求分析
- 软件设计时期:总体设计、详细设计
- 编码与测试时期:编码、测试
- 运行与维护时期
- 常见的软件生命周期模型有瀑布模型、螺旋模型、敏捷的模型等
SWEBoK
的15个知识域
软件需求:表示在实际问题中,对软件产品很重要的一些要求和约束。软件需求KA重点关注软件需求的启发,协商,分析,规范和验证。
软件设计:软件设计KA包括软件的设计过程和最终产品两个方面。软件设计过程表示分析软件需求以产生软件内部结构及其行为的描述,其将作为其构造的基础。而最终产品必须则必须能够从细节上描述软件的架构
软件构建:软件构建是指通过详细设计、编码、单元测试、集成测试、调试和验证的组合来详细创建工作。本KA涵盖软件构建基础知识、管理软件构建、构建技术、实践考虑和软件构建工具。
软件测试:软件测试KA包括软件测试的基础知识、测试技术、人机界面测。其根据有限的测试用例集上的预期行为对程序行为进行动态验证
软件维护:软件维护KA包括软件维护的基础知识;软件维护中的关键问题;维护过程;软件维护技术;灾难恢复技术和软件维护工具。
软件配置管理(SCM):软件配置管理KA包括对SCM过程的管理;软件配置识别、控制、状态核算、审核;软件发布管理和交付;以及软件配置管理工具。
软件工程管理:软件工程管理KA包括初步和范围的定义;软件项目规划;软件项目制定;产品验收;项目绩效的审查和分析;项目结束;以及软件管理工具
软件工程进程:软件工程进程KA主要涵盖过程实施和变更;过程定义;过程评估模型和方法;测量;软件过程工具
软件工程模型和方法:软件工程模型和方法KA描述了包含多个生命周期阶段的方法,其涵盖的主题包括建模;模型类型;分析;软件开发方法。
软件质量:软件质量是一个普遍存在的软件生命周期问题。软件质量KA包括软件质量的基础知识; 软件质量管理流程; 以及实用性考虑。
软件工程职业实践:软件工程专业实践关注软件工程师必须具备的专业,负责和道德的软件工程知识,技能和态度。该KA涵盖专业性;道德规范;群体动力学;以及沟通技巧。
软件工程经济学:软件工程经济学KA关注的是在业务环境中做出决策,以使技术决策与组织的业务目标保持一致。其涵盖了软件工程经济学基础;非营利决策;评估经济风险和不确定性;以及多属性决策。
计算基础:计算基础KA涵盖了提供软件工程实践所需的计算背景的基础主题。包括问题解决技术、抽象、算法和复杂性、编程基础、并行和分布式计算基础、计算机组织、操作系统和网络通信
数学基础:数学基础KA涵盖了提供软件工程实践所必需的数学背景的基础主题。包括集合、关系和函数;基本命题和谓词逻辑;证明技术;图和树;离散概率;语法和有限状态机;以及数论。
工程基础:工程基础KA涵盖了提供软件工程实践所必需的工程背景的基础主题。包括经验方法和实验技术;统计分析;测量和度量;工程设计;模拟和建模;以及根本原因分析。
简单解释CMMI
的五个级别。
- Level 1 - Initial(初始级)
- 软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力。管理是反应式的。
- Level 2 - Managed(可管理级)
- 建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。
- Level 3 - Defined(已定义级)
- 已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。
- Level 4 - Quantitatively Managed(量化管理级)
- 分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。
- Level 5 - Optimizing(优化管理级)
- 过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。
用自己语言简述SWEBok
或CMMI
- SWEBok,即软件工程知识体系,我们可以将其看作是一个定义什么是软件工程的国际标准。它确定了软件工程与其他相关学科的分界,反映了软件工程这门学科内容的特征。并在在软件工程领域内定义了包括软件需求、软件设计、软件构件、软件测试、软件维护等的许多知识领域。因此,我们可以认为,SWEBok促进了世界范围内对软件工程的一致观点,也为相应的课程和职业资格认证材料的编写奠定基础
- CMMI,即软件能力成熟度模型,其通过对企业能力的评估,利用五个不同的成熟度级别来反映企业的发展状况,不仅给出了企业能力提升的路径,也给出了企业能力评估的事实标准。相比起普通的单一的组织框架,CMMI相对而言就更加灵活,可扩展。它能够消除了各个模型之间的不一致性,减少模型间的重复,增加透明度和理解,使得企业管理更加快速清晰,因而能够从总体上改进组织的质量和效率。CMMI有两种形式:连续和分级。连续表示法使用户能够专注于被认为对组织的直接业务目标很重要的特定过程,或组织分配给高风险程度。分级表示是为了提供一个标准的改进序列,可以作为比较不同项目和组织的成熟度的基础。
PSP 2.1 (不需要提交)
阅读《现代软件工程》的 PSP: Personal Software Process 章节
按表格 PSP 2.1,了解一个软件工程师在接到一个任务之后要做什么,需要哪些技能,解释你打算如何统计每项数据?
- PSP 2.1 的表格如下
- 需要的能力包括——时间规划和管理能力、良好的表达和沟通能力、优秀的设计和编程能力、计算能力和创新意识