系统分析与设计基础(一)

系统分析与设计基础(一)

一、简单题

1、 软件工程的定义
软件工程并没有一个统一的定义,但很多组织机构都给出过自己的定义。

  • IEEE协会的定义:
    (1)将系统化、 规范化、 可度量的方法应用与软件的开发、 运行和维护的过程,即将工程化应用于软件中。
    (2)对(1)中所述方法的研究。 ——IEEE[IEE93]

  • 获得较多认可的定义是:
    软件工程是指导计算机软件开发和维护的工程学科。 采用工程的概念、 原理、 技术和方法来开发与维护软件, 把经过实践考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来, 这就是软件工程。

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

  • Software crisis(软件危机):
    20 世纪60年代以前,计算机刚刚投入实际使用,软件设计往往只是为了一个特定的应用而在指定的计算机上设计和编制,采用密切依赖于计算机的机器代码或汇编语言,软件的规模比较小,文档资料通常也不存在,很少使用系统化的开发方法,设计软件往往等同于编制程序,基本上是个人设计、个人使用、个人操作、自给自足的私人化的软件生产方式。六十年代以来,随着计算机应用需求的驱动,系统软件和应用软件有很大的发展,如操作系统,编译系统和大型应用软件等。由于软件生产的复杂性和高成本,原来的个人设计、个人使用的方式不再能满足要求,使大型软件的生产出现了很大的困难,即出现软件危机。

  • COCOMO模型(构造性成本模型):
    是指由巴里·勃姆(Barry Boehm)于 1981 年提出的一种精确、易于使用的,基于模型的软件成本估算方法,是一种代码行分析方法,最新版本是COCOMO II模型。从本质上说是一种参数化的项目估算方法,参数建模是把项目的某些特征作为参数,通过建立一个数字模型预测项目成本的回归分析公式。
    COCOMO由三个不断深入和详细的层次组成,分别用于软件开发的三个不同阶段。第一层,“基本COCOMO”,适用对软件开发进行快速、早期地对重要的方面进行粗略的成本估计,但因其缺少不同的项目属性(“成本驱动者”)的因素,所以准确性有一定的局限性。“中级COCOMO”中考虑进了这些成本驱动者,用于估算各个子系统的工作量和开发时间。“详细COCOMO”加入了对不同软件开发阶段影响的考量,用于估算独立的软部件,如子系统内部的各个模块。按照项目开发类型划分可以划分为组织型、嵌入型和半独立型。

3、软件生命周期
软件生命周期(SDLC,软件生存周期)是软件的产生直到报废的生命周期。我们从时间角度,把整个周期划分为若干个阶段,使各阶段的任务彼此间尽可能相对独立,同一个阶段各项任务的性质尽可能相同,从而降低每个阶段任务的复杂性,简化不同阶段之间的联系,有利于软件开发过程的组织管理。SDLC受软件规模、性质、种类、开发方法等因素的影响。
典型划分GB8567(4个时期7个阶段):
1)软件分析时期:问题定义、可行性研究、需求分析
2)软件设计时期:总体设计、详细设计
3)编码与测试时期:编码、测试
4)运行与维护时期

4、按照 SWEBok 的 KA 划分,本课程关注哪些 KA 或 知识领域?
SWEBOK KA
本课程关注这些知识域:软件需求、软件设计、软件构建、软件配置管理、软件工程管理、软件工程过程、软件工程模型和方法、软件质量、软件工程经济学、系统工程、项目管理、质量管理

5、解释 CMMI 的五个级别。例如:Level 1 - Initial:无序,自发生产模式。
CMMI五个级别的特征
Level 1 - Initial 初始级
主动地生产,但是过程中没有任何前瞻性的规划和有序的管理。
Level 2 - Managed 可管理级
针对项目的特点进行生产,有一定的管理,属于被动的开发。
Level 3 - Defined 已定义级
引入了组织,项目使用组织定义的标准进行开发和维护过程,并且是主动进行生产。
Level 4 - Quantitatively Managed 量化管理级
有标准有组织的进行生产,管理和生产都趋于标准化,对软件过程和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。
Level 5 - Optimizing 优化管理级
注重过程的提升。过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。

6、用自己语言简述 SWEBok 或 CMMI (约200字)
SWEBOK (Software Engineering Body of Knowledge),软件工程知识体系,是ISO/IEC TR 19759:2005 1的国际标准,详细说明了公认的软件工程知识体系指南。1993年,IEEE计算机协会和ACM联合发起为软件工程职业化制定相应的准则和规范,以作为产业决策、职业认证和课程教育的依据而诞生了这个项目。目前该项目已经发布了三个版本,涉及计算机科学、管理、数学、工程等7个学科,及软件需求、软件设计、软件工程管理等15个知识域,极大地推动了软件工程理论研究、工程实践和教育的发展。

扫描二维码关注公众号,回复: 1047267 查看本文章

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

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

需要软件工程师拥有一定的思考能力和分析能力,牢固的业务知识,优秀的自我规划能力和擅长总结,从错误和经验中吸取教训并自我提升的能力。
考核的数据可以统计个人在实际产品中写了多少行代码,工作时间为多少个小时,交付代码内错误有多少处和是否能在规定时间内完成计划的任务。


猜你喜欢

转载自blog.csdn.net/ecleen_a/article/details/79575886