软件工程概论

软件=程序+数据+文档
彩色只考概念
1 软件工程学概述
1.1
软件危机:在计算机软件的开发和维护过程中所遇到的一系列严重问题。
主要包含两个方面:(1)如何开发软件,以满足日益增长的软件需求(2)如何维护数量不断膨胀的已有软件
软件危机表现:
- 对软件开发成本和进度的难估计
- 用户对“已完成的”软件系统不满意
- 软件产品质量靠不住。
- 软件常常是不可维护的。
- 软件没有适当的文档资料。
- 软件成本在计算机系统总成本中所占的比例逐年上升。
- 软件开发生产率提高速度跟不上计算机应用普及深入,常常“供不应求”。
产生软件危机的原因:
消除软件危机的途径:
- 对计算机软件有正确认识
- 充分认识到软件开发应是各类人员协同配合,共同完成的工程项目
- 吸取,借鉴长期积累的有效原理,概念,成功的技术和方法,并探索更好更有效的技术和方法。
- 积极开发和使用更好的软件工具。
1.2
软件工程概念
软件工程本质特征:

软件工程基本原理
(软件危机的办法)软件工程方法学

1.3 软件生命周期

软件工程方法学三要素
1.4 软件过程 是软件工程方法学三个重要组成部分之一
是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
瀑布模型,快速原型模型,增量模型,螺旋模型优缺点,应用范围
瀑布模型

快速原型模型
特点
增量模型

螺旋模型

喷泉模型

Rational统一过程
适合大型需求不断变化的复杂软件系统项目

敏捷过程与极限编程 高效工作和快速响应。需求模糊且经常改变

微软过程 一个生命周期递进,各个生命周期迭代循环

2 可行性研究
2.1
可行性研究任务/目的:
用最小代价在尽可能短的时间内确定问题是否能够解决
2.2
可行性研究主要内容:
(1)技术可行性。经济可行性。操作可行性。法律可行性。社会可行性
可行性研究步骤:
- 复查系统规模和目标
- 研究目前正在使用的系统
- 导出新系统的高层逻辑模型
- 进一步定义问题
- 导出和评价供选择的解法
- 推荐行动方针
- 草拟开发计划书
- 写文档提交审查
2.3
系统流程图
2.4
数据流图(DFD)
2.5
数据字典
2.6
成本:
![]()
3 需求分析 图形工具均用于软件生命周期的需求分析阶段



验证软件需求:



4. 04章 形式化说明技术
有穷状态机:是表达规格说明的一种形式化方法

5 05章 总体设计
设计过程:

设计原理:


模块化好处:

模块的独立性:



面向数据流的设计方法:信息流 概念---变换流,事务流



描述软件的图形工具:

6 06章 详细设计
目的:

主要任务:

结构化程序设计
定义:

特点:

基本控制机构:
描述工具:
程序流程图
优缺点:

盒图(N-S图)

PAD图(问题分析图)
特点:
基本符号:
优点:
PAD图优点:
程序结构十分清楚。程序逻辑易读,易懂易记,转换方便
支持自顶向下,逐步求精使用
即可表示程序逻辑,也可描述数据结构
判定表:
清晰地表示复杂的条件组合与应做的动作间的对应关系
优缺点:

判定树:
是用来表达加工逻辑的系统分析与设计工具
优缺点:
PDL 程序设计语言:
优缺点:

面向数据流:
Jackson图(顺序,选择,重复结构)
流图: 仅仅描绘程序的控制流程
基本原则
计算环形复杂度 P是流图中判定结点的数量

7 07章 实现
编码: 把软件设计结果翻译成程序设计语言书写的程序


编码风格

测试:
软件测试方法:
什么是模块化测试,什么是集成测试。他们的特点:

集成测试:

什么是黑盒测试,白盒测试

白盒测试技术: 路径测试技术,事务处理流程技术
其他的逻辑覆盖



黑盒测试技术:


![]()
画出程序流图
软件可靠性

8 08章 维护
软件维护定义:![]()
![]()
软件的可维护性:

9 09章 面向对象方法学引论 对象,类,继承性,封装性
面向数据建模:对象模型,动态模型,功能模型 
9.2.9多态性
9.2.10 重装


9.2 类图的基本符号

表示关系的符号







功能模型:






10 10章 面向对象分析
面向对象分析的基本过程 定义
![]()

建立对象模型


识别继承关系:

11 11章 面向对象设计
面向对象设计的六条准则




12 12章 面向对象实现
优点:




13 13章 软件项目管理
软件项目管理是
指将各种文档资源、方法和用户人员有机地结合在一起,通过对开发过程的计划、组织、领导和控制,使软件项目能够在预定的约束范围内成功完成。



![]()

CMM 能力成熟度模型 用于评价软件机构的软件过程能力成熟度模型
基本思想:
对能力成熟度划分的原因

简答题:
简要说明软件危机产生的原因
主观原因:软件本身问题
- 软件是逻辑实体,具有不可见性,管控相当困难,工作量速度难估。
- 软件不会磨损,难维护。
- 软件规模庞大 ,成本高,风险大。
客观原因:与软件开发和维护的方式不正确有关
- 开发和维护过程中只重视程序而忽视软件配置管理,需求分析等文档化工作。
- 需要各类人员协同完成。
- 未认识到软件开发只是次要部分,轻视软件维护的作用,在实践过程中才用过错误的方法和技术
- 对用户要求认识不全,无法适应用户需求。缺乏对软件产品和开发工程质量控制,质量靠不住
可行性分析的目的与主要任务
用最小代价在尽可能短的时间内确定问题是否能够解决
需求分析的目的与主要任务


1.系统流程图
是概括地描绘物理系统的传统工具
基本思想:
用图形符号以黑盒子形式描绘组成系统的每个部件(程序、文档、数据库等)。
表达的是数据在系统各部件之间流动的情况
数据字典是什么,作用是什么,有哪些条目
是关于数据的信息的集合,也就是对数据流图中包含的所有元素定义的集合。
由数据流,数据元素,数据存储,处理4元素组成,是数据流图补充工具
作用:数据流程图描述系统逻辑结构,四个图形元素含义无法说明,由此需要与数据字典等工具配合使用
数据组成方式(基本类型):
顺序即以确定次序连接两个或多个分量。
选择即从两个或多个可能的元素中选取一个。 [] 或 |选择
重复即把指定的分量重复零次或多次。 {}重复
可选即一个分量是可有可无的(重复零次或一次)。 ()可选
用途:
数据字典最重要的用途是作为分析阶段的工具
数据字典中包含的每个数据元素的控制信息是很有价值的
数据字典是开发数据库的第一步,而且是很有价值的一步。
实现:
计算机实现,人工实现
条目:数据流词条,数据元素词条,数据存储词条,数据源点及终点词条,数据加工处理词条
数据流图是什么,作用是什么
DFD,是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换,是一种功能模型。
用途:
1、画数据流图的基本目的是利用它作为交流信息的工具。
2、数据流图的另一个主要用途是作为分析和设计的工具。
3、数据流图辅助物理系统的设计时,以图中不同处理的定时要求为指南,能够在数据流图上画出许多组自动化边界,每组自动化边界可能意味着一个不同的物理系统
他有四种基本图形符号:

PAD图(问题分析图)
特点:


2. 软件配置管理
SCM是一组管理整个软件生存期各阶段中变更的活动。此技术可使软件变更所产生的错误达到最小并最有效的提高生产率
软件项目管理
指将各种文档资源、方法和用户人员有机地结合在一起,通过对开发过程的计划、组织、领导和控制,使软件项目能够在预定的约束范围内成功完成。


软件测试

编码风格

结构化程序设计方法的基本要点
(1)采用自顶向下,逐步求精的程序设计方法
(2)使用三种基本控制结构构造程序(顺序选择循环)
(3)采用主程序员组的组织形式
(4)采用单入口单出口模块形式


名词解释:
1.软件工程:
软件工程是指导计算机软件开发和维护的一门工程学科,采用工程的概念原理、系统的,规范的,可度量的途径应用于软件,将经过时间考验而证明正确的管理技术和当前最好的技术结合起来,经济地开发出高质量软件并有效维护它的过程,把工程应用于软件。同时研究软件途径。
软件工程7条基本原理
- 用分阶段的生命周期计划严格管理;
- 坚持进行阶段评审;
- 实行严格的产品控制;
- 采用现代程序设计技术;
- 结果应能够清楚的审查;
- 开发小组的人员小而精;
- 承认不断改进软件工程实践的必要性。
2.软件生命周期模型:,划分成哪些阶段
由软件定义、软件开发和运行维护3个时期组成,所实施的全部过程,活动,任务的结构框架的模型。
软件定义:即问题定义、可行性研究和需求分析。
软件开发:总体设计,详细设计,编码和单元测试,综合测试。
运行维护:任务为使软件持久地满足用户的需要
3.
模块
是可组合,分解更换的单元,在程序中他是数据说明,可执行语句等程序对象的集合,或单独命名和编制的元素
作用范围:受该模块内一个判定影响的所有模块的集合
控制范围:模块本身及所有下属模块集合
模块化
把程序划分成独立运行且可以独立访问的模块,每个模块完成一个子系统,把这些模块集成起来构成一个整体,可以完成指定功能满足用户需求
4.
对象
描述该对象属性的数据以及可以对这些数据施加的所有数据封装在一起构成的统一体
模块的独立性:
每个模块只完成系统要求的独立的子功能,并于其他模块的联系最少且接口简单
耦合
块间联系,对一个软件结构内各个模块间互连程度的度量


内聚
块内联系,标志一个模块内各个元素彼此结合的紧密程度,他是信息隐蔽和局部化概念的自然扩展
模块内与模块之间各元素联系越紧密,耦合性越强,内聚性越高,模块独立性越差

5.白盒测试
又叫做结构测试,他将程序看成装在一个透明的百盒子中,按照程序内部的逻辑测试程序,检测程序中的主要执行通路按预定要求正确工作。
黑盒测试法
把被测试对象看成了一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求。
6.简要说明可行性分析的内容
经济可行性
进行开发成本估计与了解取得效益的评估,确定要开发项目是否值得投资
社会可行性
要开发项目是否存在侵犯妨碍等责任问题,要开发项目目的运行方式在用户组织内是否行得通,现有管理制度,人员素质,操作方法是否可行。
技术可行性
技术分析说明使用现有技术是否能完成该系统开发
操作可行性
系统的操作方式是否能够在组织内得到认同,是否违背法律,制度,道德,文化等因素
7.投资回收期
使累计经济效益等于最初的投资费用所需时间
8.系统流程图
描述物理模型的传统工具,用图形符号表示系统中各个元素间的信息流动关系。
9.结构冲突
输入数据与输出数据结构找不到对应关系的情况
10.独立路径
包括一组以前没有处理过的语句或条件的一条路径。从程序图来说,一条独立路径至少包含一条在其他独立路径中从未有过的路径
11.喷泉模型
以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程
瀑布模型
将软件生存周期各个活动规定为依线性顺序连接的若干阶段的软件开发模型,包括可行性分析,项目开发计划,需求分析,概要设计,详细设计,编码,测试和维护。
变换模型
适合于形式化开发方法的模型,从软件需求形式化说明开始经过一系列的变换,最终得到系统的目标程序。此模型必须有严格的数字理论和形式化技术支持,尚处于研究实验阶段
12聚集关系和泛化关系
聚集:类或对象之间整体和部分的关系
泛化:类或对象之间一般和特殊的关系
13.软件开发环境:
在计算机的基本软件的基础上,为支持软件的开发面提供的一组工具软件系统。
14.错误推测法:
在测试顺序时,人们可能根据经验或自觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的测试用例和方法。
15.软件质量保证
向用户及社会提供满意的高质量的产品,确保额产品从诞生到消亡为止所有阶段的质量活动,即确定,达到,维护需要的软件质量而进行的有计划有系统的管理活动。
16.对应关系
即直接因果关系在程序中可以同时处理
17.软件结构
软件系统的模块层次结构,反应整个系统划分模块时,做到高内聚低耦合
18软件可靠性
在指定时间间隔内,程序按照规定条件成功地运行概率
软件可用性:
在指定时间点内,程序按照规定条件成功运行概率



论述题:
1.论述软件工程方法学的三要素
把软件生命周期全过程使用的一整套方法集合称为方法学(也称为范形),可分为:方法,工具,过程
过程 是为了获得高质量的软件所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤
工具 为运用方法而提供的自动的或半自动的软件工程支撑环境
方法 完成软件开发的各项任务的技术方法
2论述软件生命周期模型
瀑布模型:
软件生命周期各项活动按固定顺序而连接的工作阶段,阶段间具有顺序性和依赖性;
- 前一阶段的工作完成后才能开始后一阶段;前一阶段的输出文档就是后一阶段的输入文档,
推迟实现;质量保证
缺点:过于理想化

快速原型模型
快速建立起来的、可在计算机上运行的程序,让用户试用模型并收集用户反馈意见,获取用户真正需要。

螺旋模型:
把它看作在每个阶段之前都增加了风险分析过程的快速原型模型
优点:
1.对可选方案和约束条件的强调,有利于已有软件的重用
2.减少过多测试 3.维护只是模型的另一个周期
增量模型:
一系列增量构件来设计,实现,集成和测试,由多个相互作用的模块构成



面向对象设计的六条准则
简答题:
综合题:
1. 黑盒测试+类

答案:

题目:

答案:









2.
数据流图:



状态转换图

流程图

对象模型:




顺序图

软件结构图
数据字典:

其他:
1.文件: 计算机程序及其说明程序的各种文档
程序:计算任务的处理图像对象和处理规则的描述
文档:有关计算机程序功能,设计,编制,使用文字或图形资料
更多推荐


所有评论(0)