软件工程知识点总结汇总

第一章 绪论

1.1软件危机

1、软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。(熟记)

2、了解软件危机主要的一些典型表现。

3、出现软件危机的原因:

4、消除软件危机的途径:首先,我们要对计算机软件有一个正确的认识;更重要的是,必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严格、各类人员协同配合、共同完成的工程项目;最后,应该开发和使用更好的软件工具。

总之,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。

1.2软件工程

1、软件工程:采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。(熟记)

2、了解软件工程的本质特征:

   1)、软件工程关注于大型程序的构造

   2)、软件工程的中心课题是控制复杂性

   3)、软件经常变化

   4)、开发软件的效率非常重要

   5)、和谐的合作是开发软件的关键

   6)、软件必须有效地支持它的用户

   7)、在软件工程的领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品

3、缺乏应用领域地相关知识,是软件开发项目出现问题的常见原因。

4、软件工程的基本原理:

   1)、用分阶段的生命周期计划严格管理

   2)、坚持进行阶段审评

   3)、实行严格的产品控制

   4)、采用现代程序设计技术

   5)、结果应能清楚地审查

   6)、开发小组的人员应该少而精

   7)、承认不断改进软件工程实践的必要性

5、方法学(范型):在软件生命周期全过程中使用的一整套技术方法的集合。

6、软件工程方法学3要素:方法、工具和过程。

7、目前使用得最广泛的软件工程方法学,分别是传统方法学和面向对象方法学

8、传统方法学也成为生命周期方法学或结构化范型。

9、面向对象方法学具有的4个要点。

1.3软件生命周期

1、概括地说,软件生命周期由软件定义、软件开发和运行维护(也称为软件维护)3个时期组成,每个时期又进一步划分成若干个阶段。

2、软件定义时期的任务

3、软件定义时期通常进一步划分成3个阶段:问题定义、可行性研究、需求分析

4、维护时期的主要任务是使软件持久地满足用户的需要。

5、软件开发时期通常分成4个阶段:总体设计、详细设计、编码和单元测试、综合测试。前两个阶段又称为系统设计,后两个阶段又称为系统实现。

6、软件生命周期每个阶段的基本任务:问题定义、可行性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试。

1.4软件工程

生命周期模型(过程模型):瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型。

(对各种模型要了解)

第2章 可行性分析

可行性分析的目的:用最小的代价在尽可能短的时间内确定问题是否能够解决。

2.1可行性研究的任务

1.研究解法的可行性的四个方面:技术可行性、经济可行性、操作可行性、法律可行性。

2.可行性研究最根本的任务:对以后的行动方针提出建议。

3.可行性研究需要的时间长短取决于工程的规模。

2.2可行性研究过程

1. 复查系统规模和目标

2. 研究目前正在试用的系统

3. 导出新系统的高层逻辑模型

4. 进一步定义问题

5. 导出和评价供选择的解法

6. 推荐行动方针

7. 草拟开发计划

8. 书写文档提交审查

2.3系统流程图

1、系统流程图:概括地描绘物理系统的工具。

2、系统流程图的基本思想:用图形符号以黑盒子形式描绘组系统的每个部件(程序、文档、数据库、人工过程等)。

3、P39符号

4、系统流程图的习惯画法:使信息在图中从顶向下或从左向右流动。

5、面对复杂的系统时,一个比较好的方法时分层次地描绘这个系统。

2.4数据流图

1. 数据流图(DFD):一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。

2. 数据流图的四种基本符号

3. 数据存储(静止状态)和数据流(运动)都是数据。

4. 数据流图的基本要点是描绘“做什么”,而不是考虑“怎么做”。

5. 星号(*)是数据流之间的“与”关系;加号(+)表示“或”关系;⊕号表示只能从中选一个(互斥关系)。

6. 画数据流图的基本目的是利用它作为交流信息的工具。

2.5数据字典

1. 数据字典应由对下列4类元素的定义组成:数据流、数据流分量(即数据元素)、数据存储、处理。

2. 由数据元素组成数据的方式的三种基本类型:顺序、选择、重复+可选

3. 用以下符号描述由数据元素组成数据的关系:=意思是等价于(或定义为)、+意思是和(即连接两个分量)、[ }意思是或(通常用“|”号隔开供选择的分量)、{ }意思是重复、( )意思是可选。

4. 数据字典最重要的用途是作为分析阶段的工具。

 

第3章 需求分析

1、需求分析是软件定义时期的最后一个阶段。

2、基本任务:准确地回答“系统必须做什么?”这个问题。

3、用于需求分析的结构化分析方法必须遵守下述准则:

   (1)、必须理解并描述问题的信息域,根据这条准则应该应该建立数据模型。E-R图

   (2)、必须定义软件应完成的功能,这条准则要求建立功能模型。数据流图

   (3)、必须描述作为外部事件结果的软件行为,这条准则要求建立行为模型。状态图

   (4)、必须对描述信息、功能和行为的模型进行分解,用层次的方式展开细节。

3.1需求分析的任务

4、对软件系统的综合要求:功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求、约束、逆向需求、将来可能提出的要求。

5、需求分析的任务:确定对系统的综合要求

                   分析系统的数据要求

                   导出系统的逻辑模型

                   修正系统开发计划

3.2与用户沟通获取需求的方法

1、访谈、面向数据流自顶向下求精、简易地应用规格说明技术,快速建立软件原型。

2、结构化分析方法就是面向数据流自顶向下求精进行需求分析的方法。

3、快速建立软件原型是最准确、最有效、最强大的需求分析技术。

3.3分析建模与规格说明

1、需求分析过程应建立3种模型:数据模型、功能模型、行为模型。

2、数据流图是建立功能模型的基础。

3、状态转换图是行为建模的基础。

3.4实体-联系图(E-R)

E-R图中包含着实体(即数据对象)、关系和属性3种基本成分。

 

第5章 总体设计

5.1设计过程

总体设计过程通常有两个主要阶段组成:系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件的结构。

典型的总体设计过程包括下述9个步骤:

   1)、设想选择的方案

       需求分析阶段得出的数据流程图是总体设计的极好的出发点。

   2)、选择合理的方案

       对每个合理的方案,分析员都应准备下列四份材料:

       A.系统流程图

       B.组成系统的物理元素清单

       C.成本/效益分析

       D.实现各个系统的进度计划

   3)、推荐最佳方案

   4)、功能分解

   5)、设计软件结构

       软件结构可以用层次图或结构图来描绘。

  6)、设计数据库

   7)、制定测试计划

   8)、书写文档

       这个阶段完成的文档有:系统说明、用户手册、测试计划、详细的实现计划、数据库设计结果。

   9)、审查和复查

5.2设计原理

1. 模块化、抽象、逐步求精、信息隐藏和局部化、模块独立

2. 模块是由边界元素限定的相邻程序元素的序列,而且有一个总体标识符代表它。

3. 模块是构成程序的基本构件。

4. 模块化就是把程序分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。

5. 抽象:把相似的方面集中和概括起来,暂时忽略它们之间的差异,或者说,抽出事物的本质特性而暂时不考虑它们之间的细节。

6. 逐步求精是人类解决复杂问题时采用的基本方法,也是许多软件工程技术的基础。定义:为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。

7. 信息隐藏原理指出:应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。

8. 局部化:把一些关系密切的软件元素物理地放得彼此靠近。

9. 模块独立的概念是模块化,抽象,信息隐藏和局部化概念的直接结果。

10. 模块独立化重要性的原因:

第一,有效地模块化的软件比较容易开发出来;

第二,独立的模块化比较容易测试和维护。

11. 模块的独立程度可以由两个定性标准度量,这两个标准分别称为内聚和耦合。

12. 耦合是对一个软件结构内不同模块之间互连程度的度量。

13. 耦合的强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。

14. 如果两个模块彼此间通过参数交换信息,而且交换的信息仅仅是数据,那么这种耦合称为数据耦合。

15. 如果传递的信息中有控制信息(尽管有时这种控制信息以数据的形式出现),则这种耦合称为控制耦合。

16. 数据耦合是低耦合。

17. 最高程度的耦合式内容耦合。

18. 内聚标志着一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。

19. 偶然内聚、逻辑内聚、时间内聚

5.3启发规则

1. 软件结构提高模块独立性

2. 模块规模应该适中

3. 深度、宽度、扇出和扇入都应适当

4. 模块的应用域应该在控制域之内

5. 力争降低模块接口的复杂程度

6. 设计单入口单出口的模块

7. 模块功能应该可以预测

5.4描绘软件结构的图形工具

1、层次图和HIPO图

2、结构图

5.5面向数据流的设计方法

1. 面向数据流的设计方法把信息流映射成软件结构,信息流的类型决定了映射的方法。

2. 信息流分成两种类型:变化流、事物流(概念)

3. 变换分析是一系列设计步骤的总称,经过这些步骤吧具有变换流特点的数据流图按预先确定的模式映射成软件结构。

4. 变换分析的设计步骤。

第6章   详细设计

目标:1.确定应该怎样具体的实现所要求的系统

 2.设计出程序的“蓝图”

 3.详细设计的结果基本决定了最终的程序代码的质量

6.1   结构程序设计

1.概念:结果程序设计是一种设计程序的技术,它采用自顶向下逐步求精的的设计方法和单入口但出口的控制结构。

2.三种基本控制结构:

  1)顺序结构:相当于“A、B”

  2)选择结构:相当于“If exp then A else B endif;”

  3)  循环结构:相当于“While exp do A”

3.扩充的两种控制结构:

  1)多分支结构:相当于“Case I of I=1:C1;……I=n:Cn;”

  2)UNTIL循环结构:相当于“Repeat A until exp;”

6.3   过程设计的工具

6.3.1 程序流程图

     程序流程图:是一种描述程序的控制结构流程和指令执行情况的有向图。
 程序流程图的主要缺点

1) 程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。

2) 程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制。

3) 程序流程图不易表示数据结构。

6.3.2 盒图

     盒图特点

1) 功能域明确,可以从盒图上一眼就看出来。

2) 不可能任意转移控制。

3) 很容易确定局部和全程数据的作用域。

4) 很容易表现嵌套关系,也可以表示模块的层次结构。

PAD图是一种问题分析图。PAD图优点:

1) 使用表示结构化控制结构的PAD符号所设计出来的程序必然是结构化程序

2) PAD图所描绘的程序结构十分清晰。图中最左面的竖线是程序的主线,即第一层结构。随着德程序层次的增加,PAD图逐渐向右延伸,每次增加一个层次,图形向右扩展竖线。PAD图中竖线的总条数就是程序的层次数。

3) 用PAD图表现程序逻辑,易懂、易读、易记。PAD图是二维树形结构的图形,程序从图中最左竖线上端的结点开始执行,自上而下,从左向右顺序执行,遍历所有结点。

4) 容易将PAD图转换成高级语言源程序,这种转换可用软件工具自动完成,从而可省去人工编码的工作,有利于提高软件可靠性和软件生产率。

5) 即可用于表示程序逻辑,也可用于描绘数据结构。

6) PAD图的符号支持自顶向下、逐步求精方法的使用。开始时设计者可以定义一个抽象的程序,随着设计工作的深入而使用def符号逐步增加细节,直至完成详细设计。

判定表

判定表由四部分组成:左上部列出所有条件;   左下部是所有可能做的动作;

右上部是表示各种条件组合的一个矩阵;右下部是和每种条件组合相对应的动作

 

6.3.5  判定树

判定树是判定表的变种。

过程设计语言

过程设计语言(PDL)也称为伪码。

PDL的优点:

1) 可以作为注释的直接插在源程序中间

2) 可以使用普通的正文编辑程序或文字处理系统,很方便地完成PDl的书写和编辑工作

3) 已经有自动处理PDL的程序存在,而且可以自动由PDL生成程序代码。

PDL缺点:不如图形工具形象直观。

 

第7章  测试

 

概念:编码和测试统称为实现。

编码:把软件设计结果翻译成程序。

测试:检测程序并改正错误的过程。

7.2软件测试基础

1.有关测试的一些规则:

1) 测试是为了发现程序中的错误而执行程序的过程

2) 好的测试方案是极可能发现迄今为止尚未发现的错误的测试

3) 成功的测试是发现了至今为止尚未发现的错误的测试

2.测试方法

1)黑盒测试

2)白盒测试

3. 测试步骤

    单元测试、集成测试、确认测试、系统测试

4、单元测试重点:

模块接口、局部数据结构、重要的执行通路、出错处理通路、边界条件

5、集成测试

自顶向下集成

自顶向下集成是一种递增的装配软件结构的方法,这种应用方法非常广泛。它需要存根程序,不需要驱动程序。

自底向上集成

自底向上集成是从软件结构最底层模块开始进行组装和测试,它与自顶向下结合方法相反,需要驱动程序,但是不需要存根程序。

6、确认测试

 确认测试的两种可能的结果:

功能和性能与用户要求一致,软件是可以接受的

功能和性能与用户要求有差距

8、白盒测试

逻辑覆盖、语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖

点覆盖、边覆盖、路径覆盖

9、 黑盒测试技术

等价划分、边界值分析、错误推断

10、调试

调试过程

调试途径:

蛮干法、回溯法、原因排除法

 

 

 

第8章 维护

 

8.1软件维护定义

1. 软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。

2. 维护的种类:

改正性维护、适应性维护、完善性维护、预防性维护

8.2软件的可维护性

决定软件可维护性的因素

可理解性、可测试性、可修改性、可移植性、可重用性

文档是影响软件可维护性的决定因素。

包括:1)用户文档

2)系统文档

 

第9章 面向对象方法学引论

 

9.1面向对象方法学概述

9.1.1 面向对象方法学的要点

1. 认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以有比较简单的对象以某种方式组合而成

2. 把所有对象都划分成各种对象类,每个类定义了一组数据和一组方法

3. 按照子类与父类的关系,把若干个对象类组成一个层次结构的系统。

4. 对象彼此之间仅能通过传递消息互相联系。

5. 面向对象方法学的优点

Ø 与人类习惯的思维方法一致、稳定性好、可重用性好、

Ø 轻易开发大型软件产品

Ø 可维护性好

9.2面向对象的概念

1. 对象是封装了数据结构及可以施加在这些数据上的操作的封装体,这个封装体有可以唯一的表示它的名字,而且向外界提供一组服务。

2. :是具有相同属性和行为的一个或多个对象的描述

3. 封装

4. 继承

9.4 对象模型

9.4.1 类图的基本符号

1.定义类

2.定义属性

3.定义服务

9.4.2 表示关系的符号

1.关联

普通关联、关联角色、限定关联、关联类

2.聚集

1)共享聚集  2)组合聚集

3.泛化

1)普通泛化  2)受限泛化

4.依赖和细化

依赖关系、细化关系

9.5动态模型

表示瞬时的、行为化的系统的“控制”性质,它规定了对象型中的对象的合法变化序列。

9.6功能模型

表示变化的系统的“功能”性质,它指明了系统应该“做什么”,因此更直接地反映了用户对目标系统的需求。

用例图

1. 系统

2. 用例

特征:  1)用例代表某些用户可见的功能,实现一个具体的用户目标

2)用例总是被行为者启动,并向行为者提供可识别的值

3)用例必须是完整的

3.行为者

4.用例之间的关系

用例建模

  • 3
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值