文档库 最新最全的文档下载
当前位置:文档库 › 软件工程期末复习资料一

软件工程期末复习资料一

软件工程期末复习资料一
软件工程期末复习资料一

《软件工程》期末复习

第一章软件工程概述

一、重点掌握的内容:

软件和软件工程的基本概念

二、一般掌握内容:

软件生存周期及软件开发的各种模型。

三、主要知识点:

软件:软件定义由以下三部分组成:

(1)在运行中能提供所希望的功能和性能的指令集(即程序);

(2)使程序能够正确运行的数据结构;

(3)描述程序研制过程、方法所用的文挡。

软件是一种产品,同时又是开发和运行产品的载体。作为一种产品,它表达了由计算机硬件体现的计算潜能。作为开发运行产品的载体,软件是计算机工作的基础、信息通信的基础,也是创建和控制其他程序的基础。

软件的特点:①软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。

②软件是通过人们的智力活动,把知识与技术转化成信息的一种产品,是在研制、开发中被创造出来的。③在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题。④软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。⑤软件的开发至今尚未完全摆脱手工的开发方式。⑥软件的开发费用越来越高,成本相当昂贵。

软件的分类:软件依据不同的标准,可划分为不同的分类。

软件工程:是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。软件工程准则可以概括为六条基本原理:(1)用分阶段的生存周期计划严格管理;(2)坚持进行阶段评审;(3)实行严格的产品控制;(4)采用现代程序设计技术;(5)应能清楚地审查结果;(6)合理安排软件开发小组的人员。

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

软件工程的基本内容:软件工程学的内容可包括理论、结构、方法、工具、环境、管理、规范等。

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

·问题定义

·需求分析与可行性研究

·设计

·编码

·测试

·运行与维护

软件生存期也可以分为三个大的阶段:计划阶段。开发阶段和维护阶段。

软件开发模型:软件开发模型是跨越整个软件生存周期的系统开发、运作、维护所实施的全部工作和任务的结构框架。瀑布模型即生存周期模型,由B.M.Boehm提出,是软件工程的基础模型。其核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作。

采用结构化的分析与设计方法,将逻辑实现与物理实现分开。此外,还有螺旋模型、第四代技术模型、原型模型、构件组装模型、混合模型等软件开发模型。

第二章可行性研究

一、重点掌握的内容:

可行性研究的系统流程图

二、一般掌握内容:

可行性研究的任务和步骤,成本效益分析

三、主要知识点:

系统流程图:系统流程图是描绘物理系统的传统工具。它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件(程序,文件,数据库,表格,人工过程等等)。系统流程图表达的是部件的信息流程,而不表示对信息进行加工处理的控制过程。

系统流程图的功能:1.制作系统流程图的过程是系统分析员全面了解系统业务处理概况的过程,它是系统分析员作进一步分析的依据。2.系统流程图是系统分析员、管理人员、业务操作人员相互交流的工具。3.系统分析员可直接利用系统流程图画出可以实现计算机处理的部分。4.可利用系统流程图来分析业务流程的合理性。

可行性研究的任务:是用最小的代价在尽可能短的时间内确定问题是否能够解决。一般说来,应从经济可行性、技术可行性、运行可行性、法律可行性和开发方案等方面研究可行性。

可行性研究的步骤:可行性研究的步骤分为九个步骤。

成本效益分析:成本/效益分析的目的是要从经济角度分析开发一个特定的新系统是否可行,从而帮助使用部门负责人正确地做出是否投资于这项开发工程的决定。几种度量效益的方法:1.货币的时间价值;2.投资回收期;3.纯收入。

第三章需求分析

一、重点掌握的内容:

需求分析的方法和面向数据流的分析方法。

二、一般掌握内容:

需求分析的任务和原则。

三、主要知识点:

需求分析的方法:需求分析方法由对软件的数据域和功能域的系统分析过程及其表示方法组成,它定义了表示系统逻辑视图和物理视图的方式,大多数的需求分析方法是由数据驱动的,也就是说,这些方法提供了一种表示数据域的机制,分析员根据这种表示,确定软件功能及其他特性,最终建立一个待开发软件的抽象模型,即目标系统的逻辑模型。

面向数据流的需求分析方法:结构化分析方法是面向数据流进行需求分析的方法。结构化分析方法使用数据流图DFD与数据字典DD来描述,面向数据流问题的需求分析适合于数据处理类型软件的需求描述。其核心思想是分解化简问题,将物理与逻辑表示分开,对系统进行数据与逻辑的抽象。具体来说,结构化分析方法就是用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。重点掌握结合实例画数据流图和定义数据字典。

需求分析的任务:它的基本任务是准确地回答“系统必须做什么?”这个问题。需求分析所要做的工作是深入描述软件的功能和性能,确定软件设计的限制和软件同其它系统元素的接口细节,定义软件的其它有效性需求。需求分析的任务不是确定系统如何完成它的工作,

而是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。

一般说来,需求分析阶段的任务包括下述几方面:

①确定对系统的综合需求

对系统的综合需求主要有:系统功能需求、系统性能需求、运行需求、将来可能提出的需求。

②分析系统的数据需求

③导出系统的逻辑模型

就是在理解当前系统“怎样做”的基础上,抽取其“做什么”的本质,明确目标系统要“做什么”,可以导出系统的详细的逻辑模型。具体做法是:首先确定目标系统与当前系统的逻辑差别;然后将变化部分看作是新的处理步骤,对功能图(一般为数据流图)及对象图进行调整;最后由外及里对变化的部分进行分析,推断其结构,获得目标系统的逻辑模型。通常用数据流图、数据字典和主要的处理算法描述这个逻辑模型。

④修正系统开发计划

在经过需求分析阶段的工作,分析员对目标系统有了更深入更具体的认识,因此可以对系统的成本和进度做出更准确的估计,在此基础上应该对开发计划进行修正。

⑤开发原型系统

使用原型系统的主要目的是,使用户通过实践获得关于未来的系统将怎样为他们工作的更直接更具体的概念,从而可以更准确地提出和确定他们的要求。

需求分析的步骤:1.调查研究;2.分析与综合;3.书写文档;4.需求分析评审

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

第四章概要设计

一、重点掌握的内容:

概要设计的过程和方法

二、一般掌握内容:

概要设计的文档与评审

三、主要知识点:

概要设计任务:

①系统分析员审查软件计划、软件需求分析提供的文档,提出最佳推荐方案,用系统流程图,组成系统物理元素清单,成本效益分析,系统的进度计划,供专家审定,审定后进入设计。

②确定模块结构,划分功能模块,将软件功能需求分配给所划分的最小单元模块。确定模块间的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略。

③编写概要设计说明书,用户手册,测试计划,选用相关的软件工具来描述软件结构,结构图是经常使用的软件描述工具。选择分解功能与划分模块的设计原则,例如模块划分独立性原则,信息隐蔽原则等。

概要设计过程:概要设计要先进行系统设计,复审系统计划与需求分析,确定系统具体的实施方案;然后进行结构设计,确定软件结构。

软件设计的概念与原则:

①将软件划分成若干独立成分的依据。

②如何表示不同的成分内的功能细节和数据结构。

③如何统一衡量软件设计的技术质量。

其中有几个概念:1.模块化:就是把程序划分成若干个模块,每个模块具有一个子功能,

把这些模块集总起来组成一个整体,可以完成指定的功能,实现问题的要求。2. 抽象:就是抽出事物的本质特性而暂时不考虑它们的细节。3. 信息隐蔽:模块中所包括的信息不允许其它不需要这些信息的模块调用。4. 信息局部化:是指把一些关系密切的软件元素物理地放得彼此靠近。5. 模块独立性:是软件系统中每个模块只涉及软件要求的具体子功能,而和软件系统中其他的模块接口是简单的。模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果。6. 耦合:是对一个软件结构内各个模块之间互连程度的度量。耦合强弱取决于模块间接口的复杂程度,调用模块的方式,以及通过接口的信息。7. 内聚:标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。

概要设计的方法:面向数据流的设计方法把信息流映射成软件结构,信息流的类型决定了映射的方法。面向数据流的设计要解决的任务,就是上述需求分析的基础上,将DFD图映射为软件系统的结构。换句话说,这类设计方法允许把用DFD图表示的系统逻辑模型方便地转换成对于软件结构的初始设计描述。理解基本概念:信息流(包括变换流和事务流)、抽象与逐步求精;模块化与信息隐藏;软件总体结构、数据结构与软件过程。

面向数据结构的分析设计方法:

①Jackson系统开发方法(JSD): Jackson系统开发方法(JSD,Jackson System

Development)是一种典型的面向数据结构的分析设计方法,它是以信息驱动的,是将信息转换成软件的程序结构。

② Warnier方法:Warnier程序设计方法是由法国人J.D.Warnier提出的另一种面向

数据结构的设计方法,又称为逻辑构造程序的方法,简称LCP(Logical Construction of Programs)方法。Warnier方法的原理和Jackson方法类似,也是从数据结构出发设计程序,但是这种方法的逻辑更严格。

学会撰写概要设计的文档并能评审出概要设计文档是否符合要求。概要设计说明书的主要内容及结构。

第五章详细设计

一、重点掌握的内容:

详细设计的任务和方法

二、一般掌握内容:

详细设计的原则及详细设计规格与评审

三、主要知识点:

详细设计的任务:详细设计就是要在概要设计的结果的基础上,考虑“怎样实现”这个软件系统,直到对系统中的每个模块给出足够详细的过程性描述。主要任务如下:①为每个模块确定采用的算法,选择某种适当的工具表达算法的过程,写出模块的详细过程性描述;

②确定每一模块使用的数据结构;③确定模块接口的细节,包括对系统外部的接口和用户界面,对系统内部其它模块的接口,以及模块输入数据、输出数据及局部数据的全部细节。④要为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定的测试,模块的测试用例是软件测试计划的重要组成部分,通常应包括输入数据,期望输出等内容。

详细设计的方法:程序流程图、N-S图、PAD图、HIPO图

程序流程图:程序流程图又称之为程序框图,它是软件开发者最熟悉的一种算法表达工具。它独立于任何一种程序设计语言,比较直观和清晰地描述过程的控制流程,易于学习掌握。在流程图中只能使用下述的五种基本控制结构。①顺序型;②选择型;③ while型循环;④ until型循环;⑤多情况型选择。

N-S图:Nassi和Shneiderman提出了一种符合结构化程序设计原则的图形描述工具,称为盒图,又称为N-S图。在N-S图中,为了表示五种基本控制结构,规定了五种图形构件。

①顺序型;②选择型;③ WHILE重复型;④ UNTIL重复型;⑤多分支选择型。

PAD图:它是用结构化程序设计思想表现程序逻辑结构的图形工具。PAD也设置了五种基本控制结构的图示,并允许递归使用。

HIPO图:HIPO图是由一组IPO图加一张HC图组成。它是美国IBM公司在软件设计中使用的主要表达工具。

HC图是层次图(Hierarchy chart)的英文缩写,用于表示软件的分层结构。HC图中的每一个模块,均可用一张IPO图来描述。IPO 图由输入、处理和输出三个框组成,需要时还可以增加一个数据文件框,这种图形的优点,是能够直观地显示输入—处理—输出三者之间的联系。

详细设计的原则:原则是过程描述是否易于理解、复审和维护,进而过程描述能够自然地转换成代码,并保证详细设计与代码完全一致。

详细设计规格与评审:详细设计说明书的框架及评审。

第六章面向对象的分析和设计方法

一、重点掌握的内容:

面向对象的基本概念和特征

二、一般掌握内容:

面向对象分析与设计方法

三、主要知识点:

面向对象的基本概念:面向对象不仅是一些具体的软件开发技术与策略,而且是一整套关于如何看待软件系统与现实世界的关系,以什么观点来研究问题并进行求解,以及如何进行系统构造的软件方法学。而面向对象方法是一种运用对象、类、继承、封装、聚合、消息传送、多态性等概念来构造系统的软件开发方法。面向对象方法的基本思想是,从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式。面向对象的几个重要概念:对象、消息、方法性、继承性、封装性等。

面向对象方法的基本特征:

①从问题域中客观存在的事物出发来构造软件系统,用对象作为对这些事物的抽象表示,并以此作为系统的基本构成单位。

②事物的静态特征(即可以用一些数据来表达的特征)用对象的属性表示,事物的动态特征(即事物的行为)用对象的服务(或操作)表示。

③对象的属性与服务结合为一体,成为一个独立的实体,对外屏蔽其内部细节(称作封装)。

④对事物进行分类。把具有相同属性和相同服务的对象归为一类,类是这些对象的抽象描述,每个对象是它的类的一个实例。

⑤通过在不同程度上运用抽象的原则(较多或较少地忽略事物之间的差异),可以得到较一般的类和较特殊的类。特殊类继承一般类的属性与服务,面向对象方法支持对这种继承关系的描述与实现,从而简化系统的构造过程及其文档。

⑥复杂的对象可以用简单的对象作为其构成部分,称作聚合。

⑦对象之间通过消息进行通信,以实现对象之间的动态联系。

⑧通过关联表达对象之间的静态关系。

面向对象分析方法:目前出现有OOA与OOD方法。

面向对象设计方法:OOA与OOD的职责划分是:OOA针对问题域运用OO方法,建

立一个反映问题域的OOA模型,不考虑与系统的具体实现有关的因素(例如采用什么编程语言、图形用户界面、数据库等等),从而使OOA模型独立于具体的实现。OOD则是针对系统的一个具体的实现运用OO方法。其中包括两方面的工作,一是把OOA模型直接搬到OOD(不经过转换,仅作某些必要的修改和调整),作为OOD的一个部分;二是针对具体实现中的人机界面、数据存储、任务管理等因素补充一些与实现有关的部分。这些部分与OOA采用相同的表示法和模型结构。

第七章编码

一、重点掌握的内容:

程序设计语言的特点、编程风格、程序效率和编程安全

二、一般掌握内容:

面向对象程序设计步骤

三、主要知识点:

程序设计语言的特点: 程序设计语言是人与计算机交流的媒介。软件工程师应该了解程序设计语言各方面的特点,以及这些特点对软件质量的影响,以便在需要为一个特定的开发项目选择语言时,能作出合理的技术抉择。其特点表现为九个方面:①名字说明;②类型说明;③初始化;④程序对象的局部性;⑤程序模块;⑥循环控制结构;⑦分支控制结构;⑧异常处理;⑨独立编译。

编程风格:编码风格又称程序设计风格或编程风格,实际上指编程的原则。表现为四个方面:源程序文档化,数据说明的方法,语句结构和输入/输出方法。

源程序文档化:源程序文档化又可从四个方面来阐述,①符号名的命名;②程序的注释;

③标准的书写格式;

数据说明:数据说明的次序应当规范化。使数据属性容易查找,也有利于测试,排错和维护。

语句结构:语句构造力求简单、直接,不能为了片面追求效率而使语句复杂化。可从以下几方面注意:1.使用标准的控制结构;2.尽可能使用库函数;3.程序编写首先应当考虑清晰性;4.注意使用GOTO语句;

输入/输出方法:输入/输出的方式和格式应当尽量作到对用户友善(User Friendly),尽可能方便用户的使用。

程序效率:程序效率是指程序的执行速度及程序占用的存储空间。影响程序效率的因素是多方面的。

编程安全:提高软件质量和可靠性的技术大致可分为两类,一类是避开错误技术,即在开发的过程中不让差错潜入软件的技术;另一类是容错技术,即对某些无法避开的差错,使其影响减至最小的技术;避开错误技术是进行质量管理,实现产品应有质量所必不可少的技术,也就是软件工程中所讨论的先进的软件分析和开发技术和管理技术。但是,无论使用多么高明的避开错误技术,也无法做到完美无缺和绝无错误,这就需要采用容错技术。实现容错的主要手段是冗余和防错程序设计。

面向对象程序设计步骤:面向对象的设计方法一般适用于软件设计和实现阶段。其基本步骤是:①建立软件系统的动态模型;②建立软件系统的静态模型;③实现。

第八章软件质量与质量保证

一、重点掌握的内容:

软件质量的有关概念、结构化的软件测试

二、一般掌握内容:

软件维护过程

三、主要知识点:

软件质量:软件质量是各种特性的复杂组合。软件质量反映了以下三方面的问题:

(1)软件需求是度量软件质量的基础。不符合需求的软件就不具备质量。

(2)在各种标准中定义了一些开发准则,用来指导软件人员用工程化的方法来开发软件。如果不遵守这些开发准则,软件质量就得不到保证。

(3)往往会有一些隐含的需求没有明确地提出来。例如,软件应具备良好的可维护性。如果软件只满足那些精确定义了的需求而没有满足这些隐含的需求,软件质量也不能保证。

软件质量保证策略:为了在软件开发过程中保证软件的质量,主要采取下述措施:

①审查;②复查和管理复审;③测试。

结构化的软件测试:软件测试在程序员对每一个模块的编码之后先做程序测试,再做单元测试,然后再进行集成(综合或组装)测试,系统测试,验收(确认)测试,平行测试,人工测试,其中单元测试的一部分己在编码阶段就开始了。

测试:就是用已知的输入在已知环境中动态地执行系统(或系统的“部件”)。如果测试结果和预期结果不一致,则很可能是发现了系统中的错误。

软件测试:软件测试是对软件计划、软件设计、软件编码进行查错和纠错的活动(包括代码执行活动与人工活动)。

程序测试:是对编码阶段的语法错、语义错、运行错进行查找的代码执行活动。找出编码中错误的代码执行活动称程序测试。纠正编码中的错误的执行活动称程序调试。程序测试的目的是查找编码错与纠正编码错,保证算法的正确实现。

测试的原则:

(1)测试前要认定被测试软件有错,不要认为软件没有错。

(2)要预先确定被测试软件的测试结果。

(3)要尽量避免测试自己编写的程序。

(4)测试要兼顾合理输入与不合理输入数据。

(5)测试要以软件需求规格说明书为标准。

(6)要明确找到的新错与已找到的旧错成正比。

(7)测试是相对的,不能穷尽所有的测试,要据人力物力安排测试,并选择好测试用例与测试方法。

(8)测试用例留作测试报告与以后的反复测试用,重新验证纠错的程序是否有错。

测试方法:按照测试过程是否在实际应用环境中来分,有静态分析与动态测试。测试方法有分析方法(包括静态分析法与白盒法)与非分析方法(称黑盒法)。

静态分析技术:不执行被测软件,可对需求分析说明书、软件设计说明书、源程序做结构检查、流程分析、符号执行来找出软件错误。

动态测试技术:当把程序作为一个函数,输入的全体称为函数的定义域,输出的全体称为函数的值域,函数则描述了输入的定义域与输出值域的关系。这样动态测试的算法可归纳为:

①选取定义域中的有效值,或定义域外无效值。

②对已选取值决定预期的结果。

③用选取值执行程序。

④观察程序行为,记录执行结果。

⑤将④的结果与②的结果相比较,不吻合则程序有错。

动态测试既可以采用白盒法对模块进行逻辑结构的测试,又可以用黑盒法做功能结枸的

测试、接口的测试,都是以执行程序并分析执行结果来查错的。

白盒法:是通过分析程序内部的逻辑与执行路线来设计测试用例,进行测试的方法,白盒法也称逻辑驱动方法。白盒法的具体设计程序测试用例的方法有:语句覆盖、分支(判定)覆盖、条件覆盖、路径覆盖(或条件组合覆盖),主要目的是提高测试的覆盖率。

黑盒法:是功能驱动方法,仅根据I/O数据条件来设计测试用例,而不管程序的内部结构与路径如何。黑盒法的具体设计程序测试用例的方法有:等价类划分法,边界值分析法,错误推测法,主要目的是设法以最少测试数据子集来尽可能多的测试软件程序的错误。

设计测试方案:测试方案包括预定要测试的功能,应该输入的测试数据和预期的结果,其中最困难的问题是设计测试用的输入数据(即测试用例)。通常的做法是,用黑盒法设计基本的测试方案,再用白盒法补充一些方案。

软件测试的步骤:

单元测试:单元测试也称模块测试、逻辑测试、结构测试,测试的方法一般采用白盒法,以路径覆盖为最佳测试准则。

集成测试:单元测试之后便进入组装测试。尽管模拟了驱动模块和存根模块进行单元测试,由于测试不能穷尽,单元测试又会引入新错误,单元测试后肯定会有隐藏错误,组装不可能一次成功,必须经测试后才能成功。集成测试分为增式组装测试和非增式组装测试,所谓非增式组装,按照结构图一次性将各单元模块组装起来。所谓增式组装是指按照结构图自顶向下或自底向上逐渐安装。

确认测试:确认测试也称合格测试或称验收测试。组装后己成为完整的软件包,消除了接口的错误。确认测试主要由使用用户参加测试,检验软件规格说明的技术标准的符合程度,是保证软件质量的最后关键环节。

系统测试:一般的系统除了确认测试外还要做如下几个方面的系统测试

①恢复测试

通过系统的修复能力,检测重新初始化,数据恢复,重新启动,检验点设置机构是否正确,以及人工干预的平均恢复时间是否在允许范围内。

②安全测试

设计测试用例,突破软件安全保护的机构安全保密措施,检验系统是否安全保密的漏洞。

③强度测试

设计测试用例,检验系统的能力最高能达到什么实际的限度,让系统处于资源的异常数量、异常频率、异常批量的条件下运行测试系统的承受能力。一般取比平常限度高5一10倍的限度做测试用例。

④性能测试

设计测试用例测试并记录软件运行性能,与性能要求比较,看是否达到性能要求规格。这项测试常常与强度测试相结合进行。

软件维护:软件运行/维护阶段对软件产品所进行的修改就是维护。

维护的问题:软件维护存在的绝大多数问题,都是由于软件定义和软件开发的方法有问题。在软件生命周期的头两个时期没有严格而又科学的管理和规划,几乎必然会导致在最后阶段出现问题。

软件维护步骤及组织:为了正确、有效地修改,需要经历以下三个步骤:1.分析和理解程序;2.修改程序;3.重新验证程序;4.维护组织。

第九章项目计划与管理

一、重点掌握的内容:

软件项目特点及软件管理功能

二、一般掌握内容:

软件配置管理的过程

三、主要知识点:

软件项目特点:软件产品与其他任何产品不同,它是无形的,完全没有物理属性。其特点表现为:①智力密集,可见性差;②单件生产:在特定机型上,利用特定硬件配置,由特定的系统软件或支撑软件的支持,形成了特定的开发环境;③劳动密集,自动化程度低:④使用方法繁琐,维护困难;⑤软件工作渗透了人的因素。

软件管理的功能:软件管理的主要功能包括:①制定计划:规定待完成的任务、要求、资源、人力和进度等;②建立组织项目:为实施计划,保证任务的完成,需要建立分工明确的责任机构;③配备人员:任用各种层次的技术人员和管理人员;④指导:鼓励和动员软件人员完成所分配的情况。

软件配置管理的过程:软件配置管理SCM除了负担控制变化之外,它还要担负标识单个的SCI和软件各种版本、审查软件配置以保证开发得以正常进行,以及报告所有加在配置上的变化等任务。

关于SCM需要考虑这样一些问题:

(1)采用什么方式标识和管理许多已存在的程序的各种版本?使得变化能够有效地实现。

(2)在软件交付用户之前和之后,如何控制变化?

(3)谁有权批准和对变化安排优先级?

(4)如何保证变化得以正确地实施?

(5)利用什么办法估计变化可能引起的其它问题?

软件工程复习资料

软件概念:与计算机系统操作有关的程序、数据以及相关文档的完整集合 软件特点:逻辑实体、智力产品,制造即拷贝2无磨损和老化,不遵循“浴盆曲 线”,但存在退化问题3尚未摆脱手工方式,软件移植的需要,复杂(问题复杂性/ 程序结构复杂性),软件开发的性质如成本、进度、质量等难以估计控制,维护困难,可复用性软件分类:按功能:系统软件/支撑软件/应用软件2按工作方式:实时处理/分时/交互/批处理3按服务对象:项目 / 产品(定制 / 通用)4按失效影响:关键/ 非关键5规模:微型、小型、中型、大型、甚大型、极大型 软件危机的表现:软件开发成本和进度失控,维护代价高2用户不满意3软件 质量不可靠4软件不可维护 5无文档资料6 计算机系统中软件成本比重加大7软件开发生产率提高不能满足要求软件危机的原因软件的规模和复杂性2人类智力的局限性3协同工作的困难性4缺乏方法学和工具5用户描述不精确、二义、遗漏,双方理解有偏差缓解软件危机的途径组织管理、协同配合的工程2软件工程的理论模型、技术方法3软件工具 软件工程的三要素1过程:管理部分2方法:技术手段3工具:自动或半自 动地支持软件的开发和管理三要素的关系:相互关联与支持 软件生命周期:可行性研究-需求分析-概要设计-详细设计-实现-集成测试-确认 测试-使用与维护-退役 软件开发和测试活动之间的关系软件 开发和软件测试都是软件生命周期中的重要组成部分,软件测试是保证软件开发产物 质量的重要手段。测试是贯穿于整个开发流程了,而不是在编码完成才开始。 瀑布模型是将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工 作,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。最终得到软件产品优点是使用时间最长、应用面比较广泛的开发模型2是其他一些开发模型的基础3当前一阶段完成后,只需要去关注后续阶段缺点不能适应用户需求的变化2到最后阶段才能得到可运行的软件版本适用场合:对于规模较小,软件需求较为稳定的项目,采用模型能够显著提高软件开发的质量和效率 演化模型(原型模型)演化模型是一种全局的软件(或产品) 生存周期模型。属于 迭代开发方法。该模型可以表示为:第一次迭代(需求->设计->实现->测试->集成)->反馈->第二次迭代(需求->设计->实现->测试->集成)->反馈->……优点:1支持需求的动态变化2有助于获取用户需求,便于用户对需求的理解3尽早发现软件中的错误缺点1需要为系统的每个新版本交付文档,不划算2新需求的不断增加,使系统结构退化,变更成本上升3不支持风险分析 螺旋模型1将瀑布模型与原型模型进行有机结合2增加风险分析步骤优点1支持 需求的动态变化2有助于获取用户需求,便于用户对需求的理解3尽早发现软件中的错误4支持风险分析,可降低或者尽早消除软件开发风险5适合于需求动态变化、开发风险较大的系统缺点建设周期长适用场合在需求不明确的情况下,适合用螺旋模型进行开发,便于风险控制和需求变更。特别适合于大型复杂的系统 喷泉模型:软件复用与生命周期中多项开发活动集成,主要支持面向对象的开发 方法优点1软件系统可维护性较好2各阶段相互重叠,表明了面向对象开发方法各阶段间的交叉和无缝过渡3整个模型是一个迭代的过程,包括一个阶段内部的迭代和跨阶段的迭代4模型具有增量开发特性,即能做到“分析一点、设计一点、实现一点,测试一点”,使相关功能随之加入到演化的系统中5模型由对象驱动,对象是各阶段活动的主体,也是项目管理的基本内容6该模型很自然地支持软部件的重用缺点由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,因此不利于项目的管理。此外这种模型要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。 OO 为什么好oo 解决问题的思路是从现实世界中的客观对象入手,运用人类的 自然思维方式来构造软件系统,而传统的结构化方法从功能入手和信息工程化方法从信息入手。在面向对象方法中,把一切都看成是对象。OO 方法用类和对象作为系统的基本构成单位。对象对应问题域中的事物,其属性与操作刻画了事物的静态特征和动态特征,它们之间的继承关系、聚合关系、消息和关联如实地表达了问题域中事物之间实际存在的各种关系面向对象方法的特点(1)从现实世界中客观存在的事物出发来建立软件系统,强调直接以问题域中的事物为中心来思考问题、认识问题,把它们抽象地表示为系统中的对象,作为系统的基本构成单位。这可以使系统直接映射问题域,保持问题域中事物及其相互关系的本来面貌(对象) (2)用对象的属性表示事物的状态特征;用对象的操作表示事物的动态特征(属性与操作)(3)对象的属性与操作结合为一体,成为一个独立的、不可分的实体,对外屏蔽其内部细节(封装)(4)对事物进行分类。把具有相同属性和相同操作的对象归为一类,类是这些对象的抽象描述,每个对象是它的类的一个实例(分类)(5)复杂的对象可以用简单的对象作为其构成部分(聚集:一个(较复杂的)对象由其他若干(较简单的)对象作为其构成部分,称较复杂的对象为聚集,称较简单的对象为成分,称这种关系为聚集)(6)通过在不同程度上运用抽象的原则,可以得到较一般的类和较特殊的类。特殊类继承一般类的属性与操作,从而简化系统的构造过程及其文档,有利于复用(继承:特殊类拥有其一般类的全部属性与操作,称作特殊类对一般类的继承)(7) 类具有封闭性,把内部的属性和服务隐藏起来,只有公共的服务对外是可见的(类的封闭性)(8) 对象之间通过消息进行通讯,以实现对象之间的动态联系(消息)(9) 通过关联表达类之间的静态关系(关联) 自顶向下,逐步求精:从顶层开始逐层向下分解,直至系统的所有模块都小 到易于掌握为止 抽象从事物中舍弃个别的非本质的特征,而抽取共同的、本质特征的做法叫抽象。 过程抽象:将完成一个特定功能的动作序列抽象为一个函数名和参数表(模块)例: 比较字符串: int Compare (CString, CString)。数据抽象:将诸多数据对象的定义(描述)抽象为一个数据类型名,以后可通过该数据类型名来定义多个具有相同性质的数据对象例:Eg: 1, 2, 3,—>Integer ;软件工程书;人工智能书—>书类 封装把对象的属性和操作结合成一个独立的系统单位,并尽可能隐蔽对象的内部 细节。只是向外部提供接口,降低了对象间的耦合度使对象能够集中完整地描述并对应一个具体事物。意义:体现了独立性,使对象外部不能随意存取对象的内部数据,使其所含的信息对那些不需要这些信息的模块不可访问。对象的内部的修改对外部的影响很小,减少了修改引起的“波动效应”。公开静态的、不变的操作,而把动态的、易变的信息隐藏起来。 模块化将一个软件划分为一组具有相对独立功能的部件,每个部件称为一个模 块;当把所有的模块组装在一起时,便可获得满足用户需求的软件系统。为什么要进行模块化:模块化体现了“分而治之”的问题分析和解决方法。模块化的目的①进行功能分解,把复杂的大的功能划分成简单的小的子功能,尽量降低每个模块的成本。②尽量使每个模块间的接口不能太多,太多会使接口成本增加。兼顾二者可取得最佳的划分状态,确保软件总成本最低模块设计原则1信息隐藏2高内聚度(强)3低耦合度(松)什么是信息隐藏(1)模块应该设计得使其所含的信息(过程和数据)对那些不需要这些信息的模块不可访问(2)模块之间仅仅交换那些为完成系统功能所必须交换的信息信息隐藏的优点(1)支持模块的并行开发(设计和编码)(2)模块的独立性更好(3)便于系统功能的扩充(4)便于测试和维护,减少修改影响向外传播的范围模块化、信息隐藏,局部化是什么关系局部化与信息隐藏是一对密切相关的概念。局部化就是指将一些使用上密切相关的元素尽可能放在一起。对一个模块来说,局部化是期望模块所使用的数据尽可能是在模块内部定义的。因此,局部化意味着减少模块之间的联系,有助于实现模块之间的信息隐藏。在软件测试和维护期间经常需要修改一些模块的内容。信息隐藏和局部化降低了模块之间的联系,使得在修改一个模块时对其他模块的影响降到最低。“隐藏”的意思是,有效的模块化通过定义一组相互独立的模块来

系统工程期末复习资料

系统工程期末复习资料 一、名词解释题 1、系统 2、工程 3、模型 4、工程系统 5、系统工程学 6、系统工程 7、反馈 8、系统模型 9、系统评价 10、价值工程 二、填空题 1、工程系统的特性包括:()()()()()()()() 2、Hall系统工程三维形态的第一维是逻辑维,包括()()()()()()()七个步 骤 3、切克兰德系统工程方法论的步骤为:()、()、()、()、()和实施。 4、系统的属性主要有()、()、()、()、()、()、() 5、Hall系统工程三维形态的第一维是时间维,包括()、()、()、()、()、()、()七个阶段, 6、霍尔系统工程方法论的步骤为弄清问题、()、()、()、()、()、() 三、判断题 1、系统工程的理论基础不包括“系统论、信息论、控制论以及运筹学”等() 2、控制论的发展经历了:经典控制论、现代控制论、大系统控制论三个时期。() 3、信息论可分为狭义信息论、一般信息论、广义信息论三种不同的类型。() 4、切克兰德系统工程方法论的核心是“比较”和“学习”。() 5、系统工程方法的特征:先总体后详细的设计程序、综合即创造的思想、系统工程的“软科学”性。() 6、系统工程方法论是分析和解决系统开发、运作及管理实践中的问题所应遵循的工作程序、逻辑步骤和基本方法,是系统工程考虑和处理问题的一般方法和总体框架。() 7、从提出或建立一个系统到该系统停止运行或为其他系统代替的这段时间,称为系统的生命周期。() 8、系统分析是一种运用建模及预测、优化、仿真、评价等技术对系统各个方面进行定量和定性相结合的分析为达到费用和效益最佳的辅助决策的方法和过程。() 9、决策分析的类型主要有:确定型决策分析、不确定型决策分析、风险型决策分析、对抗

本科毕业论文格式(软件工程-样例).

中文题目:物流管理系统 外文题目:LOGISTICS MANAGEMENT SYSTEM 毕业设计(论文)共××页(其中:外文文献及译文××页)图纸共 0张完成日期20××年×月答辩日期20××年×月

摘要 本物流管理系统应用于物流公司管理物流信息,主要使用了JSP、Struts、JDBC技术。控制层由Action控制流程,并调用业务层的相应方法进行不同的业务处理管理员端主要包括货物信息管理、物流信息管理、车辆信息管理、企业信息管理、客户订单管理、客户信息管理以及个人管理,管理员能对客户和货物、物流、车辆等进行增、删、查、改的操作,还能修改自己的基本信息并且在订单签订时操作员能自动提取目前登陆的用户名。客户端能查看货物车辆物流公司概况等基本信息,以及根据物流编号对物流信息进行查询,修改个人信息等操作。能更高效的提高物流公司的管理。 关键词:物流;JSP;Struts;管理

ABSTRACT The logistics management system used in logistics company management logistics information, The main use the JSP, Struts, JDBC technology. the administrator mainly includes cargo information management, logistics information management, vehicle information management, enterprise information management, management of customer orders, customer information management, and personal management, the administrator can to client and goods, logistics, vehicles and so on them, delete, check, change of operation, also can modify your basic information and signed in order when the operator can automatically extracted at present on the user name. The client can check goods vehicle logistics company profile and other basic information, and according to the logistics Numbers in logistics information query, modify the personal information and other operational. Can more efficient logistics to improve the management of the company. Keywords: logistics, JSP, Struts, management,

《软件工程》期末复习题1

考试时间: 16周周一5,6节 考试地点: 二教419 406 408 考试题型: 选择题:20分 简答题:30分 应用题:50分 各章内容及题型总结: 第1,2章本章的主要题型是选择题和简答题。 1. 软件危机的主要表现是什么?答:“已完成”的软件不满足用户的需求;开发进度不能保障;软件开发成本难以准确估算;软件产品的质量没有保证。 2. 软件工程的定义?答:软件工程是采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理方法和先进软件开发技术结合起来,运用到软件开发和维护过程中,来解决软件危机。 IEEE的定义:软件工程是①将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护过程,即将工程化应用于软件开发和管理之中,②对①中所选方法的研究。 3. 软件工程研究的主要内容是什么?答:软件开发技术和软件开发管理两个方面。软件开发技术方面主要研究软件开发方法、软件开发过程、软件开发工具和环境。软件开发管理方面主要研究软件工程管理学、软件工程经济学、软件工程心理学。 4. 软件工程的7条基本原理是什么?答:①用分阶段的生命周期计划严格管理②坚持进行阶段评审③实行严格的产品控制④采用现代程序设计技术⑤结果应能清楚地审查⑥开发小组的人员应该少而精⑦承认不断改进软件工程实践的必要性。 5. 什么是软件生命周期?答:指一个软件从提出开发要求开始到该软件报废为止的整个时期。通常将软件的生命周期划分为可行性研究、需求分析、设计、编码、测试、集成、维护阶段。 6. 软件过程的定义?答:软件开发过程、活动和任务的结构框架。它能够清晰、直观地表达软件开发全过程,明确规定要完成的主要活动和任务。 7. 你能举出几个典型的软件过程模型吗?答:主要有瀑布模型、演化模型、喷泉模型、螺旋模型、智能模型。模型的选择是基于软件的特点和应用领域。 8. 目前,主流的软件开发方法有哪些?答:结构化方法和面向对象方法。 9. 软件工程师职业道德规范的8组关键词是什么?1999年由ACM/IEEE-CS软件工程师道德规范和职业实践(SEEPP)联合工作组制订了《软件工程师职业道德规范》,规范含有8组由关键词命名的准则:公众、客户和雇主、产品、判断、管理、专业、同行、自身。 10. 职业化软件工程师要注意的十大问题是什么?答:①高质量地完成任务②遵守行业标准,不能肆意按照自己的想象来发挥③积极帮助他人④版权意识敏感⑤严格遵守计划⑥公私分明⑦注意知识更新⑧善于沟通⑨遵守职业规则⑩诚实和正直。 第3章本章的题型主要是选择题。 1. 可行性研究的目的是什么?答:用最小的代价在尽可能短的时间内确定问题是否能够解决。 2. 可行性研究的四大要素是:经济上可行,技术可行,法律允许、社会环境可行。 3. 可行性研究的实质:是要进行一次简化了的系统分析和设计过程。首先要分析和澄清问题定义,导出系统的逻辑模型,探索若可供选择的方案,对每种方案仔细研究它的可行性。推荐一个较好的解决方案和一个初步的计划。 第4,5章本章的题型有选择题。 2. 什么是需求工程?需求工程是指应用有效的技术和方法进行需求分析,确定客户需求,帮助分析人员理解问题,定义目标系统的外部特征的一门学科。需求工程中的主要活动有:需求获取、需求分析、需求规格说明、需求验证和需求变更管理。

河南电大软件工程期末试题带答案

试卷代号:1260 中央广播电视大学2018-2018学年度第二学期“开放本科”期末考试(半开卷) 软件工程试卷 注意事项 一、将你的学号、姓名及分校(工作站)名称填写在答题纸的规定栏内。考试 结束后,把试卷和答题纸放在桌上。试卷和答题纸均不得带出考场o监考人收完 考卷和答题纸后才可离开考场 二、仔细读懂题目的说明,并按题目要求答题。答案一定要写在答题纸的指 定位置上,写在试卷上的答案无效。 三、用蓝、黑圆珠笔或钢笔【含签字笔)答题,使用铅笔答题无效。 一、选择题(请从四个可选项中选择最佳答案0 60分.每题3分l 1.软件工程的研究内容具有层次化结构,最底层是质量保证层,中间层是( ).最上层是工具层。 A.过程层&方法层 C.过程层和方法层 D.系统层 2.美国著名软件工程专家B.W.Boehm于1983年提出了软件工程的( )条基本原理。 A.7 B.5 C.3 D.12 3.下面哪个选项不是软件工程研究的内容?( ) A.生产无故障的软件 B.精通一门编程语言 C.生产满足用户需求的软件 D.生产及时交付的软件 4.可行性研究的主要任务是( )。 A.确定系统做什么 B.确定性能 C.确定功能 D.进行一次简要的需求分析 5.用户需求描述的是( )。 A.用户使用该软件要完成的任务 B.业务需求 C功能需求 D.软件目标、规模和范围 6.数据流程图的主要作用是( )。 A.描述模块组成 B.说明用户数据结构 C描述软件功能 D.建造系统的逻辑模型 7.软件设计的目标是( )。 A.在最短的时间内,生产出可靠性、可维护性俱佳的软件方案 B.为软件编码设计模块结构 C.确定软件要做什么 D.确定软件的实现算法 8.内容耦合是模块间最紧密的耦合,( )是模块间最松散的耦合。 A.数据耦合 B.非直接耦合 C.控制耦合 D-外部耦合 9.面向对象是“先”确定____“后” 。( ) A.属性/方法 B.数据结构/方法 c.动作的主体/执行动作 D.动作/操作

软件工程复习资料

1、下列哪一模型是软件的基础模型 A.瀑布模型 B.快速原型 C.增量模型 D.螺旋模型 2、划分软件生存周期的阶段时所应遵循的基本原则是 A.各阶段的任务尽可能相对独立 B.各阶段的任务在时间上连续 C.各阶段的任务尽可能相关性 D.各阶段的任务在时间上相对独立 3、下列哪个办法不属于解决软件危机的途径之一 A.采用软件工程的解决途径 B.研制新一代智能计算机 C.采用面向对象的软件设计方法 D.大力扶持软件企业 4、下列哪个不属于软件工程的内涵之一 A.扶持培养软件高手的学院 B.开发既可靠又能有效运行的软件 C.应用完善的科学与工程原理 D.经济地开发软件 5.造成大型软件开发困难的根本原因在于 A.开发人员缺乏足够的开发经验 B.项目开发进度不合理 C.软件系统的复杂性 D.对软件开发的资金投入不足 6.软件会逐渐退化而不会磨损,其原因在于 A.软件备件很难订购 B.不断的变更使组件接口之间引起错误 C.软件错误在经常使用之后会逐渐增加 D.软件通常暴露在恶劣的环境下 7.下面说法正确的是 A.大多数软件系统是不容易修改的,除非它们在设计时考虑了变化 B.由于软件是产品,因此可以应用其他工程制品所用的技术进行生产 C.一般来说,软件只有在其行为与开发者的目标一致的情况下才能成功 D.购买大多数计算机系统所需的硬件比软件更昂贵 8.Ariane 5火箭发射失败的事例告诉我们 A.(2)软件后备系统可以通过复制生成 B.(3)软件重用必须重新进行系统论证和系统测试 C. 选项(1)和(3) D.(1)系统环境的变化可能影响软件采集数据的精度、范围和对系统的控制

9.软件危机的主要原因是 A.软件本身的特点及开发方法。 B.软件工具落后。 C.软件生产能力不足。 D.对软件的认识不够。 10.下面的描述正确的是 A.软件质量是在开发过程中逐渐构建起来的。 B.软件质量是由产品的功能、性能、易用性等外在特性决定的。 C.运行正确的软件就是高质量的软件。 D.软件产品质量越高越好,最理想的情况是达到“零缺陷”。 11、可行性研究主要包括哪几项? A.技术可行性、经济可行性和操作可行性 B.技术可行性、经济可行性和道德可行性 C.技术可行性、法律可行性和操作可行性 D.技术可行性、操作可行性和法律可行性 12、成本/效益分析的目的是帮助()正确地作出是否投资于这项开发工程的决定。 A.系统分析员 B.客户组织的负责人 C.项目经理 D.软件开发人员 13、在进行成本/效益分析的时候,需要考虑() A.开发成本 B.运行费用 C.系统带来的经济效益 D.系统使用寿命 14、数据流图和数据字典共同定义了新系统的逻辑模型。 A.错 B.正确 15、可行性研究可行性研究需要的时间长短和所研究系统的规模关系不大。 A. 正确 B.错误 16、把可行性研究各个步骤的工作结果写成清晰的文档,请用户、客户组织的负责人及评审组审查,以决定是否继续这项工程及是否接受分析员推荐的方案。 A.正确 B.错误 17、结构化分析方法遵守的准则之一——定义软件需要完成的功能,需要建立的模型是 A.功能模型 B.数据模型 C.行为模型 D.动态模型 18、下列叙述中,()不属于数据字典的作用。 A.为用户与开发人员之间统一认识 B.为需求分析阶段定义各类条目

网络工程与系统集成期末复习题

简答题: 1.何时适合使用静态路由 中小型的网络,网络拓扑比较简单,不存在线路冗余等因素,通常采用静态路由的方式来配置 2.动态路由协议的功能是 用于建立和维护路由表和按照达到数据包的目的地的最佳路径转发数据数据包的动态路由协议 3.等价负载均衡 当到达目的地有多条路径时,而有多条路径的metric值一样,这时就可以做等价负载均衡,让数据包通过多条链路均衡转发 4.非对称路由 非对称路由是指往返某一节点的路径不一致,两个方向的延时不同。 5.如何定义网络系统质量因素 6.如何进行网络项目成本测算 7.简述Alex Zinin的路由表三原则 每台路由器根据其自身路由表中的信息独立作出决策。 一台路由器的路由表中包含某些信息并不表示其他路由器也包含相同的信息。 有关两个网络之间路径的路由信息并不能提供反向路径(即返回路径)的路由信息。 8.简述网络集成的生命周期和实施步骤 1.启动阶段:1识别需求2可行性研究3立项4初步集成方案5项目章程确立 2.计划阶段:1人员确立2系统设计效果确立3资源费用分析4风险再评估5工作分解 6项目建议和合同洽谈 3.实施阶段:1项目团队建立2实施计划确立3资源、成本、采购、沟通4项目实施5 项目监理和控制6质量、资金控制 4.收尾阶段:1项目验收准备2文档整理3项目初验4项目后评审5资源再分配 9.简述网络集成三个基本目标、内容和方法 目标:1:用户目标:用户在投入人力,物力,财力简历网络系统后,能达到用户需求2:系统集成目标:先进的技术,适当的产品,精湛的技术,优质的服务 方法:1:独立集成 2:联合集成 3:委托集成商 内容:1:需求分析2:网络规划3:产品选择4:网络设计5:系统集成实施6:应用软件开发和调试7:系统测试8:用户培训9:竣工文档编制10:项目验收11:售后技术支持12:系统维护和质保

软件工程毕业论文

软件工程毕业论文 Revised by BLUE on the afternoon of December 12,2020.

一、绪论 系统开发背景 随着现代社会机械化程度越来越高,人们对机械知识的渴望越来越强烈,而用户间的交流恰好满足了这种需要。用户与用户之间的互相讨论与学习会使用户快速提高自己对于机械知识的了解和认知。针对这种现状开发了本系统。 一般来说,论坛也提供邮件功能,如果需要私下的交流,也可以将想说的话直接发到某个人的电子信箱中。在论坛里,人们之间的交流打破了空间,时间的限制。在与别人进行交往时,无须考虑自身的年龄,学历,知识,社会地位,财富,外貌,健康状况,也无从知道交谈的对方的真实社会身份。这样,参与讨论的人可以处于一个平等的位置与其他人进行机械方面问题的探讨。论坛往往是由一些有志于此道的爱好者建立,对所有人都免费开放。而且,由于BBS的参与人众多,因此各方面的话题都不乏热心者。我们当然可以利用它来解决机械学习中的一些疑惑。 二、需求分析 可行性分析 可行性研究是在项目开发前期对项目的一种考察和鉴定,对拟议中的项目进行全面的、综合的调查研究,其目的是要判断项目可行与否。信息系统技术可行性研究要从系统开发的计划出发,论述系统开发力量的可行性,同时论证系统方案中所采取的各种技术手段上是否可以实现。信息系统经济可行性研究主要是对项目进行经济评价,分析系统建设投资的可能性以及评价系统运行之后给组织带来的效益。信息系统营运可行性研究要给出的方案是否可以从人力、物力、组织工作等方面保证项目按计划完成实施,还要说明项目开发后在经济、技术和环境等方面能否保证系统正常运行。 由于系统建设是一项投资大、涉及面广、工程复杂的系统工程,因此必须充分的进行可行性论证,以确保投资的准确无误,而且信息系统建设是一项整体工程,必须站在系统的角度论证它的可行性才有说服力,才有意义。可行性研究的目的是用最小的代价,在尽可能短时间内确定问题是否能够解决,它的目的不是解决问题,而是确定问题是否值得去解决,可行性从以下四个方面来考虑。 技术可行性 该课题---机械爱好者论坛,它采用了当前流行的B/S结构和Internet网络技术。而如今编写HomePage也没原来那么麻烦,网站的一些制作要求和素材在Internet随处都可以找到,制作网站的工具也是种类繁多。我们可以从中找到符合自己要求的工具。管理信息系统的开发有很多的实例,一些实例的源代码也可以提供参考。所以,从技术上来说,开发这个系统的技术难题是不多的。 三、概要设计 经过需求分析阶段的工作,系统必须“做什么”已经清楚了,现在是决定“怎样做”的时候。总体设计的基本目的就是回答“从总体上说,系统应该如何实现”这个问题,因此,总体设计又称为概要设计或初步设计。通过这个阶段的工作将划分出组成系统的物理元素------程序、文件、数据库、人工过程和文档等等,但是每个物理元素仍然处于黑盒子级,这些黑盒子

软件工程期末复习知识点整理

复习整理 、绪论 1. 软件的定义 软件是能够完成预定功能和性能的可执行的计算机程序,包括使程序正常执行所需要的数据,以及有关描述程序操作和使用的文档。(软件=程序+文档) 2.软件工程的定义 是指导计算机软件开发和维护的一门工程学科;采用工程化的原理与方法对软件进行计划、开发和维护;把证明正 确的管理技术和最好技术综合运用到软件开发中;研究经济地开发岀高质量的软件方法和技术;研究有效维护软件 的方法和技术。 3.软件危机的概念,及出现的原因 软件开发技术的进步未能满足发展的要求。在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。 产生原因: ⑴软件规模越来越大,结构越来越复杂 ⑵软件开发管理困难而复杂。 ⑶软件开发费用不断增加。 ⑷软件开发技术落后。 ⑸生产方式落后,仍采用手工方式。 ⑹开发工具落后,生产率提高缓慢。 4.三种编程范型的特点 (1)过程式编程范型:把程序理解为一组被动的数据和一组能动的过程所构成;程序=数据结构 +算法;着眼于程序的过程和基本控制结构,粒度最小 (2)面向对象编程范型:数据及其操作被封装在对象中;程序=对象+消息;着眼于程序中的对 象,粒度比较大 (3)基于构件技术的编程范型:构件是通用的、可复用的对象类;程序=构件+架构;眼于适合 整个领域的类对象,粒度最大 二、软件生存周期与软件过程 1、软件生存周期的定义,把生存周期划分为若干阶段的目的是什么,有哪几个主要活动 定义:一个软件从开始立项起,到废弃不用止,统称为软件的生存周期 目的:软件生存周期划分为计划、开发和运行3个时期;把整个生存周期划分为较小的阶段, 给每个阶段赋予确定而有限的任务,就能够化简每一步的工作内容,使因为软件规模而增长而大大增加了软件复杂性变得较易控制和管理。 主要活动:需求分析、软件分析、软件设计、编码、软件测试、运行维护( P19) 2、软件生命周期划分为哪几个阶段 软件生命周期分为三个时期八个阶段: 软件定义:问题定义、可行性研究; 软件开发:需求分析、概要设计、详细设计、编码、测试; 软件运行:软件维护

大学软件工程复习资料

五、简答题 1.层次图和层次方框图之间区别何在?P92 ①层次图描绘软件的层次结构,层次方框图描绘数据结构 ②层次图中方框代表一个功能模块,层次方框图方框代表数据的子集或数据元素 ③层次图中连线表示模块间调用关系,层次方框图连线表示组成关系。 2.2、软件设计过程中为什么要采用模块化设计方法?P85 参考答案: (1)、采用模块化原理可以使软件结构清晰,不仅容易设计,也容易阅读和理解; (2)、模块化使软件容易测试和调试,因而有助于提高软件的可靠性; (3)、模块化可以提高软件的可修改性; (4)、模块化有助于开发过程的组织和管理; 3.用某种软件复杂性度量算法来度量不同类型的程序时。得出的度量值是否真正反映了它们的复杂性? 如果对同类型的程序进行度量,其结果是否就比较有价值? 参考答案: 开发规模相同,但复杂性不同的软件,花费的成本和时间会有很大的差异。因此到目前为止,还没有一个软件复杂性度量的方法能够全面、系统地度量任一软件的复杂性,某一种度量方法只偏重于某一方面。所以,用某种软件复杂性来度量不同类型的程序,所得到的度量值不一定真正反映它们的复杂性。但对同一类里的程序,按某种视点来度量它们的复杂性,其结果还是比较有价值的。 4.数据流图的作用是什么?它有哪些基本成分? 参考答案: 数据流图可以用来抽象地表示系统或软件。它从信息传递和加工的角度.以图形的方式刻画数据流从输入到输出的移动变换过程,同时可以按自顶向下、逐步分解的方法表示内容不断增加的数据流和功能细节。因此,数据流图既提供了功能建模的机制.也提供了信息流建模的机制,从而可以建立起系统或软件的功能模型。 基本成分有:数据原点/终点数据处理数据流数据存储 5.常用的估算软件规模的方法有哪些?试比较这些方法的优缺点。 代码行技术的优点,容易计算,缺点是太片面,因为源程序只是软件配置的很少一部分,不同语言实现同一个软件所需的代码行数不同; 功能点数的特点:与编程语言无关,但是判断信息域复杂性级别和技术因素的影响程度时,存在着相当大的主观因素。 6.CMM的全称是什么?其基本思想是什么?为什么要对CMM进行分级?P321 其基本思想是:软件开发和维护过程中的问题是由于管理软件过程的方法不当引起的,即使是应用新的软件技术,也不会自动提高软件的生产率和质量。能力成熟度模型有助于软件开发机构建立一个有规律的、成熟的软件过程。改进后的软件过程将有利于开发出高质量的软件,使更多的软件项目免受时间和费用超支之苦。 ······························································································· 3分 对于任何软件开发机构的软件过程的改进都是在完成一个又一个小的改进的基础之上不断进行的渐进过程,而不是一蹴而就的彻底革命。CMM将软件过程从无序到有序的进化过程分为5个等级,用于测量软件机构的软件过程成熟度和评价其软件过程能力 什么是软件配置管理? 答:软件配置管理,简称SCM(Software Configuration Management),是在软件的整个生命周期内管理变化的一组活动。具体地讲,这组活动包括:①标志变化,②控制辩化,③确保适当地实现变化,④向需要指导这类信息的人报告变化。软件配置管理技术可以使软件变更所产生的错误达到最小并最有效地提高

系统工程期末复习资料(全)

系统:由两个及以上有机联系、相互作用的要素组成,具有特定结构、功能和环境的整体。系统边界:从空间结构上看,把系统和环境分开的所有点的集合;从逻辑上看,边界是系统构成关系从起作用到不起作用的边界,系统质从存在到消失的边界。 系统的属性:整体性{是系统最核心的特性,是系统性最集中的体现} 关联性(由多个有机联系、相互作用的要素组成,具备独立要素所不具备的功能) 环境适应性(环境输入系统,系统输出环境,系统要生存,一定要适应环境) 层次性(作为总体来看,系统可以分解一系列子系统,并有一定的层次结构) 目的性(有一定目的,为达到既定目的而具备一定的功能) 集合性(把具备某种属性的一些对象看成一个整体,从而形成一个集合) 系统的类型:人造系统和自然系统 实体系统和概念系统、动态系统和静态系统、封闭系统和开发系统 系统工程的概念:是组织管理系统的规划、研究、设计、制造、试验、使用的科学方法,是一种对所有系统具有普遍意义的科学方法。 系统工程方法论:是研究、探索系统问题的一般规律和途径 重要思想:最优思想、总体思想、组合思想、分解和协调思想、反馈思想 霍尔三维结构:知识维、时间维、逻辑维 时间维(6个阶段):规划阶段、方案阶段、研制阶段、生产阶段、运行阶段、更新阶段 逻辑维(7个步骤):明确问题、选择目标、系统综合、系统分析、方案优化、做出决策、付诸实施 特点:强调目标明确,核心是最优化,认为一切现实问题都可以规划为工程系统问题,运用定量分析法,做最优解答。该方法论在研究方法上有整体性,在技术应用上有综合性,在组织管理上有科学性,在系统工程上有问题导向性。 切克兰德方法论:主要内容:问题、根底定义、建立概念模型、比较与探索、选择、设计与实施、评估与反馈 主要步骤(略) 比较:同:同为系统工程方法论,均以问题为起点,具备相应的逻辑结构 异:前者主要研究工程系统问题,后者更适用于“软”系统问题的研究 前者以优化分析为核心,后者以比较学习为核心 前者使用定量分析方法,后者使用定性、定量与定性相结合的方法 前者研究对象为良结构,后者则为不良结构 系统分析:运用建模及预测、优化、仿真、评价等技术,对系统的各方面进行定性与定量相结合的分析,为选择最优或满意的方案提供决策依据的分析研究过程。 6要素:问题、目的及目标、方案、模型、评价、决策者 步骤(SA):认识问题——>探寻目标——>综合方案——>模型化——>优化或仿真分析——>系统评价——>决策 系统原则:坚持以问题为导向,以整体为目标,多方案模型分析与选优、以定量与定性相结合、多次反复进行 创新方法:提问法、头脑风暴法、德尔菲法、情景分析法、定性研究方法、数据挖掘方法结构模型:定性表示系统构成要素以及它们之间本质存在的相互依赖、相互制约和联系情况的模型 结构模型化:建立系统结构模型的过程 结构分析:实现系统结构模型化并加以解释的过程 SD流程图:认识问题——>界定系统——>要素及因果关系分析——>建立结构模型——>建立量化分析模型——>比较与评价——>政策分析

软件工程毕业论文

软件工程毕业论文 Prepared on 22 November 2020

目录

第一章绪论 系统开发背景 随着现代社会机械化程度越来越高,人们对机械知识的渴望越来越强烈,而用户间的交流恰好满足了这种需要。用户与用户之间的互相讨论与学习会使用户快速提高自己对于机械知识的了解和认知。针对这种现状开发了本系统。 论坛又名BBS,全称为BulletinBoardSystem(电子公告板)或者BulletinBoardService(公告板服务)。是Internet上的一种电子信息服务系统。它提供一块公共电子白板,每个用户都可以在上面书写,可发布信息或提出看法。它是一种交互性强,内容丰富而及时的Internet电子信息服务系统。用户在BBS站点上可以获得各种信息服务,发布信息,进行讨论,聊天等等。像日常生活中的黑板报一样,论坛按不同的主题分为许多版块,版面的设立依据是大多数用户的要求和喜好,用户可以阅读别人关于某个主题的看法,也可以将自己的想法毫无保留地贴到论坛中。 一般来说,论坛也提供邮件功能,如果需要私下的交流,也可以将想说的话直接发到某个人的电子信箱中。在论坛里,人们之间的交流打破了空间,时间的限制。在与别人进行交往时,无须考虑自身的年龄,学历,知识,社会地位,财富,外貌,健康状况,也无从知道交谈的对方的真实社会身份。这样,参与讨论的人可以处于一个平等的位置与其他人进行机械方面问题的探讨。论坛往往是由一些有志于此道的爱好者建立,对所有人都免费开放。而且,由于BBS的参与人众多,因此各方面的话题都不乏热心者。我们当然可以利用它来解决机械学习中的一些疑惑。 后来随着因特网的普及,拨号BBS和BBS网络已经日渐凋零,所剩无几。目前的BBS站点,多数是基于Internet的Telnet协议。在服务器端,采用Maple BBS或者FireBird BBS系统。用户端通过Telnet软件如NetTerm、CTerm、FTerm等来登陆服务器,阅读发表文章,发送邮件,通过仿真的ZModem协议来上传下载数据文件。有些站点还提供SSH登陆,确保连接的安全性,还有很多站点提供Web方式的界面,方便用户使用。 中国大陆BBS界在Firebird BBS基础上还发展了Smth BBS、Ytht BBS、Lily BBS等,提供非常丰富web方式访问,如发文、即时消息、信件、Blog,而一些管理操作,如版面管理、个人文集,则仍然限定为Telnet访问。而客户端的Telnet软件也发展了很多便于操作的功能,如:鼠标响应、URL识别、图片预览,文章自动下载、自定义脚本等。

软件工程期末复习填空题

软件工程填空题 1、软件危机是指在计算机软件的_开发和维护_过程中所遇到的一系列严重问题。 2、软件危机包含下述两个方面的问题:一是 _如何开发软件,以满足对软件日益增长的需求;二是_如何维护数量不断膨胀的已有软件_。 3、软件不同于硬件,它是计算机系统中的_逻辑部件_而不是物理部件。 4、一个软件从定义、开发、使用和维护,直到最终被废弃,要经历一个漫长的时期,通常把这个漫长的时期称为__生命周期__。 5、软件配置主要包括 __程序、文档_和_数据_ 等成分。 6、软件工程学的一个重要目标就是提高软件的 _可维护性、减少 _软件维护_ 的代价。 7、软件工程是指导计算机软件 __软件开发_ 和 __维护_ 的一门工程学科。 8、软件工程包括 _技术_ 和 __管理__ 两方面的内容,是技术与管理紧密结合所形成的工程学科。 9、通常把在软件生命周期全过程中使用的一整套技术方法的集合称为 _方法学_ ,也称为范型。 10、软件工程方法学包含_方法、工具和_过程_ 三个要素。 11、目前使用最广泛的软件工程方法学,分别是 _传统方法学和面向对象方法学 __ 。 12、概括地说,软件生命周期由 _软件定义_ 、 __软件开发_ 和 __运行维护(软件维护)__ 3个时期组成,每个时期又进一步划分为若干个阶段。 13、软件定义时期通常进一步划分为3个阶段,即 _问题定义__ 、 __可行性研究__ 和需求分析。、 14、螺旋模型将 _瀑布、_ 模型和 __快速原型_ 模型结合起来,加入了两种模型均忽略了的风险分析,弥补了这两种模型的不足。 15、瀑布模型 _不能_ 适应需求可变的软件开发,只有到 _开发结束_ 才能见到整个软件系统。 16、可行性研究阶段当从系统逻辑模型出发,探索若干种可供选择的主要解法,对每种解法都应该从 __技术可行性、经济可行性_和 _操作可行性__ 这三个方面研究每种解法的可行性。

软件工程复习资料

软件工程的定义:软件工程是一门研究如何用系统化、规范化、数量化等工程化思想和方法去进行软件开发、维护和管理的学科。 软件危机的定义:软件开发和维护过程中所遇到的如软件规模越来越大,复杂度不断增加,软件的需求量日益增大等的严重问题我们称之为软件危机。 软件工程有哪些基本的思想:a.推迟实现的观点b.逐步求精的观点c.分解与抽象的观点d.信息隐蔽的观点e.质量保证的观点 CMM(Capability Maturity Model)能力成熟度模型,是对于软件组织在定义、实施、度量、控制和改善其软件过程的实践中各个发展阶段的描述。 极限编程(Extreme Programming , XP)是一种软件工程方法学是敏捷软件开发中最富有成效的几种方法学之一。它的的核心有四个要点:交流、简单、反馈、勇气 软件生命周期模型:通常把软件生命周期中各项开发活动的流程用一个合理的框架——开发模型来规范描述,这就是软件过程模型,或者称为软件生命周期模型。 软件需求分类:功能需求、非功能需求和领域需求 结构化分析(Structured Analysis, SA) 结构图(Structure Chart ,SC) 面向对象的一些概念:类是具有相同或相似性质的对象的抽象。实例是类的具体化。继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。消息是指对象间相互联系和相互作用的方式 数据流类型:变换型数据流、事务型数据流、混合型数据流 Jackson图:Jackson图是Jackson方法分析和设计最有效的表达手段,用它既可以描述问题的数据结构,也可以描述软件的程序结构。Jackson图的优点是便于表示层次结构,利于结构自顶向下分解,形象直观,可读性好。Jackson方法用某种形式的伪码给出程序的过程性描述。伪码一般采用结构化形式的英语描述,例如,用”select”语句描述选择结构,用”until”或”while”语句描述重复结构。 结构化程序设计的三种基本逻辑结构是:顺序结构、选择结构和循环结构。 类与类之间的关系:关联、泛化、聚集 软件设计的三类活动:软件设计的第一类活动是软件结构设计,也称为总体设计、概要设计或高层设计。第二类活动是软件详细设计,也称为(模块)过程设计或底层设计。第三类活动是设计测试。 软件模块化设计的指导思想:分解、抽象、逐步求精、信息隐蔽和模块独立性。 软件模块化设计的定义:把一个大型软件系统的全部功能,按照一定的原则合理地划分为若干个模块,每个模块完成一个特定子功能,所有的这些模块以某种结构形式组成一个整体。 模块独立性的定义及控制标准:模块独立性是模块化、抽象、信息隐蔽概念的直接结果,也是判断模块化结构是否合理的标准。模块独立性可以由两个定性标准度量,即模块自身的内聚和模块之间的耦合。 内聚性、耦合性和抽象的定义:内聚性是从功能的角度对模块内部聚合能力的量度,耦合性是对一个软件结构内不同模块之间互连程度的度量。抽象是一种从一般的观点看待事物的方法,它要求我们集中于事物的本质特征(内部状态和运动规律),而非具体细节或具体实现。 信息隐蔽定义:每个模块对其他所有模块都隐蔽自己的设计决策,也就是说,模块应该详细说明且精心设计以求在某个模块中包含的信息不被不需要这些信息的其他模块访问。 按耦合度从低到高依次有7种耦合方式:a.非直接耦合(独立运行)b.数据耦合(用参数表传递简单数据)c.标记耦合(传递数据结构或者一部分)d.控制耦合(传递的信息包括控制模块的信息)e.外部耦合(模块与软件之外的环境有关)f.公共耦合(多个模块引用同一全局的数据区)g.内容耦合(访问内部数据,代码重叠或者多个入口)按内聚度从低到高依次有7种内聚种类:a.偶然内聚(模块完成的多个任务,任务之间的关系松散)b.逻辑内聚(模块完成逻辑相关的一组任务)c.瞬时内聚(模块的所有任务必须在同一时间间隔内执行)d.过程内聚(模块的处理元素相关而且按照特定的次序执行)e.通信内聚(模块的所有元素集中在一个数据结构区域上)顺序内聚(模块的处理元素相关,必须顺序执行)f.功能内聚(模块完成单一的功能,各个部分协调工作,而且不可缺少)结构化设计方法(SD)是基于模块化、自顶向下细化、结构化程序设计等程序设计技术基础上发展起来的。 软件维护类型及对应方向的维护: 纠错性维护:对在测试阶段未能发现的,在软件投入使用后才逐渐暴露出来的错误的测试、诊断、定位、纠错以及验证、修改的回归测试过程。纠错性维护占整个维护工作的21% 完善性维护:为了满足这些日益增长的新要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、

相关文档
相关文档 最新文档