软件工程总结(中文版)2

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

早在我选择软件专业的时候,我一直认为软件工程无非是努力的敲代码,从敲代码的过程中去体会各行代码的意思和用处,在没学软件工程时我一直都是努力的敲代码去学习软件开发这门专业。学了软件工程以后,我就感觉我以前的学习方法是错误的。以前我只注重于代码,而不注重理论知识以及编程的思路,程序的架构。以至于在些程序时没有写程序的思路,不能形成程序的架构。下面是我对软件工程这门课知识点的概括:

●软件:软件是能够完成预定功能和性能的可执行的计算机程序和使程序正

常执行所需要的数据,加上描述程序的操作和使用的文档。

软件的特征:(1)软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。(2)软件是通过人们的智力活动,把知识与技术转化成信息的一种产品(3)软件成为产品后,其生产只是简单的拷贝,不同于硬件制造。

(4)维护过程比硬件复杂的多,甚至会引发新的错误。

软件危机:指的是软件开发和维护过程中遇到的一系列严重问题。

出现软件危机的原因:

(1)软件维护费用急剧上升,直接威胁计算机应用的扩大。

(2)软件生产技术进步缓慢

软件工程:是指导计算机软件开发和维护的工程学科。

软件生存周期:一个软件从定义到开发、使用和维护,直到最终被弃用,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。

软件生存周期一般可分为以下阶段:

1.问题定义

2.可行性研究。3需求分析4.总体(概要)设计。5.详细设计。6.编码与单元测试。7.综合测试。8.软件维护

软件开发模型(software process models):软件开发模型是软件开发全过程、软件开发活动以及它们之间关系的结构框架。

瀑布模型(Waterfall model)即生存周期模型,由B.M.Boehm提出,是软件工程的基础模型。其核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作。采用结构化的分析与设计方法,将逻辑实现与物理实现分开。

瀑布模型强调文档的作用,并要求每个阶段都要仔细验证。

快速原型模型(Prototyping model):实现客户或未来的用户与系统的交互。增量模型(Phased development): increments and iterations(反复递增)

螺旋模型(Spiral model):将瀑布模型和快速原型模型结合起来,强调了其他模型

所忽视的风险分析,特别适合于大型复杂的系统。

敏捷开发(Agile methods):敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。

可行性研究:压缩简化了的系统分析和设计的过程,也就是说在较高层次上以较抽象的方式进行设计的过程。不是解决问题,而是确定问题是否可解和是否值得解

系统流程图是概括地描绘物理系统的传统工具。它表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程。

结构化的分析方法使用数据流图DFD与数据字典DD来描述。其核心思想是分解化简问题,将物理与逻辑表示分开,对系统进行数据与逻辑的抽象。概括一下,结构化分析方法就是面向数据流自顶向下逐步求精进行需求分析的方法。

数据流图(DFD):描绘信息流和数据从输入移动到输出的过程中所经受的变换。

数据字典(DD)作用:对软件中的每个数据规定一个定义条目,以保持数据在系统中的一致性。

27.ER diagram have three core constructs(P--158)ER 图表有三个核心构造

An entity: depicted as a rectangle, represents a collection of real-world objects that have common properties and behaviors描述为一个的矩形表示一个实际

的对象的集合具有公共属性和行为

A relationship: depicted as an edge between two entities, with diamond in the middle

of the edge specifying(指定)the type of relationship描述为一个两个实

体之间的边缘

An attribute: an annotation(注解) on an entity that describes data or properties associated with the entity描述数据或与该实体相关联的属性的实体上的

注释

需求分析(requirements analysis)的任务:需求分析所要做的工作是深入描述软件的功能和性能,确定软件设计的限制和软件同其它系统元素的接口细节,定义软件的其它有效性需求。

一般说来,需求分析阶段的任务及工作:

1、确定对系统的综合要求

⑴功能要求(functional requirement)⑵性能要求⑶运行要求⑷未来可能

的扩充要求 (5) 可靠性和可用性需求 (6) 出错处理与安全需求 (7) 接口需求 (8) 约束因素(Design constraint)等

2、分析系统的数据要求

⑴建立概念模型:⑵形象描绘数据结构⑶数据结构规范化

3、导出逻辑模型

4、修正计划:重估成本、进度等

5、开发原型系统以检验方案的正确性及系统是否满足需求

需求分析(requirements analysis)的原则:其基本原则可概括为: (1)必须能够表达和理解问题的数据域和功能域;(2)按自顶向下、逐层分解问题;(3)要给出系统的逻辑视图和物理视图。

26.Requirements definition:

a complete listing of everything the customer wants to achieve完整列表的客户希望

实现的一切

Describing the entities in the environment where the system will be installed 描述在将安装在系统环境中的实体

Requirements specification(需求规格):

restates (重申)the requirements as a specification of how the proposed(提出)

system shall behave

软件设计的任务:把分析阶段产生的软件需求说明转换为用适当方法表示的软件设计文档。不管采用何种软件设计方法,软件设计一般都包括数据设计、体系结构设计、接口设计和过程设计等内容。

结构化设计方法:是一种面向数据流的设计方法,中心任务就是把用DFD图表示的系统分析模型转换为软件结构的设计模型,确定软件的体系结构与接口。

数据流的类型:

面向数据流的设计方法把信息流映射成软件结构,信息流的类型决定了映射的方法。信息流有下述两种类型:变换流和事务流。

结构化分析方法:

模块:是一个拥有明确定义的输入、输出和特征的程序实体。模块的所有输入都是实现功能必不可少的,所有输出都有动作产生。

模块化:就是把程序划分成若干个模块,每个模块具有一个子功能,把这些模块集总起来组成一个整体,可以完成指定的功能,实现问题的要求。

相关文档
最新文档