软件工程原理、方法与应用【第三版】复习总结
软件工程复习要点
软件工程复习要点软件工程是一门研究如何高效地开发、维护和管理软件的学科。
对于学习软件工程的同学来说,熟练掌握复习要点是非常重要的。
本文将为大家总结并分享软件工程的复习要点,希望能够帮助大家更好地掌握和应用软件工程知识。
一、软件开发过程软件开发过程是指从需求分析到交付软件产品的整个过程。
常用的软件开发过程模型有瀑布模型、迭代模型、敏捷模型等。
要理解和掌握软件开发过程,需要熟悉各个阶段的任务和活动,包括需求分析、设计、编码、测试、交付等环节。
1. 需求分析:确定用户需求,明确软件系统的功能和性能要求。
2. 设计:根据需求分析的结果,进行软件系统的整体设计和详细设计。
3. 编码:将设计好的软件系统转化为具体的实现代码。
4. 测试:对编码完成的软件系统进行测试,发现和纠正其中的问题。
5. 交付:经过测试合格的软件系统交付给用户使用。
二、软件工程方法与工具为了提高软件开发的效率和质量,软件工程使用了一系列方法与工具。
掌握软件工程方法与工具的使用对于软件开发人员来说是非常重要的。
1. 需求管理工具:用于帮助开发团队和用户共同管理和追踪需求,常用的有JIRA、TFS等。
2. 设计工具:用于辅助进行软件系统的设计,常用的有UML工具、Axure等。
3. 编码工具:用于提高编码效率和质量,常用的有IDE集成开发环境、代码托管平台等。
4. 测试工具:用于自动化测试和代码覆盖率分析,常用的有Junit、Selenium等。
5. 配置管理工具:用于管理和控制软件系统的配置,常用的有Git、SVN等。
三、软件质量保证软件质量保证是指通过一系列的措施和活动来确保软件产品的质量。
在软件工程中,软件质量保证是一个非常重要的环节,它直接关系到软件系统能否满足用户的需求。
1. 静态质量保证:通过代码审查、代码规范等手段来预防和发现问题。
2. 动态质量保证:通过测试等手段来发现和解决软件系统中的问题。
3. 配置管理:通过配置管理工具来确保软件系统配置的正确性和一致性。
软件工程复习笔记整理
软件工程复习笔记整理1.软件工程三要素:方法、工具(case、VSS)、过程2.软件危机:①定义:软件开发和维护过程中遇到的一系列严重问题,包括两个方面:如何开发软件以满足不断增长、日趋复杂的需求;如何维护数量不断膨胀的软件产品。
②产生原因:与软件本身特点有关;软件开发与维护方法不正确3.软件=程序+数据+文档4.软件工程:① 软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。
它借鉴传统工程的原则、方法,以提高质量,降低成本为目的。
② 特点:强调规范化、文档化5.软件生命周期:软件生命周期即软件定义、运行、维护,最终到废弃的整个过程。
软件定义:问题定义、可行性研究、需求分析运行阶段:总体设计、详细设计、编码及测试、综合测试维护阶段:持续满足用户需求6.软件过程:为了获得高质量软件所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
① 瀑布模型:适用范围:需求明确、一般不会更改的软件开发特点:阶段间具有顺序性、依赖性;推迟实现(物理上);质量保证(严格的文档要求以及文档评审)②快速原型模型:适用范围:需求不明确的软件开发特点:快速建立原型;线性顺序开发③增量模型:适用范围:特点:分批逐步向客户提交产品;技术要求高;本身自相矛盾。
④螺旋模型:适用范围:内部开发的大规模软件项目特点:风险驱动7.可行性研究(一个简单的需求调研过程),包括技术可行性、经济可行性和操作可行性。
8.需求分析:需求分类:大致分为功能性需求和非功能性需求;其中非功能性需求包括:性能需求、可靠性需求、出错处理、接口需求、约束、逆向需求以及将来可能提出的需求。
9.数据流图和ER图:参考作业储蓄系统10.数据字典:①定义:包括四个方面,数据流、数据流分量、数据存储、处理。
②用途:分析阶段的工具11.概要设计的任务:确定模块以及模块之间的关系。
12.内聚与耦合:进行结构化设计的有力工具① 耦合:对一个软件结构不同模块间互联程度的度量,其强弱程度取决于模块间接口的复杂程度,是影响软件复杂度的一个重要因素。
软件工程复习知识要点
1 软件与软件工程概念集合,程序只是软件的组成部分之一;在软件开发中,编程只是软件开发过程的一个阶段。
2.在结构化程序设计时代,程序最小的单位是函数及子程序,程序与数据是分离的。
程序的最小单位是类。
3.软件的特性:形态特性、智能特性、开发特性、质量特性、生产特性、管理特性、环境特性、维护特性、废弃特性、应用特性。
4.软件的分类:系统软件;应用软件;支撑软件;可复用软件。
5.什么是软件工程?(课后题)软件工程是指导计算机软件开发和维护的工程学科。
采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。
6.可以用功能性、可靠性、易用性、效率、可维护性和可移植性六个特性衡量软件的质量。
功能性是指软件所实现的功能达到它的设计规范和满足用户需求的程度。
可移植性是指软件从某一环境转移到另一环境时所作努力得程度。
7.软件生存期由软件定义、软件开发和运行维护三个时期组成。
开发时期通常由概要设计、详细设计、编码和测试四个阶段组成。
开发过程中的典型文档包括:项目计划、软件测试计划、软件设计说明书、用户手册。
8.需求分析的基本任务?(1)建立分析模型,了解系统的各种需求细节。
(2)基于分析结果,编写出软件需求规格说明或系统功能规格说明,确认测试计划和初步的系统用户手册,并提交管理机构进行分析评审。
2 软件工程方法与工具1.面向对象方法的出发点和基本原则,是尽量模拟人类习惯的思维方式,使开发软件的方法和过程尽可能接近人类认识问题和解决问题的方法与过程,从而使描述问题的问题空间与其解空间在结构上尽可能一致。
2.形式化方法的主要特点是:(课后题)(1) 软件需求规格说明被细化为用数学记号表达的详细的形式化规格说明;(2) 设计、实现和单元测试等开发过程由一个变换开发过程代替。
通过一系列变换将形式的规格说明细化成为程序。
软件工程师复习重点梳理总结心得
软件工程师复习重点梳理总结心得软件工程是一门综合性强的学科,要掌握其中的关键知识点和技能,需要进行系统性的学习和复习。
在我过去的学习和准备中,我总结了以下几个重点梳理,希望能够对同行们的复习提供一定的帮助。
一、需求工程需求工程是软件开发过程中至关重要的一环,它涉及到对用户需求的获取、分析和定义。
软件工程师不仅要具备技术能力,还需要能够与用户进行有效的沟通,深入了解用户的需求,并将其转化为可执行的计划和设计。
在需求工程的复习中,我重点关注以下几个方面:1. 需求获取方法:既可以通过直接与用户交流,也可以通过观察和调研等方式获取需求信息。
需要了解各种需求获取方法的优缺点,并掌握其具体应用场景。
2. 需求分析与描述:需求分析是将用户需求转化为软件规格说明书的过程。
在复习中,应重点学习如何分析需求,识别其重要性和优先级,并准确地将其描述出来。
3. 需求验证与确认:需求验证是确保软件系统满足用户需求的过程。
在复习中,要掌握需求验证的方法和技巧,如原型验证、测试用例设计等。
二、系统设计和开发系统设计和开发是软件工程师的核心技能之一,它涉及到软件架构、模块设计、编码规范以及与其他团队成员的协作等方面。
在复习中,我着重关注以下几个重要点:1. 软件架构设计:学习并掌握常见的软件架构设计模式,如MVC、MVVM等,以及它们的适用场景和优缺点。
2. 模块设计与接口:模块设计是将软件系统划分为独立的、可重用的模块的过程。
在复习中,需要熟悉常见的模块设计原则和方法,并了解如何设计良好的模块接口。
3. 编码规范与质量保证:编码规范是保证团队成员编写一致性和高质量代码的基础。
在复习中,需要熟悉常见的编码规范,并了解如何通过代码审查、单元测试等方式保证代码的质量。
三、软件测试与质量保证软件测试是保证软件质量的重要手段之一,它涉及到功能测试、性能测试、安全测试等方面。
在复习中,我关注以下几个关键点:1. 测试策略与计划:在复习中,需要了解不同的测试策略和方法,并学习如何制定测试计划,包括测试用例设计、测试环境的搭建等方面。
计算机软件工程原理复习
计算机软件工程原理复习计算机软件工程原理是计算机科学与技术领域的重要基础课程之一,通过学习软件工程原理,人们可以了解软件开发的基本原则、方法和技术,掌握软件项目管理和软件质量保证的技能,提高软件开发的效率和质量。
本文将对计算机软件工程原理进行复习,包括软件开发过程、需求分析、软件设计、软件测试等方面的知识点。
一、软件开发过程1.1 瀑布模型瀑布模型是最早提出的软件开发过程模型之一,它将软件开发过程划分为需求分析、软件设计、编码、测试和维护几个阶段。
在每个阶段中,都有明确的过程和活动,各个阶段之间严格按序进行,阶段之间有明确的交付物和沟通方式。
1.2 敏捷开发敏捷开发是一种迭代、循序渐进的软件开发方法,强调实际软件开发过程中的灵活性和快速响应能力。
敏捷开发注重用户需求的优先级和价值,通过快速迭代的方式进行软件开发,并及时根据用户反馈进行调整和更新。
二、需求分析2.1 需求获取需求获取是软件开发过程中的第一步,主要通过与用户进行沟通、访谈、观察等方式进行。
需求获取的目的是确定用户对软件的功能、性能、界面等方面的需求。
2.2 需求分析与规约需求分析是对用户需求进行详细的分析和理解,将用户的需求转化为开发人员可以理解和实现的形式。
需求规约则是对需求进行描述和规范,包括功能需求、性能需求、界面需求等方面的规定。
三、软件设计3.1 结构设计结构设计是将软件系统划分为不同的模块或组件,并确定它们之间的关系和接口。
结构设计要考虑软件的可扩展性、可维护性和可重用性,合理划分模块可以提高软件的开发效率和质量。
3.2 数据设计数据设计主要是对软件的数据进行建模和设计,包括数据库设计、数据结构设计等方面。
数据设计要考虑数据的完整性、一致性和安全性,合理的数据设计可以提高软件的性能和可靠性。
四、软件测试4.1 单元测试单元测试是对软件的最小可测试单元进行测试,通常是对模块或函数进行测试。
单元测试旨在验证软件的各个功能模块是否按照设计要求正确实现,发现并修复可能存在的错误。
现代软件工程第三版知识点总结
现代软件工程第三版知识点总结计算机软件(software):是计算机系统中与硬件相互依存的另一部分,是包括程序、数据、相关文档的集合官方定义:软件:计算机系统的操作有关的计算机程序、规程及可能的相关文档的完整集合。
程序:计算机程序和数据定义的组合规程:执行给定任务应采取的一系列描述文档:程序开发、维护和使用有关的图文资料软件的特点:(1)一种逻辑实体,不是物理实体,具有抽象性(2)软件的生产与硬件不同,它没有明显的制作过程(3)软件在运行、使用期间不存在磨损、老化问题(4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,导致软件移植问题(5)软件复杂性高,成本昂贵(6)软件开发涉及诸多社会因素软件危机泛指计算机软件的开发和维护过程中所遇到的一系列严重问题软件危机的主要表现:(1)软件需求的增长得不到满足(2)软件不可维护或维护程度非常低(3)软件的质量难以保证(4)软件的开发成本与进度无法控制(5)软件的成本不断提高(6)软件开发生产率的提高赶不上硬件发展和应用需求的增长可归结为成本、质量、生产率等问题软件工程:试图用工程、科学和数学的原理与方法研制、维护计算机软件的有关技术及管理方法软件工程学:应用计算机科学理论和技术以及工程管理原则和方法,按预算和进度,实现满足用户要求的软件产品的定义、开发、发布和维护的工程或进行研究的学科都是在强调软件开发过程中需要应用工程化的原则软件工程的三要素:方法、工具、过程方法:完成软件工程项目的手段工具:支持软件的开发、管理、文档生成过程:支持软件开发的各个环节的控制、管理目的:研究软件的开发技术核心思想:把软件产品当做一个工程产品来处理软件过程是把输入转化为输出的一组彼此相关的资源和活动四种基本活动PDCA:(1)plan:软件规格说明。
规定软件的功能及其运行中的限制(2)do : 软件开发与软件设计与实现。
生产满足规格说明的软件(3)check:软件确认。
软件工程(史济民第三版)-原理、方法及应用课后习题
软件工程(史济民第三版)-原理、方法及应用课后习题软件工程(史济民第三版)-原理、方法及应用课后习题软件工程是一门涉及软件开发和维护的学科,具有原理、方法和应用三个方面的内容。
本章将探讨史济民第三版的软件工程课后习题,包括问题分析、需求规格说明、软件设计、软件测试等方面的内容。
1. 问题分析问题分析是软件工程中的第一步,它涉及对问题的背景、需求和目标进行分析。
在史济民第三版的课后习题中,有许多问题需要进行分析和解决。
例如,习题1要求分析一个给定的场景,找出需求和问题,进而提出解决方案。
对于这类问题,我们可以采用以下的分析步骤:1. 理解问题背景和需求:阅读习题中的场景,了解涉及的业务领域和需求。
2. 识别问题:找出场景中存在的问题和挑战,例如效率低下、错误率高等。
3. 提出解决方案:基于问题的分析,提出改进措施和解决方案,例如引入自动化工具、优化算法等。
2. 需求规格说明需求规格说明是软件工程中的重要环节,它涉及对软件系统需求进行详细描述和规定。
在史济民第三版的习题中,有许多涉及需求规格的问题。
例如,习题2要求对给定的场景进行需求分析,并书写需求规格说明。
在完成这类习题时,我们可以参考以下的格式:1. 概述:对软件系统的背景和目标进行简要描述。
2. 功能需求:详细列出系统需要实现的功能和特点。
3. 非功能需求:描述与系统性能、安全性等相关的需求。
4. 约束:列出系统开发过程中需要遵守的限制条件。
3. 软件设计软件设计是软件工程中的核心环节,它涉及软件系统的整体结构和模块设计。
在史济民第三版的习题中,有许多关于软件设计的问题。
例如,习题3要求设计一个给定场景下的软件系统。
在进行软件设计时,我们可以使用以下的设计方法:1. 模块化设计:将软件系统划分为不同的模块,并设计各个模块的功能和接口。
2. 流程图和数据流图:使用图形化的工具描述软件系统的流程和数据流动。
3. 面向对象设计:基于对象和类的概念进行系统设计,强调封装、继承和多态等特性。
软件工程—理论与实践第三版学习心得
软件工程—理论与实践第三版学习心得在学习《软件工程—理论与实践》第三版这本书的过程中,我对软件工程的理论和实践有了更深入的了解和认识。
本书不仅介绍了软件工程的基本概念和原理,还深入探讨了软件开发过程中的各个环节和技术。
首先,本书对软件工程的基本概念进行了清晰的阐述,包括软件生命周期、需求工程、软件设计、软件测试等。
通过学习这些基本概念,我对软件开发的整体流程有了更清晰的认识,能够更好地理解软件开发过程中各环节的重要性和相互关系。
其次,本书还介绍了一些软件工程的常用方法和技术,如面向对象设计、敏捷开发、软件度量等。
这些方法和技术在实践中得到了广泛应用,并且在本书中都有详细的讲解和案例分析。
通过学习这些方法和技术,我不仅能够更好地应对实际软件开发中的各种问题,还能够提高开发效率和软件质量。
此外,本书还强调了软件工程的团队合作和项目管理方面的重要性。
团队合作是软件开发过程中不可或缺的一部分,而项目管理则能够有效地组织和协调开发活动。
通过学习本书中的相关内容,我对软件开发团队的组织和管理有了更系统和全面的认识。
总的来说,学习《软件工程—理论与实践》第三版让我对软件工程有了更深入的理解和认识。
通过学习书中的理论知识和实践案例,我能够更好地应对实际软件开发中的各种问题,提高开发效率和软件质量。
同时,我也认识到软件工程是一个综合性的学科,需要不断学
习和实践才能不断提高自己的水平。
(第三版)软件工程原理、方法与应用_课后答案(史济民_顾春华_郑红_著)_高等教育出版社
绪论
1.什么是软件危机?为什么会产生软件危机? 答:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。 (1).软件维护费用急剧上升,直接威胁计算机应用的夸大。 (2).软件生产技术进步缓慢 2. 什么是软件生产工程化?工程化生产方法与早期的程序设计方法主要差别在哪里? 答:结构化程序设计地出现,使许多产业界认识认识到必须把软件生产从个人化方式改变为工程化。 采用工程的概念、原理、技术和方法开发与维护软件,把经过时间考验而证明正确的管理技术和当前 能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工 程,同时这也是工程化生产方法。 3. 分别说明(1)软件开发方法与开发工具;(2)软件技术与软件管理的相互关系。 答 :( 1)工具和方法,是软件开发技术的两大支柱,它们密切相关。当一种方法提出来并证明有效后 , 往往随之研制出相应的工具,来帮助实现和推行这种方法。新方法在推行初期,总有人不愿接受和采 用。若将新方法融合于工具之中,使人们通过使用工具来了解新方法,就能更快促进新方法的推广。
7.输入三角形的 3 条边长(假定这些边确实能组成一个三角形),用它们来鉴别三角形的性质(等腰、 等边、任意或者直角),并输出结果。试用逐步细化的方法设计这一程序,并用结构化语言(汉语或 英语)写出细化过程中每一步的过程描述。 答:
软件需求分析
1.需求分析的任务是什么?怎样理解分析阶段的任务是决定“做什么”,而不是“怎么做”? 答:需求分析主要有两个任务:第一是通过对问题及其环境的理解、分析和综合建立分析模型;第二 是在完全弄清用户对软件系统的确切要求的基础上,用“软件需求规格说明书”把用户的需求表达出
来。需求分析的任务就是为了明确要开发的是一个什么样的系统,而不是去怎么去实现这个系统。 2.需求分析要经过哪些步骤? 答:需求获取、需求提炼、需求描述、需求验证。 3.有哪两种主要的分析模型,它们有什么联系? 答:面向对象分析模型、结构化分析模型。前者是采用面向对象的思想进行软件需求分析的建模过程 , 而后者模型的核心是 DD,它是设计各种数据对象的总和。他们的模型分别起到了描述数据模型,功能 模型与行为模型的作用。 4.什么是结构化分析?它的“结构化”体现在哪里? 答:是使用 DFD、DD、结构化语言、判定表和判定树等工具,来建立一种新的、称为结构化说明书的 目标文档。 5.什么是面向对象分析?其主要思想是什么? 答: OOA 面向对象的分析是采用面向对象的思想进行软件需求分析建模的过程.主要思想是采用面向对 象的思想。 6. 需求说明(或需求规格说明书)由哪些部分组成?各部分的主要内容是什么? 答:引言、信息描述、功能描述、行为描述、质量描述、接口描述、其他描述。 引言:主要叙述在文体定义阶段确定的关于软件的目标与范围,简要介绍系统背景、盖帽、软件项目 约束和按考资料等。 信息描述:给出对软件所含信息的详细描述,包括信息的内容、关系、数据流向、控制流向和结构等 。 功能描述:对软件功能要求的说明,包括系统功能划分、每个功能的处理说明、限制和控制描述等。 行为描述:包括对系统状态变化及事件和动作的描述,据此可以检查外部事件和软件内部的控制特征 。 质量描述:阐明在软件交付使用前需要进行的共更能测试和性能测试,并且规定源程序和文档应该遵 守的各种标准。 接口描述:包括系统的用户界面、硬件接口、软件接口和通信接口等的说明。 其他描述:阐述系统设计和实现上的限制,系统的假设和依赖等其他需要说明的内容。 7. 为什么 DFD 要分层?画分层 DFD 要遵循哪些原则? 答:大型复杂的软件系统,其 DFD 可能含有数百乃至数千个加工,不能设想一次就将它们全部画齐。 正确的做法是:从系统的基本模型(把整个系统看成一个加工)开始,逐层地对系统进行分解。原则 : 由顶向下,逐步细化。 8. DFD 和 CFD 有什么区别? 答: 9. 什么是系统的行为模型,如何建立? 答:类对象模型所表示的是面向对象分析模型中的静态部分,而对象行为模型则用于描述系统的动态 行为,即系统如何对应外部事件---系统的行为模型。 建立一个对象行为模型一般要经历一些过程:评估所以的用例来理解系统中的交互序列;找出驱动交 互序列的事件;为每个用例创建事件轨迹;为对象创建状态转换图。 10.选一个系统(例如工资处理系统、飞机订票系统、图书馆管理系统等),分别用 SA 方法和 OOA 方 法对它进行分析,并给出分析模型。 答:
软件工程复习重点总结
软件工程复习重点总结第一篇:软件工程复习重点总结第一章软件过程:需求设计实现发布软件过程三要素: 过程+方法+工具瀑布rup scrum IconixScrum是一种迭代式增量软件开发过程,通常用于敏捷软件开发。
Product Owner、Scrum Master、Team Product Backlog、SprintBacklog、Burndown Chart、Sprint、Sprint Planning Meeting、Daily Standup Meeting、Review Meeting、Retrospective Meeting ICONIX软件开发过程愿景、业务建模、需求分析、健壮性分析、系统设计……思想是重点;过程是方式;方法和工具是载体第二章敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。
敏捷是一种思想•Scrum是一个框架敏捷开发过程知多少?•Scrum、•极限编程(XP)、•Crystal Methods(水晶方法族)•特性驱动开发(FDD)•动态系统开发(DSDM)•轻量型统一过程(RUP)调查结果:敏捷开发方法—Scrum最流行!Scrum的适用场景•7人,+or-2•偏小一些会更适合•最好能坐在一起•客户参不度高•快速移动互联网项目•自主性研发的产品第三章软件项目是为了改善某个组织的某些方面–老大就是要改善的组织中最有权力的干系人。
用户建模四步曲列出尽可能多的用户识别关键用户(购买决策者/主要使用者)分类,合并次要用户4添加虚拟和极端用户第四章•产品backlog是Scrum的核心产品功能列表格式•ID(标示符)–统一标识符•Name(标题)–简短的、描述性的故事名•Story(故事)–故事内容描述•Priority(重要性)–产品负责人评出一个数值,指示这个故事有多重要•Initial estimate(初始估计)–团队的初步估算,表示不其他故事相比,完成该故事所需的工作量•How to demo(如何做演示)–它大略描述了这个故事应该如何在sprint 演示上进行示范•Notes(注解)–相关信息、解释说明和对其它资料的引用等等产品功能列表由谁来写?•思考:由谁来写?–主要是Product Owner–Team也有权利,但最终由PO进行取舍。
软件工程——原理、方法与应用(第3版本)史济民-顾春华-版知识点整理(完整版)410
黑盒测试
定义:是根据被测试程序的功能来进行测试,也称为功能性测试 方法:
i. 等价分类法 ii. 边界值分析法 iii. 错误猜测发 iv. 因果图法
白盒测试
定义:以程序的结构为依据,又称结构测试 常用方法:
i. 逻辑覆盖法 ii. 路径测试法
30. 软件的维护
定义:在一个软件产品交付使用后对其进行修改,以纠正故障、改进其性能和其 他
27. 软件设计一般包括
1) 数据设计(DD、E-R) 2) 体系结构设计(DFD)
3) 接口设计(DFD) 4) 过程设计(STD,控制规格说明、加工规格说明)
28. 传统的软件设计
1) 概要设计 i. 结构设计 ii. 接口设计
iii. 编写概要设计文档 2) 详细设计
i. 确定各个软件部件的数据结构和操作,产生描述各软件部件的详细设计文档
26. 试比较 3 种不同的设计思想
a) 面向过程的思想: i. 各模块功能可能相互交叉或重叠,模块间常常存在数据的共享或数据结构的 共享
b) 面向功能的思想: i. 各模块的功能单一,如能将它们与其他模块的数据共享降到最低限度,就可 以在某些应用中重用
c) 面向对象的思想: i. 各模块是一个个独立的单位,不仅重用性较好,而且易于测试,联调和维护
14. 传统软件工程方法与面向对象的区别、各自的优缺 点
区别: 前者是面向过程的语言,一切以算法为核心 后者是面向对象的语言,构成类的封装机制,跟好的实现了代码的服用性能,依 据
高内聚、低耦合的思想核心
传统的软件工程主要指结构化软件工程方法
优点: 1) 整体思路清楚,目标明确 2) 设计工作中阶段性非常强,有利于系统开发的总体管理和控制 3) 在系统分析时可以诊断出原系统中存在的问题和结构上的缺陷
软件工程复习总结
1、软件=程序+数据+文档;2、软件工程是研究软件开发方法和软件管理方法的一门工程科学。
3、软件工程三要素是软件工程的方法、工具和过程。
4、软件工程的基本原理是:用分阶段的生存周期计划严格管理软件开发,分为计划、分析、设计、编程、测试和运行维护6个阶段。
坚持进行阶段评审,上一阶段评审不通过,就不能进入下一阶段开发。
实行严格的产品版本控制。
采用现代程序设计技术。
结果应能清楚地审查。
开发小组的成员要少而精。
要不断地改进软件工程实践的经验和技术,要与时俱进。
二八定律。
5、软件工程中常用的开发方法主要有3种:面向过程的方法,面向对象的方法和面向数据的方法。
6、软件工程的五个面向理论:面向流程分析就是面向流程进行需求分析;面向数据设计,就是面向元数据进行概要设计;面向对象实现,就是面向对象进行详细设计和编程实现;面向功能测试就是面向功能进行单元测试、集成测试、Alpha测试和Beta测试;面向过程管理就是面向过程软件生存周期各个阶段进行管理和控制。
7、瀑布模型的特点:里程碑或基线驱动,或者说文档驱动;过程逆转性很差或者说不可逆转,因为根据上流的错误会在下流进行发散性传播的原理,所以逆转将会延误工期,增加成本,造成重大失误。
优点:开发阶段清晰,便于评审、审计、跟踪、管理和控制。
缺点:传统的项目组织方法按顺序完成每个工作流程。
8、增量模型的优点:将一个打系统分解为多个小系统,这就等于将一个大风险分解为多个小风险,从而降低了开发难度。
缺点:如果软件系统的组装和拆卸性不强,或者开发人员全局把握水平不高,或者客户不同意分阶段提交产品,或者开发人员过剩,则不宜采用这种模式。
9、迭代模式的优点:在迭代之初,它不要求有一个相近的原型,而且适用范围广,几乎适用于所有的项目开发。
缺点:传统的项目组织方法按顺序完成每个工作流程,即瀑布式生存周期。
10、原型模型的优点:开发速度快,用户意见反馈实时,有利于开发商在短时间内推广并实施多个用户。
软件工程导论最全复习总结
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、软件测试步骤:模块测试、子系统测试、系统测试、验收测试、平行运行。
软件工程期末复习要点归纳总结
软件工程期末复习要点归纳总结软件工程是指在软件开发的全过程中,应用工程的原理、方法和经验对软件进行开发、运行和维护的过程。
在软件工程这个学科中,包括了软件需求、软件设计、软件构建、软件测试、软件维护等多个阶段和技术。
下面是软件工程期末复习的要点归纳总结:1.软件开发过程模型-瀑布模型:各个阶段按顺序进行,每个阶段完成后不可回溯。
-增量模型:将软件划分为多个增量,每个增量独立进行开发。
-螺旋模型:将软件开发过程分为多个循环,每个循环都包括需求分析、设计、开发和测试。
-迭代模型:将软件开发过程分为多个迭代,每个迭代包括需求分析、设计、开发和测试。
2.软件需求工程-需求获取:通过需求采集、用户访谈、问卷调查等方式获取需求。
-需求分析:对需求进行整理、分类、抽象和规范化,得出系统需求。
-需求规格说明:将需求规格化为需求文档,包括用例、用例图、领域模型等。
-需求验证:通过评审、原型验证等方式验证需求的正确性和完整性。
3.软件设计-结构化设计:通过模块化、自顶向下、逐步求精的方式进行软件设计。
-面向对象设计:通过类、继承、多态等面向对象的概念进行软件设计。
-架构设计:设计软件的整体框架和组件之间的关系。
-接口设计:设计软件的各个组件之间的接口。
4.软件构建-编码:根据设计文档进行编码,可以使用编程语言、集成开发环境等工具。
-调试:通过调试工具,对程序进行调试,找出存在的问题并进行修复。
-集成:将各个模块集成到一起,进行整体测试,确保功能的正确性。
-部署:将软件部署到目标环境中,确保软件能够正常运行。
5.软件测试-单元测试:对软件的最小单元进行测试,如函数、方法等。
-集成测试:对软件的各个模块进行整合测试,确保模块之间的协调性。
-系统测试:对整个系统进行测试,确保系统满足用户需求。
-验收测试:由用户对软件进行测试,验证软件是否满足用户需求。
6.软件维护-改正性维护:修复软件中的错误。
-适应性维护:根据用户需求,对软件进行功能扩展。
【免费下载】软件工程 原理方法及应用史济民第三版答案
软件工程-原理、方法及应用(史济民第三版)答案绪论1.什么是软件危机?为什么会产生软件危机?答:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。
(1).软件维护费用急剧上升,直接威胁计算机应用的夸大。
(2).软件生产技术进步缓慢2. 什么是软件生产工程化?工程化生产方法与早期的程序设计方法主要差别在哪里?答:结构化程序设计地出现,使许多产业界认识认识到必须把软件生产从个人化方式改变为工程化。
采用工程的概念、原理、技术和方法开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程,同时这也是工程化生产方法。
3. 分别说明(1)软件开发方法与开发工具;(2)软件技术与软件管理的相互关系。
答:(1)工具和方法,是软件开发技术的两大支柱,它们密切相关。
当一种方法提出来并证明有效后,往往随之研制出相应的工具,来帮助实现和推行这种方法。
新方法在推行初期,总有人不愿接受和采用。
若将新方法融合于工具之中,使人们通过使用工具来了解新方法,就能更快促进新方法的推广。
(2)在工业生产中,即使有先进的技术和设备,管理不善的企业也不能获得良好的效益。
软件在生产中不能按质按时完成计划,管理混乱往往是其中的重要原因。
所以对于一个理想的软件工程环境,应该同时具备技术和管理两个方面。
4.试从你的亲身实践,谈谈软件工具在软件开发中的作用。
答:用C++开发一个软件,是校园一卡通的模块。
首先,要在编辑程序支持下在计算机中输入源程序。
然后编译程序,把源程序翻译成目标程序。
如果发现错误,就重新调入编辑程序对源程序进行修改。
编译通过后,再调用连接程序吧所有通过了编译目标程序连同与之有关的程序连接起来,构成一个能在计算机上运行的可执行软件。
编译程序,编辑程序,连接程序以及支持他们的计算机操作系统,都属于软件工具。
离开这些工具,软件开发就是去了支持,变得十分困难和低效,甚至不能运行。
软件工程复习总结_2
软件工程复习总结1:软件工程:软件工程是计算机科学与技术专业的一门专业核心课程。
软件是计算机系统中与硬件相互依存的另一部分。
它包括程序、数据及其相关文档的完整集合。
2:软件:软件是计算机系统中与硬件相互依存的另一部分。
它包括程序、数据及其相关文档的完整集合。
软件特点:(1)软件是一种逻辑实体,而不是具体的物理实体。
(2)软件的生产与硬件不同。
(3)在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题。
软件分类:按软件的功能进行划分:系统软件、应用软件、支撑软件。
按软件的规模进行划分:按开发软件所需的人力、时间以及完成的源代码行数。
(微型、小型、中型、大型、甚大型、极大型)按软件开发划分:软件项目开发、软件产品开发。
3:软件工程学:是把软件当作一种工业产品,要求“采用工程化的原理与方法对软件进行计划、开发和维护”。
软件工程学软件开发技术软件工程管理软件开发方法学软件工具软件工程环境软件工程管理学软件经济学4:软件生存周期:把软件从产生、发展到成熟、直至衰亡为止软件生存周期模型(瀑布模型Waterfall Model)计划时期:问题定义→可行性研究开发时期:需求分析→概要设计→详细设计→编码→测试运行时期:运行与维护5:现状调查和问题的定义:目的:弄清楚用户要求计算机解决什么问题。
任务:编写系统目标与规范说明书。
6:可行性研究与论证:其论证的焦点是:围绕着对系统开发的价值进行论证。
经济可行性:进行成本效益分析,评估项目的开发成本。
技术可行性:对系统的性能、可靠性、可维护性以及生产率等方面的信息进行评价。
可行性论证报告包括:系统概述、可行性分析、拟订开发计划、结论意见。
7:系统流程图:是用来描述系统物理模型的一种传统工具。
系统结构图:系统工程师用结构摸板开发的系统模型。
8:需求分析的任务:一、确定目标系统的具体要求:(1)确定系统的运行环境要求:硬件环境和软件环境。
(可和用户单位其他系统使用相同的计算机硬件设备、相同的操作系统和相同的关系数据库管理系统)(2)系统的性能要求(数据不能随意更改,保证数据的准确性)(3)系统功能:确定目标系统具备的所有功能。
软件工程原理、方法与应用【第三版】复习总结
软件⼯程原理、⽅法与应⽤【第三版】复习总结第⼀章绪论1.每18个⽉芯⽚的性能和速度均提⾼⼀倍,每隔12年软件⽣产⼤约提⾼⼀倍。
2.软件:是能够完成预定功能和性能的可执⾏的计算机诚信度。
包括使程序正常执⾏所需的数据,以及有关描述程序操作和使⽤的⽂档。
即:软件= 程序+ ⽂档3.软件的特征:软件的开发不同于硬件设计、不同于硬件制造、不同于硬件维修。
4.软件危机出现的原因:软件维护费⽤的急剧上升,直接威胁计算机应⽤的扩⼤;软件⽣产技术进步缓慢,是家居软件危机的重要原因。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------- 5.软件⼯程学的范畴:软件开发技术(软件开发⽅法学、软件⼯具、软件⼯程环境)、软件⼯程管理(软件管理学、软件经济学、度量学)。
6.软件⼯程:是指导计算机软件开发和维护的⼯程学科。
它采⽤⼯程的概念、原理、技术和⽅法来开发与维护软件,⽬的是为了实现按照预期的进度和经费完成软件⽣产计划,同时提⾼软件的⽣产率和可靠性。
7.软件的发展:⼤体经历了程序、软件、软件产品3个阶段。
8.⼯具和⽅法是软件开发技术的2⼤⽀柱。
9.3种编程泛型:过程式编程泛型、⾯向对象编程泛型、基于构件技术的编程泛型10.⾯向对象程序设计中,数据和操作被封装在⼀个对象中,对象之间则是通过消息相互联系。
11.构件:标准化/规格化的对象类。
12.常⽤变成⼒度的⼤⼩来⽐较3种编程泛型的差异。
粒度由⼩到⼤依次是:过程式编程范式、⾯向对象编程范式、基于构件的编程泛型。
13.软件⼯程的分化:传统软件⼯程:结构化分析-》结构化设计-》⾯向过程编码-》软件测试⾯向对象软件⼯程:OO分析与对象抽取-》对象详细设计-》⾯向对象的编码与测试基于构件的软件⼯程(以可复⽤构件和测试⼯具为后盾):领域分析和测试计划定制-》领域设计-》建⽴可复⽤构件库-》按‘构件集成模型’查找与集成构件14.分析先于设计,设计先于编码,使程序(的结构)适合于问题(的结构)。
软件工程——原理、方法与应用复习总结
1.软件的定义软件是能够完成预定功能和性能的可执行的计算机程序,包括是程序正常执行所需的数据,以及有关描述程序操作和使用的文档。
简言之,软件=程序+文档程序是为了解决某个特定问题而用程序设计语言描述的适合计算机处理的语句序列。
文档是软件活动开发的记录。
2.软件的特征(1)软件是一种逻辑实体,不是具体的物理实体(2)软件产品的生产主要是研制(3)软件具有复杂性其开发和运行常受到计算机系统的限制,有些软件甚至依赖于硬件的配置(4)软件成本昂贵,其开发方式目前尚未摆脱手工生产方式(5)软件不存在磨损和老化问题,但存在退化问题(6)软件通常针对特定的应用而设计,需要大量的时间精力3.软件危机软件危机的定义:计算机软件的开发和维护过程中所遇到的一系列严重问题软件危机的表现:(1)对软件开发成本和进度的估算很不准确(2)用户很不满意(3)质量不靠谱(4)没有适当的文档(5)软件成本比重上升(6)供不应求:软件开发生产率跟不上计算机应用迅速深入的趋势软件危机产生的原因:客观原因:软件本身的特点:逻辑部件,规模庞大,维护费用急剧上升,生产技术进步缓慢软件维护费用急剧上升,直接威胁计算机应用的扩大①.软件生产技术进步缓慢,是加剧软件危机的重要原因②. 主观原因:不正确的开发方式:忽视需求分析,错误认为软件开发=程序编写,轻视软件维护1.1 绪论2014年3月25日21:311.2 软件工程学的范畴2014年3月25日21:57中心思想是把软件当作是一种工业产品,要求“要求工程化的原理和方法对软件进行计划、开发和维护”软件工具:帮助开发软件的软件方法与工具相结合,再加上配套的软、硬件支持就形成环境3种编程范式1.遵循“程序=数据结构+算法”的思路,把程序理解为由一组被动的数据和一组能动的过程所构成。
(1)过程式编程范型(2)面向对象编程范型程序=对象+消息(3)基于构件技术的编程范型构件可以理解为标准化(或者规范化)的对象类(4) 3种编程范式的比较过程式编程范型:着眼于程序的过程和基本的控制结构,粒度最小面向对象编程范型:着眼于程序中的对象,粒度比较大基于构件的编程范型:着眼于适合整个领域的类对象,粒度更大1.3 软件工程的发展2014年3月25日22:01一个软件从开始立项起,到废弃不用为止,统称为软件生存周期(life cycle )。
软工重点第三版
“软件危机”的出现是由于软件的规模越来越大,复杂度不断增加,软件需求量增大。
主要表现在两个方面:(1)软件产品质量低劣,甚至在开发过程中就夭折。
(2)软件生产率低,不能满足需要。
软件工程三要素:方法,工具和过程软件是程序以及开发使用和维护程序所需的所有文档软件生存周期:1.可行性研究和项目开发计划 2.需求分析3.概要设计4.详细设计5.编码6.测试7.维护软件工程过程是指在软件工具的支持下所进行的一系列软件工程活动软件过程模型:瀑布模型,增量模型,螺旋模型,喷泉模型,智能模型1)瀑布模型:以文档作为驱动,适合于需求明确的软件项目开发,简单易用,消除非结构化的特征,降低软件的复杂性,促进软件开发工程化,会导致开发的软件不符合用户的需求而夭折。
2)增量模型:基于瀑布模型的渐增模型和基于原型的快速原型模型,适用于用户需求不明确,设计方案有风险的项目,非整体化开发模型。
3)螺旋模型:加入风险分析+瀑布+增量4)喷泉模型:面向对象技术,支持软件重用,迭代性,无间隙性。
5)智能模型:降低问题复杂性将软件生存周期中所使用的一整套技术的集合成为方法学或范型面向过程:结构化(瀑布模型)原型化功能的分解与抽象自顶向下逐步求精面向对象=对象+类+继承+消息OOA:对象模型(信息)状态模型(动态)处理模型(函数)OOD:概要设计详细设计OOD的5个层次由四类部件构成:5层次,主题层,类与对象层,结构层,属性层,服务层。
4部件:PDC问题域部件,HIC人机交互部件,TMC任务管理部件,DMC数据管理部件。
软件设计就是根据所表示的信息域的软件需求以及功能和性能需求进行数据设计系统结构设计过程设计界面设计构造一个高内聚,低耦合的软件模型概要设计:将软件需求转化为数据结构和软件的系统结构,划分出组成系统的物理元素:程序,数据库,过程,文件,类等详细设计:通过对结构表示进行细化,等到软件详细的数据结构和算法理解,抑郁测试和挑事,因而也有助于提高软件的可靠型模块间关系:层次结构,网状结构模块独立化:耦合性(数据耦合)内聚性(功能型内聚)确定类之间关系:聚合关系,泛化关系实现模型由构件图和配置图组成RUP统一过程横轴为时间轴,纵轴为核心工作流需求工程:1.获取需求2.需求分析与建模3.需求规格说明4.确认需求5.需求管理需求获取方法:1.面谈法2.问卷法3.会议讨论法4.原型法5.面向用例的方法需求分析方法:1。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章绪论1.每18个月芯片的性能和速度均提高一倍,每隔12年软件生产大约提高一倍。
2.软件:是能够完成预定功能和性能的可执行的计算机诚信度。
包括使程序正常执行所需的数据,以及有关描述程序操作和使用的文档。
即:软件= 程序+ 文档3.软件的特征:软件的开发不同于硬件设计、不同于硬件制造、不同于硬件维修。
4.软件危机出现的原因:软件维护费用的急剧上升,直接威胁计算机应用的扩大;软件生产技术进步缓慢,是家居软件危机的重要原因。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------- 5.软件工程学的范畴:软件开发技术(软件开发方法学、软件工具、软件工程环境)、软件工程管理(软件管理学、软件经济学、度量学)。
6.软件工程:是指导计算机软件开发和维护的工程学科。
它采用工程的概念、原理、技术和方法来开发与维护软件,目的是为了实现按照预期的进度和经费完成软件生产计划,同时提高软件的生产率和可靠性。
7.软件的发展:大体经历了程序、软件、软件产品3个阶段。
8.工具和方法是软件开发技术的2大支柱。
9.3种编程泛型:过程式编程泛型、面向对象编程泛型、基于构件技术的编程泛型10.面向对象程序设计中,数据和操作被封装在一个对象中,对象之间则是通过消息相互联系。
11.构件:标准化/规格化的对象类。
12.常用变成力度的大小来比较3种编程泛型的差异。
粒度由小到大依次是:过程式编程范式、面向对象编程范式、基于构件的编程泛型。
13.软件工程的分化:传统软件工程:结构化分析-》结构化设计-》面向过程编码-》软件测试面向对象软件工程:OO分析与对象抽取-》对象详细设计-》面向对象的编码与测试基于构件的软件工程(以可复用构件和测试工具为后盾):领域分析和测试计划定制-》领域设计-》建立可复用构件库-》按‘构件集成模型’查找与集成构件14.分析先于设计,设计先于编码,使程序(的结构)适合于问题(的结构)。
第二章软件生存周期与软件过程1.软件生存周期:计划、开发、运行3个时期。
需求分析-》软件分析-》软件设计-》编码测试-》软件测试-》运行维护2.需求分析(用户视角):功能需求、性能需求、环境约束、外部接口描述。
3.软件分析(开发人员视角):建立与需求模型一致的,与实现无关的软件分析模型。
4.软件设计:总体设计/概要设计、详细设计(确定软件的数据结构和操作)。
5.单元测试通常与编码同时进行。
6.软件测试:单元测试、集成测试、系统测试。
7.Boehm软件生存周期的划分:系统需求、软件需求、概要设计、详细设计、编码纠错、测试和预运行、系统维护。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------8.瀑布模型特点:阶段间的顺序性和依赖性、推迟实现的观点、保证质量的观点。
9.瀑布模型存在的问题:只有在需求分析准确的前提下,才能得到预期的结果。
快速原型模型:原型系统只包括对未来系统的主要功能以及系统的重要接口。
特点:快速开发工具、循环、低成本。
种类:渐进型、抛弃型。
10.常见的演化模型(渐增式、迭代式):增量模型、螺旋模型。
11.增量模型:结合瀑布模型的顺序特征与快速原型法的迭代特征。
增量:小而可用的软件一般情况下,第一个增量是软件的核心部分。
如(增量一:需求-设计-实现和集成-交付客户)12.螺旋模型(目前最常用):当项目按照顺时针方向沿螺旋线移动时,每轮螺旋包含:计划、风险分析、建立原型、用户评审4种活动。
(高风险的大型软件采用此方法)13.构件集成模型:适应于面向对象的软件开发。
利用预先封装好的构件来构造应用软件系统。
14.软件开发方法可区分:形式化方法、非形式化方法。
15.形式化开发模型:转换模型、净室模型16.转换模型:是将形式化软件开发和程序自动生成技术相结合的一种软件开发模型。
转换模型的开发过程:确定性实话的需求规格说明书、进行自动化的程序变换、对形式化开发记录进行测试。
转换模型的常用技术:基于模型的需求规格说明书及其变换技术;基于代数结构的需求规格说明书及其变换技术;基于时序逻辑的需求规格说明书及其验证技术以及基于可视化的技术。
17.净室模型:是一种形式化的增量开发模型。
力求在分析和设计阶段消除错误。
18.统一过程RUP 包括4 个阶段:初始、细化、构造、迁移。
以用例为驱动, 以系统架构为中心的迭代与增量过程。
每个阶段又分为若干次迭代,每次迭代都有一个核心工作流,有5 个活动(需求、分析、设计、实现、测试)。
19.敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。
20.敏捷开发的价值观:个体和交互胜过过程和工具、可以工作的软件胜过面面俱到的文档、客户合作胜过合同谈判、响应变化胜过遵循计划。
21.软件可行性研究:经济可行性、技术可行性、运行可行性、法律可行性。
22.可行性研究的步骤:对当前系统进行调查研究、导出新系统的解决方案、提出推荐方案、编写可行性论证报告。
23.可行性论证报告的内容:系统概述、可行性分析、结论意见。
24.软件风险分析包括:风险识别(项目风险、技术风险、商业风险)、风险预测、风险的驾驭和监控。
25.软件计划的7种类型:项目实施计划、质量保证计划、软件测试计划、文档编制计划、用户培训计划、综合支持计划、软件分发计划。
第三章结构化分析与设计1.结构化设计SD ;结构化分析SA ;软件需求规格说明书SAS ;结构图SC ;数据字典DD ;状态转换图STD ;数据流图DFD2.瀑布模型的生命周期:需求定义与分析-》总体设计-》详细设计-》编码-》测试-》维护3.系统的开发流程(SA和SD流程):结构化分析(工具:DFD,PSPEC)------》分析模型(分层DFD图)+SRS结构化设计(工具:SC图)(映射)------》初始设计模型(初始SC图)初始设计模型(初始SC图)(优化)------》最终设计模型(最终SC图)4.结构化分析的基本步骤:自顶向下,功能分解(分层DFD)、由后向前,定义数据和加工(DD, PSPEC)、根据需要,分析复杂数据和动态模型(E-R图,CFD,CSPEC,STD)、编写软件需求规格说明书SRS。
5.SA需求分析的两项基本任务:建立系统分析模型、编写SRS。
6.分析模型组成:功能模型、数据模型、行为模型3种。
7.抽象和分解是结构化分析的主要指导思想,细化的实质是分解。
分解和细化是软件设计的策略。
8.SD阶段把分析模型中的DFD图转换为最终SC图。
9.传统软件的开发技术:结构化设计、模块设计。
10.软件设计:总体设计/概要设计(初始SC图、最终SC图)、详细设计(用逐步细化的方法,完成模块的说明)。
11.需求分析的步骤:需求获取、需求提炼、需求描述、需求验证。
12.SA模型的组成13.SA模型同时覆盖了信息模型、功能模型、行为模型3种模型。
14.DFD图不能表示程序的控制结构(如选择、循环结构)。
15.加工规格说明通常用结构化语言、判定表、判定树作为描述工具。
16.软件中的数据分为3类:数据项(数据元素)、数据流(多个相关数据项)、数据文件和数据库。
17.数据字典的组成:数据项、数据流、数据存储(文件或数据库)、加工(处理逻辑)、外部项(人、物或其它软件系统)。
18.SD模型是由SA模型映射而来的。
SA模型的数据字典可转换为待开发系统的数据设计数据流图可转换为体系结构设计(SC图)与接口设计加工规格说明可转换为模块内部的详细过程设计19.SD模型的组成:从上到下依次是:过程设计、接口设计、体系结构设计、数据设计。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------- 20.结构化分析的基本步骤:自顶向下对系统进行功能分解,画出DFD图;由后向前定义系统的数据和加工;编制DD和PEPES;写出SRS。
21.把不需要分解的加工成为基本加工。
把逐步分解成为“自顶向下,逐步细化”。
22.DFD的优点:便于实现,便于使用。
23.传统的软件设计可细分为:面向数据流设计(SD方法)、面向数据结构设计(Jackson方法)。
24.用数据流图表示逻辑模型,在设计阶段,按照数据流图的不同类型(变换型、事务型)转换为相应的软件结构。
25.结构化设计通常从DFD图到SC图的映射开始。
26.面向数据流的设计方法:从DFD图到SC图的映射的4个步骤:复审DFD图,必要时可再次进行修改或细化;鉴别DFD图的结构特征:事务?变换?;按照规则,把DFD图为初始的SC图;改进初始的SC图。
27.变换型结构:由输入、变换中心和输出三部分组成。
事务型结构:具有在多种事务中选择执行某类事物的能力。
28.变换映射的步骤:划分DFD图的边界、建立初始SC图的框架、分解SC图的各个分支。
事务映射的步骤:在DFD图上确定边界、画出SC图框架、分解和细化接受分支和发送分支。
29.优化结构设计的指导规则:对模块分割、合并和变动调用关系的指导规则、保持高扇入/低扇出的原则、作用域/控制域规则。
30.模块设计(详细设计)的主要任务是编写软件的模块设计说明书。
目的是确定模块采用的算法和块内数据结构。
31.模块设计的原则:清晰第一的设计风格、结构化的控制结构、逐步细化的实现方法。
32.“结构化”保证程序的清晰、易读,“逐步细化”实现程序的正确、可靠。
33.结构化程序设计原理和逐步细化的实现方法是完成模块设计的基础。
第四章面向对象和UML1.面向对象的基本特征:抽象、封装、集成、多态。
2.面向对象开发的优点:提高软件系统的可复用性、可扩展性、可维护性。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------- 3.元素之间的联系有:关联、泛化、依赖、实现、聚集、组合。