软件工程
第一章 概 述
1、定义: 软件 == 程序 + 数据 + 文档
1.数据:程序加工处理的对象。包括数据的表示、组织与存储。
数据 == 初始化数据 + 测试数据
2.文档(document) :开发、使用和维护程序所需的图文资料 。
文档 == 开发文档 + 管理文档。
3.程序(program) :能完成预定功能和性能的指令集合。 4.软件和程序的区别
程序只是完整软件产品的一部分。
编写程序只是软件开发过程数据中的一个阶段,一般来说,其工作量仅仅是软件开发全部工作量的10%-20%
2、软件的特点:抽象性、可复制性、无折旧、受硬件制约、未完全摆脱手工工艺、开发费用高
3、软件按适用范围分:定制软件和通用软件 4、计算机软件发展的三个时期
1. 早期时代(60年代中期之前)程序设计阶段
硬件通用,软件专用;程序规模小,编写者和使用者为同一人(同组人)。 2. 第二代(60年代中期-70年代中期)程序系统阶段 出现“软件作坊”、产品软件;“个体化”开发方法。 3. 第三代(70年代中期之后)软件工程阶段
软件开发成为一门新兴的工程学科——软件工程。 5、解决软件危机的途径
1. 技术措施
? 消除错误的概念和做法
? 使用更好的软件开发方法和开发工具
2. 组织管理措施
? 软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、
管理严密、各类人员协同配合、共同完成的工程项目。
6、软件工程定义:软件工程是指导计算机软件开发和维护的工程学科。它采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。
7、软件生存周期:软件生存周期一般分为:软件定义(问题定义、可行性研究、需求分析)、软件开发(总体设计、详细设计、编码和单元测试、综合测试)、软件维护等三个时期。 8、能力成熟度模型CMM: CMM(Capability Maturity Model)即能力成熟度模型,用于评价软件机构的软件过程能力成熟度的模型。
CMM提供了一个成熟度等级框架: 1级-初始级、 2级-可重复级、 3级-已定义级、 4级-已管理级和5级-优化级。
CMMI能力成熟度模型集成模型为每个学科的组合都提供两种表示法: 阶段式模型和连续式模型
持续改进的过程 5.优化级
可预测的过程 标准、一致的过程 有纪律的过程 4.已管理级
3.已定义级
2.可重复级
1.初始级
9、软件开发方法可分为两大类: 面向过程的开发方法 结构化开发方法
面向数据结构的开发方法 原型化开发方法 面向对象的开发方法
10、喷泉模型是面向对象的过程模型, 其余的一般是面向过程的模型。
第二章系统工程 1、系统工程的任务 (1)识别用户的要求 (2)系统建模和模拟 (3)成本估算及进度安排 (4)可行性分析
(5)生成系统规格说明 2、可行性研究的目的:要用最小的代价在最短的时间内确定该项目是否值得去解决,是否存在可行的解决方案。
3、可行性分析的描述手段 (一)、系统流程图(SFD) (二)、数据流图(DFD) 4、影响成本估算的因素 (1)软件人员的业务水平
(2)开发所需时间 (3)软件开发技术水平 (4)软件可靠性要求
(5)软件产品的规模及复杂度 5、软件成本常用的估算方法:
(1)基于已经完成的类似项目进行估算,这是一种常用的也是有效的估算方法 (2)基于分解技术进行估算 (3)基于经验估算模型的估算。典型的经验估算模型有IBM估算模型、CoCoMo模型和Putnam模型。
6、效益度量的方法 1).货币的时间价值 2).投资回收期 3).纯收入 4).投资回收率
第 三 章 软件需求工程
1、需求工程RE可分为: 系统需求工程和软件需求工程 2、软件需求包括:
1)用户需求:由客户管理员、用户等提出
2)系统需求:功能需求、非功能需求、领域需求
3、需求工程中的活动可分为两大类,一类属于需求开发,另一类属于需求管理。
需求开发包括:问题获取、分析、编写规格说明、验证
需求管理包括:变更控制、版本控制、需求跟踪、需求状态跟踪 4、常用的需求分析方法:
? 功能分解方法
? 面向数据流的结构化分析方法 (SA) ? 面向数据结构的分析方法 ? 信息建模法
? 面向对象的分析方法 (OOA)
第4章 设计工程
1、软件设计的目标:就是构造一个高内聚低耦合的软件模型。提高可靠性;提高可维护性;提高可理解性;提高效率。 2、软件设计准则: 1)、抽象化与逐步求精 2)、模块化准则 3)、信息隐蔽准则 4)、模块独立性准则
3、软件独立性的度量标准是两个定性指标:
1)耦合性 用于描述模块之间联系的紧密程度。 2)内聚性 用于描述模块内部联系的紧密程度。 4、耦合、内聚与模块独立性关系:
? 内聚与耦合密切相关,强耦合的模块意味者弱内聚,强内聚模块意味着与其它模块
间松散耦合.
? 耦合与内聚都是模块独立性的定性标准,都反映模块独立性的良好程度。但耦合是
直接的主导因素,内聚则辅助耦合共同对模块独立性进行衡量。
5、 常见的软件体系结构:单主机结构、C/S(Client/Server)结构、B/S(Browser/Server)
结构
6、部件级设计技术的描述方式:
? 图形描述
? 程序流程图
? 结构化流程图(N-S图) ? PAD图—问题分析图
? 语言描述(PDL(Program Design Language)) ? 表格描述(判定表 )
第5章 结构化分析与设计
-关系图 数据流图 实体数据字典 状态转换图
1、数据流的流向:1)从一个加工流向另一个加工 2)从加工流向文件(写文件) 3)从文件流向加工(读文件) 4)从源流向加工 5)从加工流向宿
2、数据字典条目包括:数据流、文件、数据项(组成数据流和文件的数据)、加工、源或宿 3、结构图的基本成分有:模块、调用和数据
第6章 面向数据结构的分析与设计
典型方法有Jackson方法和Warnier方法 JACKSON方法的构成
JSP(Jackson structured Programming) Jackson结构程序设计方法 JSD (Jackson System Development) Jackson系统开发方法。
JSP方法的特点:
1) 简单、易学、形象直观、可读性好 2) 便于表示层次结构
3) 适用于小型数据处理系统
第7章 面向对象的分析和设计 1、典型的面向对象方法:
Coad & Yourdon 方法
OMT方法(James Rumbaugh 创立的 Object Model Technology) Booch方法
OOSE方法 (Jacobson创立的 )
2、一幅用况图包含的模型元素有系统、执行者、用况,以及表示它们间的不同关系,如关联、扩展、包含、泛化等。
第9章 人机界面设计 1、人的因素主要包括:
? 人对感知过程的认识 ? 用户的技能和行为方式 ? 人体测量学对设计的影响
2、人机界面风格
? 语言界面 ? 图形用户界面 ? 直接操纵用户界面 ? 多媒体用户界面 ? 多通道用户界面 3、人机界面设计过程
? 用户、任务和环境分析及建模 ? 界面设计 ? 界面构造 ? 界面确认
4、界面设计活动中设计问题
? 系统响应时间
? 用户求助设施(user help facilities) ? 错误信息处理
? 命令标记(command labeling)
5、界面设计活动中黄金原则
? 让用户拥有控制权 ? 减少用户的记忆负担 ? 保持界面一致
第10章 程序设计语言和编码 1、程序设计语言的基本成分
程序设计语言基本成份可归纳为四种:数据成分、运算成分、控制成分、传输成分 2、程序设计风格:
1)源程序中的内部文档 2)数据说明 3)语句构造