系统分析与设计 HW1

1. 简答题

  • 软件工程的定义

       答:根据IEEE 93,软件工程,(1)将系统化、规范化、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中。(2)对(1)中所述方法的研究。

  • 阅读经典名著“人月神话”等资料,解释software crisis、COCOMO模型。

       答:Software crisis:软件危机,是计算机软件在它的开发和维护过程中所遇到的一系列严重的的问题,主要包括以下两方面:

       (1)如何开发软件,怎样满足对软件日益增长得需求

       (2)如何维护数量不断膨胀的已有软件

       软件危机的原因与软件流程的整体复杂度以及软件工程这领域的不成熟有关。如果所开发的软件可靠性得不到保障,在运行中将会产生不堪设想的严重后果。

       COCOMO模型:构建式成本模型,由Barry Boehm提出,是一种精确的、易于使用的结构型成本估算模型,其已得到业界数据的验证。COCOMO模型的计算依赖于源指令条数、开发工作量(以人月计)和开发进度等变量。主要可分为三个等级:基本COCOMO模型,中间COCOMO模型,详细COCOMO模型。基本COCOMO模型用已估算出的源代码行数为自变量的经验函数计算软件开发工作量,存在局限性;中级COCOMO模型以基本COCOMO模型作基础,用涉及产品、硬件、人员、项目等方面的影响因素调整工作量的估算;详细COCOMO模型则进一步考虑了软件工程中每一个阶段的影响。

  •  软件工程生命周期

       软件生命周期又称为软件生存周期或系统开发生命周期,是软件的产生直到报废或停止使用的生命周期。周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,这种按时间分程的思想方法是软件工程中的一种思想原则,即按部就班、逐步推进,每个阶段都要有定义、工作、审查、形成文档以供交流或备查,以提高软件质量。生命周期的每一个周期都有确定的任务,并产生一定规格的文档,提交给下一个周期作为继续工作的依据。按照软件的生命周期,软件的开发不再只单单强调“编码”,而是概括了软件开发的全过程。

        通常软件生命周期包括问题定义、可行性研究、需求分析、开发阶段和维护等内容。

        典型的划分为:

      (1)软件分析时期:问题定义、可行性研究、需求分析

      (2)软件设计时期:总体设计、详细设计

      (3)编码与测试时期:编码、测试

      (4)运行与维护时期

  •  按照 SWEBok 的 KA 划分,本课程关注哪些 KA 或知识领域?

        本课程关注的KA如下:

      (1)软件需求(Software Requirements)

      (2)软件设计(Software design)

      (3)软件建构(Software construction)

      (4)软件工程工具和方法(Software Engineering Tools and Methods)

  •  解释CMMI的五个级别。例如:Level 1 – Initial:无序,自发生产模式。

      (1)初始级:软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决与个人努力。管理是反应式的。

      (2)可管理级:建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。

      (3)已定义级:已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。

      (4)量化管理级:分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。

      (5)优化管理级:过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。

  •  用自己的语言简述SWEBok或CMMI(约200字)

       SWEBok由10个知识域构成:

      (1)软件需求:描述解决现实世界某个问题的软件产品及对软件产品的约束。

      (2)软件设计:由软件体系结构设计、软件详细设计两种活动组成。

      (3)软件构造:通过编码、单元测试、调试等活动,生成可用的、有意义的软件。

      (4)软件测试:目的为标识缺陷和问题,改善产品质量。

      (5)软件维护:软件产品交付后,需要改正软件的缺陷、提高性能等。

      (6)软件配置管理:包括配置管理控制、配置管理审计、软件发布和交付管理等。

      (7)软件工程管理:涉及基础设施管理、项目管理、度量和控制计划三个层次。

      (8)软件工程过程:围绕软件生存周期过程的技术和管理活动;对软件生存周期的定义、实现、评估、度量、管理、变更和改进。

      (9)软件工程工具和方法:可以减少手工操作负担,使工程更加系统化。

      (10)软件质量:贯穿整个软件生存周期,涉及软件质量需求、软件属性检测、软件质量管理技术和过程等。

2、解释 PSP 各项指标及技能要求:

  • 阅读《现代软件工程》的PSP:Personal Software Process章节。
  • 按表格PSP 2.1,了解一个软件工程师在接到一个任务之后要做什么,需要哪些技能,解释你打算如何统计每项数据?(期末考核,每人按开发阶段提交这个表)

       一个软件工程师在接到一个任务之后,要按照变革PSP 2.1进行计划并按计划实现,表格PSP 2.1如下:

     

       完成这些任务,我们需要有多方面的技能,包括任务的规划分配,对项目中每一个功能的时间进行预估,统计并整合成为整个项目所需时间,在文档方面,也需要预先生成并依项目动向实时审核或修改,而同时,由于项目可能会涉及很多新知识,我们应该具有较强的学习能力与实践能力。测试技能也尤为重要,单元测试、回归测试、集成测试等保障了项目的可靠性与完善性。在不同的工作阶段应适当调整状态,进行阶段性总结并提出改进。

       首先,应该依项目的复杂程度确定统计时间的单位,然后以此时间单位对各个阶段所需时间进行规划,例如每天固定的时间完成对应的工作,由于项目实施具有一定的动态性,对于这些变动也需要格外注意。除此之外,阶段性总结也很必要,每个小组成员都需要有这样的能力。可以借助Github平台对代码及文档进行云管理,这也有助于组员的合作与监督。




猜你喜欢

转载自blog.csdn.net/weixin_38057349/article/details/79556767