软件工程原理、方法与应用【第三版】复习总结
- 格式:doc
- 大小:3.33 MB
- 文档页数:15
软件工程复习要点软件工程是一门研究如何高效地开发、维护和管理软件的学科。
对于学习软件工程的同学来说,熟练掌握复习要点是非常重要的。
本文将为大家总结并分享软件工程的复习要点,希望能够帮助大家更好地掌握和应用软件工程知识。
一、软件开发过程软件开发过程是指从需求分析到交付软件产品的整个过程。
常用的软件开发过程模型有瀑布模型、迭代模型、敏捷模型等。
要理解和掌握软件开发过程,需要熟悉各个阶段的任务和活动,包括需求分析、设计、编码、测试、交付等环节。
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. 面向对象设计:基于对象和类的概念进行系统设计,强调封装、继承和多态等特性。
软件工程—理论与实践第三版学习心得在学习《软件工程—理论与实践》第三版这本书的过程中,我对软件工程的理论和实践有了更深入的了解和认识。
本书不仅介绍了软件工程的基本概念和原理,还深入探讨了软件开发过程中的各个环节和技术。
首先,本书对软件工程的基本概念进行了清晰的阐述,包括软件生命周期、需求工程、软件设计、软件测试等。
通过学习这些基本概念,我对软件开发的整体流程有了更清晰的认识,能够更好地理解软件开发过程中各环节的重要性和相互关系。
其次,本书还介绍了一些软件工程的常用方法和技术,如面向对象设计、敏捷开发、软件度量等。
这些方法和技术在实践中得到了广泛应用,并且在本书中都有详细的讲解和案例分析。
通过学习这些方法和技术,我不仅能够更好地应对实际软件开发中的各种问题,还能够提高开发效率和软件质量。
此外,本书还强调了软件工程的团队合作和项目管理方面的重要性。
团队合作是软件开发过程中不可或缺的一部分,而项目管理则能够有效地组织和协调开发活动。
通过学习本书中的相关内容,我对软件开发团队的组织和管理有了更系统和全面的认识。
总的来说,学习《软件工程—理论与实践》第三版让我对软件工程有了更深入的理解和认识。
通过学习书中的理论知识和实践案例,我能够更好地应对实际软件开发中的各种问题,提高开发效率和软件质量。
同时,我也认识到软件工程是一个综合性的学科,需要不断学
习和实践才能不断提高自己的水平。
软件工程复习重点总结第一篇:软件工程复习重点总结第一章软件过程:需求设计实现发布软件过程三要素: 过程+方法+工具瀑布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进行取舍。
第一章绪论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.元素之间的联系有:关联、泛化、依赖、实现、聚集、组合。