第3章 软件工程基础
- 格式:pdf
- 大小:408.38 KB
- 文档页数:9
软件工程基础知识概述第一章:软件工程的定义和发展历程软件工程是一门涉及软件开发以及管理的综合学科。
它的出现是为了解决软件开发中遇到的问题和挑战。
在职业领域中,软件工程师使用科学的方法来开发、维护和管理软件。
第二章:软件开发生命周期软件开发生命周期是指软件的构建和维护过程中的各个阶段。
常见的软件开发生命周期模型包括瀑布模型、迭代模型和敏捷开发等。
瀑布模型是最早被提出并广泛应用的一种软件开发流程模型,包括需求分析、系统设计、编码、测试和维护等阶段。
第三章:软件需求分析软件需求分析是软件开发过程中的第一步,它的目的是通过调查和研究用户需求,明确软件产品需要具备的功能和性能要求。
需求分析包括需求获取、需求分析和需求规格说明等步骤,通过使用工具和技术,如面谈、问卷和原型设计等,来获取和分析用户需求。
第四章:软件设计软件设计是软件开发过程中的重要一环,它的目标是将需求转化为可实现的软件系统。
软件设计可以从结构设计、数据设计和接口设计等多个层面进行,通过使用工具和技术,如UML、设计模式和构件式设计等,来实现模块化、可复用和高内聚低耦合的设计。
第五章:软件编码软件编码是将设计好的软件系统转化为计算机可执行的程序代码的过程。
软件编码需要使用一种编程语言,如Java、C++和Python等,通过准确理解设计要求,编写高质量、易于理解和可维护的代码。
第六章:软件测试软件测试是保证软件质量的重要手段。
它的目标是发现和修复软件中的缺陷和错误。
常见的软件测试方法包括单元测试、集成测试和系统测试等。
为了提高测试效率和测试覆盖率,软件工程师可以使用自动化测试工具和技术,如JUnit和Selenium等。
第七章:软件项目管理软件项目管理是指在软件开发过程中对项目进行规划、组织、指导和控制的活动。
它涉及到项目范围、进度、成本和质量等方面的管理。
为了提高软件项目管理的效果,可以采用项目管理方法和工具,如WBS、PERT和甘特图等。
软件工程基础软件工程基础引言软件工程是一门致力于开发高质量软件的学科,它涉及软件开发的全过程,从需求分析到设计、开发、、部署和维护。
软件工程基础是软件工程的基础知识和原则的集合,是每个软件工程师都应该掌握的重要内容。
本文将详细讨论软件工程基础的相关主题。
软件过程模型软件过程模型是软件开发的框架,定义了软件项目的组织方式和活动顺序。
常见的软件过程模型包括瀑布模型、迭代模型、螺旋模型等。
瀑布模型是一种线性的开发过程,适用于需求稳定的项目;迭代模型将软件开发分为多个迭代周期,每个周期都包含需求、设计、开发和等活动;螺旋模型则强调风险管理和迭代开发。
需求工程需求工程是软件开发的第一个关键阶段,它的目标是准确理解和表达用户需求。
需求工程包括需求获取、需求分析、需求规格和需求验证等过程。
需求获取是收集用户需求的过程,可以通过面谈、问卷调查和文档分析等方法实施;需求分析则是将需求进行分类、整理和详细化;需求规格是将需求写成形式化的规格文档;需求验证是确保需求规格与用户需求一致的过程。
软件设计软件设计是将需求规格转化为可执行代码的过程。
好的软件设计应该具备可维护性、可扩展性、可重用性、高效性和安全性。
常用的软件设计方法包括面向对象设计、结构化设计和函数式设计等。
面向对象设计将软件系统分解为对象,并定义它们的属性和行为;结构化设计则通过流程图和结构图描述软件的模块和数据流;函数式设计将软件系统视为一系列功能和数据的函数。
软件开发软件开发是将设计文档转化为可执行软件的过程。
软件开发过程通常包括编码、单元、集成和系统等阶段。
编码阶段是根据设计文档编写代码的过程;单元是针对各个模块进行,验证其功能是否正常;集成是将各个模块组合起来进行;系统是对整个系统进行,包括功能、性能和安全等。
软件质量保证软件质量保证是确保软件满足用户需求并具备高质量的过程。
软件质量保证包括静态质量保证和动态质量保证两个方面。
静态质量保证主要通过代码审查、用例设计和文档管理等手段提高代码质量;动态质量保证则包括持续集成、自动化和缺陷管理等过程,用于确保软件系统的稳定性和可靠性。
第3章软件工程基础【考点精讲】1.软件定义与软件特点软件指的是运算机系统中与硬件相互依存的另一部分,包括程序、数据和相关文档的完整集合。
程序是软件开发人员依照用户需求开发的、用程序设计语言描述的、适合运算机执行的指令序列。
数据是使程序能正常操纵信息的数据结构。
文档是与程序的开发、爱护和使用有关的图文资料。
可见,软件由两部分组成:(1)机器可执行的程序和数据;(2)机器不可执行的,与软件开发、运行、爱护、使用等有关的文档。
依照顾用目标的不同,软件可分应用软件、系统软件和支撑软件(或工具软件)。
名称描述应用软件为解决特定领域的应用而开发的软件系统软件运算机治理自身资源,提高运算机使用效率并为运算机用户提供各种服务的软件支撑软件(或工具软件)支撑软件是介于两者之间,协助用户开发软件的工具性软件2.软件工程为了摆脱软件危机,提出了软件工程的概念。
软件工程学是研究软件开发和爱护的普遍原理与技术的一门工程学科。
所谓软件工程是指,采纳工程的概念、原理、技术和方法指导软件的开发与爱护。
软件工程学的要紧研究对象包括软件开发与爱护的技术、方法、工具和治理等方面。
软件工程包括3个要素:方法、工具和过程。
名称描述方法方法是完成软件工程项目的技术手段工具工具支持软件的开发、治理、文档生成过程过程支持软件开发的各个环节的操纵、治理考点2 软件生命周期【考点精讲】1.软件生命周期概念软件产品从提出、实现、使用爱护到停止使用退役的过程称为软件生命周期。
一样包括可行性分析研究与需求分析、设计、实现、测试、交付使用以及爱护等活动,如图3-1所示。
软件生命周期分为3个时期共8个时期,(1)软件定义期:包括问题定义、可行性研究和需求分析3个时期;(2)软件开发期:包括概要设计、详细设计、实现和测试4个时期;(3)运行爱护期:即运行爱护时期。
软件生命周期各个时期的活动能够有重复,执行时也能够有迭代,如图3-1所示。
2.软件生命周期各时期的要紧任务图3-1 软件生命周期在图3-1中的软件生命周期各时期的要紧任务是:考点3 软件设计差不多概念【考点精讲】从技术观点上看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。
全国计算机等级考试二级公共基础知识要点汇总第一章数据结构与算法1.1 算法算法:是指解题方案的准确而完整的描述。
算法不等于程序,也不等计算机方法,程序的编制不可能优于算法的设计。
算法的基本特征:是一组严谨地定义运算顺序的规则,每一个规则都是有效的,是明确的,此顺序将在有限的次数下终止。
特征包括:(1)可行性;(2)确定性,算法中每一步骤都必须有明确定义,不充许有模棱两可的解释,不允许有多义性;(3)有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后终止,包括合理的执行时间的含义;(4)拥有足够的情报。
算法的基本要素:一是对数据对象的运算和操作;二是算法的控制结构。
指令系统:一个计算机系统能执行的所有指令的集合。
基本运算包括:算术运算、逻辑运算、关系运算、数据传输。
算法的控制结构:顺序结构、选择结构、循环结构。
算法基本设计方法:列举法、归纳法、递推、递归、减斗递推技术、回溯法。
算法复杂度:算法时间复杂度和算法空间复杂度。
算法时间复杂度是指执行算法所需要的计算工作量。
算法空间复杂度是指执行这个算法所需要的内存空间。
1.2 数据结构的基本概念数据结构研究的三个方面:(1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;(2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;(3)对各种数据结构进行的运算。
数据结构是指相互有关联的数据元素的集合。
数据的逻辑结构包含:(1)表示数据元素的信息;(2)表示各数据元素之间的前后件关系。
数据的存储结构有顺序、链接、索引等。
线性结构条件:(1)有且只有一个根结点;(2)每一个结点最多有一个前件,也最多有一个后件。
非线性结构:不满足线性结构条件的数据结构。
1.3 线性表及其顺序存储结构线性表是由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是线性的。
在复杂线性表中,由若干项数据元素组成的数据元素称为记录,而由多个记录构成的线性表又称为文件。
软件工程知识点第一章软件工程概述一、软件的定义和特性(P2—P3)定义:软件=程序+数据+文档程序:按照事先设计的功能和性能要求执行的指令或语句序列数据:程序能正常操纵信息的数据结构文档:描述程序操作和使用的文档特性:(1)软件是一种逻辑实体,具有抽象性,不是一般的物理实体;(2)软件的成产与硬件存在某些相同点,但有根本上的不同,软件开发是人的智力的高度发挥,而不是传统意义上的制造,它更依赖于开发人员的素质,智力,人员和组合,合作和管理;(3)软件维护与硬件维修有着本质的差别,软件维护没有硬件维护那样有可替换的标准零件;(4)软件在运行和使用期间没有硬件那样的机械磨损,老化问题,但存在退化问题;(5)基于构件的开发方法由于其自身的特点越来越受到人们的重视,这些技术可以减少开发时间、提高质量,并提高复用水平。
* 掌握P4图1-2(b)软件失效率曲线二、计算机软件的发展经历了几个阶段?各有何特征?(P1—P2)共经历了四个阶段特征:第一阶段——程序规模小且主要采用个体工作方式,开发的系统大多采用批处理技术第二阶段——引入人机交互的概念,实时系统出现,产生了第一代数据库管理系统,程序编制采用了合作的工作方式,出现了早期的软件危机第三阶段——分布式系统出现,嵌入式系统得到广泛应用,低成本硬件第四阶段——强大的桌面系统和计算机网络迅速发展时期,面向对象技术得到广泛应用,人工智能技术和专家系统开始应用于软件。
三、什么是软件危机?其产生的原因是什么?定义:软件危机是指由于落后的软件生产方式无法满足迅速增长的计算机软件应用需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。
(P4)原因:(P5)(1)用户对软件需求的描述不准确、不全面,甚至有错误,以及在开发过程中,不断提出或者修改需求;(2)用户和开发人员对软件需求的理解存在差异,导致所开发的软件产品和用户需求不一致;(3)大型软件项目需要组织一定的人力共同完成,各类人员的信息交流不及时、不准确,有时还可能产生误解,软件开发人员对大型软件缺少开发经验,管理人员缺少相应的管理经验;(4)软件开发人员不能有、独立自主的处理大型软件的全部关系和各个分支,因此容易产生疏漏和错误;(5)开发技术落后,缺乏有效的方法学和工具方面的支持,过分依赖程序设计人员在软件开发过程中的技巧和创造性,加剧软件产品的个性化(6)软件产品的特殊性和人类智力的局限性,导致人们无法处理“复杂问题”,因为软件是逻辑产品,软件开发进展情况较难衡量、软件开发质量难以评价、管理和控制软件开发过程相当困难。
软件工程基础软件工程是指应用工程原理、方法和工具来开发和维护高质量的软件系统。
作为计算机科学的重要分支,软件工程为我们理解和应用软件开发的基础提供了框架和指导。
本文将介绍软件工程的基本概念、原则和方法,以及其在软件开发过程中的重要性。
一、软件工程概述软件工程是一门系统性的学科,旨在通过应用科学和工程原理,将计算机科学理论和方法应用于软件的开发和维护中。
与传统的工程领域不同,软件工程面临着特殊的挑战和复杂性,包括软件产品的不可见性、复杂性和易变性等。
软件工程的核心目标是提高软件的质量和效率,使其满足用户的需求并具备可维护性。
为了实现这一目标,软件工程引入了许多原则和方法,如需求分析、系统设计、编码和测试等。
这些方法和原则为软件开发过程提供了指导和规范,有助于提高开发团队的协作效率和开发质量。
二、软件工程原则软件工程根据实践总结出了许多重要的原则,在软件开发中起到了指导作用。
下面列举了其中几个重要的原则:1. 模块化:软件应该通过模块化的方式进行设计和开发。
模块化可以提高代码的复用性和可维护性,同时也降低了开发的复杂性。
2. 可重用性:软件应该促进可重用性。
通过开发可重用的组件和模块,可以提高软件开发的效率,并减少重复劳动。
3. 适应性:软件应该具备适应性,即能够满足用户的需求,并能够随着需求的变化进行调整和扩展。
4. 可测试性:软件应该具备可测试性,即能够进行有效的测试和验证。
通过测试,可以发现和修复潜在的问题,提高软件的质量。
5. 可维护性:软件应该具备可维护性,即能够方便地进行修改和维护。
良好的软件结构和文档可以降低维护成本,并延长软件的使用寿命。
三、软件开发方法软件工程提供了多种开发方法和过程,以帮助开发团队有效地管理和组织开发任务。
下面介绍几种常见的软件开发方法:1. 瀑布模型:瀑布模型是一种线性的开发过程模型,依次进行需求分析、系统设计、编码和测试。
每个阶段完成后,才能进入下一个阶段。
瀑布模型适用于需求变化较少的项目,但在需求变化频繁的项目中效果较差。
软件工程基础软件工程是一门研究如何用系统化、规范化、可量化的方法来开发、运行和维护软件的学科。
它涵盖了从软件的需求分析、设计、编码、测试到维护的整个生命周期,旨在提高软件的质量、可靠性和可维护性,同时降低开发成本和风险。
在软件的需求分析阶段,开发团队需要与用户和利益相关者进行深入的沟通,以了解他们对软件的期望和需求。
这可不是一件简单的事情,因为用户往往并不清楚自己真正想要什么,或者无法准确地表达出来。
所以,需求分析师需要运用各种技巧,如访谈、问卷调查、观察等,来挖掘用户的潜在需求,并将其转化为清晰、明确的需求规格说明。
这个规格说明就像是软件的蓝图,为后续的开发工作提供了指导。
软件设计是根据需求规格说明,确定软件的体系结构、模块划分、接口定义等。
好的软件设计应该具有高内聚、低耦合的特点,也就是说,每个模块内部的功能应该紧密相关,而模块之间的联系应该尽量简单。
这样可以提高软件的可维护性和可扩展性。
在设计过程中,还需要考虑软件的性能、安全性、可用性等非功能需求,以确保软件能够满足各种实际的应用场景。
编码是将设计转化为实际的代码实现。
选择合适的编程语言和开发工具对于提高开发效率和代码质量至关重要。
同时,开发人员需要遵循良好的编程规范,编写清晰、易读、可维护的代码。
注释也是代码中不可或缺的一部分,它可以帮助其他人理解代码的功能和逻辑。
测试是软件工程中不可或缺的环节。
它包括单元测试、集成测试、系统测试、验收测试等多个阶段。
单元测试是对软件中的最小单元——函数或模块进行测试,确保其功能的正确性;集成测试则是检查各个模块之间的接口是否正确;系统测试是在整个系统的层面上进行测试,验证软件是否满足需求规格说明;验收测试则是由用户或客户来进行,以确定软件是否符合他们的预期。
通过严格的测试,可以发现软件中的缺陷和错误,并及时进行修复,提高软件的质量。
软件维护是软件生命周期中持续时间最长的阶段。
在软件交付使用后,可能会因为用户需求的变化、环境的改变或者发现的缺陷等原因,需要对软件进行修改、完善和升级。
二级公共基础知识第三章软件工程基本概念
重点:需求分析、概要设计、详细设计、软件测试和软件调试的作用、方法等
一、 软件工程基本概念
1. 软件是计算机系统中与硬件相互依存的重要部分,包括程序、数据及相关的 文档 。
其中,程序 是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令(语句)序列。
2. 下列叙述中,正确的是(D)。
A.软件就是程序清单 B.软件就是存放在计算机中的文件 C.软件应包括程序清单及运行结果 D.软件包括程序和文档
3. 软件按功能可以分为:应用软件、系统软件、支撑软件(或工具软件)
4. 软件工程的出现是由于(软件危机的出现)
5. 开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做(软件危机)
软件工程概念的出现源自软件危机。
所谓软件危机是泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
总之,可以将软件危机归结为成本、质量、生产率等问题。
6. 开发大型软件时,产生困难的根本原因是(大型系统的复杂性)。
7. 软件危机出现于20世纪60年代末,为了解决软件危机,人们提出了软件工程学 的原理来设计软件这就是软件工程诞生的基础。
8. 下列不属于软件工程的3个要素的是(D)A.工具 B.过程 C.方法 D.环境。
软件工程基础软件工程基础介绍软件工程是指研究和应用一系列原理、方法和工具,以确保软件的质量和效率,使软件开发过程更加可控和可靠的学科。
软件工程基础是软件工程学科中的核心知识,包括软件开发生命周期、需求分析、设计模式、软件测试等基本概念和技术。
软件开发生命周期软件开发生命周期(Software Development Life Cycle, SDLC)是指软件从概念到废弃的整个过程,包括需求分析、设计、编码、测试、发布和维护等阶段。
- 需求分析:在这个阶段中,软件工程师与用户共同明确和理解软件的功能需求和性能要求。
- 设计:在需求分析的基础上,进行软件的整体架构设计和模块设计,包括数据结构设计、界面设计等。
- 编码:根据设计的规格,将设计转化为实际的代码。
- 测试:对软件进行各种测试,包括单元测试、集成测试、系统测试等,以确保软件在质量和功能上符合要求。
- 发布和维护:将软件交付给用户,并负责软件的后续维护和升级。
需求工程需求工程是软件工程中非常重要的一个环节,主要涉及分析、定义、规范和管理软件系统的需求。
需求工程的主要阶段包括:1. 需求获取:与用户进行沟通和交流,了解用户需求和期望。
2. 需求分析:对收集到的需求进行分析,确保需求的完整性、一致性和可行性。
3. 需求规范:将需求转化为详细的文档,包括用例、需求规约等。
4. 需求验证:通过测试和用户的反馈,确认需求文档的正确性和准确性。
设计模式设计模式是软件工程中的一种重要的思想和方法,它提供了一套通用的解决方案,用于解决常见的软件设计问题。
常见的设计模式包括单例模式、工厂模式、观察者模式等。
每个设计模式都有其特定的应用场景和使用方法,通过遵循设计模式,可以提高软件的可维护性、可扩展性和重用性。
软件测试软件测试是在软件开发过程中进行的一项重要活动,目的是确保软件在设计、实现和交付过程中合乎标准和用户的需求。
常用的软件测试方法包括单元测试、集成测试、系统测试、性能测试等。
第3章软件工程基础经过对部分考生的调查以及对近年真题的总结分析,笔试部分经常考查的是软件生命周期、软件设计的基本原理,软件测试的目的、软件调试的基本概念,读者应对此部分进行重点学习。
详细重点学习知识点:1.软件的概念、软件生命周期的概念及各阶段所包含的活动2.概要设计与详细设计的概念、模块独立性及其度量的标准、详细设计常用的工具3.软件测试的目的、软件测试的4个步骤、4.软件调试的任务3.1软件工程基本概念考点1 软件定义与软件特点考试链接:考点1在笔试考试中,是一个经常考查的内容,考核的几率为70%,主要是以选择题的形式出现,分值为2分,此考点为识记内容,读者应该识记软件的定义,特点及其分类。
软件指的是计算机系统中与硬件相互依存的另一部分,包括程序、数据和相关文档的完整集合。
程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令序列。
数据是使程序能正常操纵信息的数据结构。
文档是与程序的开发、维护和使用有关的图文资料。
可见,软件由两部分组成:(1)机器可执行的程序和数据;(2)机器不可执行的,与软件开发、运行、维护、使用等有关的文档。
软件的特点:(1)软件是逻辑实体,而不是物理实体,具有抽象性;(2)没有明显的制作过程,可进行大量的复制;(3)使用期间不存在磨损、老化问题;(4)软件的开发、运行对计算机系统具有依赖性;(5)软件复杂性高,成本昂贵;(6)软件开发涉及诸多社会因素。
根据应用目标的不同,软件可分应用软件、系统软件和支撑软件(或工具软件)。
小提示:应用软件是为解决特定领域的应用而开发的软件;系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件;支撑软件是介于两者之间,协助用户开发软件的工具性软件。
考点2 软件工程过程与软件生命周期考试链接:考点2在笔试考试中,在笔试考试中出现的几率为30%,主要是以选择题的形式出现,分值为2分,此考点为识记内容,读者应该识记软件生命周期的定义,主要活动阶段及其任务。
软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。
一般包括可行性分析研究与需求分析、设计、实现、测试、交付使用以及维护等活动,如图3-1所示。
图3-1软件生命周期还可以将软件生命周期分为如上图所示的软件定义、软件开发和软件运行维护3个阶段。
生命周期的主要活动阶段是:可行性研究与计划制定、需求分析、软件设计、软件实施、软件测试及运行与维护。
3.2结构化设计方法考点3 软件设计的基本概念考试链接:考点3在笔试考试中,是一个经常考查的内容,考核中几率为70%,主要是以选择题的形式出现,分值为2分,此考点为重点掌握内容,读者应该识记模块独立性中的耦合性和内聚性。
误区警示:在程序结构中,各模块的内聚性越强,则耦合性越弱。
软件设计应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。
1.软件设计的基础从技术观点上看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。
(1)结构设计定义软件系统各主要部件之间的关系;(2)数据设计将分析时创建的模型转化为数据结构的定义;(3)接口设计是描述软件内部、软件和协作系统之间以及软件与人之间如何通信;(4)过程设计则是把系统结构部件转换为软件的过程性描述。
从工程管理角度来看,软件设计分两步完成:概要设计和详细设计。
(1)概要设计将软件需求转化为软件体系结构、确定系统级接口、全局数据结构或数据库模式;(2)详细设计确立每个模块的实现算法和局部数据结构,用适当方法表示算法和数据结构的细节。
2.软件设计的基本原理(1)抽象:软件设计中考虑模块化解决方案时,可以定出多个抽象级别。
抽象的层次从概要设计到详细设计逐步降低。
(2)模块化:模块是指把一个待开发的软件分解成若干小的简单的部分。
模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。
(3)信息隐蔽:信息隐蔽是指在一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说是不能访问的。
(4)模块独立性:模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。
模块的独立程度是评价设计好坏的重要度量标准。
衡量软件的模块独立性使用耦合性和内聚性两个定性的度量标准。
内聚性是信息隐蔽和局部化概念的自然扩展。
一个模块的内聚性越强则该模块的模块独立性越强。
一个模块与其他模块的耦合性越强则该模块的模块独立性越弱。
内聚性是度量一个模块功能强度的一个相对指标。
内聚是从功能角度来衡量模块的联系,它描述的是模块内的功能联系。
内聚有如下种类,它们之间的内聚度由弱到强排列:偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚。
耦合性是模块之间互相连接的紧密程度的度量。
耦合性取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口。
耦合可以分为下列几种,它们之间的耦合度由高到低排列:内容耦合、公共耦合、外部耦合、控制耦合、标记耦合、数据耦合、非直接耦合。
在程序结构中,各模块的内聚性越强,则耦合性越弱。
一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。
小提示:上面仅是对耦合机制进行的一个分类。
可见一个模块与其他模块的耦合性越强则该模块独立性越弱。
原则上讲,模块化设计总是希望模块之间的耦合表现为非直接耦合方式。
但是,由于问题所固有的复杂性和结构化设计的原则,非直接耦合是不存在的。
考点4 详细设计考试链接:考点4在笔试考试中,在笔试考试中出现的几率为30%,主要是以选择题的形式出现,分值为2分,此考点为识记内容,读者应该识记过程设计包括哪些常用工具。
详细设计的任务是为软件结构图中的每个模块确定实现算法和局部数据结构,用某种选定的表达表示工具算法和数据结构的细节。
详细过程设计的常用工具有:(1)图形工具:程序流程图,N-S,PAD,HIPO。
(2)表格工具:判定表。
(3)语言工具:PDL(伪码)。
程序流程图的5种控制结构:顺序型、选择型、先判断重复型、后判断重复型和多分支选择型。
方框图中仅含5种基本的控制结构,即顺序型、选择型、多分支选择型、WHILE重复型和UNTIL重复型。
PAD图表示5种基本控制结构,即顺序型、选择型、多分支选择型、WHILE重复型和UNTIL 重复型。
过程设计语言(PDL)也称为结构化的语言和伪码,它是一种混合语言,采用英语的词汇和结构化程序设计语言,类似编程语言。
PDL可以由编程语言转换得到,也可以是专门为过程描述而设计的。
疑难解答:程序流程图,N-S图,PAD图的控制结构的异同点是什么?相同点是三种图都有顺序结构,选择结构和多分支选择,并且N-S图和PAD图还有相同的WHILE重复型、UNTIL重复型;不同点是程序流程图没有WHILE重复型、UNTIL重复型而有后判断重复型和先判断重复型。
3.3软件测试考点5 软件测试的目的考试链接:考点5在笔试考试中,是一个经常考查的内容,在笔试考试中出现的几率为70%,主要是以选择题的形式出现,分值为2分,此考点为理解内容,读者应该理解测试是为了发现错误。
软件测试是在软件投入运行前对软件需求、设计、编码的最后审核。
其工作量、成本占总工作量、总成本的40%以上,而且具有较高的组织管理和技术难度。
(1)软件测试是为了发现错误而执行程序的过程;(2)一个好的测试用例是能够发现至今尚未发现的错误的用例;(3)一个成功的测试是发现了至今尚未发现的错误的测试。
考点6 软件测试的实施考试链接:考点6在笔试考试中出现的几率为30%,主要是以选择题的形式出现,分值为2分,此考点为识记内容,读者应该识记软件测试过程的4个步骤,单元测试的两种测试方式。
软件测试过程分4个步骤,即单元测试、集成测试、验收测试和系统测试。
单元测试是对软件设计的最小单位--模块(程序单元)进行正确性检验测试。
单元测试的技术可以采用静态分析和动态测试。
集成测试是测试和组装软件的过程,主要目的是发现与接口有关的错误,主要依据是概要设计说明书。
集成测试所设计的内容包括:软件单元的接口测试、全局数据结构测试、边界条件和非法输入的测试等。
集成测试时将模块组装成程序,通常采用两种方式:非增量方式组装和增量方式组装。
确认测试的任务是验证软件的功能和性能,以及其他特性是否满足了需求规格说明中确定的各种需求,包括软件配置是否完全、正确。
确认测试的实施首先运用黑盒测试方法,对软件进行有效性测试,即验证被测软件是否满足需求规格说明确认的标准。
系统测试是通过测试确认软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、支撑软件、数据和人员等其他系统元素组合在一起,在实际运行(使用)环境下对计算机系统进行一系列的集成测试和确认测试。
系统测试的具体实施一般包括:功能测试、性能测试、操作测试、配置测试、外部接口测试、安全性测试等。
3.4软件的调试考点7 软件调试的基本概念考试链接:考点7在笔试考试中,是一个经常考查的内容,在笔试考试中出现的几率为70%,主要是以选择题的形式出现,分值为2分,此考点为重点识记内容,读者应该识记软件调试的概念。
误区警示:程序经调试改错后还应进行再测试,因为经调试后有可能产生新的错误,而且测试是贯穿生命周期的整个过程。
在对程序进行了成功的测试之后将进入程序调试(通常称Debug,即排错)。
程序的调试任务是诊断和改正程序中的错误。
调试主要在开发阶段进行。
程序调试活动由两部分组成,一是根据错误的迹象确定程序中错误的确切性质、原因和位置;二是对程序进行修改,排除这个错误。
程序调试的基本步骤:(1)错误定位。
从错误的外部表现形式入手,研究有关部分的程序,确定程序中出错位置,找出错误的内在原因;(2)修改设计和代码,以排除错误;(3)进行回归测试,防止引进新的错误。
调试原则可以从以下两个方面考虑:(1)确定错误的性质和位置时的注意事项分析思考与错误征兆有关的信息;避开死胡同;只把调试工具当作辅助手段来使用;避免用试探法,最多只能把它当作最后手段。
(2)修改错误原则在出现错误的地方,很可能有别的错误;修改错误的一个常见失误是只修改了这个错误的征兆或这个错误的表现,而没有修改错误本身;注意修正一个错误的同时有可能会引入新的错误;修改错误的过程将迫使人们暂时回到程序设计阶段;修改源代码程序,不要改变目标代码。
疑难解答:软件测试与软件调试有何不同?软件测试是尽可能多地发现软件中的错误,而软件调试的任务是诊断和改正程序中的错误。
软件测试贯穿整个软件生命周期,调试主要在开发阶段。
3.5 例题详解一、选择题【例1】对软件的特点,下面描述正确的是_______。