软件工程复习

发布 2022-01-11 22:22:28 阅读 2707

第1章。

软件:计算机程序及说明程序的各种文档。“程序”是计算任务的处理对象和处理规则的描述;“文档”是有关计算机程序功能、设计、编制、使用的文字或图形资料。

软件生产的发展:程序设计时代,程序系统时代,软件工程时代。

软件工程:用科学知识和技术原理来定义、开发、维护软件的一门学科。

软件工程性质:它涉及计算机科学、工程科学、管理科学、数学等领域,计算机科学着重于原理和理论,而软件工程着重于如何建造一个软件系统。软件工程要用工程科学中的观点来进行费用估算、制定进度、制定计划和方案。

软件工程要用管理科学中的方法和原理进行软件生产的管理。软件工程要用数学的方法建立软件开发中的各种模型和各种算法,如可靠性模型,说明用户需求的形式化模型等。

软件工程研究的主要内容是软件开发技术和软件开发管理两个方面。在软件开发技术中,主要研究软件开发方法、软件开发过程、软件开发工具和环境。在软件开发管理中,主要是研究软件管理学、软件经济学、软件心理学等。

软件工程面临的问题:软件费用;软件可靠性;软件维护;软件生产率;软件重用。

软件工程过程:获取过程;**过程;开发过程;操作过程;维护过程;管理过程;支持过程。

软件生存周期:可行性分析和项目开发计划;需求分析;概要设计;详细设计;编码;测试;维护。

软件生存周期模型是描述软件开发过程中各种活动如何执行的模型。

1. 瀑布模型是将软件生存周期各个活动规定为依线性顺序连接的若干阶段的模型。

2. 增量模型是一种非整体开发的模型。

3. 螺旋模型是一种整体开发的模型螺旋模型将瀑布模型与增量模型结合起来,加入了风险分析,用于复杂的大型软件开发;分为几个螺旋周期:第一,制定计划;第二,风险分析;第三,开发实施;第四,用户评估。

4. 喷泉模型是一种以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法。喷泉模型使开发过程具有迭代性和无间隙性。

5. 基于知识的模型又称智能模型,它把瀑布模型和专家系统结合在一起。

6. 变换模型是一种适合于形式化开发方法的模型。从软件需求形式化说明开始,经过一系列变换,最终得到系统的目标程序。

软件开发方法:

1. 结构化方法由结构化分析、结构化设计、结构化程序设计构成。它是一种面向数据流的开发方法。

结构化方法总的指导思想是自顶向下、逐步求精。它的基本原则是功能的分解与抽象,它是软件工程中最早出现的开发方法,特别适合于数据处理领域的问题。

2. jackson方法是一种面向数据结构的开发方法。

3. 维也纳开发方法(vdm)是一种形式化的开发方法,软件的需求用严格的形式语言描述。

4. 面向对象的开发方法包括面向对象分析、面向对象设计、面向对象实现。面向对象开发方法有booch方法、coad方法

第2章。软件可行性研究的目的就是用最小的代价在尽可能短的时间内确定该软件项目是否能够开发,是否值得去开发。注意,可行性研究的目的不是去开发一个软件项目,而是研究这个软件项目是否值得去开发,其中的问提能否解决。

可行性研究实质上是要进行一次简化、压缩了的需求分析、设计过程,要在较高层次上以较抽象的方式进行需求分析和设计过程。

可行性研究的任务。

1. 技术可行性:对要开发项目的功能、性能、限制条件进行分析,确定在现有的资源条件下,技术风险有多大,项目是否能实现。

包括:开发的风险;资源的有效性;技术;开发人员在评估技术可行性时,一旦估计错误,将会出现灾难性后果。

2. 经济可行性包括成本――效果分析、公司经营长期策略、开发所需的成本和资源、潜在的市场前景。

3. 社会可行性包括:合同、责任、侵权、用户组织的管理模式及规范,其他一些技术人员常常不了解的陷阱等。

典型的可行性研究有下列步骤:确定项目规模和目标;研究正在运行的系统;建立新系统的高层逻辑模型;导出和评价各种方案;推荐可行的方案;编写可行性研究报告。

可行性研究报告的主要内容:引言;可行性研究前提;对现有系统的分析;所建议系统的技术可行性分析;所建议系统的经济可行性分析;社会因素可行性分析;其他可供选择方案;结论意见。

成本――效益分析首先是估算将要开发的系统的开发成本,然后与可能取得的效益进行比较和权衡。

效益分有形效益和无形效益两种:有形效益可以用货币的时间价值、投资**期、纯收入等指标进行度量;无形效益主要从性质上、心理上进行衡量,很难直接进行量的比较。

投资**期就是使累计的经济效益等于最初的投资费用所需的时间。

项目的纯收入,也就是在整个生存周期之内的累计经济效益(折合成现在值)与投资之差。

项目开发计划:项目概述;实施计划;人员组织及分工;交付期限。

第3章。在进行可行性研究和软件计划以后,如果确认开发一个新的软件系统是必要的而且是可能的,那么就进入需求分析阶段。

需求分析是指,开发人员要准确理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式功能规约(需求规格说明)的过程。

它的难点主要体现在以下几个方面:问题的复杂性;交流障碍;不完备性和不一致性;需求易变性。

需求分析的基本任务是要准确地定义新系统的目标,为了满足用户需要,回答系统必须“做什么”的问题。 本阶段要进行以下几方面的工作:

1. 问题识别:功能需求;性能需求;环境需求;用户界面需求

2. 分析与综合,导出软件的逻辑模型

3. 编写文档:需求规格说明书;初步用户使用手册;确认测试计划;修改完善软件开发计划。

结构化分析(sa)是面向数据流进行需求分析的方法。 sa方法利用图形等半形式化的描述方式表达需求,简明易懂,用它们形成需求说明书中的主要部分。这些描述工具是:

数据流图;数据字典;描述加工逻辑的结构化语言,判定表、判定树。

1. “数据流图(dfd)”描述的分解,即描述系统由哪几部分组成,各部分之间有什么联系等等。

2. “数据字典”定义了数据流图中每一个图形元素。

3. 结构化语言、判定表或判定树则详细描述数据流图中不能被再分解的每一个加工。

数据流图基本符号:

1. 数据流是数据在系统内传播的路径,因此由一组成分固定的数据项组成。

2. 加工(又称数据处理)。对数据流进行某些操作或变换。

3. 数据存储(又称文件),指暂时保存的数据,它可以是数据库文件或任何形式的数据组织。

4. 数据源点或终点:是本软件系统外部环境中的实体,统称外部实体。

数据字典(dd)就是用来定义数据流图中的各个成分的具体含义的,它和数据流图共同构成了系统的逻辑模型,是需求规格说明书的主要组成部分。

数据字典的内容及格式:

数据项是组成数据流和数据存储的最小元素。 数据流条目;数据存储条目;数据项条目;加工条目数据字典中的加工逻辑主要描述该加工“做什么”,即实现另工的策略,而不是实现加工的细节,它描述如何把输入数据流变换为输出数据流的加工规则。

加工逻辑也称为“**明”,描述加工逻辑一般用以下三种工具:结构化语言、判定表、判定树。

描述加工逻辑三种工具的关系:结构化语言是介于自然语言和形式语言之间的一种半形式语言。它的结构可分成外层和内层两层:

外层用来描述控制结构,采用顺序、选择、重复三种基本结构;内层对于顺序执行和循环执行的动作,用结构化语言描述。对于存在多个条件复杂组合的判断问题,用判定表和判定树。

idef0:用来描述系统的功能活动及其联系,建立系统的功能模型。

idef1:用来描述系统的信息及其联系,建立系统的信息模型。

idef2:用来进行系统模拟,建立系统的动态模型。

小结:传统的sa方法主要用于数据处理方面的问题,主要工具dfd体现了系统“做什么”的功能,但它仅是一个静态模型,没有反映处理的顺序,即控制流程。 形式化方法是将需求规格说明用形式规约语言来描述。

典型的有基于模型的z语言及vdm开发方法。

第4章。在软件需求分析阶段,已经搞清楚了软件“做什么”的问题,并把这些需求通过规格说明书描述了出来,这也是目标系统的逻辑模型。进入了设计阶段,要把软件“做什么”的逻辑模型变换为“怎么做”的物理模型,即着手实现软件的需求,并将设计的结果反映在“设计规格说明”文档中,软件设计是一个把软件需求转换为软件表示的过程,最初这种表示只是描述了软件的总的体系结构,称为软件概要设计或结构设计。

然后对结构进一步细分,称为详细设计或过程设计。

概要设计的基本任务:

1. 设计软件系统结构(简称软件结构)――采用某种设计方法,将一个复杂的系统按功能划分成模块;确定每个模块的功能;确定模块之间的接口,即模块之间传递的信息;评价模块结构的质量。 软件结构设计是以模块为基础的,在需求分析阶段,已经把系统分解为层次结构。

设计阶段,以需求分析的结果为依据,从实现的角度进一步划分为模块,并组成模块的层次结构。

2. 数据结构及数据库设计:数据库的设计指数据存储文件的设计(概念设计、逻辑设计、物理设计),数据库的“概念设计”、“逻辑设计”分别对应于系统开发中的“需求分析”与“概要设计”,而数据库的“物理设计”与模块的“详细设计”相对应。

3. 编写概要设计文档(概要设计说明书、数据库设计说明书、用户手册、修订测试计划,对测试策略、方法、步骤提出明确要求。)

4. 评审:对设计部分是否完整地实现了需求中规定的功能、性能等要求,设计方案的可行性,关键的处理及内外部接口定义正确性、有效性,各部分之间的一致性等等都一一进行评审。

模块的基本属性:

1. 接口指模块的输入与输出;

2. 功能指模块实现什么功能;

3. 逻辑描述内部如何实现要求的功能及所需的数据;

4. 状态指该模块的运行环境,即模块的调用与被调用关系。

5. 功能、状态与接口反映模块的外部特性,逻辑反映它的内部特性。

模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分为若干模块的过程。模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个系统所要求的功能。

模块化的依据:开发一个大而复杂的软件系统,将它进行适当的分解,不但可降低其复杂性,还可减少开发工作量,从而降低开发成本,提高软件生产率。

抽象是认识复杂现象过程中使用的思维工具,即抽出事物本质的共同的特性而暂不考虑它的细节,不考虑其他因素。 通过抽象,可以确定组成软件的过程实体。通过信息隐蔽,可以定义和实施对模块的过程细节和局部数据结构的存取限制。

信息隐蔽指在设计和确定模块时,使得一个模块内部包含的信息(过程或数据),对于不需要这些信息的其他模块来说,是不能访问的。

软件工程复习

单选填空简答思考题。1 传统的软件瀑布生命模型包括哪六个方面?需求 分析 设计 实现 交付后维护 退役2 传统瀑布生命模型的中交付后维护包括哪三种?改正性维护 适应性维护 完善性维护3 现代维护和传统维护的观点有何不同?1 传统维护的观点是先开发后维护。2 现代维护的观点是无论是在软件安装前还是安装...

软件工程复习

软件工程复习资料。备注 1.老师反复强调我们之前做过的作业要熟练掌握 需求陈述 实验课画的模型 自己画。的数据流图 2 蓝颜色的字都是老师上课补充的,还有很多需要自己去补充,欢迎修正完善。核心问题 在考试做大是要表述清楚详细,关。键词要有 问题定义 专用名词表要解决的问题是什么?达要准确,不能更改 ...

软件工程 复习

1.概念 软件危机是指在计算机软件开发 使用与维护过程中遇到的一系列严重问题。2.为什么会产生软件危机?当软件开发技术的进步不能跟上硬件技术的进步,未能满足发展的要求,致使软件开发中遇到的问题找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。3.软件危机的表现 经费预算经常突破...