《系统分析与设计》第一周作业
1.简答题
- 软件工程的定义
软件工程是(1)将系统化的、规范化的、可度量的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件;(2)在(1)中所诉方法的研究。- 阅读经典名著“人月神话”等资料,解释 software crisis、COCOMO 模型。
software crisis: 六十年代以来,随着计算机应用需求的驱动,系统软件和应用软件有很大的发展,如操作系统,编译系统和大型应用软件等。由于软件生产的复杂性和高成本,使大型软件的生产出现了很大的困难,即出现软件危机。
COCOMO模型: COCOMO,英文全称为constructive cost model,中文为构造性成本模型。它是一种精确、易于使用的,基于模型的成本估算方法,最早由勃姆 (Boehm) 于 1981 年提出。从本质上说是一种参数化的项目估算方法,参数建模是把项目的某些特征作为参数,通过建立一个数字模型预测项目成本(类似于居住面积作为参数计算的整体的住房成本)。- 软件生命周期
1)软件分析时期:问题定义、可行性研究、需求分析
2)软件设计时期:总体设计、详细设计
3)编码与测试时期:编码、测试
4)运行与维护时期- 按照 SWEBok 的 KA 划分,本课程关注哪些 KA 或 知识领域?
1)项目计划
2)人员管理
3)配置管理- 解释 CMMI 的五个级别。例如:Level 1 - Initial:无序,自发生产模式。
1) 初始级Level 1 - Initial
软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力。管理是反应式的。
2)可管理级 Level 2 - Managed
建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。
3) 已定义级 Level 3 - Defined
已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。
4) 量化管理级Level 4 - Quantitatively Managed
分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。
5) 优化管理级Level 5 - Optimizing
过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。- 用自己语言简述 SWEBok 或 CMMI (约200字
ACM和IEEE-CS发布的SWEBOK定义了软件工程学科的内涵,它由10个知识域构成
1)软件需求
软件需求描述解决现实世界中某个问题的软件产品,涉及需求抽取、需求分析、建立需求规格说明和确认。
2)软件设计
设计是软件工程最核心的内容。设计既是“过程”,也是这个过程的“结果”。软件设计由软件体系结构设计、软件详细设计两种活动组成。
3)软件构造
通过编码、单元测试、集成测试、调试、确认这些活动,生成可用的、有意义的软件。
4)软件测试
测试不再是编码后才开始的活动,测试的目的是标识缺陷和问题,改善产品质量。软件测试应该围绕整个开发和维护过程。测试再需求阶段就应凯开始。代码生成前的测试手段是静态技术(检查),代码生成后的采用动态技术(执行代码)。
5)软件维护
软件产品交付后,需要改正软件的缺陷、提高软件性能或其他属性、是软件产品适应新的环境。软件维护是软件进化的继续。软件维护要支持系统快速的、便捷的满足新的需求。
6)软件配置管理
为了系统的控制配置变更,维护整个系统生命周期中配置的一致性和可追踪性,必须按时间管理软件的不同配置,包括配置管理过程的管理、软件配置鉴别、配置管理控制、配置管理状态记录、配置管理审计、软件发布和交付管理等。
7)软件工程管理
运用管理活动,如计划、协调、调度、度量、控制和报告,确保软件开发和维护是系统的、规范的、可度量的。
8)软件工程过程
管理软件工程过程的目的是,实现一个新的或者更好的过程。软件过程关注软件过程的定义、实现、评估、测量、管理、变更、改进,以及过程和产品的度量。
9)软件工程工具和方法
软件开发工具是以计算机为基础的,用于辅助软件生存周期过程。软件工程方法支持软件工程活动,使软件开发更加系统,并能获得成功。
10)软件质量
软件质量贯穿整个软件生存周期,涉及软件质量需求、软件质量度量、软件属性检测、软件质量管理技术和过程等。
解释 PSP 各项指标及技能要求:
- 阅读《现代软件工程》的 PSP: Personal Software Process 章节。
http://www.cnblogs.com/xinz/archive/2011/11/27/2265425.html- 按表格 PSP 2.1, 了解一个软件工程师在接到一个任务之后要做什么,需要哪些技能,解释你打算如何统计每项数据? (期末考核,每人按开发阶段提交这个表)
![]()
用电脑上的时间差统计每项数据