其实本来是软件工程专业出身,对这一课目,应该也是相对来说,很重视才对,但是对于这种理论的科目实在是怎么也不起兴趣,同时自己做的项目也实在是太少了 所以感觉意义不大,但是
可能时间会证明一切
软件工程提纲:
核心知识点:
两种软件工程方法学开发软件时要建立哪些模型?
软件工程方法学包括:传统方法学和面向对象方法学。
常用的软甲生成周期模型有:
瀑布模型(需求稳定,而且可以预先指定,不需要阶段性产品,规定在开始下一个阶段的工作之前,必须完成前一阶段的所有袭细节)
原型模型(需求模糊或者随时间变化,开发周期短,开发规模大)
增量模型(分析员先作出需求分析和概要设计,用户参与逐步完善)
螺旋模型(将瀑布模型与原型化模型结合起来,并加入了风险分析)
喷泉模型(使开发过程具有迭代性(开发活动常常需要重复多次)和无间隙性)
软件开发方法:
1.结构化方法:由结构化分析、结构化设计和结构化程序设计构成,是面向数据流的软件开发方法。
2.Javkson方法:是一种面向数据结构的软件开发方法
3.原型化方法:反复修改才形成最终产品,比较适合用户需求不清,业务理论不确定,需求经常变化的情况。
4.面向对象开发方法:以对象作为最基本的元素,包括面向对象分析,面向对象设计和面向对象实现。
3.1软件可靠性:
(1)在规定的条件下,在规定的时间内,软件不引起系统失效的概率;
(2)在规定的时间周期内,在所述条件下程序执行所要求的功能的能力;
3.2模块化
p82:模块是程序中能够逻辑分开的部分。实际上,模块是有一定功能,可以 单独命名的被反问的数据和程序语句的集合。模块性:指软件由若干离散部 分组成的离散程度(软件模块化的程度)
DFD(Data Flow Diagram)
数据流图有四种基本符号:数据的源点/终点、处理、数据存储、数据流
3.3软件工程的出现主要是:P6-P7
1 软件规模越来越大,结构越来越复杂。
2 软件开发管理困难而复杂。
3 软件开发技术落后。
4 生产方式落后,仍采用手工方式。
5 开发工具落后,生产率提高缓慢。
3.4通过对软件的测试,可以证明:
3.5软件设计原则:p81
概要设计应遵循抽象,逐步求精,模块化,信息隐蔽等原则
信息隐蔽:
模块设计中的内聚:p82
内聚度是单个程序模块所执行的各个任务在功能上互相关联的程度。内聚度由高到低分为7种,其顺序如下。
1.功能内聚: 只执行一个功能,则称为功能内聚。判断一个模块是不是功能内聚,只要看这个模块是“做什么” 是完成一个具体的任务,还是完成多任务。
2.顺序内聚: 前一个处 理动作所产生的输出数据是后一个处理动作的输入数据,称为顺序内聚。
3.通讯内聚(信息内聚): 如果一个模块内各组成部分的处理动作都使用相同的输入数据或产生相同的输 出数据,称为通讯内聚。
4.过程内聚:如果一个模块内部的各个组成部分的处理动作各不相同,彼此也没有联系,但他们都受同一个控制流支配,决定他们的执行次序,称为过程内聚。
5.时间内聚(暂时内聚):如果一个模块内的各组成部分的处理动作和时间有关。
6.逻辑内聚:如果一个模块内部的各组成部分的处理动作在逻辑上相似, 但功能都彼此不同,则称为逻辑内聚。一个逻辑内聚模块往往包括若干个逻辑相似的动作,使用时可以选 用一个或几个功能。例如:把编辑各种输入数据的功能放在一个模块中。
7.偶然内聚:一个模块执行几个在逻辑上几乎没有关系的任务
题型分析:
耦合
内容耦合(Content Coupling)
如果发生下列情形,两个模块之间就发生了内容耦合。
一个模块直接访问另一个模块的内部数据;
一个模块不通过正常入口转到另一模块内部;
两个模块有一部分程序代码重叠(只可能出现在汇编语言中);
一个模块有多个入口。
公共耦合(Common Coupling)
若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。
外部耦合(External Coupling)
一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。
控制耦合(Control Coupling)
如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。
印记耦合(Stamp Coupling)
如果一组模块通过参数表传递记录信息,就是标记耦合。它是某一数据结构的子结构,而不是简单变量。
数据耦合(Data Coupling)
如果一个模块访问另一个模块时,彼此之间是通过数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的,则称这种耦合为数据耦合。
非直接耦合(Nondirect Coupling)
如果两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这就是非直接耦合。这种耦合的模块独立性最强。
3.6快速原型模型的主要特点p27
使用原型模型的基本过程是:
(1)用户和开发人员根据初始需求共同制定项目规划
(2)用户和开发人员利用快速分析技术共同定义需求和规格
(3)设计者开发系统原型
(4)设计者演示系统原型,用户来评价性能并识别问题
(5)如果原型不可行,重新设计或选择原型.如果原型不满意,修改原型.循环这个过程,知道用户满足为止
3.7在软件工程中,高质量的文档标准是:P254:
文档标准:包括完整性、一致性和无二义性(体现:针对性、精确性、及时性、完整性、重复性、灵活性、可追溯性)
3.8软件维护阶段p159
内容:
1. 源程序维护
2. 数据维护
3. 代码维护
4. 环境维护
分类:
1. 修复性维护
2. 预防性维护
3. 完善性维护
4. 适应性维护
5. 进化性维护
合并之后:
1. 完善性维护
2. 适应性维护
3. 改正性维护
可维护性是软件的重要质量标准p9
题型:
84.如果按用户要求增加新功能或修改已有的功能而进行的维护工作,称为_____。
A、完善性维护 B、适应性维护 C、预防性维护 D、改正性维护
98.为软件系统今后改进和发展打好基础而进行的维护工作称为______。
A、改正性维护 B、适应性维护 C、完善性维护 D、预防性维护
110、某应用系统为今后的发展将单用户系统改为多用户系统,并形成新的应用软件,由此进行的维护工作称为______。
A、改正性维护和预防性维护 B、适应性维护和完善性维护
C、完善性维护和改正性维护 D、预防性维护和适应性维护
157.软件维护,可按不同的维护目的而分类,为了适应硬件环境或软件环境的变更对软件作修改是_____。
A、 纠正性维护 B、适应性维护 C、完善性维护 D、预防性维护
7、软件维护的活动包括四种:改正性维护 、适应性维护、完善性维护和
预防性维护。
3.9软件质量因素:
影响软件质量的主要因素有哪些?
(1) 产品运行:正确性、风险性、效率、完整性、健壮性和可用性;
(2) 产品修改:可理解性、可维护性、灵活性、可测试性;
(3) 产品转移:可移植性、可重用性和互运行性。
书上:-健壮性-可理解性-风险性-可运行+可互联性
3.10需求分析阶段的任务p58
需求分析的任务不是确定系统怎样完成工作,而是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。需求分析的任务就是借助于当前系统的逻辑模型,导出目标系统的逻辑模型,解决目标系统“做什么”的问题
3.11 PDL是软件开发过程中 p100
过程设计语言(PDL),在五种基本控制结构的基础上加了FOR循环节后
PDL是软件开发过程中用于详细设计阶段描述的工具
3.12软件项目的生存周期模型;p19
3.13质量管理的主要任务:p195-196
软件质量管理的主要内容包括保证软件满足目标需要的过程,涵盖了软件质量方面的指挥和控制活动,通常指制定软件质量目标以及进行质量策划、质量计划、质量保证、质量控制、质量改进。
3.14数据字典的条目:p53-54
条目:源点/终点 数据流 处理 数据存储
3.15结构化设计的基本思想:
结构化分析(SA)的基本思想:分解、抽象;
自顶向下、逐步求精;结构程序的三种基本控制:顺序、选择、循环;每个代码块只有一个入口和一个出口
3.16软件概要设计:p80-94
3.17Jackson设计方法:p103-106
Jaskson系统开发方法是一种典型的面向数据结构的分析设计方法
N-S图 p99
黑白盒测试:
数据流图:是一种图形化技术,描绘信息流和数据从输入移动到输出的过程所经受的变换
重点大题:
.数据流图:要分别画出顶层,一层,二层
欲开发一个银行的活期存取款业务的处理系统:储户将填好的存/取款单和存折交给银行工作人员,然后由系统作以下处理;
(1)业务分类处理:系统首先根据储户所填的存/取款单,确定本次业务的性质,并将存/取款单和存折交下一步处理;
(2)存款处理:系统将存款单上的存款金额分别记录在存折和帐目文件中,并将现金存入现金库;最后将存折还给储户;
(3)取款处理:系统将取款单上的取款金额分别记录在存折和帐目文件中,并从现金库提取现金;最后将现金和存折还给储户。
绘制该系统的数据流图和软件结构图。
顶层
一层
二层
软件结构图