山东建筑大学计算机学院软件工程复习概要
计算机软件工程复习要点(计算机科学与技术)
一、术语解释软件工程、需求工程、软件生命周期、测试用例、软件复用、软件可维护性、CASE、软件工程过程二、基本知识要点1. 软件危机的主要表现。
软件工程主要研究与软件开发和维护有关的四个方面的内容:方法和技术、工具和环境、管理技术、标准和规范。
2. 生命周期模型。
典型瀑布模型生命周期的六个阶段。
各阶段产生的文档的名称及承担的人员。
螺旋模型综合了传统瀑布模型直线式的特点和快速原型模型的迭代思想,同时增加了一个重要特征,即风险分析。
螺旋模型在4个象限定义了4个主要活动。
螺旋模型的基本思想和主要特点。
原型模型的基本思想及分类。
喷泉模型是面向对象的模型,体现了迭代和无间隙的特点。
3. 需求分析的主要方法(结构化方法SA、面向对象的方法OOA、形式化方法等)。
结构化分析方法SA、结构化设计方法SD的主要任务、结束文档及内容。
SA得到分层DFD及DD;SD得到模块结构图SC及模块功能说明书。
SD是实现了DFD→SC。
需求规格说明书的主要内容。
软件设计的分类。
E-R图的基本构成要素。
软件系统需求的分类,需求管理的主要任务。
4. DFD的四个构成要素及各自可以表达的内容。
常用加工说明的描述工具(结构化语言、判定表、判定树)。
根据问题结构的不同,可以使用变换分析及事务分析得到初始的SC(分别对应变换型DFD和事务型DFD)。
画DFD的基本原则。
5. 分解、信息隐藏和模块独立性是实现模块化设计的重要指导思想。
模块化设计的核心——模块独立性,由内聚和耦合度量(熟练掌握七种内聚、七种耦合以及控制软件耦合度的方法)。
扇入、扇出。
作用域控制域原则。
程序模块优化的启发式规则。
6. 对象的三个构成要素(对象标识、属性和方法)。
面向对象分析过程中,系统的问题域由概念模型描述,即使用类图表示概念模型;使用用例图描述角色可见的系统功能;使用顺序图和协作图描述对象的行为。
顺序图和协作图的区别。
7. UML的缩写,来自于三个方法(Booch、OMT、OOSE)。
软件工程复习纲要
软件工程复习提纲第一部分:1.软件工程定义、软件工程三要素及目的、软件的定义及组成(P2)答: 软件工程是开发、运行、维护和修复软件的系统方法。
软件工程三要素:方法、工具和过程①方法是完成软件工程项目的技术手段;②工具支持软件的开发、管理、文档生成;③过程支持软件开发的各个环节的控制、管理。
软件工程目的:根据需求分析确定可行性后,在给定的时间内开发具有可修改性、有效性、可靠性、可维护性、可重用性、可适应性、可移植性、开销合宜并满足用户需要的软件产品。
软件的定义:计算机程序、方法、规则、相关的文件资料以及在计事机上运行时所必需的数据。
软件的组成:程序、文档、数据2.软件过程的定义(P11)、软件过程模型及模型特点(P25)、软件体系结构(P104)答:软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
软件过程模型:也称软件生命周期模型,是为了解决产业环境中的实际问题而提出的开发策略,是反映整个软件生命周期中,系统开发、运行、维护的等实施活动的一种结构框架。
它包括瀑布模型、增量模型、螺旋模型、协同开发模型、统一过程模型、组件集成模型、面向方面的软件开发。
各特点如下:○1瀑布模型:顺序性和依赖性;推迟实现;质量保证的观点;是一种线性模型,文档驱动的模型。
○2增量模型是一种非整体开发的模型。
该模型具有很大的灵活性,适合于软件需求不明确、设计方案有一定风险的软件项目。
○3螺旋模型结合瀑布模型和快速原型,是一种风险驱动的开发模型○4协同开发模型是一种时间驱动的活动网络模型。
○5统一过程模型是以用例驱动的,以架构为中心,迭代和增量的过程。
○6组件集成模型利用模块化方法将整个系统模块化,复用构件库中的软件构件,通过组合手段提高应用软件系统过程的效率和质量。
○7面向方面的软件开发是一系列新兴技术,用以寻找软件系统中新的模块化特性,允许对软件系统中多种关注点进行独立描述,同时又能自动统一组合到工作系统之中。
《软件工程》复习提纲
《软件工程》课程要点●每章教学课件中的“本章小结”列出了需要掌握的内容●教学过程中的例题和习题也是课程重点一、软件工程与软件过程概述1.概念:(1)软件的概念(组成成分、作用);答:计算机软件是程序、数据和相关文档的集合;用于实现计算机系统所需要的逻辑方法和控制过程(2)软件危机的含义、表现、产生原因(客观、主观)答:计算机软件开发和维护过程中遇到的一系列严重问题。
软件危机的表现:①对软件开发成本和进度的估计很不准确②已完成的软件不能满足用户需求③软件质量差④软件不可维护⑤软件没有开发文档⑥软件成本在计算机系统总成本中所占的比例逐年上升⑦软件生产率跟不上硬件的发展和计算机迅速普及的趋势与软件的特点有关(客观原因):①软件是计算机系统中的逻辑部件,缺乏“可见性”,管理和控制软件开发过程相当困难②软件在使用期间不存在机械磨损和老化问题,一旦发现错误,通常意味着修改原来的设计,因此软件难维护③软件规模庞大,程序复杂性增加,需多人分工合作(不能保证每个人完成的工作合在一起构成一个高质量的大型软件系统)与软件开发和维护的方法不正确有关(主观原因):①开发无计划②忽视软件需求分析的重要性③轻视软件维护④无过硬评测手段⑤缺乏有力的开发方法和工具⑥不重视开发文档等软件配置(3)软件工程学科包括的内容(三要素)、解决的主要问题答:(1)软件工程定义:1)软件工程是指导计算机软件开发和维护的工程学科 2)采用工程化的概念、原理、技术和方法来开发和维护软件3)将经过时间考验而证明正确的管理技术和开发技术结合起来,以较经济的手段开发出高质量的软件并有效维护它2)软件工程方法学的三要素:①方法:完成软件开发各项任务的技术方法②工具:为方法的高效运用,而提供的自动或半自动的软件支撑环境③过程:为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤(4)软件生命周期的含义、组成阶段及各阶段主要任务答:软件生命周期:一个软件从定义、开发、运行维护,直到最终被废弃要经历一个漫长的时期,这个时期称为软件生命周期。
重点复习软工
重点复习软工软工(软件工程)是计算机科学与工程领域的一门重要学科,旨在研究以科学原理与工程技术为基础,以经济、可靠和高质量为目标,开发和维护复杂软件系统的学科体系。
对于计算机相关专业的学生来说,软工是一门必不可少的课程。
本文将介绍关于软工的重点复习内容,以帮助读者更好地准备软工考试。
一、软件开发生命周期软件开发生命周期指的是从软件项目的规划到最终交付使用的整个过程。
它包含了需求分析、设计、编码、测试、维护等阶段。
在复习软工时,需要了解各个阶段的主要任务和活动,以及它们之间的关系和依赖。
1. 需求分析阶段:需求分析是软件开发的第一步,目的是识别出用户需求并定义功能和性能要求。
在这个阶段,需要学习如何进行需求获取、需求分析和需求建模等技术和方法。
2. 设计阶段:设计阶段是将需求转化为可执行的规划和设计方案的阶段。
这个阶段包括系统架构设计、详细设计、数据库设计等。
在复习软工时,需要了解常用的设计原则和设计模式,如单一职责原则、开放封闭原则、工厂模式、观察者模式等。
3. 编码阶段:编码阶段是将设计好的方案转化为计算机可执行代码的阶段。
在复习软工时,需要熟悉常用的编程语言和开发工具,如Java、C++、Eclipse、IntelliJ IDEA等。
同时,还需要了解编码规范和代码质量管理的重要性。
4. 测试阶段:测试阶段是为了发现和修复软件中存在的问题和错误。
在复习软工时,需要熟悉各种测试方法和技术,如单元测试、集成测试、系统测试、性能测试等。
此外,还需要了解测试用例的设计和执行,以及错误跟踪和修复的方法。
5. 维护阶段:维护阶段是软件开发生命周期中最后一个阶段。
它主要涉及对软件进行改进和修复。
在复习软工时,需要了解维护活动的类型和方法,如改正性维护、适应性维护、完善性维护等。
二、软件开发方法论软件开发方法论是指在软件开发过程中使用的一套规范和约束,它们可以指导和帮助开发团队更好地组织和管理软件项目。
在复习软工时,需要了解以下几种常见的软件开发方法论。
软件工程复习资料-完整版
软件工程复习资料-完整版一、概述软件工程是一门关于开发、维护和管理软件的综合学科。
它涵盖了软件开发的各个阶段,包括需求分析、设计、编码、测试和维护。
软件工程的目标是提供高质量的软件,满足用户的需求,同时将开发过程控制在预定的时间和预算范围内。
二、软件生命周期1. 需求分析阶段在需求分析阶段,开发团队与用户沟通,了解用户的需求和期望。
通过需求分析,确定软件的功能和性能要求,制定详细的需求规格说明。
2. 设计阶段在设计阶段,团队根据需求规格说明,设计软件的整体架构和模块。
设计阶段包括概要设计和详细设计,概要设计主要确定软件的整体结构,详细设计则更加具体,包括模块的功能和接口设计。
3. 编码阶段在编码阶段,根据详细设计,实现软件的各个模块。
编码时应遵循编程规范,确保代码的可读性和可维护性。
同时,要进行单元测试,确保每个模块的功能正确。
4. 测试阶段在测试阶段,对软件进行不同层次的测试,包括单元测试、集成测试和系统测试。
单元测试测试各个模块的功能,集成测试测试模块之间的接口,系统测试测试整个系统的功能和性能。
5. 部署和维护阶段在软件开发完成后,需要将软件部署到目标环境中,并进行用户培训。
同时,还需要对软件进行维护和升级,以解决出现的问题和满足用户的需求变化。
三、软件工程的原则1. 模块化将软件划分为多个模块,每个模块负责特定的功能。
模块化能够提高软件的可维护性和复用性,同时有利于团队的协作开发。
2. 可伸缩性软件应该具备可伸缩性,能够满足不同规模和需求的用户。
在设计和实现软件时,需要考虑未来的扩展和升级,保证软件的灵活性。
3. 可测试性软件应该具备可测试性,方便进行各个阶段的测试。
在设计和编码时,需要考虑如何进行自动化测试,提高测试的效率和覆盖率。
4. 可维护性软件应该具备可维护性,方便对软件进行改进、修复和升级。
在设计和编码时,需要遵循良好的编程规范,提高代码的可读性和可维护性。
5. 文档化软件开发过程需要进行详细的文档记录,包括需求文档、设计文档、测试文档等。
软工复习要点
软工复习要点软件工程是现代计算机科学的重要分支,致力于开发高质量的软件系统。
在软件工程的学习过程中,掌握并熟悉相关的复习要点是非常重要的。
本文将总结软件工程的复习要点,帮助读者更好地准备考试,并取得好的成绩。
一、软件生命周期1. 需求分析阶段- 需求获取:通过面谈、问卷调查等方式获取用户需求。
- 需求分析:对收集到的需求进行分析、整理和规格说明。
- 需求验证:与用户确认需求是否准确并理解一致。
2. 设计阶段- 概要设计:定义系统的总体结构和模块划分,确定系统的主要功能。
- 详细设计:对每个模块进行详细设计,包括定义数据结构、算法等。
3. 编码阶段- 编写程序:将设计的模块转化为具体的编程代码。
- 单元测试:对每个模块进行测试,确保代码的正确性。
4. 测试阶段- 集成测试:将各个模块进行整合,进行系统级别的测试。
- 系统测试:对整个系统进行测试,检查系统是否满足预期功能和性能。
5. 运维阶段- 安装部署:将软件部署到实际应用环境中。
- 系统维护:对已部署的软件进行维护和更新。
二、软件开发过程模型1. 瀑布模型:按照线性顺序依次完成各阶段的开发流程。
2. 增量模型:将开发过程划分为多个增量,逐步迭代开发。
3. 原型模型:通过快速开发原型来验证需求和设计方案。
4. 敏捷模型:强调快速响应变化需求的开发方法。
三、软件需求工程1. 需求分类:功能需求和非功能需求的划分和描述。
2. 需求获取:通过场景分析、访谈、面谈等方式收集用户需求。
3. 需求分析:对需求进行整理、归类和建模,明确需求的范围和边界。
4. 需求规格说明:使用工具(如用例图、活动图)对需求进行形式化的描述和建模。
5. 需求验证:与用户进行需求确认和变更管理,保证需求的正确性和一致性。
四、软件设计1. 结构设计:确定软件的整体结构和模块之间的关系。
2. 数据设计:定义数据模型和数据库的结构。
3. 接口设计:定义模块间的接口,确保模块之间的良好交互。
软件工程复习要点
题型1、名词说明2、问答题3、应用题(看图题,分析题,计算题)学问点:1、什么是软件及软件特点,软件的分类软件是计算机系统中和硬件相互依存的另一部分,它是包括程序、数据及其相关文档的完整集合软件的特点(1)软件是一种逻辑实体。
(2)软件的开发,是人的智力的高度发挥,而不是传统意义上的硬件制造。
(3)软件维护和硬件的修理有着本质的差别。
(4)软件的开发和运行常常受到计算机系统的限制,对计算机系统有着不同程度的依靠性。
(5)软件的开发至今尚未完全摆脱手工艺的开发方式,使软件的开发效率受到很大限制。
(6)软件的开发是一个困难的过程。
(7)软件的成本特殊昂扬软件的分类1.基于软件功能的划分系统软应用软件支撑软件2.基于软件工作方式的划分实时处理软件分时软件交互式软件批处理软件2、什么是软件危机,起因一方面软件特殊困难,价格昂贵,供需差日益增大,另一方面软件开发时又常常受挫,质量差,指定的进度表和完成日期很少能按时实现,研制过程很难管理,即软件的研制往往失去限制。
我们称软件开发和维护过程中所中遇到的这一系列严峻问题为软件危机。
软件危机包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。
3、什么是软件工程,它的基本目标,要素,原则(1)软件工程是指探讨软件生产的一门学科,也就是将完善的工程原理应用于经济地生产既牢靠又能在实际机器上有效运行的软件。
(2)软件工程学探讨的基本目标是:定义良好的方法学,面对支配,开发维护整个软件生存周期的方法学;确定的软件成分,记录软件生存周期每一步的软件文件资料,按步显示轨迹;可预料的结果,在生存周期中,每隔确定时间可以进行复审(3)软件工程的原则:分解;抽象和信息隐藏;一样性;确定性4、什么是软件生命周期,每个阶段的意义理解如同任何其他事物一样,软件也有一个孕育、诞生、成长、成熟、衰亡的生存过程,一般称之为计算机软件的生命周期。
1.软件定义时期(1)问题定义:这是软件生存期的第一个阶段,主要任务是弄清用户要计算机解决的问题是什么。
软件工程一二章知识点总结
软件工程一二章知识点总结一、软件工程概述1.1 软件工程定义软件工程是指将系统化、规范化、可靠化、高效化地开发、维护和管理软件的过程。
它包括了一系列的方法和工具,旨在提高软件开发的质量和效率。
1.2 软件危机软件危机是指在软件开发和维护过程中所出现的一系列问题,包括进度滞后、成本超支、质量不高等。
软件工程的出现正是为了解决这些软件危机。
1.3 软件工程的目标软件工程的主要目标是提高软件开发的质量、提高开发效率、降低开发成本,并且使得软件能够满足用户的需求。
1.4 软件工程的原则软件工程有七大原则,包括可管理性、稳定性、可维护性、灵活性、可重用性、可移植性和高效性。
1.5 软件工程的特点软件工程有其自身的特点,包括软件的不可见性、复杂性、变化性和一致性。
软件开发过程要充分考虑这些特点。
1.6 软件危机的原因软件危机主要是由于软件的复杂性、需求的不断变化、开发过程的管理不善和技术水平的不足等诸多原因导致的。
要解决软件危机,就需要采用科学的方法进行软件开发。
二、软件生命周期2.1 软件生命周期模型软件生命周期模型是描述软件开发过程中不同阶段的模型。
常见的软件生命周期模型包括瀑布模型、原型模型、迭代模型、螺旋模型、敏捷开发模型等。
2.2 软件生命周期阶段软件生命周期通常包括需求分析、设计、编码、测试、部署和维护等不同阶段。
每个阶段都有其特定的任务和目标。
2.3 瀑布模型瀑布模型是软件开发中最经典的一种模型,它将软件开发过程分为需求分析、设计、编码、测试和维护五个阶段,严格按照顺序进行。
该模型适用于需求变化不大的项目。
2.4 原型模型原型模型是一种以原型开发为基础的模型,它能够快速生成原型,帮助用户更好地理解需求,并且在软件开发过程中充分考虑需求的变化。
2.5 敏捷开发敏捷开发是一种迭代、灵活、快速响应需求变化的软件开发方法。
它强调团队合作、交付价值、持续改进和迭代开发。
三、需求工程3.1 需求工程定义需求工程是指对需求进行理解、规范、记录和验证的过程。
计算机软件技术基础复习要点概要
计算机软件技术基础复习要点第二章基本数据结构及其运算1.数据结构的分类,线性结构与非线性结构,线型结构又名线性表。
P202. 栈的定义:栈是限定在一端进行插入与删除的线性表。
对栈的插入与删除运算不需要移动表中其它数据元素。
“先进后出”或“后进先出” 。
P314. 队列:定义,队列的操作原则:先进先出。
P405. 带链的栈的类实现(代码。
P616. 循环链表的类的实现(代码 P677. 稀疏矩阵的三列二维数组的表示。
给出一个稀疏阵,能写稀疏矩阵中的每个非零元素的三元组表示。
P86-878. 二叉树的性质 1、性质 2. P1159. 二叉树的遍历分三种:前序遍历、中序遍历、后序遍历。
P118.10. 图的基本概念。
P13711. 图的遍历方法有:纵向优先搜索发和法和横向优先搜索法。
第四章资源管理技术1. 第一个分时操作系统是 UNIX 操作系统。
P2302. 进程与程序的区别是:静态和动态、…… P12352. 进程的组成:数据、程序、进程控制块。
P2353. 进程的三种状态是什么?怎么互相转换的。
P236运行转就绪, 运行转等待、就绪转运行、等待转就绪,各自转换的原因。
单 CPU 情况下,任意时刻,处于运行状态的进程只有一个。
一个进程对应一个进程控制块,每个进程控制块记录进程的状态、名称等信息,每个进程控制块应是互不相同的。
4. 创建原语 :在实际系统中创建一个进程有两种方法:一是由操作系统建立, 0#进程就是由操作系统建立的; 二是由其他进程创建一个新的进程。
基本操作都是一样的。
创建进程原语总是先为新建进程申请一空白 PCB ,并为之分配唯一的数字表示符,使之获得 PCB 的内部名称, 若该进程所对应的程序不在内存中, 则应将它从外存储器调入内存, 并将该进程有关信息填入 PCB 中,然后置该进程为就绪状态,并将它排入就绪队列和进程家族队列中。
5. 何为死锁,发生死锁的四个必要条件。
软件工程复习大纲
软件工程复习大纲软件工程复习大纲1. IEEE是如何定义的软件和软件工程的?2. 软件工程三个要素是什么?3. 软件工程基础理论研究和工程化技术研究的内容是什么?4. 软件是如何分类的?5. 为什么软件维护的费用一直居高不下?根据你的分析,软件维护的主要困难何在?克服这些困难的途径何在?6. 系统分析过程,必须考虑哪八个方面的问题?7. 系统分析员应具备的素质是什么?8. 系统技术评审的评审内容包括哪些问题?9. 系统管理评审的范围应包括哪些比较关键的问题?10. Vitalari和Dickson的研究说明系统分析和设计哪六大困难?11. 软件需求分析的基本原则有哪些?12. 建立快速原型进行系统的分析和构造,有哪些好处?13. PIECES模型的组成部分是什么?对每个组成部分进行简要描述。
14. 说出并简述科德对问题域需求的收集和建模的面向对象方法的四大活动。
15. 软件工程经常提到“困难”或“复杂”的系统,他们指什么?程序难于理解与程序难于设计之间是否有所差别?16. 试论信息隐蔽与模块的独立性两概念之间的关系。
17. 模块内聚有哪七种类型?18. 传统的软件设计有什么缺点?19. 列出并描述面向对象方法论的8个特点。
20. 软件复用范围的层次和软件复用技术类型?21. 列举并简要讨论科德分析模型的5个层次和4个部件?22. 列举并简要讨论科德面向对象方法论的符号。
23. 描述一个信息系统,最少需求什么?24. 定义符号,简要描述它在面向对象的信息系统中的重要性。
25. 纠错性维护与排错是否同一件事?说明你的理由。
26. 请列出有利于提高可维护性的软件开发和程序设计技术。
27. 提高软件可靠性最有效的技术有哪些?软件可靠性与软件质量有何差别?28. 若你是一个小项目的主管,你将为此工程设置哪些基线,又如何控制它们?29. 制定一个用于配置审计的核查清单(CheckList)30. 简述SW-CMM中的配置管理内容。
软件工程复习
软件工程复习软件工程是计算机科学中重要的一个分支,它涉及软件系统开发、维护和管理等方面。
作为软件工程的学习者,我们需要对软件开发的各个环节以及相关的理论知识进行复习,以提高我们的专业水平和技能。
本文将从需求分析、设计、编码、测试和维护等方面,进行软件工程的复习。
一、需求分析需求分析是软件开发的第一步,它是确定软件系统实际需求的过程。
在需求分析阶段,我们需要与客户交流,明确软件系统的功能、性能和各项需求。
同时,我们需要进行需求建模,使用面向对象分析的方法,将需求转化为可用的模型。
需求分析的一种常用方法是使用用例图和用例规约来描述系统的功能需求。
用例图可以通过图形化的方式展示系统的各个功能模块以及它们之间的关系,而用例规约则详细地描述了每个功能模块的具体行为和操作。
二、设计设计是软件开发的核心环节,它包括系统设计和详细设计两个方面。
系统设计是指对整个软件系统进行高层次的结构设计,确定系统的总体架构和模块划分。
详细设计则是在系统设计的基础上,进一步进行每个模块的详细设计,确定模块的接口和数据结构。
在设计阶段,我们需要使用UML(统一建模语言)来进行建模。
类图和时序图是常用的设计图形,类图用于表示系统中的类和类之间的关系,时序图用于展示系统中各个类之间的时序关系。
三、编码编码是将设计的结果转化为计算机可执行的代码的过程。
在编码阶段,我们要根据设计文档,按照编程规范进行编码,编写高效、可靠、易于维护的代码。
编码过程中,我们需要选择合适的编程语言和开发环境。
根据项目的需求和个人偏好,可以选择Java、C++、Python等不同的编程语言,使用Eclipse、Visual Studio等开发环境进行编码。
四、测试测试是保证软件质量的重要环节。
在测试阶段,我们需要对软件系统进行功能测试、性能测试、压力测试等多种测试。
在进行测试时,我们需要编写测试用例,根据需求和功能特点,设计并执行各个测试用例。
同时,我们还需要学习使用不同的测试工具,如Junit、Selenium等,来辅助进行自动化测试。
软件工程复习
软件工程复习软件工程是计算机科学的一个分支,旨在开发和维护高质量的软件系统。
在软件工程的学习过程中,我们需要掌握各种概念、原理和方法,以便能够设计、开发和管理软件项目。
本文将对软件工程的基本概念和重要内容进行复习总结。
一、概述软件工程是一门涉及软件开发生命周期的学科,它涵盖了需求分析、设计、编码、测试、维护等步骤。
其目标是通过系统化的过程和方法来提高软件开发的效率和质量。
二、软件开发生命周期1. 需求分析:确定软件系统的功能需求和性能需求,为后续开发提供基础。
2. 设计:根据需求分析的结果,进行系统架构设计和模块设计,确定软件的整体结构和各个模块的功能。
3. 编码:根据设计文档进行具体编码工作,实现软件功能。
4. 测试:对编码完成的软件进行功能测试、性能测试和安全性测试,确保软件的质量。
5. 维护:在软件发布后,对其进行修复漏洞、改进功能等维护工作,使软件能够持续发挥价值。
三、软件需求工程1. 需求获取:通过与用户和相关利益相关者的沟通,收集软件系统的需求信息。
2. 需求分析与规格说明:对需求进行分析,明确需求的优先级和约束条件,撰写需求规格说明文档。
3. 需求验证:通过需求验证技术和方法,确认需求规格说明文档的正确性和完整性。
四、软件设计原则与模式1. 单一职责原则(SRP):一个类或模块应该有且只有一个责任。
2. 开放封闭原则(OCP):一个软件实体应该对扩展是开放的,对修改是封闭的。
3. 里氏替换原则(LSP):所有使用基类对象的地方,都可以用其子类对象来替换。
4. 依赖倒置原则(DIP):高层模块不应该依赖底层模块,二者都应该依赖其抽象。
5. 接口隔离原则(ISP):使用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它不需要的接口。
6. 迪米特法则(LoD):一个对象应该对其他对象保持最少的了解。
五、软件质量与测试1. 功能测试:验证软件是否满足用户需求。
2. 性能测试:验证软件在预期负载下的性能表现。
软件工程期末复习要点归纳总结
第一章软件工程学概论1、软件危机产生的原因软件本身的特点:难于维护、逻辑复杂软件开发与维护的方法不正确:忽略需求分析重要性、轻视软件维护课本表述:1、软件不同于硬件,它是计算机中的逻辑部件而不是物理部件2、软件不同于一般程序,它的一个显著特点是规模庞大,而且程序的复杂性将规模的增加而呈现指数上升;3、软件本身特有的特点确实给开发和维护带了一些客观困难4、软件开发与维护有关的许多错误认识与做法有关忽略需求分析,轻视软件维护5、对用户要求没有完整准确的认识就匆忙开始着手编写程序6、在软件不同阶段进行修改需要付出的代价是很不相同的2、软件危机的表现什么是软件危机1、成本高:2、软件质量得不到保证:软件质量问题导致失败的软件项目非常多3、进度难以控制:●项目延期比比皆是●由于进度问题而取消的软件项目较常见●只有一小部分的项目能够按期完成4、维护十分困难:▼软件维护的多样性▼软件维护的复杂性▼软件维护的副作用3、克服软件危机1、管理的角度:软件开发过程的研究、文档的标准化以及人员的交流方式等2、软件开发方法的研究结构化软件开发方法, 面向对象的开发4、软件工程的定义概括的说,软件工程师指导计算机软件开发和维护的一门工程学科;采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程;1、软件工程就是建立和使用一套合理的工程原理,从而经济地获得可靠的、可以在实际机器上高效运行的软件;2、①把系统的、规范的、可度量的方法应用于软件开发、运行和维护的过程,也就是把工程应用于软件.②研究①中提到的途径总之:软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程;他借鉴传统工程的原理、方法,以提高质量,降低成本为目的;5、软件工程的本质特性1、关注与大型程序的构造2、中心课题是控制复杂度3、软件经常变化4、开发软件的效率非常重要5、和谐的合作是开发软件的关键6、软件必须有效地支持它的用户7、在软件工程领域中通常由具有一个文化背景的人替另外一种文化背景的人创造产品6、软件工程的基本原理1、用分阶段的生命周期计划严格管理2、坚持进行阶段评审3、实行严格的产品控制4、采用现代程序设计技术5、结果应能清楚地审查6、开发小组应该少而精7、承认不断改进软件工程实践的必要性软件工程学包含3个要素:方法、工具和过程7、软件生命周期1、概念:软件生命周期由软件定义、软件开发和运行维护也成软件维护3个时期组成;2、内容:1、问题定义回答“要解决的问题是什么“,写出关于问题性质、工程目标和工程规模的书面报告2、可行性分析回答”对于问题是否有行得通的解决办法“,即探索问题是否值得去解,是否有可行的办法3、需求分析确定”为了解决这个问题,目标系统必须做什么“,确定目标系统必须具备哪些功能,得到需求规格说明书;4、总体设计回答”概括地说,应该怎样实现目标系统“,确定程序由哪些模块组成以及模间的关系5、详细设计回答”应该怎样具体地实现这个系统呢”,确定实现模块功能所需要的算法与数据结构6、编码和单元测试写出正确的容易理解、容易维护的程序模块,然后仔细测试每个模块7、综合测试通过各种类型的测试及相应的调试是软件达到预定要求8、软件维护通过各种必要活动是系统持久地满足用户需求8、生命周期模型1、瀑布模型传统瀑布模型特点:1、阶段间具有顺序性与依赖性2、推迟实现的观点3、质量保证的观点瀑布模型优点:1、可强迫开发人员使用规范的方法例如:结构化技术;2、严格规定每个阶段必须提交的文档;3、要求每个阶段交出的所有产品都必须通过验证;缺点:1、“瀑布模型是由文档驱动的”成为主要缺点适用范围:适合于用户需求明确、完整、无重大变化的软件项目开发;2、快速原型模型适用范围:用户不能给出完整、准确的需求说明,或者开发者不能确定算法的有效性、操作系统的适应性或人机交互的形式等情况;3、增量模型特点:1、反复的应用瀑布模型的基本成分和原型模型的迭代特征,每一个线型过程产生一个“增量”的发布或提交,该增量均是一个可运行的产品;2、早期的版本实现用户的基本需求,并提供给用户评估的平台;优点:1、在较短时间内向用户提交可完成部分工作的产品;2、逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击;缺点:1、软件体系结构必须是开放的;2、开发人员既要把软件系统看作整体;又要看成可独立的构件,相互矛盾;3、多个构件并行开发,具有无法集成的风险;4、螺旋模型基本思想:使用原型或其他方法来降低风险;适用范围:适用于内部开发大规模软件项目;优点:1、对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件发的一个重要目标2、减少了过多测试或测试不足3、维护和开发之间并没有本质区别缺点:1、风险驱动,需要相当丰富的风险评估经验和专门知识,否则风险更大2、随着迭代次数的增加,工作量加大,软件开发成本增加5、喷泉模型特点:喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于采用对象技术的软件开发项目;该模型认为软件开发过程自下而上周期的各阶段是相互迭代和无间隙的特性;6、Rational统一过程RUP重复一系列周期,每个周期由一个交付给用户的产品结束;每个周期划分为初始、细化、构造和移交四个阶段,每个阶段围绕着五个核心工作流需求、分析、设计、实现、测试分别迭代;第二章可行性研究1、概念目的用最小的代价在尽可能短的时间内确定问题是否能够解决,不是解决问题,而是确定问题是否值得去解决;2、可行性研究任务了解客户的要求及现实环境,从技术、经济和社会因素等三方面研究并论证本软件项目的可行性,编写可行性研究报告,制定初步项目开发计划;即对软件开发以后的行动方针提出建议;3、研究内容(1)技术可行性使用现有的技术能实现这个系统吗(2)经济可行性这个系统的经济效益能超过它的开发成本吗(3)操作可行性系统的操作方式在这个用户组织内行得通吗(4)法律可行性新系统开发是否会侵犯法藤、集体或国家利益4、数据字典1、内容1、数据流2、数据流分量即数据元素3、数据存储4、处理2、作用对于数据流图中出现的所有被命名的图形元素在字典中作为一个词条加以定义,使得每一个图形元素都有一个确切的定义;第三章需求分析1、需求分析的任务(1)确定对系统的综合要求(2)分析系统的数据要求(3)导出系统的逻辑模型(4)修正系统的开发步骤2、获取需求的方法(1)访谈(2)面向数据流自顶向下(3)简易的应用规模说明技术(4)快速建立软件模型3、实体-关系图P63、层次方框图P68和IPO图P694、结构化分析模型●数据流图:描绘当数据在软件系统中移动时被变换的逻辑过程,指明系统具有的变换数据的功能,是建立功能模型的基础●实体-联系图:描绘数据对象及数据对象之间的关系,用于建立数据模型;●状态转换图:指明了作为外部事件结果的系统行为;描绘了系统的各种行为模式称为“状态”和在不同状态间转换的方式;是行为建模的基础第四章总体设计1、模块独立性与耦合性P97(1)模块化把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求模块化的优点:1.使软件结构清晰,容易设计也容易阅读与理解2.容易测试与调试,提高可靠性3.提高软件的可修改性4.有助于软件开发工程的组织管理(2)模块独立的重要性○有效的模块化即具有独立的模块的软件比较容易开发出来○独立的模块比较容易测试和维护(3)耦合衡量不同模块彼此间互相依赖连接的紧密程度,耦合要低,即每个模块和其他模块之间的关系要简单1、数据耦合:两个模块之间通过参数交换信息,而且交换的信息仅仅是数据2、控制耦合:传递的信息中有控制信息3、特征耦合:当把整个数据结构作为参数传递而被调用的模块只需要使用其中一部分数据元素4、公共环境耦合:两个或多个模块通过一个公共环境相互作用5、内容耦合:出现一下情况之一,则为内容耦合:1、一个模块访问另一个模块的内部数据2、一个模块不通过正常入口而转到另一个模块的内部3、两个模块有一部分代码重叠4、一个模块有多个入口数据耦合<控制耦合<特征耦合<公共环境耦合<内容耦合(4)内聚P99衡量一个模块内部各个元素彼此结合的紧密程度;内聚要高,每个模块完成一个相对独立的特定子功能信息隐藏P96应该这样设计和确定模块,使得一个模块内包含的信息过程和数据对于不需要这些信息的模块来说,是不能访问的2、启发规则1、改进软件结构提高模块独立性2、模块规模应该适中3、深度、宽度、扇入、扇出都应适中4、模块的作用域应该在控制域之内5、力争降低模块接口的复杂度6、设计单入口、单出口模块7、模块功能应该可以预测3、层次图和HIPO图P1024、面向数据流的设计方法P104(1)概念面向数据流设计就是把信息流映射成软件结构,信息流的类型决定了映射的方法;信息流包括变换流、事物流;(2)变换分析与事务分析P1055、小结i.进行软件结构设计遵循的最主要的原理是模块独立原理ii.抽象和求精是一对互补概念iii.软件工程师在实践中总结经验得出一些很有参考价值的启发式规则iv.自顶向下逐步求精是进行软件结构设计的常用途径v.用形式化的方法由数据流图映射出软件结构第五章实现1、选择程序设计语言为了使程序容易测试和维护以减少软件的总成本,所选用的高级语言程序应该有理想的模块化机制,以及可读性好的控制结构和数据结构:为了便于调试和提高软件可靠性,语言特点应该是编译程序能够尽可能多地发现程序中的错误;为了降低软件开发和维护的成本,选用的高级语言应该有良好的独立编译机制;第六章软件测试2、测试的概念(1)测试是为了发现程序中的错误而执行程序的过程(2)好的测试方案是极可能发现了至今为止尚未发现的错误的测试方案;(3)成功的测试是发现了至今为止尚未发现的错误的测试;3、测试的过程与步骤P153大型软件的测试过程基本由下述几个步骤组成(1)模块测试单元测试发现编码和详细设计的错误(2)子系统测试(3)系统测试集成测试(4)验收测试确认测试(5)平行运行4、单元测试P153着重从下述5个模块进行测试主要使用白盒测试技术(1)模块接口(2)局部数据结构(3)重要的执行通路(4)出错处理通路(5)边界条件5、集成测试P156集成测试就是测试和组装软件的系统化技术,主要目标是发现与接口有关的问题;有两种集成策咯(1)自顶向下集成(2)自底向上集成6、确认测试P160也称验收测试,它的目标是验证软件的有效性;通常使用黑盒测试法;7、白盒测试技术P162白盒方法测试软件时设计测试数据的典型技术(1)逻辑覆盖1、语句覆盖2、判定覆盖3、条件覆盖4、判定/条件覆盖5、条件组合覆盖6、点覆盖7、边覆盖8、路径覆盖(2)控制结构测试1、基本路径测试2、条件测试3、循环测试8、黑盒测试技术P171黑盒测试力图发现下述类型的错误:(1)功能不正确或遗漏了功能;(2)界面错误;(3)数据结构错误或外部访问数据库错误(4)性能错误(5)初始化和终止错误黑盒测试用到的技术(1)等价划分(2)边界值分析(3)错误推测第七章维护1、维护的定义P189所谓软件维护就是在软件已经交付使用周,为了改正错误或满足新的需要而修改软件的过程;根据交付使用之后可能进行的4项活动具体定义软件维护(1)改正性维护纠正在使用过程中暴露出来的错误;诊断和改正错误的过程,(2)适应性维护为了和变化了的环境适当地配合而进行的修改软件活动(3)完善性维护在使用软件的过程中增加新的功能或修改已有功能,还可能提出一般性的改进意见的过程(4)预防性维护为了改进未来的可维护性与可靠性,或为了给未来的改进奠定更好的基础而修改软件的过程;2、维护的过程P192(1)维护组织(2)维护报告(3)维护的事件流(4)保存维护记录(5)评价维护活动3、小结1、软件生命周期每个阶段的工作都和软件可维护性有密切关系;2、再工程过程可以在完成任意一个活动之后中止第八章面向对象技术1、面向对象方法学要点(P203面向对象方法学的出发点和基本原则,是尽可能模拟人类思维方法,是开发软件尽可能接近人类认识世界解决问题的方法与过程;2、面向对象方法学优点1、与人类习惯的思维方法一致2、稳定性好3、可重用性好4、较易开发大型软件产品5、可维护性好3、对象模型(P216对象模型表示静态的,结构化的系统的“数据”性质;它是对模拟客观世界实体的对象以及对象彼此之间的关系的映射,描述了系统的静态结构;4、动态模型(P223动态模型表示瞬时的、行为化的系统的”控制“性质,它规定了对象模型中的对象的合法序列;5、功能模型(P224功能模型表示变化的系统的”功能“性质,他指明了系统应该”做什么”,因此更直接反映了用户对目标系统的需求;6、 三种模型之间的关系(P 228功能模型指明了系统应该“做什么”;动态模型明确规定了什么时候即在何种状况下接受什么时间的触发做;对象模型则定义了做事情的实体;在面向对象方法学中,对象模型是最基本的,它为其他两种模型奠定了基础,人们依靠对象模型完成了3中模型的集成;下面扼要地叙述3种模型之间的关系; 三种模型描述了系统的不同方面: 对象模型 动态模型 功能模型 对象的静态结构及相互关系与时间和顺序有关的系统性质 与值的变化有关的系统性质 描述系统的数据结构控制结构 系统的功能 “干事的主体”“什么时候干” “干什么”7、 其他复杂问题大型系统的对象模型通常由下述5个层次组成:主题层、类与对象层、结构层、属性层、服务层主题层类与对象层结构层属性层服务层功能模型与对象模型的关系--对象模型描述了功能模型中的动作对象,数据存储以及数据流结构 --功能模型中的处理对应于对象模型中的操作 动态模型与对象模型的关系 --状态转换驱使行为发生,这些行为在DFD 中被映射成处理,它们同时与对象模型的操作相对应 --针对每个建立的动态模型描述了类实例的生命周期或运行周期动态模型与功能模型的关系--功能模型中的处理可能产生动态模型中的事件;面向对象开发方法包括OOA面向对象分析、OOD面向对象设计、OOP面向对象实现三个部分第九章软件项目管理1、估算软件规模P305(1)代码行技术每个人了估计程序的最小规模a,最大规模b和最可能规模m,分别算出这3中规模的平均值a̅、b̅和m̅之后,用下面公式计算程序规模:L=a̅+4m̅+b̅6(2)功能点技术2、项目进度Gantt图3、质量保证概括得说,软件质量就是“软件与明确地和隐含地定义的需要相一致的程度”;更具体地说,软件质量是软件与明确地叙述的功能和性能需求、文档中明确描述的开发标准以及任何专业开发的软件产品都应该具有的隐含特征相一致的程度;4、软件配置管理软件配置管理事是在软件的整个生命周期内管理变化的一组活动;具体地说,这组活动用来:(1)标识变化(2)控制变化(3)确保适当地实现了变化(4)向需要知道这类信息的人报告变化5、基线基线是一个软件配置管理概念,它有助于人们在不严重合理变化的前提下来控制变化,简而言之,基线就是通过了正式复审的软件配置项;;在软件配置项变成基线之前,可以迅速而非正式地修改它;其他复习简答题1、简述文档在软件工程中的作用;1 提高软件开发过程的能见度2 提高开发效率3 作为开发人员阶段工作成果和结束标志4 记录开发过程的有关信息便于使用与维护;5 提供软件运行、维护和培训有关资料;6 便于用户了解软件功能、性能;。
山东省考研计算机应用技术复习资料软件工程与开发
山东省考研计算机应用技术复习资料软件工程与开发软件工程与开发是计算机应用技术中的一个重要方向,涉及到软件的设计、开发、测试和维护等各个环节。
对于山东省考研计算机应用技术的考生来说,掌握软件工程与开发知识是非常重要的。
本文将为考生提供一些复习资料,帮助考生更好地备考软件工程与开发这一科目。
一、软件工程概述软件工程是通过系统化、可量化的方法去开发和维护软件的学科。
它涵盖了软件开发的各个阶段,包括需求分析、设计、编码、测试以及维护。
软件工程主要解决软件开发过程中的问题,提高软件的质量和开发效率。
二、软件开发生命周期软件开发生命周期是指软件从概念到最终退役的整个过程。
它包括需求分析、设计、编码、测试、部署和维护等阶段。
软件工程师需要熟悉每个阶段的任务和目标,并合理地规划和管理开发过程。
三、需求分析需求分析是软件开发过程中的第一步,也是最为重要的一步。
在需求分析阶段,软件工程师需要与用户充分沟通,了解用户的需求和期望,进而明确软件的功能和特性。
需求分析的结果将作为软件开发的基础,对后续的设计和编码工作起到指导作用。
四、软件设计软件设计是根据需求分析的结果,对软件进行整体结构和细节方面的设计。
软件设计需要考虑到软件的可靠性、可维护性和可扩展性等方面的要求。
常用的软件设计方法包括结构化设计、面向对象设计等。
五、软件编码软件编码是将软件设计的结果转化为计算机可执行的代码。
在编码过程中,软件工程师需要遵循代码规范和开发规范,以确保代码的可读性和可维护性。
同时,软件工程师还需要进行代码的测试和调试,保证代码的正确性和稳定性。
六、软件测试软件测试是为了验证软件的功能和性能是否符合预期。
软件工程师需要设计测试用例,并运用各种测试方法,如黑盒测试、白盒测试等,对软件进行全面而系统的测试。
软件测试的结果将为软件的发布和维护提供依据。
七、软件部署与维护软件部署是将软件投入到实际使用环境中的过程。
在软件部署中,软件工程师需要进行安装、配置和培训等工作,确保软件的正常运行。
软件工程复习要点
软件工程复习要点软件工程是一门研究如何高效地开发、维护和管理软件的学科。
对于学习软件工程的同学来说,熟练掌握复习要点是非常重要的。
本文将为大家总结并分享软件工程的复习要点,希望能够帮助大家更好地掌握和应用软件工程知识。
一、软件开发过程软件开发过程是指从需求分析到交付软件产品的整个过程。
常用的软件开发过程模型有瀑布模型、迭代模型、敏捷模型等。
要理解和掌握软件开发过程,需要熟悉各个阶段的任务和活动,包括需求分析、设计、编码、测试、交付等环节。
1. 需求分析:确定用户需求,明确软件系统的功能和性能要求。
2. 设计:根据需求分析的结果,进行软件系统的整体设计和详细设计。
3. 编码:将设计好的软件系统转化为具体的实现代码。
4. 测试:对编码完成的软件系统进行测试,发现和纠正其中的问题。
5. 交付:经过测试合格的软件系统交付给用户使用。
二、软件工程方法与工具为了提高软件开发的效率和质量,软件工程使用了一系列方法与工具。
掌握软件工程方法与工具的使用对于软件开发人员来说是非常重要的。
1. 需求管理工具:用于帮助开发团队和用户共同管理和追踪需求,常用的有JIRA、TFS等。
2. 设计工具:用于辅助进行软件系统的设计,常用的有UML工具、Axure等。
3. 编码工具:用于提高编码效率和质量,常用的有IDE集成开发环境、代码托管平台等。
4. 测试工具:用于自动化测试和代码覆盖率分析,常用的有Junit、Selenium等。
5. 配置管理工具:用于管理和控制软件系统的配置,常用的有Git、SVN等。
三、软件质量保证软件质量保证是指通过一系列的措施和活动来确保软件产品的质量。
在软件工程中,软件质量保证是一个非常重要的环节,它直接关系到软件系统能否满足用户的需求。
1. 静态质量保证:通过代码审查、代码规范等手段来预防和发现问题。
2. 动态质量保证:通过测试等手段来发现和解决软件系统中的问题。
3. 配置管理:通过配置管理工具来确保软件系统配置的正确性和一致性。
山东省考研软件工程复习资料软件开发与软件测试解析
山东省考研软件工程复习资料软件开发与软件测试解析在山东省考研软件工程复习资料中,软件开发与软件测试是非常重要的内容。
本文将对软件开发和软件测试进行解析,帮助考生更好地理解和掌握相关知识。
一、软件开发解析软件开发是指利用计算机编程语言和技术工具,按照一定的流程和规范,将软件需求转化为可运行的软件产品的过程。
下面将从软件需求分析、系统设计、编码实现和软件维护等方面进行解析。
1. 软件需求分析软件需求分析是软件开发的第一步,它的目的是明确用户需求,为后续开发工作提供指导。
在需求分析过程中,需求工程师需要与用户深入沟通,了解用户需求,并将其转化为明确的功能需求、性能需求和非功能需求等。
2. 系统设计系统设计是软件开发过程中的关键环节,它涉及到软件架构设计、模块设计和接口设计等。
在系统设计阶段,开发工程师需要考虑系统的可扩展性、可靠性和安全性等因素,确保设计出高质量的软件系统。
3. 编码实现编码实现是将系统设计转化为可运行的代码的过程。
在编码实现过程中,开发人员需要选择合适的编程语言和开发工具,并严格按照系统设计进行编码。
同时,为了提高代码的质量和可维护性,开发人员还需要遵循代码规范和开发流程。
4. 软件维护软件维护是软件开发生命周期的最后一环,它包括对软件系统进行改进、修复Bug、更新版本等工作。
软件维护是保证软件长期稳定运行的关键环节,需要开发人员具有高度的责任心和技术能力。
二、软件测试解析软件测试是指通过对软件系统进行各种测试活动,验证软件的功能和质量是否符合预期的过程。
软件测试的目的是发现软件中的缺陷和问题,并提供相应的修复方案。
下面将从测试分类、测试流程和工具选择等方面进行解析。
1. 测试分类软件测试可以分为黑盒测试和白盒测试两种。
黑盒测试是指只测试软件的功能,不考虑内部结构的测试方法。
而白盒测试是在了解软件内部结构的基础上进行测试,不仅验证功能,还关注软件的代码覆盖率和执行路径等。
2. 测试流程测试流程是软件测试的重要组成部分,它包括测试计划、测试设计、测试执行和测试报告等环节。
计算机软件工程原理复习
计算机软件工程原理复习计算机软件工程原理是计算机科学与技术领域的重要基础课程之一,通过学习软件工程原理,人们可以了解软件开发的基本原则、方法和技术,掌握软件项目管理和软件质量保证的技能,提高软件开发的效率和质量。
本文将对计算机软件工程原理进行复习,包括软件开发过程、需求分析、软件设计、软件测试等方面的知识点。
一、软件开发过程1.1 瀑布模型瀑布模型是最早提出的软件开发过程模型之一,它将软件开发过程划分为需求分析、软件设计、编码、测试和维护几个阶段。
在每个阶段中,都有明确的过程和活动,各个阶段之间严格按序进行,阶段之间有明确的交付物和沟通方式。
1.2 敏捷开发敏捷开发是一种迭代、循序渐进的软件开发方法,强调实际软件开发过程中的灵活性和快速响应能力。
敏捷开发注重用户需求的优先级和价值,通过快速迭代的方式进行软件开发,并及时根据用户反馈进行调整和更新。
二、需求分析2.1 需求获取需求获取是软件开发过程中的第一步,主要通过与用户进行沟通、访谈、观察等方式进行。
需求获取的目的是确定用户对软件的功能、性能、界面等方面的需求。
2.2 需求分析与规约需求分析是对用户需求进行详细的分析和理解,将用户的需求转化为开发人员可以理解和实现的形式。
需求规约则是对需求进行描述和规范,包括功能需求、性能需求、界面需求等方面的规定。
三、软件设计3.1 结构设计结构设计是将软件系统划分为不同的模块或组件,并确定它们之间的关系和接口。
结构设计要考虑软件的可扩展性、可维护性和可重用性,合理划分模块可以提高软件的开发效率和质量。
3.2 数据设计数据设计主要是对软件的数据进行建模和设计,包括数据库设计、数据结构设计等方面。
数据设计要考虑数据的完整性、一致性和安全性,合理的数据设计可以提高软件的性能和可靠性。
四、软件测试4.1 单元测试单元测试是对软件的最小可测试单元进行测试,通常是对模块或函数进行测试。
单元测试旨在验证软件的各个功能模块是否按照设计要求正确实现,发现并修复可能存在的错误。
软件工程复习总结_2
软件工程复习总结1:软件工程:软件工程是计算机科学与技术专业的一门专业核心课程。
软件是计算机系统中与硬件相互依存的另一部分。
它包括程序、数据及其相关文档的完整集合。
2:软件:软件是计算机系统中与硬件相互依存的另一部分。
它包括程序、数据及其相关文档的完整集合。
软件特点:(1)软件是一种逻辑实体,而不是具体的物理实体。
(2)软件的生产与硬件不同。
(3)在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题。
软件分类:按软件的功能进行划分:系统软件、应用软件、支撑软件。
按软件的规模进行划分:按开发软件所需的人力、时间以及完成的源代码行数。
(微型、小型、中型、大型、甚大型、极大型)按软件开发划分:软件项目开发、软件产品开发。
3:软件工程学:是把软件当作一种工业产品,要求“采用工程化的原理与方法对软件进行计划、开发和维护”。
软件工程学软件开发技术软件工程管理软件开发方法学软件工具软件工程环境软件工程管理学软件经济学4:软件生存周期:把软件从产生、发展到成熟、直至衰亡为止软件生存周期模型(瀑布模型Waterfall Model)计划时期:问题定义→可行性研究开发时期:需求分析→概要设计→详细设计→编码→测试运行时期:运行与维护5:现状调查和问题的定义:目的:弄清楚用户要求计算机解决什么问题。
任务:编写系统目标与规范说明书。
6:可行性研究与论证:其论证的焦点是:围绕着对系统开发的价值进行论证。
经济可行性:进行成本效益分析,评估项目的开发成本。
技术可行性:对系统的性能、可靠性、可维护性以及生产率等方面的信息进行评价。
可行性论证报告包括:系统概述、可行性分析、拟订开发计划、结论意见。
7:系统流程图:是用来描述系统物理模型的一种传统工具。
系统结构图:系统工程师用结构摸板开发的系统模型。
8:需求分析的任务:一、确定目标系统的具体要求:(1)确定系统的运行环境要求:硬件环境和软件环境。
(可和用户单位其他系统使用相同的计算机硬件设备、相同的操作系统和相同的关系数据库管理系统)(2)系统的性能要求(数据不能随意更改,保证数据的准确性)(3)系统功能:确定目标系统具备的所有功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件工程复习概要
1.3 软件工程包含哪些基本要素?简要说明这些要素及其作用?
方法:为软件开发提供了“如何做”的技术、通常包含某种语言或图形的模型表示方法,设计实践和质量保证标准。
工具:为软件工程的方法提供自动或半自动的软件支持环境辅助软件开发任务完成。
过程:是管理和控制产品质量的关键,将人员、技术、组织与管理有机的结合起来。
1.7 软件工程面临的问题与挑战?
遗留系统问题、高可信软件开发要求、软件开发方式的转变。
1.8 描述SWEBOK所包含的的师哥只是领域?
1软件需求→2软件设计→3软件构造→4软件测试→5软件维护→6软件配置管理→7软件工程管理→8软件工程过程→9软件工程工具与方法→10软件质量
2.1 简要说明软件过程的概念和基本要素?
传统:用户需求→过程→产品
Now:将软件开发任务看作是一个可控的,可度量的和可改进的过程。
2.3 软件开发过程模型
瀑布模型:规定需求、设计、实现、测试与维护这些基本活动,并固定次序。
快速原型:迅速构件一个软件模型,进一步细化待开发的需求,逐步修改原型。
增量模型:软件作为一系列的增量构件来设计、实现、集成和测试。
螺旋模型:将瀑布和快速原型结合起来。
形式化方法:将需求描述提炼成用数字符号表达的形式化描述。
然后形式化转换。
基于组件:依赖于可复用的组件和相应的集成环境,提高开发效率和产品质量。
3.1 简要说明软件项目管理的过程。
项目启动→项目规划→项目实施→项目收尾(人员组织与管理、项目沟通管理、项目规划、软件风险管理、软件配置管理)
4.3 软件工程包含哪些基本活动,每一项活动的主要任务是什么?
1需求获取:采集识别和提取用户需求,对问题和需求形成文档描述,是大家有过一个共同的认识和理解。
2需求分析:分析和综合所持采集的信息,简历系统的详细逻辑模型。
3需求规格说明:编写软件规格说明书,准确,完整的表达已确认的需求。
4需求验证:评审软件规格说明,保证其正确,一致,完备,准确和清晰性。
5需求管理:定义需求基线,在整个项目中跟踪需求状态及其变化。
4.4 试比较本章的集种主要的需求获取技术,说明每一种技术的额优缺点和使用场合? 1面谈:多种情况下使用的简单而直接的方法。
2需求专题研讨会:很快产生系统初步定义,畅所欲言,降低风险,解决行政问题。
3观察用户工作流程:开发人员很难通过面谈和回忆获取供求信息。
4原型化方法:常用方法,系统可视化获取用户需求,解决早期系统需求不定的问题。
5基于用例的方法:以任务和用户为中心,确定参与者与事物妆花为对象模型。
6.1 试解释下列词语。
1 对象;客观事物的一个实体,系统的基本单位。
2类:具有相同属性和服务的一组对象的集合。
3属性:用来描述对象静态特征的一个数据项。
4操作:
5关联:对象属性之间的静态联系,通过属性来表现对象之间的依赖关系。
6泛化:
7聚合:对象之间的组成关系,一个对象是另一个对象的组成或部分。