系统分析与设计第一次作业
一、 课程内容
软件工程的历史
- 软件工程的定义 https://en.wikipedia.org/wiki/Software_engineering
- 软件危机 “software crisis”
- 度量软件规模 “Constructive Cost Model (COCOMO)”
软件工程标准
- Software Engineering Body of Knowledge 软件工程知识体系SWEBok
- Capability Maturity Model Integration 能力成熟度模型CMMI
- 软件工程文档标准 http://blog.sina.com.cn/s/blog_5e98ca2b01019aou.html
本Markdown编辑器使用[StackEdit][6]修改而来,用它写博客,将会带来全新的体验哦:
软件生命周期
二、作业
1、简单题
(1)软件工程的定义
From Wiki,
Software Engineering is the application of engineering to the development of software in a systematic method.
IEEE对软件工程的定义是:软件工程是(1)将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护。即将工程化方法应用于软件;(2)在(1)中所描述方法的研究。
(2)阅读经典名著《人月神话》等资料,解释software crisis、COCOMO模型。
① software crisis 软件危机
软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现的一系列严重问题的现象。
软件危机的根源是软件的大量需求与软件生产力效率之间,软件系统的复杂性与软件开发方法之间尖锐的矛盾,软件危机的原因包括系统分析不足,开发周期管理不善,开发过程缺乏规范,质量控制标准规程滞后,软件维护计划被忽视,软件企业的作坊式管理等。1960年代中期开始爆发众所周知的软件危机,1968年,北大西洋公约组织在联邦德国的国际学术会议创造软件危机一词。
主要表现在以下几个方面:
- 软件开发成本日益增长
- 软件开发进度难以控制
- 用户对“已完成”系统不满意现象经常发生
- 软件产品的质量不可靠
- 软件的可维护程度低
- 软件开发生产率跟不上硬件的发展和人们需求的增长
- 软件缺少适当的文档资料
② COCOMO 构造成本模型
COCOMO(constructive cost model)中文为构造性成本模型。最早由Boehm于 1981 年提出。它是一种精确、易于使用的,基于模型的成本估算方法,从本质上说是一种参数化的项目估算方法,参数建模是把项目的某些特征作为参数,通过建立一个数字模型预测项目成本。
COCOMO用三个不同层次的模型来反映不同程度的复杂性:基本模型,中间模型和详细模型。同时根据不同应用软件的不同应用领域,COCOMO模型划分为三种软件应用开发模式:组织模式,嵌入式应用开发模式和中间应用开发模式。
在模型中使用的基本变量有:(1)DSI(源指令条数)定义为代码行数,包括除注释以外的全部代码。(2)MM(单位为人月)表示开发工作量。(3)TDEV(单位为月)表示开发进度,由工作量决定。COCOMO模型重点考虑15种影响软件工作量的因素,并通过定义乘法因子,从而准确、合理地估算软件的工作量。
但是COCOMO也存在一些很严重的缺陷,例如分析时的输入是优先的,不能处理意外的环境变换,得到的数据往往不能直接使用,需要校准,只能得到过去的情况总结,对于将来的情况无法进行校准等。
(3)软件生命周期
From Wiki:
In software engineering, a software development process is the process of dividing software development work into distinct phases to improve design, product management, and project management. It is also known as a software development life cycle. The methodology may include the pre-definition of specific deliverables and artifacts that are created and completed by a project team to develop or maintain an application.
软件生命周期的概念:计算机软件有一个孕育、诞生、成长、成熟、衰亡的生存过程,及软件的生命周期(也称软件开发生命周期SDLC或软件开发过程)。软件生命周期被划分为若干阶段,每个阶段有明确的任务,从而使规模、结构和管理复杂的软件开发过程得到适当的控制和管理。划分的原则:各个任务彼此间尽可能相互独立,同一阶段各项任务的性质尽可能相同,从而降低每个阶段任务的复杂性,简化不同阶段之间的联系,有利于软件开发过程的组织管理。
典型划分:
- 软件分析时期:问题定义、可行性研究、需求分析
- 软件设计时期:总体设计、详细设计
- 编码与测试时期:编码、测试
- 运行与维护时期
(4)按照SWEBok 的KA划分,本课程关注哪些KA或知识领域?
- Software requirements (软件需求)
- Software design(软件设计)
- Software construction(软件建构)
Software engineering tools and methods(软件工程工具与方法)
软件测试与软件配置管理也会有所涉及。
(5)解释CMMI的五个级别。例如Level 1-Initial: 无序,自发生产模式。
- 一级为初始级,过程无序,进度、预算、功能和质量等方面 不可预测;
- 二级为可重复级,达到该级的软件公司过程已制度化,有纪律,可重复;
- 三级为已定义级,及过程实现标准化;
- 四级为已管理级,达到该级的软件公司已实现过程的定量化;
- 五级是最高级,优化级,达到该级的软件公司可自发地不断改进,防止同类问题二次出现。
(6)用自己的语言简述SWEBok或CMMI(约200字)。
SWEBok定义了受到了良好本科训练并且从事软件行业满四年的工程师所应具备的知识体系,为软件工程职业建立了合适的准则和规范集。它将软件工程学科的本体知识分为十个知识域(SWEBok2004),十个知识域可分为两类过程,一是开发与维护过程,包括软件需求,软件设计等,二是支持和组织过程,包括软件配置管理,软件工程管理等。这个知识体系的目的不在于知识本身,知识早已存在,而在于在表征软件工程学科特点的核心知识子集上达成世界性的共识,为软件工程规定教育要求、划分职业类别,确定开发任务等提供一致的见解。
二、解释PSP各项指标及技能要求:
- 阅读《现代软件工程》的 PSP: Personal Software Process 章节。
http://www.cnblogs.com/xinz/archive/2011/11/27/2265425.html - 按表格 PSP 2.1, 了解一个软件工程师在接到一个任务之后要做什么,需要哪些技能,解释你打算如何统计每项数据?
在计划阶段,可以根据估计产品规模,收集历史项目数据为此项目制定一个计划,制定时间安排。统计时间时,要使用标准的时间日志,要精确到分钟为测量单位,并且要除去中断时间(打电话等不属于有效工作时间的中断),可采用类似下面的表格记录,最后进行统计。
| 日期 | 开始时间 | 结束时间 | 中断时间 | 净时间 | 活动 |
|---|---|---|---|---|---|
本文介绍了软件工程的基础概念和发展历程,涵盖了软件工程定义、软件危机、构造成本模型COCOMO等内容,并探讨了软件生命周期的不同阶段及其重要性。此外,还讨论了软件工程知识体系SWEBok和能力成熟度模型CMMI。

被折叠的 条评论
为什么被折叠?



