系统分析与设计HW1

简答题

1. 软件工程的定义
软件工程是对软件开发、操作和维护的系统化、规范化以及可量化方法的应用,是工程对软件的应用,用于研究发展软件的方法。
2. 解释导致 software crisis 本质原因、表现,述说克服软件危机的方法
软件危机应用于早期计算机科学,它是指在规定时间内难以完成有用且高效的计算机程序。软件危机是由计算机的能力快速增长且无法解决复杂问题造成的。随着软件越来越复杂,现有程序员缺乏有效利用和维护这些软件的能力,于是导致了软件危机。软件危机主要表现在如下几个方面:
1)项目超出预算或无法在截止日期前完成
2)软件效率低下且质量低劣
3)项目无法管理,代码难以维护
解决方法包括开发各种各样的过程和方法以改进软件的质量管理,例如面向对象编程等。现在的软件生产除了解决技术问题,还包括系统化、与时俱进的软件工程方法,例如构建软件生产的最佳实践与相关知识的框架。只有这样才可以很好地避免软件危机。
3. 软件生命周期
软件生命周期是指将软件开发划分成不同的阶段进行设计、开发和管理的过程。一般的软件生命周期包括了软件从生产到停止使用的所有阶段。通常分成以下几个阶段:
1)需求分析:分析客户的需求和可行性
2)软件设计:设计软件的功能、框架等
3)实现阶段:按照设计阶段逐步实现软件功能
4)测试阶段:测试软件的运行情况
5)维护阶段:对软件进行持续的维护
软件生命周期可分成多种类型,常见的有瀑布模型、螺旋模型和敏捷模型等。瀑布模型按照规定的顺序进行软件开发,只有上一个阶段结束才可以进入下一个阶段。这样做的问题是软件开发过程会遇到很多限制,很多问题通常难以解决。螺旋模型的核心是迭代过程,完成一个周期之后根据实际要求决定是否进入下一个迭代周期,故实用性更强。敏捷模型则是一种迭代、循序渐进的开发方法,在该模型中软件项目被划分为多个子项目,通过完成各个子项目最后合并得到成品。
4. SWEBoK 的 15 个知识域(An Overview of the SWEBOK Guide 请中文翻译其名称与简短说明)
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 工程基础:工程基础包括为软件工程实践提供必要工程背景的基本主题。涵盖的主题包括经验方法和实验技术、统计分析、测量和度量、工程设计、模拟和建模以及根本原因分析。
5. 简单解释 CMMI 的五个级别。例如:Level 1 - Initial:无序,自发生产模式。
Level 1 - Initial:无序,软件可以基本满足客户的需求,但是软件过程没有顺序或者是混乱的,成功取决于个人的努力。有时甚至无法保证完成任务。
Level 2 - Managed:管理,企业已经有一定的管理能力,并且建立了项目管理过程来跟踪进度和功能,制定必要的过程和纪律。通过纪律和规定来进行管理。
Level 3 - Defined:定义,企业已经建立完整的管理机制,将软件管理和工程管理两个方面文档化和标准化,所有的项目和软件开发都是使用标准的进程来进行。
Level 4 - Quantitatively Managed:量化管理,分析软件的详细进度数据,对产品有定量的理解和控制。管理可以通过客观事实得出结论,可以在定量范围内预测性能,因此可以保证产品的稳定性和完善性。
Level 5 - Optimizing:优化,有能力对产品不断进行完善,可以将最新的技术运用到软件开发中,同时过程的量化反馈和新技术促使开发过程不断发展改进。
6. 用自己语言简述 SWEBok 或 CMMI (约200字)
SWEBok:SWEbok是一个为了克服软件危机的而构建的软件开发生产项目。主要包括了十五个知识域,从这些方面规范了软件开发的过程,使整个软件生命周期更加标准化。有了这个规范,软件任务的实施步骤更加清晰,方法更加标准,开发工具更加自动化。
CMMI:CMMI是用来度量一个公司或企业的软件工程能力。不同规模的软件公司应该按照不同的工作流程和方式进行软件开发,开发过程中的侧重点也有很大的不同。CMMI对软件工程开发能力进行了解释,对于不同需求的公司给出了定义和评估,这有助于软件公司未来的发展和提升。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值