中国石油大学(华东)软件工程导论复习资料
中国石油大学(华东)软件工程导论复习资料
![中国石油大学(华东)软件工程导论复习资料](https://img.taocdn.com/s3/m/81846498fad6195f312ba6f3.png)
软件工程的定义 :◆传统定义为了经济地获得可靠的和能在实际机器上有效运行的软件,确立并应用健全的工程原理◆ IEEE 定义软件工程是. 将系统的、规范的和可计量的方法应用于软件的开发、操作和维护,即将工程化应用于软件软件的构成要素 :软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文档的完整集合。
程序:是按事先设计的功能和性能要求执行的指令序列;数据:是使程序能正常操纵信息的数据结构;文档:是与程序开发、维护和使用有关的图文材料。
软件的特点:1. 软件是一种逻辑实体,具有抽象性;2. 是开发的,而不是制造的3. 具有柔性4. 不磨损软件工程的范围:每个软件项目都是为某种商业需要而设计的已经成为基于计算机的系统和产品演变过程中的关键因素已经从专门问题的解决方案和分析信息的工具,转变为完整的结构良好的行业涉及广泛的技术和应用领域,然而所有软件的演变都遵循着 30 多年来一成不变的规律软件工程为构建高质量的软件提供基础框架软件工程的三个要素是方法、工具、过程。
瀑布模型的特点:1. 阶段间具有顺序性和依赖性2. 推迟实现的观点3. 质量保证的观点快速原型模型的特点:◆快速原型模型先开发一个“原型”软件,完成部分主要功能,展示给用户并征求意见,然后逐步完善,最终获得满意的软件产品。
◆快速实现和提交一个有限的版本,可以应付市场竞争的压力。
螺旋模型的特点:◆对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标;◆减少了过多测试(浪费资金)或测试不足(产品故障多)所带来的风险;◆更重要的是,在螺旋模型中维护只是模型的另一个周期,在维护和开发之间并没有本质区别。
◆螺旋模型的主要优势在于它是风险驱动的,但这也是其一个弱点,要求开发人员具有丰富的风险评估经验和这方面的专门知识。
螺旋模型主要适用于内部开发的大规模软件项目增量模型的特点:◆采用瀑布模型和快速原形模型等开发软件时,目标都是一次就把一个满足所有需求的产品提交给用户。
《软件工程导论》期末复习材料
![《软件工程导论》期末复习材料](https://img.taocdn.com/s3/m/1f3696c726fff705cc170a2f.png)
《软件工程导论》期末复习材料1、什么是软件危机?产生的主要原因有哪些?(1页)软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
主要原因:1)用户对软件需求的描述不精确。
2)软件开发人员对用户需求的理解有偏差。
3)缺乏处理大型软件项目的经验。
4)开发大型软件易产生疏漏和错误。
5)缺乏有力的方法学的指导和有效的开发工具的支持。
6)面对日益增长的软件需求,人们显得力不从心。
2、什么是瀑布模型,瀑布模型的缺点主要有哪些?(15页)瀑布模型将软件开发分成:需求分析、规格说明、设计、编码、综合测试和维护阶段,每个阶段必须完成规定的文档,必须等前一个阶段完成之后才开始下一个阶段的工作,前一个阶段输出的文档是下一个阶段的输入文档。
缺点主要包括:1)在软件开发的初期阶段就要求做出正确、全面、完整的需求分析对许多应用软件来说是极其困难的。
2)在需求分析阶段,当需求确定后,无法及时验证需求是否正确、完整。
3)不支持产品的演化,缺乏灵活性,使软件产品难以维护。
3、什么是数据流图,数据流图由哪些基本符号组成?(40页)数据流图:简称DFD, ,主要用于SA(结构化分析)方法,它描绘信息流和数据从输入移动到输出的过程中所经受的变换,是一种功能模型. 基本符号有四种: ->,箭头,表示数据流; =,开口矩形或者两条平行线,表示数据存储; 正方形或者立方形,表示数据的源点或终点,圆角矩形或圆形,表示加工,也就是数据的处理;数据流图中每一个加工至少有一个输入流和一个输出流。
4、数据字典有哪几种元素组成?(47页)1)数据流,2)数据元素,3)数据存储,4)处理或者加工5、需求分析阶段的基本任务是什么(56页)1).问题识别,确定系统的综合需求和数据需求,包括a.功能需求b.性能需求c.环境需求d.用户界面需求e.出错处理的需求f.接口需求2).分析与综合,导出软件的逻辑模型.3).修正开发计划4).编写文档6、模块的内聚有哪几种?(99页)功能内聚(模块就是一个单一功能)、顺序内聚(模块中的处理必须顺序执行)、通信内聚(模块中所有任务都是对同一批数据操作)、过程内聚(模块中的处理必须按特定次序执行)、时间内聚(模块的任务要在同一时间段完成)、逻辑内聚(模块的任务在逻辑上属于一类)、偶然内聚(模块中的任务有很松散的关系)。
《软件工程导论》考试复习资料
![《软件工程导论》考试复习资料](https://img.taocdn.com/s3/m/f0a4ec8adaef5ef7ba0d3c75.png)
2016-2017年第一学期《软件工程》期末复习答疑一、怎样进行课程的总复习?将在16周最后的课程总复习课(串讲):第一、各章的复习重点;第二、适当讲解期末考试复习题。
下面给同学们提几点建议,供大家参考:(1)在进行课程的总复习前,应该完成课程的上机练习作业;(2)要进行全面地系统的复习,决不能靠猜题和押题等侥幸心理进行复习,因为结业考试的题量很大,内容覆盖非常广,所以必须进行全面地系统的复习;(3)在全面地系统复习基础上,掌握的课堂讲授的知识点。
尤其要抓住各章的重点和难点问题深入复习(我将会在最后一次复习课中强调的)。
(4)在全面复习的基础上,认真练习或阅读期末考试复习题(与考试题型一致)。
(5)所给的复习资料上未提到内容,只要求作一般性的掌握,可以不必去深究,但不代表一点不考,因为需要掌握《软件工程》中的一些常识。
二、课程理论考试试卷题型本课程理论考试是闭卷考试,题型包括:名词解释5题15分;单项选择题15题15分,填空题10题20分,判断题20题10分,问答与简述题5题20分。
综合题两题20分。
一、名词解释1、软件危机答:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
这些问题表现在以下几个方面:(1)用户对开发出的软件很难满意。
(2)软件产品的质量往往靠不住。
(3)一般软件很难维护。
(4)软件生产效率很低。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以估计。
(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。
2、需求分析答:需求分析是指开发人员要准确理解用户的需求,进行细致的调查分析,将用户非形式的需求陈述转化成完整的需求定义,再由需求定义转换到相应的形式功能规约(需求规格说明)的过程。
3、Alpha测试答:用户在开发者的场所进行测试,并且在开发者的指导下进行,测试在受控环境中进行,开发者记录发现的错误和问题4、Beta测试答:用户在一个或多个客户场所进行测试,不受开发者控制,测试者记录发现的问题和错误,定期将问题报告发送给开发者。
软件工程导论 期末复习
![软件工程导论 期末复习](https://img.taocdn.com/s3/m/bad27609195f312b3069a5ab.png)
第一章软件工程学概述1.什么是软件危机(概念)在计算机软件的开发和维护过程中所遇到的一系列严重问题2.软件工程学科出现的主要原因:软件危机的出现3.什么是软件工程?(概念)①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。
4.简述结构化范型和面向对象范型的要点,并分析他们的优缺点目前使用得最广泛的软件工程方法学(2种):⑴传统方法学:也称为生命周期方法学或结构化范型。
优点:把软件生命周期划分成基干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度。
缺点:当软件规模庞大时,或者对软件的需求是模糊的或会承受时间而变化的时候,开发出的软件往往不成功;而且维护起来仍然很困难。
⑵面向对象方法学优点:降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作;促进了软件重用。
5.软件生命周期每个阶段的基本任务问题定义:准确地回答“要解决的问题是什么”可行性研究:确定问题是否值得去解决需求分析:准确地回答“系统必须做什么”总体设计:设计出实现目标系统的几种可能的方案确定程序由哪些模块组成以与模块间的关系详细设计:把解法具体化(设计出程序的详细规格说明)编码和单元测试:写出正确的容易理解、容易维护的程序模块综合测试:通过各种类型测试(与相应的调试)使软件达到预期的要求软件维护:通过各种必要的维护活动使系统持久地满足用户的需要软件生命周期划分成哪些阶段软件生命周期由软件定义、软件开发和运行维护(也成为软件维护)3个时期组成软件定义时期:问题定义、可行性研究和需求分析软件开发时期:总体设计、详细设计、编码和单元测试、综合测试软件维护时期6.什么是软件过程?(概念)为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤7.常见的软件生存周期模型(了解)1.瀑布模型——阶段化过程特点:具有顺序性和依赖性缺点:是由文档驱动的。
软件工程导论复习(答案版)
![软件工程导论复习(答案版)](https://img.taocdn.com/s3/m/d7903f2d312b3169a451a4bd.png)
第1章软件工程概述1、什么是软件工程?为什么会出现软件工程?软件工程是:①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。
软件工作者在20世纪60年代后期开始认真研究消除软件危机的途径,从而逐渐形成了一门新兴的工程学科——计算机软件工程学(通常简称为软件工程)。
2、软件工程的主要目标是什么?基本目标是什么?软件工程的目标:从管理和技术两个方面开发和维护计算机软件,用低成本,开发出达标、高性能、易于移植、可靠性高的软件。
软件工程的基本目标是:优质、高产。
3、什么是软件工程方法学?软件工程的3要素(软件工程方法学的3要素)是什么?分别包含什么内容?软件工程方法学:软件生命周期全过程中使用的一整套技术方法的集合软件工程方法学包含3个要素:方法、工具和过程。
方法是完成软件开发的各项任务的技术方法,回答“怎样做”的问题;工具是为运用方法而提供的自动的或半自动的软件工程支撑环境;过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
目前使用得最广泛的软件工程方法学,分别是传统方法学和面向对象方法学。
4、什么是软件过程?什么是软件周期?常见软件生命周期模型(课件中的前5类)的特点有哪些?软件过程:它是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
软件生命周期:由软件定义、软件开发和运行维护(也称之为软件维护)3个时期组成①瀑布模型定义:传统软件工程方法学的软件过程,基本上可以用瀑布模型来描述。
瀑布模型的特点:1.阶段间具有顺序性和依赖性;2.推迟实现的观点;3.质量保证的观点。
瀑布模型的成功在很大程序上是由于它基本上是一种文档驱动的模型。
瀑布模型的主要优点:a.可强迫开发人员采用规范的技术方法;b.严格地规定了每个阶段必须提交的文档;c.每个阶段结束前必须正式进行严格的技术审查和管理复审。
软件工程导论 复习资料
![软件工程导论 复习资料](https://img.taocdn.com/s3/m/18096534773231126edb6f1aff00bed5b8f37352.png)
软件工程导论复习资料软件工程导论是计算机科学与技术专业的一门重要课程,它主要介绍了软件工程的基本概念和原理,帮助学生了解软件开发过程中的关键问题和解决方法。
本文将为大家提供一份软件工程导论的复习资料,希望能够帮助同学们更好地复习和掌握这门课程。
1. 软件工程概述1.1 软件工程定义软件工程是一门关于开发和维护大规模软件的学科,它涉及到软件开发的各个阶段和过程。
软件工程的目标是通过系统化和可量化的方法来开发、维护和管理软件,以提高软件的质量、效率和可靠性。
1.2 软件生命周期软件生命周期是软件开发过程中的一个重要概念,它包括需求分析、设计、编码、测试、部署和维护等阶段。
了解软件生命周期的各个阶段和活动,对于理解软件开发过程的全貌和整体把控至关重要。
1.3 软件工程方法学软件工程方法学是用于指导软件开发过程的一种方法体系,包括传统的瀑布模型、敏捷开发方法、迭代开发方法等。
通过学习不同的软件工程方法学,可以使软件开发过程更加有序、高效。
2. 需求工程2.1 需求定义和分类需求工程是软件开发过程中的第一个阶段,它主要涉及到需求的定义、分析和规范化等活动。
了解需求的定义和分类能够帮助我们更好地理解用户的需求,从而制定出更准确的软件需求规格说明书。
2.2 需求获取和分析需求获取是收集用户需求信息的过程,需求分析是将这些需求信息进行过滤、分类和分析的过程。
在需求获取和分析阶段,我们需要使用一些常见的工具和技术,例如面谈、问卷调查、用例图等。
2.3 需求规格说明书需求规格说明书是对系统需求进行详细描述和规范的文档,它包括功能需求、非功能需求、性能需求等内容。
编写清晰、准确的需求规格说明书是软件开发过程中的关键一步,它对于后续的设计和编码工作具有重要的指导作用。
3. 软件设计3.1 软件设计基础软件设计是将需求转化为软件结构的过程,它包括模块化设计、面向对象设计、数据结构设计等。
掌握软件设计的基础知识,能够帮助我们合理划分系统的功能模块,提高软件的可维护性和可扩展性。
《软件工程导论》期末复习题知识点
![《软件工程导论》期末复习题知识点](https://img.taocdn.com/s3/m/54ba62ba910ef12d2af9e778.png)
《软件工程导论》期末复习知识点第一章填空题1、软件是、及其说明程序的。
答案:数据、计算机程序、各种文档2、软件工程包括软件开发技术和两大部分内容。
答案:软件工程管理选择题1、软件危机出现于,为了解决软件危机,人们提出了用____的原理来设计软件,这是软件工程诞生的基础。
A50年代末B60年代初 C 60年代末 D 70年代初A运筹学 B 工程学C软件学D软件学答案:C B2、开发软件需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称作____。
A 软件投机B软件危机C软件工程D软件产生答案:B3、产生软件危机的原因有如下几点,除了______。
A 软件开发过程未经审查B 软件开发不分阶段,开发人员没有明确的分工C 所开发的软件,除了程序清单外,没有其他文档D 采用工程设计的方法开发软件,不符合软件本身的特点答案:D4、软件产品的开发主要是( )。
A 复制B 再生产C 拷贝D 研制答案: D判断题1、文档是软件产品的一部分,没有文档的软件就不称其为软件。
()答案:√2、一个成功的项目唯一提交的就是运行程序。
()答案:×3、瀑布模型不适用于需求不确定的情况。
()答案:√名词解释1、软件工程答案:软件工程是:①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。
2、软件生存周期答案:软件产品从形成概念开始,经过开发、运行(使用)和维护直到退役的全过程称为软件生存周期,包括软件定义、开发、使用和维护三部分。
简答题1、简述软件危机发生的原因。
答案:(1)软件的规模加大、复杂性提高、性能增强;(2)软件是逻辑产品,尚未完全认识其本质和特点;(3)缺乏有效的、系统的开发、维护大型软件项目的技术手段和管理方法;(4)用户对软件需求的描述和软件开发人员对需求的理解往往存在差异,用户经常要求修改需求,开发人员很难适应;(5)软件开发的技术人员和管理人员缺乏软件工程化的素质和要求,对工程化的开销认识不足。
软件工程导论 复习资料
![软件工程导论 复习资料](https://img.taocdn.com/s3/m/19adc2254693daef5ef73dd8.png)
名词解释:1.软件生命周期模型软件生存周期模型:是描述软件开发过程中各种活动如何执行的模型。
软件生存周期主要模型:瀑布模型、增量模型、螺旋模型、喷泉模型、变换模型和基于知识的模型等2. 模块独立性模块独立性指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。
模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果。
3.软件的可维护性软件可维护性指软件能够被理解、校正、适应及增强功能的容易程度。
4. 软件工程软件工程指用科学知识和技术原理来定义、开发、维护软件的一门学科。
或者说,软件工程就是运用工程学的基本原理和方法来组织管理软件的生产、研究、开发、管理、维护的过程、方法和技术。
5.数据字典字据字典:简称DD,就是用来定义数据流图中的各个成分具体含义的,它以一种准确的\无二义性的说明方式为系统的分析\设计及维护提供了有关元素的一致的定义和详细的描述。
6、静态测试静态测试是采用人工检测和计算机辅助静态分析的方法对程序进行检测。
7、面向对象:面向对象OO=类+对象+继承+通信8、需求分析需求分析是指:开发人员要准确理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式主义功能规约(需求规格说明)的过程。
9、软件危机软件危机(Software Crisis) 是计算机软件在它的开发和维护过程中所遇到的一系列严重问题。
概括地说,主要包含两方面的问题:如何开发软件,怎样满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。
10、软件生存周期软件生存周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。
软件生存周期包括:可行性分析和项目开发计划、需求分析、概要设计、详细设计、编码、测试、维护等。
简答:1.软件生存周期有哪几个阶段?①可行性研究②需求分析③总体设计④详细设计⑤编码⑥测试⑦维护2.白盒测试法有哪些逻辑覆盖标准?①语句覆盖②判定覆盖③条件覆盖④判定/条件覆盖⑤条件组合覆盖⑥点覆盖、边覆盖、路径覆盖3.软件的维护有哪4种类型?①校正性维护②适应性维护③完善性维护④预防性维护。
中国石油大学《软件工程》复习题及答案(可编辑修改word版)
![中国石油大学《软件工程》复习题及答案(可编辑修改word版)](https://img.taocdn.com/s3/m/c8722d3a524de518974b7d85.png)
《软件工程》期末复习题及答案一、单项选择题(本大题共60小题,在每小题的四个备选答案中,选出一个正确答案,并将正确答案填涂在答题卡上)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. 结构化分析建立功能模型的工具是。
A.DFDB.判定树/判定表C.SCD.结构化语言9. 数据词典是对数据定义信息的集合,它所定义的对象都包含于。
A.数据流图B.程序框图C.软件结构D.方框图10.用于描述结构化分析中数据流加工逻辑的是。
A.判定树B.ER图C.状态图D.用例图11.下列几种耦合类型,耦合性最高的是。
A.公共耦合B.控制耦合C.标记耦合D.数据耦合12. 通信内聚是指。
A. 把需要同时执行的动作组合在一起形成的模块B.各处理使用相同的输入数据或者产生相同的输出数据C.一个模块中各个处理元素都密切相关于同一功能且必须顺序执行D.模块内所有元素共同完成一个功能,缺一不可13.模块定义为受该模块内一个判定影响的所有模块集合。
A.控制域B.作用域C.宽度D.接口14.好的软件结构应该是。
A.高耦合、高内聚B.低耦合、高内聚C.高耦合、低内聚D.低耦合、低内聚15.结构化程序设计的一种基本方法是。
软件工程导论考试复习资料
![软件工程导论考试复习资料](https://img.taocdn.com/s3/m/bf8dd20ff12d2af90242e670.png)
1、软件危机是指在计算机开发过程中的开发和维护过程中所遇到的一系列的严重问题。
2、软件是程序、数据及相关文档的完整集合,程序是能够完成预定功能和性能的可执行的程序序列;数据是是使程序能够适当的处理信息的数据结构;文档是开发、使用和维护程序所需要的图文资料。
3、软件工程学包含3个要素:方法、工具、过程。
4、目前使用最广泛的软件工程方法学是传统方法学和面向对象方法学。
5、软件工程方法学的软件过程基本上可以用瀑布模型来描述。
6、瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型。
7、Rup把软件生命周期划为:初始、精化、构建、移交阶段。
8、可行性研究的三方面:技术可行性、经济可行性、操作可行性。
9、数据流图(DFD)是一种图形化技术,他描绘信息流和数据从输入移动到输出的过程中所经受的变化。
10、数据字典是关于数据信息的集合,也就是对数据流程图中所包含的所有元素的定义的集合。
11、数据流图和数据字典共同构成系统的逻辑模型,没有数据字典,数据如就不严格,没有流程图,数据字典也难以发挥作用。
12、需求分析阶段结束之前,系统分析员应该写出软件需求规格说明书,以书面形式准确的描述软件需求。
13、9、结构化分析方法就是面向数据流自顶向下逐步求精进行需求分析的方法。
14、ER图中包含了实体、关系和属性,矩形代表实体,菱形表示关系,椭圆或圆角矩形表示属性,用直线把实体和其属性连接。
15、验证软件需求的正确性:一致性、完整性、现实性、有效性。
16、总体设计的基本目的是回答“概括地说,系统应该如何实现?”,总体设计又称为概要设或初步设计。
17、模块的独立程度可以有两个定性标量度量:内聚和耦合。
18、软件测试的目标:(1)测试是为了发现程序中的错误而执行程序的过程;(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;(3)成功的测试是发现可至今为止尚未发现的错误的测试。
19、软件测试步骤:模块测试、子系统测试、系统测试、验收测试、平行运行。
软件工程导论复习材料
![软件工程导论复习材料](https://img.taocdn.com/s3/m/838965df162ded630b1c59eef8c75fbfc77d94d2.png)
软件工程导论复习材料第一篇:软件工程导论复习材料1.软件工程基本概念1.()因素促使计算机系统越来越复杂。
A.计算机内存和存储容量上的巨大增长B.外部输入/输出选项的更加多样性C.计算机体系结构方面的深刻变化D.以上所有选项2.下面的()不再是现代软件工程师关注的问题。
A.为什么不能在产品发布前去除软件错误?B.为什么软件需要很长时间才能完成?C.为什么开发一个软件的成本这么高?D.为什么计算机硬件的成本这么高?3.软件会逐渐退化而不会磨损,其原因在于()。
A.软件备件很难订购B.软件错误通常发生在使用之后C.通常暴露在恶劣的环境下D.不断的变更使组件接口之间引起错误软件4.大多数软件仍然是定制开发的,其原因在于()。
A.软件组件重用是十分普遍的B.可重用的组件太昂贵而无法使用C.软件在不使用其他组件的情况下很容易构造出来D.商业组件在很多应用领域中可以得到5.下面的()说法是正确的。
A.软件危机在20世纪70年代末期全面爆发B.当前先进的软件工程方法已经解决了软件危机的问题C.软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题D.软件危机是指在软件产品中存在一系列的质量问题1.瀑布模型本质上是一种()。
A、线性迭代模型B、顺序迭代模型C、线性顺序模型D、及早见产品模型 2.()是用户和设计交换最频繁的方法。
A、原型化方法B、瀑布模型方法C、螺旋模型方法D、构件组装模型5.在软件开发模型中,提出最早、应用最广泛的模型是()A.瀑布模型B.喷泉模型C.增量模型D.螺旋模型1.软件工程的方法只适用于大型软件的开发,对小型软件的开发没有帮助。
()1.什么是软件危机?其主要表现有那些?1.有人认为 软件工程过于耗费时间,并且妨碍开发人员的编程效率。
你是否认同这种观点?请阐述理由。
2.需求分析需求规格说明描述了()。
A.计算机系统的功能、性能及其约束B.每个指定系统的实现C.软件体系结构的元素D.系统仿真所需要的时间7.软件可行性研究实质上是要进行一次()需求分析、设计过程。
软件工程导论复习知识点
![软件工程导论复习知识点](https://img.taocdn.com/s3/m/86d30c09b8f67c1cfbd6b81c.png)
、软件:软件定义:软件=程序+文档+数据软件特点:1、具有抽象性2、没有明显的制造过程3、软件的维护比硬件的维护要复杂得多4、对计算机系统有着不同程度的依赖性5、尚未完全摆脱手工艺的开发方式6、软件本身是复杂的7、软件成本相当昂贵8、相当多的软件工作涉及到社会因素软件的发展:程序设计、程序系统、软件工程软件危机:软件危机指的是软件开发和维护过程中遇到的一系列严重问题。
软件危机的问题:如何开发软件,怎样满足对软件的日益增长的需求;如何维护数量不断膨胀的已有软件。
软件危机表现:1.开发成本难以控制,进度不可预计;2. 软件系统的质量和可靠性很差,难以满意;3. 软件文档相当缺乏,软件系统不可维护;4. 软件开发生产率很低,软件产品供不应求。
5. 软件产品成本十分昂贵。
软件危机产生原因:1、软件本身的特点2、对软件开发与维护存在许多错误认识和做法3、软件开发与维护的方法不正确解决软件危机途径:1、将软件开发看成是一种组织严密、管理严格、各类人员协同配合共同完成的工程项目。
2、研究和推广成功的软件开发技术和方法。
3、开发和使用好的软件工具。
软件生命周期:软件所经历的定义、开发、使用和维护直到废弃所经历的时期。
程序设计环境:源程序编辑,编译或解释,链接,调试和运行工具的集合软件工程环境:软件定义,设计和实现,测试和维护等各个阶段所使用的软件工具的集合二、软件工程:软件工程定义:研究如何应用一些科学理论和工程上的技术来指导软件的开发,用较少的投资获得高质量的软件的一门学科。
软件工程性质:涉及计算机科学、工程科学、管理科学、数学等领域,着重于如何建造一个软件系统。
用工程科学中的观点来进行费用估算、制定进度、制定计划和方案。
用管理科学中的方法和原理进行软件生产的管理。
用数学的方法建立软件开发中的各种模型和各种算法,如可靠性模型,说明用户需求的形式化模型等。
软件工程三要素:方法、工具和过程。
软件方法:是完成软件开发的各项任务的技术方法,回答“如何做”的问题;工具是为方法的运用提供自动的或半自动的软件支撑环境;过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
软件工程导论期末复习重点
![软件工程导论期末复习重点](https://img.taocdn.com/s3/m/2d50839968dc5022aaea998fcc22bcd126ff4282.png)
软件工程导论期末复习重点软件工程期末复习一、软件工程学概述1.软件危机:计算机开发和维护的过程中所遇到的一系列问题名词解释(需要加上软件危机产生的原因)对用户的要求没有完整准确的认识就匆忙着手编写程序论述题(需要加上软件危机的典型表现)01.对软件开发成本和嫉妒的估计常常不准确02.用户对已完成软件系统的不满意情况经常发生03.软件的质量靠不住2.软件工程:指导计算机开发和维护的一门工程学科?名词解释3.软件工程方法学的三要素:方法、工具、过程4.软件生命周期的三个时期:软件定义、软件开发、运行维护01.软件定义时期的三个阶段:问题定义、可行性研究、需求分析02.软件开发时期的四个阶段:总体设计、详细设计、编码、单元测试,综合测试,前两个称系统设计,后两个称系统实现03.软件维护时期:只要任务是使软件持久的满足用户的需要,具体的说,当软件在使用过程中发现错误时应该加以纠正,当环境改变时应修改软件以适应新的环境,当用户有新的需要时,应该及时改进软件以满足用户新的需求,本时期不在划分阶段,但是每一次维护活动本质上都是一次压缩和简化了的定义和开发过程5.可行性研究的结果是客户做出是否继续这项工程的决定的重要依据,只有投资取得较大收益的的那些工程项目才是值得继续进行下去的6.需求分析的目标是:确定出系统必须具备哪些功能,和用户密切配合,充分交流信息,以得出经过系统确认的系统逻辑模型7.软件维护的四类维护活动:01.改正性维护:改正和诊断在使用过程中发生的软件错误02.适应性维护:修改软件以适应新的环境变化03.完善性维护:根据用户的需求改善和扩充软件使它更完善04.预防性维护:为将来的维护活动事先做准备8.瀑布模型: ?论述题01.传统的瀑布模型开发软件的特点A.阶段间具有顺序性和依赖性B.推迟实现的观点C.质量保证的观点02.软件配置:程序、文档、数据03.注释有什么用:提高代码的可读性(有待补充)二、可行性研究1.可行性研究的目的:就是用最小的代价在尽可能短的时间内确定问题是否能够解决2.从三个方面研究每种解法的可读性;01.技术可行性:使用现在的技术能实现这个系统吗?02.经济可行性:这个系统的经济效益能超过它的开发成本吗?03.操作可行性:系统的操作方式在这个用户组织内能行得通吗?3.系统流程图:是概括的描绘物理系统的传统工具。
软件工程导论复习资料
![软件工程导论复习资料](https://img.taocdn.com/s3/m/96949604e3bd960590c69ec3d5bbfd0a7956d5f3.png)
软件工程导论复习资料第一章软件工程导论一、软件工程是指导计算机软件开发和维护的一门工程学科二、件工程的七条基本原则:1. 用分阶段的生命周期计划严格管理2. 坚持进行阶段评审3. 实行严格的产品控制4. 采用现代程序设计技术5. 结果应能清楚地审查6. 开发小组的人员应该少而精7. 承认不断改进软件工程实践的必要性三、软件工程方法学包含3个要素:方法、工具和过程。
方法是完成软件开发的各项任务的技术方法,回答“怎样做”的问题;工具是为运用方法而提供的自动的或半自动的软件工程支撑环境;过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
四、软件一程方法学:传统方法学、面向对象方法学五、软件生命周期:软件定义、软件开发和运行维护(也称为软件维护)3个时期组成1软件定义主要任务:问题定义、可行性研究和需求分析2开发时期主要任务:总体设计,详细设计,编码和单元测试,综合测试3维护时期主要任务:通过各种维护性活动使系统持久地满足用户的需求,通常有四类维护:改正性维护,也就是诊断和改正在使用过程中发现的软件错误;适应性维护,即修改软件以适应环境的变化;完善性维护,即根据用户的需求改进若扩充软件使它更完善;预防性维护,即修改软件,为将来的维护活动预先做准备//①问题定义阶段必须回答的关键问题是:“要解决的问题是什么?”②可行性研究~:对于上一个阶段所确定的问题有行得能的解决办法吗?③需求分析:确定目标系统必须具备哪些工能④总体设计:概括地说,应该怎样实现目标系统?⑤详细设计:应该怎样具体地实现这个系统呢?⑥编码和单元测试:写出正确的容易理解、容易维护的程序模块⑦综合测试:通过各种类型测(及相应的调试)使软件达到预定的要求,最基本的测试是集成测试和验收测试,集成测试是根据设计的软件结构,把经过单元测试检验的模块按某种选定的策略装配起来,在装配过程中对程序进行必要的测试;验收测试则是按照规格说明的规定,由用户对目标系统验收六、软件过程的各种模型:瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型第二章可行性研究一、可行性研究的任务分析几种主要的可能解法的利弊,从而判断原定的系统规模和目标是否现实,系统完成后所能带来的效益是否大到值得投资开发这个系统的程度二、可行性(1) 技术可行性使用现有的技术能实现这个系统吗?(2) 经济可行性这个系统的经济效益能超过它的开发成本吗?(3) 操作可行性系统的操作方式在这个用户组织内行得通吗?三、可行性研究过程1. 复查系统规模和目标、2. 研究目前正在使用的系统3. 导出新系统的高层逻辑模型、4. 进一步定义问题5. 导出和评价供选择的解法、6. 推荐行动方针7. 草拟开发计划、8. 书写文档提交审查四、系统流程图:是概括地描绘物理系统的传统工具。
软件工程导论复习1资料文档
![软件工程导论复习1资料文档](https://img.taocdn.com/s3/m/876d7080e009581b6bd9eb91.png)
七、选择题
扇新系统的目标 做什么
1、需求分析的基本任务是功要能准、确性地能定、义环境、,用为户了界满面足用户需求,
回答系统必须 的问题。
求,2、这在些需需求求分包析括阶:段,需首求先交、进流行障问碍需题、求识不、别完,备即性需双和求方不、确一定致对性需问求题。的另综外合还需 有可靠性、安全性、保密性、可移植性、可维护性等方面的需求。
二、需求分析的基本原则 (1)可以把一个复杂问题按功能进行分解并可逐层细化; (2)必须能够表达和理解问题的数据域和功能域; (3)建立软件的逻辑模型;
三、需求分析四项主要任务 (1)确定对系统的综合要求 (2)分析系统的数据要求 (3)导出软件的逻辑模型 (4)编写文档
计算机导论 软件工程
四、需求获取方法 (1)访谈(用户被动) (2)面向数据流自顶向下求精(用户被动) (3)简易的应用规格说明技术(用户主动) (4)快速建立软件原型(用户与开发者不区分)
软件工程
2、数据设计=数据结构设计+数据库设计设计(6) (1)根据需求分析阶段对系统数据的组成、操作约束和数据间关系
的描述,确定数据结构特性。 (2)一般软件系统都有数据存储,存储要借助数据库技术。数据库
的设计包括:概念设计、逻辑设计和物理设计。
3、书写文档(8) 总体设计说明书、数据库设计说明书、详细的实现计划
3、需求分析的困难主要体分现析在系4统个的方数面据:要问求题、的编复写杂文性档、 、 、 需求易变性。
4、在需求分析阶段进行以下几个方面的工作:识别系统综合要 求、 、导出软件逻辑模型、 。
软件工程
八、填空题 1、需求分析( D )。 A.要回答“软件必须做什么?” B. 可概括为:“理解、分解、表达”6
软件工程导论期末复习重点
![软件工程导论期末复习重点](https://img.taocdn.com/s3/m/747e75e8afaad1f34693daef5ef7ba0d4a736de2.png)
软件工程导论期末复习重点选择、判断略一、名词解释1、软件危机2、软件工程3、数据字典4、模块化5、黑盒测试6、软件维护7、软件过程8、快速原型9、白盒测试二、简答题1、可行性研究目的和任务?2、可行性研究包括哪几方面的内容?3、简述需求分析的描述工具和基本任务?4、什么是模块化?模块设计的准则?5、详细设计阶段的根本目标和任务?6、比较面向数据流和面向数据结构两类设计方法的异同?7、测试与调试的主要区别?8、什么是软件生命周期模型?试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的适用X围.9、比较层次方框图与结构图的异同?10、结构化程序设计的基本原则?11、提高软件编码效率的3条原则?一、名词解释1、软件危机答:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题.概括地说,包含两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件.2、软件工程答:①把系统的、规X的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径.3、数据字典答:数据字典是描述数据流图中数据的信息的集合.它对数据流图上每一个成分:数据项、文件<数据结构>、数据流、数据存储、加工和外部项等给以定义和说明;它主要由数据流描述、加工描述和文件描述三部分组成.4、模块化答:模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求.5、黑盒测试答:黑盒测试也称为功能测试,它着眼于程序的外部特征,而不考虑程序的内部逻辑结构.测试者把被测程序看成一个黑盒,不用关心程序的内部结构.黑盒测试是在程序接口处进行测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息<如数据库或文件>的完整性.6、软件维护软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程.7、软件过程答:软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤.8、快速原型答:快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集.9、白盒测试答:白盒测试是指测试者了解被测程序的内部结构和处理过程,对程序的所有逻辑路径进行测试,在不同点检查程序状态,确定实际状态与预期状态是否一致.二、简答题1、可行性研究目的和任务?目的:确定在问题定义中所提出的问题是否值得去解,在限制条件下问题能否解决.可行性研究的任务:<1> 进一步分析和澄清问题的定义,在澄清问题的基础上,导出系统的逻辑模型;<2> 从系统逻辑模型中,选择问题的若干种主要解法,研究每一种解法的可行性,为以后的行动提出建议;<3> 如果问题没有可行的解,建议停止系统开发;如果问题有可行的解,应该推荐一个较好的解决方案,并为工程制定一个初步的计划.2、可行性研究包括哪几方面的内容?答:<1>技术可行性:现有技术能否实现本系统,现有技术人员能否胜任,开发系统的资源能否满足;<2>经济可行性:经济效益是否超出开发成本;<3>操作可行性:系统操作在用户内部行得通吗?<4>法律可行性:新系统开发是否会侵犯他人、集体或国家利益,是否违反国家法律. 3、简述需求分析的描述工具和基本任务?答:需求分析的描述工具有数据流图、数据字典、判定表、判定树、结构化自然语言、层次方框图、Warnier图、IPO图和需求描述语言等.需求分析的基本任务是:准确定义未来系统的目标,确定为满足用户的需要系统必须做什么.4、什么是模块化?模块设计的准则?答:模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求.模块设计的准则:<1> 改进软件结构, 提高模块独立性:在对初步模块进行合并、分解和移动的分析、精化过程中力求提高模块的内聚,降低藕合.<2> 模块大小要适中:大约50行语句的代码,过大的模块应分解以提高理解性和可维护性;过小的模块,合并到上级模块中.<3> 软件结构图的深度、宽度、扇入和扇出要适当.一般模块的调用个数不要超过5个.<4> 尽量降低模块接口的复杂程度;<5> 设计单入口、单出口的模块.<6> 模块的作用域应在控制域之内.5、详细设计阶段的根本目标和任务?答:详细设计阶段的根本目标是确定应该怎样具体地实现所要求的系统;详细设计阶段的任务还不是具体地编写程序,而是要设计出程序的"蓝图〞.6、比较面向数据流和面向数据结构两类设计方法的异同?答:相同点:<1> 遵守结构程序设计"由顶向下〞逐步细化的原则,并以其为共同的基础;<2> 均服从"程序结构必须适应问题结构〞的基本原则,各自拥有从问题结构<包括数据结构>导出程序结构的一组映射规则.不同点:<1> 面向数据流的设计以数据流图为基础,在分析阶段用DFD表示软件的逻辑模型,在设计阶段按数据流类型,将数据流图转换为软件结构.面向数据结构的设计以数据结构为基础,从问题的数据结构出发导出它的程序结构.<2> 面向数据流的设计的最终目标是软件的最终结构图,面向数据结构的设计的最终目标是程序的过程性描述.7、测试与调试的主要区别?答: <1> 测试从一个侧面证明程序员的失败;调试证明程序员的正确;<2> 测试从已知条件开始,使用预先定义的程序,且有预知的结果,不可预见的仅是程序是否通过测试;调试从不可知内部条件开始,除统计性调试外,结果是不可预见的;<3> 测试有计划并且要进行测试设计;调试不受时间约束;<4> 测试是发现错误、改正错误、重新测试的过程;调试是一个推理的过程;<5> 测试执行是有规程的;调试执行要求程序员进行必要的推理;<6> 测试由独立的测试组在不了解软件设计的件下完成;调试由了解详细设计的程序员完成;<7> 大多数测试的执行和设计可由工具支持;调试用的工具主要是调试器.8、什么是软件生命周期模型?试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的适用X围.答:软件生命周期模型可以简洁地描述软件过程,它规定了把生命周期划分成哪些阶段与各个阶段的执行顺序.包括瀑布模型、快速原型模型、增量模型和螺旋模型等.瀑布模型优点:可强迫开发人员采用规X的方法〔例如,结构化技术〕;严格地规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证.缺点:模型过于理想化,是由文档驱动的.快速原型模型优点:通过快速构建起一个可在计算机上运行的原型系统,让用户试用原型并收集用户反馈意见的方法,获取用户真正的需要.增量模型优点:能在较短时间内向用户提交可完成部分工作的产品;逐步增加产品功能可以使用户有较充实的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击.螺旋模型优点:对可选方案和约束条件的强调有利于已有软件的重用;减少过多测试.瀑布模型适用于文档驱动的产品研发;快速原型模型适用于软件交付时间紧急,且需获知用户真实需求的情况;增量模型适用于能在较短时间内向用户提交可完成部分工作的产品;螺旋模型适用于内部开发的大规模软件项目.9、比较层次方框图与结构图的异同?答: <1> 层次方框图描绘数据的层次结构, 结构图描绘的是软件结构.<2> 二者都采用多层次矩形框树形结构.层次方框图的顶层矩形框代表完整的数据结构, 下面各层矩形框依次代表上个框数据的子集;结构图是在层次图的每一个方框内注明模块的名字或主要功能,方框之间的直线表示模块的调用关系,用带注解的箭头表示模块调用过程中传递的信息.10、结构化程序设计的基本原则?答:结构化程序设计的基本原则是:在详细设计中所有模块都使用单入口、单出口的顺序、选择、循环三种基本控制结构.11、提高软件编码效率的3条原则?答:3条原则为:1〕效率是性能要求,因此应该在需求分析阶段确定效率方面的要求.2〕效率是靠好设计来提高的.3〕程序的效率和程序的简单程度是一致的,不要牺牲程序的清晰性和可读性来不必要地提高效率.。
软件工程导论复习重点一
![软件工程导论复习重点一](https://img.taocdn.com/s3/m/7e506d2daf45b307e8719741.png)
1.软件是程序、数据及相关文档的完整集合。
2.软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
3.软件危机包含两方面问题:如何开发软件,以满足对软件日益增长的需求。
如何维护数量不断膨胀的已有软件。
4.软件危机的典型表现:对软件开发成本和进度的估计常常很不准确;用户对“已完成的”软件系统不满意的现象经常发生;软件产品的质量往往靠不住;软件常常是不可维护的;软件通常没有适当的文档资料;软件成本在计算机系统总成本中所占的比例逐年上升;软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
5.产生软件件危机的原因:一方面与软件本身的特点有关,另一方面和软件开发与维护的方法不正确有关。
6.消除软件危机的途径:首先应该对计算机软件有一个正确的认识。
其次必须充分吸取和借鉴人类从事计算机硬件研究和开发的经验教训。
还要在适当的软件工具辅助下,开发人员可以把这类工作做得既快又好。
软件工程正是从管理和技术两方面研究如何更好的开发和维护计算机软件的一门新兴学科。
7.软件工程师指导计算机软件开发和维护的一门工程学科。
8.把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学。
9.软件工程方法学包含3个要素:方法、工具和过程。
方法是完成软件开发的各项任务的技术方法,回答“怎么做”的问题。
工具是为运用方法而提供的自动的伙伴自动的软件工程支撑环境。
过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
10.目前使用最广泛的软件工程方法学是传统方法学和面向对象方法学。
传统方法学(也称生命周期方法学额或结构化范型)。
前一阶段任务的完成是开始进行后一阶段工作的前提和基础,而后一阶段任务的完成通常是使前一阶段提出的揭发更进一步具体化,加进了更多的实现细节。
审查的主要标准就是每个阶段都应该提交“最新式的”高质量的文档资料,从而保证在软件开发工程结束时有一个完整准确的软件配置交付使用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件工程的定义 :◆传统定义为了经济地获得可靠的和能在实际机器上有效运行的软件,确立并应用健全的工程原理◆ IEEE 定义软件工程是. 将系统的、规范的和可计量的方法应用于软件的开发、操作和维护,即将工程化应用于软件软件的构成要素 :软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文档的完整集合。
程序:是按事先设计的功能和性能要求执行的指令序列;数据:是使程序能正常操纵信息的数据结构;文档:是与程序开发、维护和使用有关的图文材料。
软件的特点:1. 软件是一种逻辑实体,具有抽象性;2. 是开发的,而不是制造的3. 具有柔性4. 不磨损软件工程的范围:每个软件项目都是为某种商业需要而设计的已经成为基于计算机的系统和产品演变过程中的关键因素已经从专门问题的解决方案和分析信息的工具,转变为完整的结构良好的行业涉及广泛的技术和应用领域,然而所有软件的演变都遵循着 30 多年来一成不变的规律软件工程为构建高质量的软件提供基础框架软件工程的三个要素是方法、工具、过程。
瀑布模型的特点:1. 阶段间具有顺序性和依赖性2. 推迟实现的观点3. 质量保证的观点快速原型模型的特点:◆快速原型模型先开发一个“原型”软件,完成部分主要功能,展示给用户并征求意见,然后逐步完善,最终获得满意的软件产品。
◆快速实现和提交一个有限的版本,可以应付市场竞争的压力。
螺旋模型的特点:◆对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标;◆减少了过多测试(浪费资金)或测试不足(产品故障多)所带来的风险;◆更重要的是,在螺旋模型中维护只是模型的另一个周期,在维护和开发之间并没有本质区别。
◆螺旋模型的主要优势在于它是风险驱动的,但这也是其一个弱点,要求开发人员具有丰富的风险评估经验和这方面的专门知识。
螺旋模型主要适用于内部开发的大规模软件项目增量模型的特点:◆采用瀑布模型和快速原形模型等开发软件时,目标都是一次就把一个满足所有需求的产品提交给用户。
而增量模型则是一个构件接一个构件地提交,因此能在较短的时间内向用户提交可完成部分工作的产品;◆逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品;◆开发人员既要把软件看作一个整体,又要把它分解成合适的构件序列,每个构件本质上都独立于另一个构件,这一点较难做到喷泉模型特征:◆喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程◆软件开发过程自下而上周期的各阶段是相互重叠和多次反复的,就像水喷上去又可以落下来,类似一个喷泉。
◆各个开发阶段没有特定的次序要求,并且可以交互进行,可以在某个开发阶段中随时补充其他任何开发阶段中的遗漏可行性分析考虑的方面:技术,经济,操作,法律,时间,社会等;可行性研究的步骤:1 、复查确认系统的目标规模,明确限制的约束2 、研究目前正在使用的系统3 、导出新系统的高层逻辑模型 (conceptual design)4 、重新定义5 、导出和评价供选择的方案6 、推荐可行的方案7 、草拟开发计划(粗略)8 、编写可行性研究报告、审查、存档需求分析的任务 :一、确定对系统的综合要求二、分析系统的数据要求三、导出系统的逻辑模型四、修正系统开发计划数据建模 :数据模型包括三种互相关联的信息:数据对象,描述对象的属性,描述对象间相互连接的关系。
数据对象是对软件必须理解的复合信息的抽象。
所谓复合信息是指具有一系列不同性质或属性的事物,仅有单个值的事物不是数据对象。
由一组属性来定义的实体都可以被认为是数据对象。
属性定义了数据对象的性质。
必须把一个或多个属性定义为“标识符”,也就是说,当我们希望找到数据对象的一个实例时,用标识符属性作为“关键字” ( 通常简称为“键” ) 。
应该根据对所要解决的问题的理解,来确定特定数据对象的一组合适的属性。
数据建模数据对象彼此之间相互连接的方式称为联系,也称为关系。
联系可分为以下 3 种类型:(1) 一对一联系(1 ∶ 1)(2) 一对多联系(1 ∶ N)(3) 多对多联系(M ∶ N)联系也可能有属性。
在需求分析阶段 , 通常使用 E-R 图 (entity-relationship diagram) 来建立数据模型 ,描述数据对象和它们之间的关系。
相应地可把用 E-R 图描绘的数据模型称为 E-R 模型。
E-R 模型使用简单的图形符号表达系统分析员对问题域的理解,不熟悉计算机技术的用户也能理解它,因此, ER 模型可以作为用户与分析员之间有效的交流工具。
E-R 图中包含了实体 ( 即数据对象 ) 、关系和属性等 3 种基本成分。
通常用矩形框代表实体,用连接相关实体的菱形框表示关系,用椭圆形或圆角矩形表示实体 ( 或关系 ) 的属性,并用直线把实体 ( 或关系 ) 与其属性连接起来。
例如,在教学管理中,一个教师可以教授零门、一门或多门课程,每位学生也需要学习几门课程。
因此,教学管理中涉及的数据对象(实体型)有学生、教师和课程。
数据流图数据流图 (DFD) 是一种图形化技术,它描绘数据从输入移动到输出的过程中所经受的变换。
在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程。
数据流图是系统逻辑功能的图形表示,即使不是专业的计算机技术人员也容易理解它,是分析员与用户之间极好的通信工具。
设计数据流图时只需考虑系统必须完成的基本逻辑功能,完全不需要考虑怎样具体地实现这些功能,所以它也是今后进行软件设计的很好的出发点。
数据流图的基本要点是描绘“做什么”而不考虑“怎样做”。
数据流图( DFD )中的主要图形元素数据加工 ( 数据变换 )数据源点或终点 ( 外部实体 )数据流数据存储注意:在数据流图中,应该描绘所有可能的数据流向,而不应该描绘出现某个数据流的条件。
数据字典数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。
数据流图描述了系统的“分解”;依靠“词典”来说明各个成分的含义;数据流图中所有名字的定义就构成一本词典;数据字典和数据流图共同构成系统的逻辑模型。
只有数据流图和对数据流图中每个元素的精确定义放在一起,才能共同构成系统的规格说明;数据流图中出现的每一个数据流名、每一个文件名和每一个加工名在词典中都应该有一个条目给出这个名字的定义。
行为建模行为建模给出需求分析方法的所有操作原则,但只有结构化分析方法的扩充版本才提供这种建模的符号。
状态转换图提供了行为建模机制。
状态转换图 ( 简称为状态图 ) 通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。
状态图还指明了作为特定事件的结果系统将做哪些动作。
1. 状态状态是任何可以被观察到的系统行为模式,一个状态代表系统的一种行为模式。
系统对事件的响应,既可以是做一个 ( 或一系列 ) 动作,也可以是仅仅改变系统本身的状态,还可以是既改变状态又做动作。
在状态图中定义的状态主要有:初态 ( 即初始状态 ) 、终态 ( 即最终状态 ) 和中间状态。
在一张状态图中只能有一个初态,而终态则可以有 0 至多个。
2. 事件事件是在某个特定时刻发生的事情,它是对引起系统做动作或 ( 和 ) 从一个状态转换到另一个状态的外界事件的抽象。
3. 表示符号在状态图中,初态用实心圆表示,终态用一对同心圆 ( 内圆为实心圆 ) 表示。
中间状态用圆角矩形表示,可以用两条水平横线把它分成上、中、下 3 个部分。
上面部分为状态的名称,这部分是必须有的;中间部分为状态变量的名字和值,这部分是可选的;下面部分是活动表,这部分也是可选的。
行为建模活动表的语法格式如下:事件名 ( 参数表 )/ 动作表达式其中:“事件名”可以是任何事件的名称。
在活动表中经常使用下述 3 种标准事件: entry ,exit 和do 。
entry 事件指定进入该状态的动作,exit 事件指定退出该状态的动作,而 do 事件则指定在该状态下的动作。
需要时可以为事件指定参数表。
活动表中的动作表达式描述应做的具体动作。
事件表达式的语法如下:事件名 ( 参数表 ) [守卫条件]/动作表达式其中:守卫条件是一个布尔表达式。
如果同时使用事件名 ( 参数表 ) 和守卫条件,则当且仅当事件发生且守卫条件的布尔表达式为真时,状态转换才发生。
如果只有守卫条件,没有事件名 ( 参数表 ) ,则只要守卫条件为真状态转换就发生。
动作表达式是一个过程表达式,当状态转换开始时执行该表达式。
1、耦合◆耦合是对一个软件结构内不同模块之间的互相连接的紧密程度的度量。
◆耦合强弱取决于各个模块之间接口的复杂程度、调用模块的方式以及哪些信息通过接口。
◆一般模块间可能的连接方式有 7 种,构成耦合性的 7 种类型:( 1 )非直接耦合 (Nondirect Coupling)▪两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。
▪非直接耦合的模块独立性最强。
(2) 数据耦合 (Data Coupling)一个模块访问另一个模块时,彼此之间是通过简单数据参数 ( 不是控制参数、公共数据结构或外部变量 ) 来交换输入、输出信息的,称此为数据耦合。
数据耦合是松散的耦合,模块间的独立性比较强,在软件程序结构中至少必须有这种耦合。
(3) 标记耦合 (Stamp Coupling)一组模块通过参数表传递记录信息,就是标记耦合。
这组模块共享了这个记录,它是某一数据结构的子结构,而不是简单变量。
在设计中应尽力避免这种耦合(但允许使用),它使在数据结构上的操作复杂化了。
(4) 控制耦合 (Control Coupling)⏹如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。
⏹控制耦合意味着控制模块必须知道所控制模块内的一些逻辑关系,这样会降低模块的独立性。
去除模块间控制耦合的方法控制耦合增加了理解和编程的复杂性,调用模块必须知道被调模块的内部逻辑,增加了相互依赖。
去除方法:◆将被调用模块内的判定上移到调用模块中进行;◆被调用模块分解成若干单一功能模块。
(5 )外部耦合( External Coupling )⏹一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。
例如: C 语言程序中各个模块都访问被说明为 extren 类型的外部变量。
( 6 )公共耦合( Common Coupling )若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。
公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。
只有在模块之间共享的数据很多,而且通过参数表传递不方便时,才使用公共耦合,否则,还是使用模块独立性比较高的数据耦合较好些。