admin管理员组

文章数量:1547064

软件工程

  • 第一章 软件工程概述
      • 1、四种图
      • 2、计算机系统
        • 计算机系统组成:
        • 计算机分为四个发展阶段:
      • 3、软件危机:
        • 产生原因:
      • 4、软件工程:
        • 软件工程的基本原理 :
        • 软件工程包括两方面的内容:
        • 软件工程方法学3要素:
      • 5、软件生命周期三个时期八个阶段:
      • 6、软件过程:
      • 7、瀑布模型:
      • 8、快速原型模式:
      • 9、增量模型:
      • 10、螺旋模型:
      • 11、其他模型:
  • 第二章 可行性研究
      • 1、可行性研究报告
      • 2、可行性研究目的:
      • 3、可行性包括:
      • 4、可行性研究过程(循环):
      • 5、可行性分析报告之系统流程图
      • 6、数据流图
      • 7、数据字典:
      • 8、 成本/效益分析的目的
      • 9、成本/效益分析:
      • 10、成本/效益分析方法:
  • 第三章 软件需求分析
    • (一、重要性)
      • 1、软件需求分析决定软件开发是否成功。(最重要的)
    • (二、定义和概念)
      • 2、软件需求分析
      • 3、需求分析的任务
    • (三、具体的过程)
      • 4、需求分析基本流程:
    • (四、过程中的要求)
      • 5、系统的综合要求:
      • 6、分析系统的数据要求:
      • 7、逻辑模型:
      • 8、需求获取的关键
    • (五、过程的详细步骤)
      • 9、需求规格说明书(开发人员文档的起点)
      • 10、实体-联系图(E-R图):三要素
      • 11、数据规范化:
      • 12、层次方框图(H图):
      • 13、HIPO图:H图+IPO图
      • 14、需求分析验证软件需求正确的四方面:
  • 第四章 形式化说明技术
      • 1、形式化方法:
      • 2、有穷状态机:
      • 3、Petri网:
      • 4、Z语言:
  • 第五章 总体设计
      • 三种阶段划分方式:
      • 1、总体设计的目的
      • 2、总体设计分两个阶段:
      • 3、总体设计详细过程9步:
      • 4、功能设计时设计模块
      • 5、模块化作用:
      • 6、模块化方式
      • 7、一般抽象过程就是层次分析的过程。
      • 8、原则:
      • 9、耦合程度:
      • 10、内聚程度:
      • 模块化:
      • 6、HIPO图:
      • 7、结构图:
      • 8、面向数据流的设计
      • 9、数据流即信息流分为变换流和事务流。
      • 10、变换流步骤:
      • 11、事务流步骤
  • 第六章 详细设计
      • 1、详细设计
      • 2、结构程序设计:
      • 3、常见的语句:
      • 4、人机界面设计
      • 5、三大黄金原则:
      • 6、四大问题:
      • 7、用户界面设计的过程
      • 8、程序流程图(程序框图):
      • 9、判定表:
      • 10、判定树
      • 11、过程设计语言PDL(伪码):
      • 12、面向数据结构的设计方法:
      • 13、程序复杂度度量方式:
  • 第七章 实现
      • 1、实现:
      • 2、编码:
      • 3、测试:
      • 4、计算机语言:
      • 5、高级语言选择标准:
      • 6、编码基本要求:
      • 7、编码风格:
      • 8、软件测试目的
      • 9、常用测试方法:
      • 10、测试步骤:
      • 11、单元测试
      • 12、集成测试
      • 13、回归测试:
      • 14、确认测试/验收测试:
      • 15、软件测试分类10个:
      • 16、白盒测试:
      • 17、黑盒测试:
      • 18、调试:
      • 19、软件可靠性:
      • 20、 相关量的符号
      • 21、估计错误总数的方法:
  • 第八章 维护
      • 1、软件开发八大阶段:
      • 2、软件维护:
      • 3、软件维护的工作量
      • 4、维护过程:
      • 5、维护机构构成:
      • 8、程序的修改步骤:
      • 9、软件的可维护性保证
      • 10、文档是影响软件可维护性的决定因素。
  • 第9章 面向对象方法学引论
      • 1、面向对象
      • 2、四个要点:
      • 3、面向对象方法论三个组成部分:
      • 4、优点:
      • 5、对象
      • 6、类
      • 7、实例
      • 8、消息
      • 9、方法
      • 10、属性
      • 11、封装
      • 12、继承
      • 13、多态:
      • 14、面向对象建模
      • 15、OMT
      • 16、三种模型:
      • 17、UML统一建模语言:
      • 19、对象模型使用UML的类图:
      • 20、动态模型:
      • 21、功能模型:
      • 22、功能模型和对象模型:
      • 23、动态模型和对象模型:
      • 24、动态模型和功能模型:
  • 第十章 面向对象分析
      • 1、面向对象分析OOA:
      • 2、要求:
      • 3、核心是:
      • 4、OOA三个子模型:
      • 5、五个层次:
      • 6、OOA的过程:
      • 7、OOA过程详解:
      • 8、三大模型关系:

第一章 软件工程概述

1、四种图

测试用例图:设计一个场景,软件在场景内运行,获得设计的执行结果。
类图:用图形显示模型的静态结构以及之间的关系。
时序图:通过图形描述对象之间发送消息的时间顺序,来显示他们之间的动态协作。
流程图:用图形描述算法和思路等。

2、计算机系统

是指适当的组织在一起的一系列系统元素的集合,这些系统元素互相配合、相互协作,通过对信息的处理而完成预先定义的目标。

计算机系统组成:
软件、硬件、人员、数据库、文档、过程。
计算机分为四个发展阶段:
	1.电子管计算机
	2.晶体管计算机
	3.中小规模集成电路计算机
	4.超大规模集成电路计算机

3、软件危机:

用户和开发人员信息不对等,计算机更新换代等问题引起软件开发目标和结果不匹配等问题。

产生原因:

(1)与软件本身的特点有关
(2)与软件开发与维护的方法不正确有关
1.忽视软件需求分析的重要性
2.认为软件开发就是写程序并设法使之运行(程序、文档和数据等)
3.轻视软件维护
解决办法:促进沟通交流和协作,将目标与结果尽可能匹配,用工程的角度看待软件开发的过程。

4、软件工程:

是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,是解决软件危机的方法方式,将正确的开发经验和技术以及维护方法结合起来。(PS:一套有效的开发软件和维护软件的方法)
IEEE:软件工程是(1)将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中;(2)(1)中所述方法的研究。

软件工程的基本原理 :

(分阶段,监督和控制质量,写文档,现代软件技术应用,高效,软件开发是动态发展的。)
用分阶段的生命周期计划严格管理
坚持进行阶段评审
实行严格的产品控制
采用现代程序设计技术
结果应能清楚地审查
开发小组的人员应该少而精
承认不断改进软件工程实践的必要性

软件工程包括两方面的内容:

1.技术(软件工程方法学):通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为范型。
2.管理:通过计划、组织和控制等一系列活动,合理地配置和使用各种资源,以达到既定目标的过程。

软件工程方法学3要素:

(1)方法:是完成软件开发的各项任务的技术方法,回答“怎样做”的问题;
(2)工具:是为运用方法而提供的自动的或半自动的软件工程支撑环境
(3)过程:需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

  1. 传统方法学(生命周期方法学或结构化范型)——强调自顶向下
  2. 面向对象方法学——强调主动地多次反复迭代(4个要点:对象,类,继承(关系重用),消息(数据的传递))
    面向对象与传统方法学对比:面向对象是迭代执行而传统的则是从顶向下依次执行不可反复。
    传统方法和面向对象是软件工程的程序设计方法中最本质的思想方法。
    传统方法以过程为中心,强调过程,功能和模块化,适用于数据少而操作多的问题;面向对象以对象为中心,强调对象,适用于以数据为主而操作较少的系统。

5、软件生命周期三个时期八个阶段:

软件定义(问题定义,可行性研究,需求分析);软件开发(概要设计,详细设计,编码和单元测试,综合测试);软件维护(运行维护)

6、软件过程:

开发的步骤,运用方法的顺序(思想)和各种文档资料的书写(思想的总结实现)等。(软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。过程定义了运用方法的顺序、应该交付的文档资料、为保证软件质量和协调变化所需要采取的管理措施,以及标志软件开发各个阶段任务完成的里程碑。
为获得高质量的软件产品,软件过程必须科学、有效。)

7、瀑布模型:

(顺序,规范,文档)
优点:采用规范的方法;严格规定每个阶段提交的文档;要求每个阶段交出产品必须经过验证。
a、按照软件工程的生命周期,自上而下依序完成,并且严格的检验每个阶段。
b、特点:自上而下的顺序性和依赖性;代码的推迟实现;严格的文档规范来保证质量。
c、优缺点和适用性:优点是保证开发文档的规范性,有质量保证和正确性的保证。
缺点是缺少实践检验。适用需求相对确定,周期短,技术成熟的软件工程。

8、快速原型模式:

a、无回溯,把大的功能模块细分子集模块,快速建立原型,完成软件开发。
b、本质特点是:快速。快速原型模型不带反馈环,软件产品的开发基本上是线性顺序进行的。

根据原型的不同作用,有三类原型模型:
探索型原型——用于开发的需求分析阶段
实验型原型——主要用于设计阶段
演化型原型——用于及早向用户提交一个原型系统
快速原型模型的运用方式:
抛弃策略——探索型和实验型采用此策略
附加策略——演化型快速原型采用此策略

9、增量模型:

a、把相互作用的模块按照时间顺序依次完成。
b、优点和难点:人员灵活成本低,核心功能可提前产品化,用户使用过程可学习培养。难点是架构复杂,整体和增量模块独立化之间的矛盾,集成难度高。
c、适用范围:开始成本低人员少,增量功能多,需求经常改变的软件开发过程

10、螺旋模型:

a、综合各种模型降低风险。(基本思想:使用原型及其他方法来尽量降低风险。把它看作在每个阶段之前都增加了风险分析过程的快速原型模型。)
b、优点和缺点:风险低,提前预测。软件原型可重用,减少测试,并且维护和开发整合在一起。缺点是需要较高的风险预测经验,迭代复杂时开发周期加长。
c、适用范围:大型高风险项目或内部大型项目。

11、其他模型:

喷泉模型和形式化方法模型,RUP统一过程等。

第二章 可行性研究

1、可行性研究报告

找到问题计算成本(计算效益率)

2、可行性研究目的:

不是解决问题,而是确定问题是否值得去解决。(实质:进行一次大大压缩简化了的系统分析和设计的过程, 也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。)(系统分析员需要具备抽象(得到模型)分析的能力。)

3、可行性包括:

技术,经济,操作,运行和法律等方面的可行性。

4、可行性研究过程(循环):

(1)复查系统规模和目标(问题定义)
(2)研究当前系统
(3)导出新系统的高度逻辑模块(目标系统逻辑研究)
(4)进一步定义问题
在循环完1234后 (5)导出和评价供选择的解法(得出结论,包括剔除不可行的和计算成本效益后保留结论及进度表)
(6)推荐行动方针
(7)草拟开发计划
(8)书写文档提交审查

5、可行性分析报告之系统流程图

图形化系统逻辑模型。

6、数据流图

是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程。(对信息的加工处理的图形化描述,包括输入,传输和输出。)
(补充:数据流图中的事务应该具有独占性,防止产生冲突——数据库事务管理的来源)
数据源点/终点:通常是人或部门,可重复表示;
处理:一个处理框可以代表一系列程序、单个程序或程序的一个模块;
数据存储:可以表示一个文件、文件的一部分、数据库的元素或记录的一部分等,数据存储是处于静止状态的数据;
数据流:描绘所有可能的数据流向,而不应该描绘出现某个数据流的条件 ,数据流是处于运动中的数据。


7、数据字典:

数据信息的集合,也就是对数据流图中包含的所有元素的定义的集合。(数据流图和数据字典共同构成系统的逻辑模型)
组成:数据流、数据流分量(即数据元素)、数据存储、处理
记录数据元素的下列信息:一般信息、定义、使用特点、控制信息、分组信息
定义数据方法:对数据指定向下分解
数据组成方式(三种基本类型):
顺序 以确定次序连接两个或多个分量;
选择 从两个或多个可能的元素中选取一个;
重复 即把指定的分量重复零次或多次。
附加类型:可选 即一个分量是可有可无的(重复零次或一次)。
符号: =意思是等价于(或定义为); +意思是和(即,连接两个分量);
[ ]意思是或(即,从方括弧内列出的若干个分量中选择一个),通常用“|”号隔开供选择的分量;
{ }意思是重复(即,重复花括弧内的分量);常常使用上限和下限进一步注释表示重复的花括弧。
( )意思是可选(即,圆括弧里的分量可有可无)。

8、 成本/效益分析的目的

正是要从经济角度分析开发一个特定的新系统是否划算,从而帮助客户组织的负责人正确地作出是否投资于这项开发工程的决定。
成本估计法:代码行技术,任务分解技术,自动估计成本技术(成本工具计算软件的使用)

9、成本/效益分析:

三个组成部分——成本估计,运行费用,经济效益;用来计算开发成本效益是否值得进行开发。

10、成本/效益分析方法:

1、货币的时间价值2、投资回收期3、纯收入4、投资回收率

第三章 软件需求分析

(一、重要性)

1、软件需求分析决定软件开发是否成功。(最重要的)

a、是开发人员理解业务的前提条件。
b、项目进度估算的前提条件。
c、是用户和开发人员之间的桥梁,必须双方都确定才进行后续开发。
d、需求分析是基线,是开发的前提条件。(房子的地基)
e、也是软件测试阶段的前提条件。

(前提条件和桥梁)
(软件需求是决定软件开发是否成功的一个关键因素
需求分析可以帮助开发人员真正理解业务问题
需求分析是估算成本和进度的基础
需求分析可以避免建造错误的系统,从而减少不必要的浪费
软件规格说明有助于开发人员与客户在“系统应做什么”问题上达成正式契约
需求分析形成了软件开发的基线,有助于管理软件的演化和变更
软件需求是软件质量的基础,为系统验收测试提供了标准。 )
(项目经理,程序员,测试员都需要看需求分析文档,整个开发过程起点是需求分析文档

本文标签: 软件工程知识点