第1章
1.1什么是计算机软件?
计算机软件是指计算机系统中的程序及其文档。程序是计算机任务的处理对象和处理规则。文档是了解程序的阐述资料
1.2计算机软件的特点?
- 软件开发成本和进度难以准确估算
- 软件是被开发和设计的,没有明显的制造过程。开发成果复制即可,但维护工程量大
- 软件没有机械磨损和老化问题
1.3软件的分类
- 系统软件(编译程序、操作系统)
- 支撑软件(数据库管理系统、软件开发工具等)
- 应用软件
1.4软件语言的分类
- 需求定义语言。(书写软件需求定义。PSL)
- 功能性语言(书写软件功能规约。广谱语言、z语言)
- 设计性语言。(书写软件设计规约。PDL)
- 程序设计语言。(书写计算机程序。高级、低级)
- 文档语言。(书写计算机软件文档。z、obj)
1.5什么是软件工程?
- 将系统化、严格约束的、可量化的方法应用于软件开发、运行和维护,即将工程化应用于软件
- 对1中所述方法的研究
1.6软件工程的基本原则
- 选取适宜的开发风范
- 采取合适的设计方法
- 提供高质量的工程支持
- 有效的软件工程管理
1.7软件的生命周期阶段
- 计算机系统工程阶段。任务:确定软件的总体要求和范围。进行成本估算、进度安排和可行性分析
- 需求分析阶段。解决软件开发做什么的问题
- 设计阶段。系统设计和详细设计。系统设计:设计软件系统的体系结构,也包括软件系统的组成成分、各个成分的功能和接口、成分之间的连接和通信,数据库。详细设计:各个部分的实现细节,包括数据结构和算法
- 编码。
- 测试。单元测试、集成测试、确认测试和系统测试
- 运行和维护。软件运行阶段,对投入运行的软件进行维护
1.8简述CMM的5个等级
- 初始级。软件过程特点是无秩序、甚至是混乱的
- 可重复级。建立了基本的项目管理过程来跟踪成本、进度和功能特性
- 已定义级。将管理和工程活动文档化、标准化,并综合成该组织的标准软件过程。
- 已管理级。收集对软件过程和产品质量的详细度量值,对软件过程和产品有定量的理解和控制
- 优化级。新思想、新技术促使过程不断改进
1.9软件过程模型及其特点
- 瀑布模型。特点:上一阶段的结果作为下一阶段的输入。客户的需求也常常变化。
- 演化模型。
- 增量模型。将软件的开发过程分成若干个日程时间交错的线性序列,每个线性序列产生软件的一个可发布的增量版本,后一个版本是对前一个版本的修改和补充。
- 原型模型。预期系统的一个执行版本,反映系统性质。快速、低成本地构建原型。
- 螺旋模型。将原型实现和瀑布模型结合,增加风险分析。
3.喷泉模型。支持面向对象开发的过程模型。
1.10CASE(计算机辅助软件工程)工具
第2章 系统工程
2.1简述系统工程的任务
1、识别用户需求
识别用户对基于计算机系统的总体要求,标识系统的功能和性能范围
2、系统建模和模拟
(1)硬件系统建模。确保计算机系统的安全性、可靠性、性能等
(2)软件系统建模。系统软件可分解为若干个子系统。描述各软件子系统的功能、性能等
(3)人机接口模型。描述人如何与基于计算机系统进行交互,用户环境、活动、交互语法语义等
(4)数据模型。用了哪些数据库管理系统
3、成本估算及进度安排
4、可行性分析
5、生成系统规格说明
2.2基于计算机系统的元素
软件、硬件、人员、数据库、文档、规程(每个系统元素或其外部相关流程的具体步骤)
第三章 需求工程
软件需求是指用户对目标软件在功能、行为、性能、设计约束等方面的期望
3.1需求工程分为哪些阶段,描述各阶段任务?
- 需求获取。通过与用户进行交流,对现有系统的观察以及对任务进行分析,确定系统或产品的限制性描述
- 需求分析和协商。
- 系统建模
- 需求规约
- 需求验证
- 需求管理
3.2软件需求包含
功能、性能、用户或人的因素、环境、界面、文档、数据、资源使用、可行性、软件成本和开发进度、其他
3.3软件需求分析的操作性原则和需求工程的指导性原则是什么?
- 必须能够表示和理解问题的信息域
- 必须能定义软件将完成的功能
- 必须能表示软件的行为(作为外部事件的结果)
- 必须划分描述数据、功能和行为的模型,从而可以分层次地揭示细节
- 分析过程应该从要素信息移向细节信息
3.4软件需求规约主要包含的内容
- 引言:陈述软件目标,基于计算机的系统语境进行描述
- 信息描述:给出软件必须解决的问题的系统描述,记录信息内容、信息流和信息结构
- 功能描述:描述解决问题所需的每个功能
- 行为描述:描述作为外部事件和内部事件的控制特征的软件操作
- 检验标准:描述系统成功的检验标志
- 参考书目
- 附录:补充信息、表格数据、算法描述等
第四章 设计工程
4.1 软件设计任务
- 数据/类设计
- 体系结构设计
- 接口设计
- 部件级设计
4.2软件设计过程
- 指定规范
- 体系结构和接口设计
- 数据/类设计
- 部件级设计
- 编写设计文档