System's Analysis and Design HW1

系统分析与设计作业1

简答题

软件工程的定义。
  1. 将系统化、规范换、可度量的方法应用与软件的开发、运行和维护的过程,即将工程化应用于软件中。
  2. 对1中所述方法的研究。
  3. 知道计算机软件开发和维护的工程学科。采用工程的概念原理、技术和方法来开发与维护软件,把经过实践考验而证明正确的管理技术和当前能够得到最好的技术方法结合起来,就是软件工程。
阅读经典名著“人月神话”等资料,解释 software crisis、COCOMO 模型。
  • software crisis:
    软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。
  • COCOMO 模型:
    COCOMO,英文全称为constructive cost model,中文为构造性成本模型。它是一种精确、易于使用的,基于模型的成本估算方法,最早由勃姆 (Boehm) 于 1981 年提出。从本质上说是一种参数化的项目估算方法,参数建模是把项目的某些特征作为参数,通过建立一个数字模型预测项目成本(类似于居住面积作为参数计算的整体的住房成本)。
软件生命周期。
  • 从时间角度,把整个周期划分为若干个阶段.
  • 划分的原则: 各阶段的任务彼此间尽可能相对独立,同一个阶段各项任务的性质尽可能相同,从而降低每个阶段任务的复杂性,简化不同阶段之间的联系,有利于软件开发过程的纠l织管理。受软件规模、性质、种类、开发方法等因素的影响。
  • 典型划分GB8567 (4 个时期7 个阶段) :
    软件分析时期:
    问题定义、可行性研究、需求分析。
    软件设计时期:
    总体设计、详细设计。
    编码与测试时期:
    编码、测试。
    运行与维护时期
按照 SWEBok 的 KA 划分,本课程关注哪些 KA 或 知识领域?
  • Software requirements 软件需求
  • Software design 软件设计软件需求
  • Software construction 软件构建
  • Software test 软件测试
  • Software maintenance 软件维护
  • Software configuration management 软件配置管理
  • Software engineering management 软件工程管理
  • Software engineering process 软件工程过程
  • Software engineering models and methods 软件过程模型和方法
  • Software quality 软件质量
解释 CMMI 的五个级别。
  • Level 1 - Initial 初始级:
    软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力。管理是反应式的。
  • Level 2 - Repeatable 可管理级:
    建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。
  • Level 3 - Defined 已定义级:
    已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。
  • Level 4 - Managed 量化管理级:
    分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。

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

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

SWEBOK,即软件工程知识体全面描述了软件工程实践所需的知识,为开发本科软件工程教育计划打下了基础。
ACM和IEEE-CS发布的SWEBOK定义了软件工程学科需求驱动的软件开发过程的内涵,它由10个知识域构成。
软件需求、软件设计、软件构造、软件测试、软件维护、软件配置管理、软件工程管理、软件工程过程、软件工程工具和方法和软件质量。
SWEBok旨在促进世界范围内对软件工程的一致观点,阐明了软件工程学科的内容,提供了知识体系的主题。SWEBOK为软件工程学科的范围提供一致的确认。

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

阅读《现代软件工程》的 PSP: Personal Software Process 章节。按表格 PSP 2.1, 了解一个软件工程师在接到一个任务之后要做什么,需要哪些技能,解释你打算如何统计每项数据?

由表格PSP2.1,可知接到任务后要做的工作如下:
PSP2.1

  1. 计划:
    估计这个任务需要多少时间
    【对小组的工作效率有大概的了解与判断,对工作的任务量有预判能力】
  2. 开发:
    分析需求、生成设计文档、设计复审、代码规范、具体设计、具体编码、代码复审、测试
    【与组内成员的沟通交流能力,基本设计与编程测试审查技能】
  3. 记录时间花费
  4. 测试报告
  5. 计算工作量
  6. 事后总结
  7. 提出过程改进计划
    【记录与总结能力,能认识并改进自己和团队的不足】

统计数据:

  • 在前期或者之前的工作中对每位成员的工作能力与效率有一定的认识与了解,通过效率与所用时间大概估计工作量。
  • 工作的难易程度以一定权重与工作量一起计算。