说明
本文为开卷考准备资料(以目录为主)
各位同学,学校已排定《软件工程导论》的考试时间,为12月20日(周五)上午10:10-11:10,1小时。
考试为开卷,可以携带和使用任何纸质材料,但不能携带和使用任何电子设备。
考试题型及分数分布为:
卷面满分:40分。
一、判断正误并说明原因(共2题,每题5分,总分10分)
二、简答题(共2题,每题5分,总分10分)
三、软件工程工具使用题(总分10分)
四、软件开发案例分析题(总分10分)
第一章 绪论
一、软件概念和特点
-
软件开发的实例
-
软件发展历史
-
软件定义
二、软件危机的产生
-
表现
-
原因
-
软件工程的提出(定义、内容)(方法+工具+过程)
-
软件的生命周期(软件定义+软件开发+使用与维护+软件废弃)
-
软件工程的基本原理(生命周期、阶段评审、产品控制、现代化程设、责任清晰明确、开发人员少而精、不断改进过程)
第二章 软件工程方法学和软件过程
一、软件工程方法学
-
生命周期方法学(分阶段计划控制、顺序实施、结构化分析设计)
-
严格的分阶段计划(时间分解)
-
瀑布式开发模式(顺序实施)
-
严格技术审查和管理复审(技术、经济管理)
-
各阶段采用结构化技术(自上而下、逐步求精)
-
-
面向对象方法学(面向对象、类的继承复用、循环迭代开发)
-
以对象作为基本的软件构件
-
软件定义和实现的统一
-
重视软件复用
-
通过逐步演化来完成软件开发(循环迭代)
-
-
敏捷方法学(应对用户需求迅速变化、短周期角度、写作轻量级开发)
-
追求软件交付使用终极目标(基于软件按期交付、满足用户实际需求)
-
强调全面合作和交流(甲乙方有效交流)
-
重视软件开发中人的个性(开发人员积极性)
-
强调团队的力量(合力)
-
灵活采用各种开发和管理方式
-
二、软件过程
-
瀑布模型
-
快速原型法(基于瀑布模型,均不能适应需求的变化)
-
增量模型
-
螺旋模型
-
RUP统一软件开发过程(面向对象,基于网络)
-
喷泉模型(仅适用于面向对象方法学)
-
变换模型
-
极限编程(符合敏捷)
-
Scrum(自组织)
-
微软过程
第三章 生命周期方法学
一、生命周期方法学的阶段划分
-
软件定义
-
问题定义
-
可行性研究
-
需求分析
-
-
软件开发
-
总体设计
-
详细设计
-
编码实现
-
综合测试
-
-
维护阶段
-
软件废弃
二、软件定义阶段(实质:系统建模)
问题定义、可行性研究、需求分析
-
问题定义:总目标、标志性文档
-
可行性研究:技术、经济、操作、标志性文档、进行步骤(注重高层逻辑not具体逻辑)
-
软件定义阶段常用工具
-
系统流程图
-
数据流图
-
数据字典
-
实体-联系图
-
-
需求分析
三、软件开发阶段
-
软件设计的基础理论
-
程序、模块化、结构图、抽象和逐步求精(结构化技术)、模块独立性(耦合、内聚)
-
-
总体设计:总体实现方案、总体结构、标志性文档(系统设计说明书)、结构化设计方法(面向数据流的设计)
-
详细设计:标志性文档(模块设计说明)、自顶向下(存根模块)or自底向上(驱动模块)
-
结构化程序设计(Dijkstra取消GOTO)(逐步求精)
-
盒图(N-S图)
-
过程设计语言PDL(伪码)
-
判定表或判定树
-
-
编码实现:所有源程序、标志性文档(源程序、单元测试报告)、编程风格
四、软件综合测试
-
软件测试的基础理论
-
测试目标
-
测试方法
-
测试准则
-
测试步骤
-
-
单元测试
-
集成测试
-
验收测试(对象:整个软件)
-
测试数据设计
-
测试工具
-
程序调试
-
软件可靠性理论(有计算公式)
五、软件维护
-
维护的定义和分类(改正、适应性、完善性、预防性、)
-
维护过程(人员组织、事件流、文档)
-
可维护性
-
逆向工程和再工程
第四章 面向对象方法学
零、生命周期方法学回顾
-
严格的分阶段计划
-
“瀑布式”开发模式
-
严格的技术审查和管理复审
-
结构化技术
-
对功能需求分析的依赖
-
软件重用性差
-
维护代价高
-
与现实世界的差异
-
与硬件和运行平台发展趋势的分期
-
数据与处理过程的分离
一、面向对象方法学基础知识
-
基本概念(对象、以数据为核心、消息和方法、属性、类和实例、继承)
-
特点(对象、类、继承、消息机制)
-
优点
二、统一建模语言UML
-
UML历史
-
UML内容(基础结构、上层结构、对象约束语言、图交换)
-
核心:定义一个元语言的核心,进行复用
-
模型基本符号:图
-
-
静态描述工具(类图、对象图)
-
功能模型描述工具(用例图)
-
动态模型描述工具(状态机图、顺序图)
三、面向对象分析
-
一般过程
-
简历系统静态模型
-
建立系统功能模型
-
建立系统动态模型
四、面向对象设计
-
一般过程(演进迭代、逐步精华)(喷泉模型)
-
问题域子系统设计
-
任务管理子系统设计
-
数据管理子系统设计
第五章 敏捷方法学
一、敏捷思想提出
-
敏捷思想的提出(软件危机)
-
发展现状
二、敏捷方法学
-
敏捷宣言
-
敏捷方法学特点(面向对象)
-
主要方法
-
Scrum方法(计划、体系结构设计、Sprint和交付与巩固)
-
XP极限编程(轻量级、灵巧)
-
水晶系列方法
-
动态系统开发方法
-
适应性软件开发方法
-
特性驱动开发方法
-
三、极限编程
-
历史
-
定义
-
核心价值观(沟通、简单、反馈、勇气、尊重)
-
实践原则(计划项目、小版本、简单设计、测试驱动、持续集成、重构、结对编程、代码共享、每周只工作40小时、现场客户、隐喻、编码标准)
-
实施过程(站会)
四、Srum
-
特点
-
无领导
-
简单
-
需求变化
-
-
过程框架
-
Product Owner
-
Scrum Master
-
Team
-
仪式
-
Spint Planning Meeting
-
Daily Scrum Meeting(站会)
-
Sprint Review Meeting
-
Sprint Retrospective Meeting
-
-
工具(Backlog、Burndown Chart)
-
第六章 软件项目管理
一、软件开发成本估算
-
软件规模估计
-
代码行技术
-
功能点技术
-
-
软件开发工作量估计(人月)
-
静态单变量模型
-
动态多变量模型
-
COCOMO2模型
-
-
软件开发成本估算
二、进度管理
-
软件开发耗时估计
-
软件开发的进度控制
-
进度计划(甘特图、工程网络)
三、组织管理
-
民主制程序员组(敏捷时代)
-
主程序员组
-
等级小组制
四、 质量管理
-
软件质量的定义
-
软件质量模型
-
软件质量保证