目录
一、主要内容

二、软件工程
1、软件工程的概念
-
所谓软件工程,是指运用计算机科学、数学管理科学等相关原理,以工程化的思想和方法,来解决软件问题的工程。
2、软件工程的目的
-
提高软件的生产率;
-
提高软件质量、降低软件成本。
3、软件危机的概念(软件工程的来由)
-
八九十年代随着软件行业的发展,以前的开发方法已经无法适应当前的状态,开发出来的软件质量问题比较多,经常延期不能按时交付、成本越来越高,形成了恶性循环,也就是是常说的“软件危机”。
-
为了解决软件危机,就引入了项目工程的思想来进行软件开发,也就是软件工程。
4、软件工程的三要素
-
方法:为完成开发各项软件任务采用的技术叫做方法。
-
工具:为了利用方法所需的特定的支撑环境。
-
过程:为了获得高质量低成本的软件,要完成的一系列的任务的框架。
5、考点:软件工程提出的原因/基本目标


6、软件工程的基本要素

二、软件的生命周期

1、软件生命周期的阶段
(1)可行性分析与项目开发计划
-
主要是确定开发目标和可行性,可行的基础上制定开发计划。
-
也就是明确软件要解决的问题是什么,解决该问题有没有什么可行的办法,有可行的办法后,又需要多少的费用,多少的资源,多长时间?以上问题都解决了,就达到了可行性分析与项目开发的计划。
-
主要产物:可行性分析报告和项目计划书
-
注意:不同年份考题对该阶段称呼不同,有可能会称其“系统规划”。
(2)需求分析
-
需求产生后,作为项目开发人员需要去理解需求,把需求变成软件实现层面的理解,这就需要进行需求分析。
-
这一阶段并不是具体的去解决这个需求,而是确定软件需要做些什么才能解决这个问题。确定了系统要做些什么,也就确定了系统要实现的功能、性能、界面等。通过对系统的一系列分析之后,就能得到一个系统的“逻辑模型”。
-
主要产物:软件需求说明书
(3)软件设计
-
系统中把概要设计、详细设计统称为“软件设计”。
-
通过软件设计,就能得到软件系统的“物理模型”。
-
概要设计:这一阶段就是设计系统的结构,明确软件由哪些模块构成,这些模块结构的层次是什么样的、这些模块之间是怎么进行调用的、模块之间如何进行通信、每个模块的功能等;除了考虑模块之外还需考虑系统整体的数据结构、数据库结构等。这一阶段主要产物是“概要设计书”。对测试来讲,这一阶段还需确认集成测试相关的东西。
-
详细设计:设计的内容比概要更细。这一阶段主要是完成每一个模块所对应的功能的具体的描述,也就是说要把每个模块的功能变成一系列的程序执行步骤的逻辑代码,也就是生成“程序流程图”或者“程序框图”。例如实现一个功能需要先通过代码做什么,在通过代码做什么,哪一些需要循环,哪一些需要判断等。主要产物是“详细设计说明书”。
(4)编码
-
把软件设计阶段的程序流程图变成具体的代码。也就是把每一个模块的控制结构写成具体的计算机程序代码。
-
也就是把软件设计阶段的物理模型变成可“实际运行”的代码。
(5)测试
-
针对编写的程序模块,检查各个模块有没有实现其功能,给出相关的评测报告。
(6)维护
-
测试完成后,就会将软件放到生产环境中,就会进入运维阶段。
-
运维阶段是信息系统生命周期中,花钱最多、延续时间最长的活动。
2、考点:软件生命周期各阶段概述

三、软件定义阶段
1、基于瀑布模型的软件的生命周期
(1)软件定义阶段
(2)软件开发阶段
(3)运行维护阶段

2、软件定义阶段的三个阶段
-
在进行可行性分析时,要想明确软件要解决什么问题,首先需要对要解决的问题有一个明确的定义,这样才好明确软件开发的目标,也好对软件开发的可行性进行分析。
-
软件定义包括 :问题定义、可行性研究、需求分析。
3、考点:软件定义阶段的任务

四、需求的层次
1、需求的三个层次
(1)业务需求
(2)用户需求
(3)系统需求
2、业务需求
-
企业或者用户对于软件要实现的目标的要求。
-
是这个系统最高的需求层次目标,确定了系统开发的范围。
3、用户需求
-
用户的具体目标、或者说是用户要求系统必须要完成的任务。
4、系统需求
-
是从系统角度,来说明软件的需求。
-
包括 功能需求、非功能需求、设计约束;实际上还有行为需求,是通过系统的特性表现出来的,一般不考。
-
功能需求:就是在系统中必须实现的软件功能。
-
非功能需求:指系统必须具备的一些属性,比如说系统的安全性、效率、可维护性、性能、可扩展性等。
-
设计约束:在进行软件设计时的一些限制条件,例如限制数据库要采用国产自主的数据库,操作系统是哪个,要用哪个方法实现等。
5、考点:需求分析的内容/产物

五、需求的特征
1、完整性
-
每一项需求都必须描述的非常清楚,使后面设计的人员可以获得所需所必要的信息。
2、正确性
-
要准确的描述要开发的功能 。
3、可行性
-
在已知的环境和系统中,是可以实现的。
4、可验证性
-
每一项需求是否可以通过测试用例进行检测,。
5、必要性
-
每项需求都是编写文档的根源,也就是说每项需求都能追溯到具体的用户的需求。
6、无歧义性(一致性)
-
对所有的需求,读者都只能看到一个明确的统一的解释。
7、考点:需求分析的特征

六、概要设计(总体设计)
1、设计软件系统的总体结构
-
就是把系统切割成很多个小部分,然后这些小部分是怎么进行组装的,怎么关联的。
(1)划分功能模块
(2)模块功能和职责
(3)模块间的调用关系
(4)模块间的信息传递
(5)评价模块结构质量
2、数据结构及数据库设计
-
在需求分析、详细设计都会涉及这一部分。
-
因为在概要设计时对数据结构和数据库设计比较多,所以划分到概要设计中了。其中数据库设计有时会放到详细设计部分。
3、考点:概要设计的内容

七、详细设计
1、代码设计
-
主要是信息的代码,就是指说信息在系统中如何进行管理。
2、输入/输出设计
-
模块要接收的数据的数量、类型等。
3、用户界面设计
4、处理过程设计
-
模块要实现特定的功能,算法、具体的步骤是怎样的。
5、其他设计任务
(1)标准化设计
(2)描述设计结果
(3)拟定实施方案
6、考点:详细设计的内容
