软件工程
- 格式:doc
- 大小:136.50 KB
- 文档页数:4
软件工程专业方向简介软件工程是一个专注于设计、开发和维护高质量软件系统的学科。
随着信息技术的快速发展,软件工程专业逐渐成为了许多大学和学院的热门专业之一。
本文将为您介绍软件工程专业的方向及其相关内容。
一、软件工程专业的概述软件工程是一个涉及众多领域的综合学科,包括软件开发、软件测试、软件质量管理、软件架构等等。
软件工程专业的目标是培养具备全面软件开发能力和软件项目管理知识的专业人才。
学生在专业学习中主要掌握软件工程的基础理论、软件开发技术和软件项目管理方法,以便在实际工作中能够独立设计、开发、编码和测试软件系统。
二、软件工程专业的方向1. 软件开发方向软件开发方向是软件工程专业最核心的方向之一。
在这个方向上,学生将学习软件开发的理论和实践知识,包括编程语言、数据结构、算法设计、软件架构等。
学生将通过课程实践和项目实践,掌握软件需求分析、系统设计、编码实现和软件测试等技能。
2. 软件测试方向软件测试是保证软件质量的重要环节,软件测试方向就是培养软件测试专家的方向之一。
在这个方向上,学生将学习软件测试的基本理论和实际技术,包括测试策略与计划、测试用例设计、测试执行和缺陷跟踪等。
学生将通过课程实践和实际项目,熟练掌握软件测试的方法和工具,能够发现并解决软件开发中的问题。
3. 软件项目管理方向软件项目管理方向是培养软件项目管理专家的方向之一。
在这个方向上,学生将学习项目管理的基本理论和实践方法,包括项目计划、需求管理、团队协作和风险管理等。
学生将通过项目实践,掌握项目管理的技能,能够高效管理和组织软件开发团队,确保项目顺利完成。
4. 软件工程研究方向软件工程研究方向是培养软件工程科学家和学术研究人员的方向之一。
在这个方向上,学生将进行深入的学术研究,探索软件工程领域的新理论和新方法。
学生将在导师的指导下,参与科研项目,发表学术论文,为软件工程的发展做出贡献。
三、软件工程专业的就业前景随着信息技术的迅速发展,软件工程专业的就业前景广阔。
软件工程综合软件工程综合概述软件工程是一门综合性学科,它涵盖了软件开发的各个方面,包括需求分析、系统设计、编码、测试、部署和维护等。
软件工程流程软件工程通常采用一种迭代的开发流程,如下所示:1. 需求分析:确定系统的功能需求和性能要求。
2. 系统设计:设计软件系统的体系结构和模块划分。
3. 编码:根据设计,编写源代码。
4. 测试:对软件进行各种测试,包括单元测试、集成测试和系统测试。
5. 部署:将软件部署到目标环境中。
6. 维护:随着软件的使用,对其进行修复和升级。
软件工程方法软件工程可以使用不同的方法来实现开发流程。
常见的软件工程方法包括瀑布模型、敏捷开发和迭代增量模型等。
1. 瀑布模型:按照线性顺序依次完成各个开发阶段。
2. 敏捷开发:采用迭代和增量的方式开发软件,注重灵活性和快速响应变化。
3. 迭代增量模型:将开发流程分为多个迭代,每个迭代都是一个小的开发周期。
软件工程的重要性软件工程在现代社会中扮演着重要的角色。
1. 提高开发效率:软件工程的方法和工具可以提高软件开发的效率,减少出错率。
2. 提高软件质量:软件工程的各个阶段都注重质量控制,从需求分析到软件测试,都有相应的方法和技术来确保软件质量。
3. 降低开发成本:通过合理的软件工程方法和工具的使用,可以降低开发成本,提高投资回报率。
4. 改善软件维护:软件工程注重软件的可维护性,使得软件的维护更加方便和高效。
软件工程的挑战软件工程面临着一些挑战。
1. 复杂性:软件开发涉及到大量的细节和复杂的交互关系,需要合理的分析和设计才能实现预期的功能。
2. 变化性:需求经常发生变化,软件工程需要灵活地适应变化,使得软件能够满足不断变化的需求。
3. 团队合作:软件开发通常是由多人组成的团队进行,团队合作的管理和沟通是软件工程的重要方面。
4. 技术更新:随着技术的不断进步,软件工程需要跟随技术的更新,学习新的开发方法和工具。
软件工程是一门综合性学科,它涵盖了软件开发的各个方面。
软件工程简介及其应用领域软件工程是一门研究如何以系统化、规范化和可量化的方法开发、运行和维护软件的学科。
它旨在通过科学化的方法解决软件开发过程中的问题,确保软件质量、效率和可靠性。
本文将对软件工程的基本概念和应用领域进行介绍。
一、软件工程的基本概念1. 软件工程的定义软件工程是一门综合性学科,它借鉴了工程学的方法和原则,并应用于软件开发过程中。
其目的是通过系统化的方法,将软件开发过程转化为可管理和可控制的活动,从而实现高质量的软件产品。
2. 软件开发生命周期软件开发生命周期是指软件从创建到废弃的整个过程。
它包括需求分析、设计、编码、测试、部署和维护等阶段。
每个阶段都有特定的任务和产出物,通过这些阶段的有序进行,可以有效提高软件开发的效率和质量。
3. 软件工程的原则软件工程遵循一些基本原则,以确保开发出高质量的软件。
其中包括适应性原则、可管理性原则、可测量性原则、可靠性原则和可重复性原则等。
这些原则帮助开发团队规范开发过程,降低开发风险,提高软件的稳定性和可维护性。
二、软件工程的应用领域1. 软件开发软件工程的最主要应用领域是软件开发。
在这个领域中,软件工程师通过需求分析、系统设计、编码和测试等步骤,将用户需求转化为可运行的软件。
软件开发领域的不断发展使得软件工程师的需求量逐年增加。
2. 软件测试软件测试是软件工程中至关重要的一环,旨在保证软件的质量和稳定性。
软件测试工程师通过编写测试用例和执行测试,发现和修复软件中存在的问题。
他们努力确保软件在不同环境下正常运行,并具有预期的功能。
3. 软件项目管理软件项目管理涉及到对软件开发项目的计划、组织和控制。
软件工程师在此领域中承担着项目经理的角色,负责制定项目计划、分配任务、协调团队成员以及监控项目进度。
他们的目标是确保项目按时交付,并满足客户需求。
4. 软件需求工程软件需求工程是软件开发过程中重要的一环,旨在准确收集和分析用户的需求。
软件工程师在此领域中通过与客户的沟通和需求调研,确定软件的功能和性能要求,为后续的开发工作提供指导。
软件工程分方向介绍软件工程分为多个方向,每个方向都有其独特的特点和应用领域。
本文将介绍软件工程的五个主要方向,包括软件开发、软件测试、软件架构、项目管理和人机交互。
以下将分别对这些方向进行详细介绍。
1. 软件开发软件开发是最为常见也是最基础的软件工程方向。
它涉及将软件概念转化为实际可用的软件产品。
软件开发工程师负责编写、测试和维护软件代码。
他们使用不同的编程语言和开发工具,如Java、C++等,来实现客户的需求。
软件开发的主要目标是开发高质量、可靠且易于维护的软件应用程序。
2. 软件测试软件测试是保证软件质量的关键步骤。
软件测试工程师负责验证和验证开发的软件是否满足预期的要求和标准。
他们使用各种测试方法和工具来检测和纠正软件中的错误和缺陷。
软件测试的目标是确保软件在不同平台和环境下的稳定性、安全性和可靠性。
3. 软件架构软件架构是设计和组织软件系统的过程。
软件架构师负责确定软件系统的整体结构和组件之间的关系。
他们需要考虑软件的可扩展性、灵活性和可维护性。
软件架构师需要与软件开发团队合作,确保软件设计满足客户需求,并在系统发展中进行适当的调整和改进。
4. 项目管理项目管理是确保软件项目按时、按预算和按要求完成的过程。
软件项目经理负责规划、协调和监督项目的各个阶段。
他们需要与客户、开发团队和其他利益相关者进行有效的沟通和协作。
项目管理涉及风险管理、资源分配和进度控制等方面,是成功完成软件项目的关键因素。
5. 人机交互人机交互是关注用户和计算机系统之间交互的方向。
人机交互设计师负责设计和改进用户界面,以提高用户体验和满足用户需求。
他们需要研究人类认知和行为原理,将这些原理应用于设计直观、易用和吸引人的软件界面。
人机交互在各个行业中都得到广泛应用,包括网页设计、手机应用和虚拟现实技术等。
总结:软件工程涵盖了多个方向,包括软件开发、软件测试、软件架构、项目管理和人机交互。
每个方向都有其独特的特点和应用领域。
软件工程的几种定义软件工程是指应用系统化、规范化和可持续发展的原则、方法和工具来开发、维护和管理软件的学科。
随着软件的快速发展和广泛应用,软件工程的定义也逐渐形成并演变。
在本文中,将介绍软件工程的几种定义。
一、软件工程的经典定义软件工程一词最早由美国学者弗里德曼(Friedman)于1968年提出,并在1969年的美国计算机学会(ACM)会议上首次正式使用。
软件工程的经典定义是指通过系统化、规范化的方法来开发、维护和管理软件,以提高软件质量和效率。
弗里德曼将软件开发过程类比为建筑工程,强调了规范和纪律的重要性。
二、软件工程的工程化定义软件工程的工程化定义强调将软件开发过程视为一种工程活动,强调工程方法和技术在软件开发中的应用。
它强调软件工程师必须具备系统工程、管理学、计算机科学等多学科的知识和技能,以应对软件开发过程中的挑战。
三、软件工程的过程控制定义软件工程的过程控制定义强调通过控制软件开发过程中的各个环节,确保软件开发过程的可控性和可预测性。
它倡导使用统一的开发流程和规范,并通过度量和评估来监控和改进软件开发过程。
四、软件工程的价值导向定义软件工程的价值导向定义将软件开发过程的目标定位于为用户提供有价值的软件产品。
它关注软件的功能、质量、性能等方面,以满足用户需求为出发点,通过合理的规划和组织来创造具备商业竞争力的软件产品。
五、软件工程的技术方法论定义软件工程的技术方法论定义将软件开发过程视为一种科学,强调使用科学的方法和技术来解决软件开发中的问题。
它将软件开发过程分解为多个阶段,并通过应用软件工程方法和技术来实现每个阶段的目标。
六、软件工程的持续改进定义软件工程的持续改进定义强调软件开发过程的不断改进和优化。
它倡导使用反馈机制和度量指标,通过持续评估和改进来提高软件开发过程的效率和质量。
综上所述,软件工程的定义多种多样,但它们都强调了软件开发过程的系统性、规范性和可持续发展的特点。
无论采用哪种定义,软件工程都是一个充满挑战和创新的领域,需要软件工程师具备广泛的知识和技能,以开发出更安全、更可靠、更高效的软件产品。
软件工程概念软件工程是指系统性、规范化地开发、运行和维护计算机软件的一门学科。
它涵盖了软件开发生命周期中的各个阶段,包括需求分析、设计、编码、测试、部署和维护等。
软件工程旨在提高软件开发过程的效率和质量,确保软件能够满足用户的需求,并且稳定可靠地运行。
一、软件工程的定义和特点软件工程是指通过系统化的、规范化的方法来开发、运行和维护软件的过程。
与传统的“编码”方式相比,软件工程更加注重整个开发过程中的规划、设计、测试和管理等环节。
软件工程的主要特点包括:1. 系统性:软件工程强调整个开发过程的系统性,即从需求分析到维护等各个阶段都应该有相应的方法和流程。
2. 规范化:软件工程倡导使用规范化、统一的方法和标准,旨在提高软件开发过程的可控性和可预测性。
3. 风险管理:软件工程注重对开发过程中的风险进行评估和管理,以降低项目失败的风险。
4. 团队合作:软件工程鼓励团队合作和沟通,倡导不同角色的专业人员参与软件开发过程。
二、软件工程的发展历程软件工程的发展可以分为以下几个阶段:1. 软件危机阶段:20世纪60年代和70年代初,由于软件开发过程的混乱和管理不善,导致了大量软件项目的失败和延期。
2. 软件工程的兴起:20世纪70年代末,随着软件工程的概念的提出和软件工程教育的开展,软件工程开始得到更多的关注和应用。
3. 软件工程的成熟:20世纪80年代和90年代,软件工程的理论和方法得到了进一步的完善和扩展。
各类软件开发工具和框架不断涌现,为软件开发提供了更多的支持和便利。
4. 敏捷开发与DevOps:21世纪初,随着互联网的快速发展和软件行业的不断进化,敏捷开发和DevOps等新的开发方法逐渐兴起,并成为软件工程领域的热点。
三、软件工程的重要性软件工程的重要性体现在以下几个方面:1. 提高软件质量:软件工程通过规范化的开发流程和测试方法,可以提高软件的质量和可靠性,减少出现问题和漏洞的可能性。
2. 提高开发效率:软件工程倡导使用工具和框架来提高开发效率,避免重复劳动,减少开发过程中的人为错误。
软件工程的六个阶段软件工程的六个阶段软件工程是一套系统化、规范化、科学化的方法,用于开发和维护软件系统。
从需求分析到软件实现,软件工程的过程被分为六个阶段。
这六个阶段分别是:计划、需求分析、设计、编码、测试和维护。
下面将详细介绍每个阶段的主要目标和活动。
一、计划阶段计划阶段是软件工程的第一个阶段,其主要目标是确定软件系统的总体规划和目标。
在这个阶段中,软件项目的范围、时间、成本等因素被认真考虑和评估。
也需要识别项目相关的团队成员和资源分配。
计划阶段的主要活动包括需求收集、风险评估、项目计划和进度安排等。
二、需求分析阶段需求分析阶段是软件工程的第二个阶段,其主要目标是确认用户对软件系统的具体需求。
在这个阶段中,软件工程师与用户紧密合作,通过访谈、问卷调查等方式获取用户需求。
然后,将这些需求规范化,形成详细且可执行的需求文档。
需求分析阶段还包括需求的优先级划分和需求验证。
三、设计阶段设计阶段是软件工程的第三个阶段,其主要目标是制定软件系统的高级结构和组件之间的接口设计。
在这个阶段中,软件工程师根据需求文档,确定软件系统的整体结构和模块划分。
然后,设计系统各个模块的具体实现方法,并定义它们之间的接口。
设计阶段的主要活动包括系统架构设计、模块设计和接口设计等。
四、编码阶段编码阶段是软件工程的第四个阶段,其主要目标是实现软件系统的具体功能。
在这个阶段中,软件工程师将已经设计好的系统模块编写成可执行的代码。
在编码过程中,需要遵循一定的编码规范和代码风格,以保证代码的质量和可维护性。
编码阶段也包括代码的调试和修复bug等工作。
五、测试阶段测试阶段是软件工程的第五个阶段,其主要目标是验证软件系统的正确性和稳定性。
在这个阶段中,软件工程师根据需求文档和设计文档,设计测试用例并执行测试。
通过测试可以发现和修复软件系统中的错误和缺陷。
测试阶段包括单元测试、集成测试、系统测试和验收测试等不同层次和阶段的测试。
六、维护阶段维护阶段是软件工程的一个阶段,其主要目标是维护和改进已经发布的软件系统。
软件工程概述软件工程是指应用系统化、规范化、可重复的方法构建和维护软件的一门学科。
它涵盖了软件开发的全过程,包括需求分析、设计、编码、测试、部署和维护等环节。
软件工程旨在提高软件开发过程的效率和质量,以满足不断增长的软件需求。
本文将从软件工程的定义、发展历程以及核心概念等方面进行综述。
1. 软件工程的定义软件工程是一门工程学科,它应用了工程原理、管理原则和科学方法来开发和维护软件。
软件工程是一种系统化、规范化的方法论,旨在提高软件开发过程的效率和质量,以满足用户需求。
2. 软件工程的发展历程软件工程的起源可以追溯到20世纪50年代,当时软件开发项目规模越来越大,传统的编程方法已经无法满足需求。
于是人们开始探索一种更有效的软件开发方法。
在20世纪60年代末,软件工程开始被正式提出并逐渐成为软件开发的主流方法。
在20世纪70年代,软件工程的概念逐渐得到了认可,并且出现了一系列软件工程方法论,如结构化设计、模块化、自顶向下等。
这些方法大大提高了软件开发的效率和质量。
进入21世纪,随着互联网和移动互联网的兴起,软件工程的发展进入了一个新的阶段。
敏捷开发、DevOps等新方法被广泛采用,以适应快速迭代和持续交付的需求。
3. 软件工程的核心概念(1)需求分析:需求分析是软件工程的第一步,它关注的是用户的需求和期望。
通过与用户充分沟通、访谈和调研,软件工程师能够准确把握用户的需求,为后续的设计和开发工作打下基础。
(2)设计:软件设计是根据需求分析的结果,将软件系统划分为一系列的模块,并定义模块之间的接口和交互关系。
设计阶段需要考虑软件的可维护性、可扩展性和安全性等问题。
(3)编码:编码是将设计好的软件模块转化为机器语言的过程。
在编码过程中,开发人员需要遵循编码规范和最佳实践,确保代码的可读性、可维护性和高效性。
(4)测试:测试是保证软件质量的关键环节。
通过设计和执行测试用例,测试工程师能够发现和修复软件中的错误和缺陷,以确保软件在交付给用户之前达到预期的质量标准。
第一章练习题一、单项选择题1、软件是(C).A.处理对象和处理规则的描述B.程序C.程序、数据及文档D.计算机系统2、下列选项中(D)是软件开发中存在的不正确的观念、方法.A.重编程、轻需求B.重开发、轻维护C.重技术、轻管理D.以上三条都是3、下列哪个阶段不属于软件生存周期的三大阶段(C).A.计划阶段B.开发阶段C.编码阶段D.维护阶段4、计算机系统就是(C).A.主机,显示器,硬盘,软驱,打印机等B.CPU,存储器,控制器,I/O接口及设备C.计算机硬件系统和软件系统D.计算机及其应用系统5、开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做(C).A.软件工程B.软件周期C.软件危机D.软件产生6、以下属于软件危机现象的是(D)A.软件开发进度难以预测B.软件产品难以维护C.软件缺少适当的文档资料D.以上三条都是7、软件工程的出现主要是由于(C).A.程序设计方法学的影响B.其它工程科学的影响C.软件危机的出现D.计算机的发展8、以下哪一项不属于项目成功要考虑的因素(D).A.工作范围与成本B.进度计划C.客户满意度D.全都属于9、以下对软件工程的解释正确的是(D).A.软件工程是研究软件开发和软件管理的一门工程科学B.软件工程是将系统化的、规范化的、可度量化的方法应用于软件开发、运行和维护的过程C.软件工程是把工程化的思想应用于软件开发D.以上三条都正确10、一个项目是否开发,从经济上来说是否可行,归根结底是取决于(A).A.成本估算B.项目计划C.工程管理D.工程网络图11、软件生存周期包括可行性分析、需求分析、系统设计、编码、(C)、维护等活动.A.应用B.检测C.测试D.以上答案都不正确12、一个软件从开始计划到废弃为止,称为软件的(B).A.开发周期B.生存周期C.运行周期D.维护周期13、软件计划时期的主要任务是:分析用户要求、新系统的主要目标以及(B).A.开发软件B.开发的可行性C.设计软件D.运行软件二、判断题1、软件就是计算机系统中的程序、数据及其文档(T).2、程序是指计算机为完成特定任务而执行的指令的有序集合(T).3、数据是指被程序处理的信息(T).4、软件工程与项目管理是为研究克服软件危机应运而生的(T).5、软件危机是20世纪60年代以前产生的(F).6、软件缺少适当的文档资料属于软件危机现象之一(T).7、软件工程是把工程化的思想应用于软件开发(T). 8、软件工程是研究软件开发和软件管理的一门管理科学(T).9、一个好的开发人员应具备的素质和能力不包括具有良好的书面和口头表达能力(F).10、软件工程学是理论研究,没有实际用途(F). 11、项目管理过程就是制定计划然后按计划工作(T).12、软件生存周期包括需求分析、系统设计、程序设计、测试、维护,五个阶段(T).13、软件生存周期是指根据某一软件从被提出并着手开始实现,直到软件完成其使命被废弃为止的全过程(T).第二章练习题一、单项选择题1、以下哪个不属于问题定义的步骤(B).A.调查和调研B.形成高层逻辑模型C.沟通和交流D.问题定义报告2、以下哪个不属于问题定义的内容(D).A.问题的背景B.开发的条件、环境要求C.实现目标的方案D.体系结构的设计3、可行性分析是在系统开发的早期所做的一项重要的论证工作,它是该系统是否开发的决策依据,因此必须给出(B)的回答.A.确定B.行或不行C.正确D.无二义4、以下对可行性分析的任务描述不正确的是(B).A.可行性分析要对以后的行动方针提出建议B.可行性分析只需要明确做不做,无须对以后的行动方针提出建议C.可行性分析阶段如果认为问题不可行,分析员要提出停止项目开发的建议D.可行性分析阶段如果认为问题值得解,分析员需要提出解决方案,并且为工程制定一个初步的计划5、以下哪一个不属于可行性分析的要素(C).A.经济B.技术C.设备D.社会6、以下对成功的可行性分析的必备要素描述不正确的是(C).A.准确界定研究任务B.明确研究的用途C.确定分析期限和报告的提交时间D.以上三条都不正确7、以下不属于可行性分析步骤的是(C).A.准确界定研究任务复查项目目标和规模B.研究目前系统C.问题定义报告D.重新定义问题8、可行性分析基本步骤中的第三步是(D).A.研究目前系统B.分析技术可行性C.法律可行性分析D.形成高层逻辑模型9、以下哪个符号在系统流程图中表示处理(A).A. B. C. D.10、以下说法正确的是(b).A.系统流程图是属于问题定义阶段的工作B.系统流程图是属于可行性分析阶段的工作C.系统流程图是属于需求分析阶段的工作D.系统流程图是属于系统分析阶段的工作11、以下对系统流程图的理解不正确的是(B).A.系统流程图是概括地描绘物理系统的传统工具B.系统流程图的基本思想是用图形符号以白盒子形式描绘组成系统的每个部件C.系统流程图表达的是数据在系统各部件之间流动的情况D.系统流程图不描述对数据进行加工处理的控制过程12、以下哪个符号不属于数据流图的四种基本符号(D).A. B. C. D.13、按软件生命周期方法设计软件的过程中,画数据流图属于下面哪个阶段的工作(A).A.可行性分析B.程序设计C.详细设计D.软件维护14、数据流图和数据字典共同构成系统的(C).A.物理模型B.结构模型C.逻辑模型D.设计说明书15、在数据流图中,○(椭圆)代表(C).A.源点B.终点C.加工D.模块16、以下不属于数据字典实现途径的是(D).A.全人工过程B.全自动化过程C.混合过程D.全都属于17、以下不属于数据字典中定义的元素的是(D).A.数据流B.数据元素C.数据存储和处理D.全都属于18、数据字典是用来定义(D)中的各个成份的具体含义.A.流程图B.功能结构图C.系统结构图D.数据流图19、以下哪个不属于成本/效益分析的内容(A).A.公司以前做项目的效益情况B.运行费用C.开发成本D.处理新系统将带来的经济效益20、以下哪个不属于常用的成本估算方法(B).A.基于代码行B.基于工人人数C.任务分解D.自动估计成本技术二、判断题1、可行性分析阶段的问题定义可做可不做,没有实际意义(F).2、问题定义阶段不需要提出实现目标的方案,那是可行性分析阶段的工作内容(F).3、可行性分析的任务是对以后的行动方针提出建议(T).4、如果问题没有可行的解,分析员应该建议停止这项开发工程,以避免时间、资源、人力和金钱的浪费(T).5、如果问题值得解,分析员提出开发这项工程的建议即可,无需提出解决方案,制定计划(F).6、可行性分析包括经济、技术和社会三个基本要素(T).7、可行性分析中的经济要素是指这个系统的经济效益能否超过它的开发成本(T).8、可行性研究包括复查项目目标和规模、研究目前系统、形成高层逻辑模型和重新定义问题(T).9、高层逻辑模型指的就是系统数据流图(F).10、重新定义问题是指分析员与用户以系统流程图为讨论基础,再次复查问题定义、工程规模和目标.如对问题有误解,或遗漏要求,在此阶段改正(T).11、系统流程图基本思想是用图形符号以白盒子形式描绘组成系统的每个部件(F).12、系统流程图也称为系统图是最常用的一种系统逻辑模型表示法(T).13、系统流程图基本符号是以概括的方式抽象地描绘一个实际系统所用符号(T).14、数据流图只描绘信息在系统中流动和处理的情况(T).15、设计数据流图只需考虑系统必须完成的基本逻辑功能,不需要考虑如何实现这些功能(F).16、数据流图中每个加工只有一个输入数据流和一个输出数据流,反映此加工数据的来源与结果(F).17、数据流程图是指从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程(T).18、数据流图上所有图形符号只限于三种基本图形元素(F).19、数据字典是关于数据的信息的集合(F).20、数据字典是对数据流图中包含的所有元素的定义的集合(T).21、数据字典作用是在软件分析和设计的过程中给人提供关于数据的描述信息(T).22、系统的逻辑模型就是数据流图(F).23、成本/效益分析是指从经济角度评价开发一个新项目是否可行、是否划算,从而帮助使用部门的负责人正确地作出是否投资于这项开发的决定(T).第三章练习题一、单项选择题1、需求分析阶段产生的最重要的文档之一是(B).A.项目开发计划B.需求规格说明书C.设计说明书D.可行性分析报告2、需求分析阶段,分析人员要确定对问题的综合需求,其中最主要的是(B)需求.A.功能B.性能C.数据D.环境3、需求分析是(A).A.软件开发工作的基础B.软件生存周期的开始C.由系统分析员单独完成的D.由用户自己单独完成的4、需求分析阶段要给出(D)的回答.A.做不做B.怎么做C.什么时候做D.做什么,不做什么5、需求分析中开发人员要从用户那里了解(A).A.软件做什么B.用户使用界面C.输入的信息D.软件的规模6、需求分析阶段的任务是确定(D).A.软件开发方法B.软件开发工具C.软件开发费用D.软件系统功能7、需求分析的任务不包括(B).A.问题分析B.系统设计C.需求描述D.需求评审8、需求分析阶段常用面向数据流的结构化分析法的英文简称是(A).A.SA(StructuredAnalysis)B.JSD(Jackson)C.DSSD(DataStructuredSystemDevelopmentMethod)D.OOA(Object-OrientedMethod)9、面向数据流的结构化分析方法主要思想是(A).A.具体与自顶向下的逐层分解B.具体与自下向上的逐层分解C.抽象与自下向上的分层分解D.抽象与自顶向下的逐层分解10、结构化需求分析用于数据描述的工具是(C)和数据字典.A.程序图B.流程图C.数据流图D.PAD图二、判断题1、需求分析虽处于软件开发的初期阶段,但它对于整个软件开发过程以及产品质量至关重要(T).2、需求分析是软件计划时期的第一个阶段(F).3、需求分析是在问题定义的基础上,进一步了解确定用户需求.准确地回答“系统必须做什么?”的问题(T).4、由于经济和业务环境的动态性导致需求易变而直接影响需求分析的效果(T).5、需求分析阶段将用户非形式的需求陈述转化成的形式功能规约叫需求规格说明书(T).6、需求分析阶段需确定对系统的综合要求:系统功能要求、性能要求、运行要求、将来可能提出的要求(T).7、需求分析不能遗漏任何必要的需求(T).8、结构化需求分析主要思想抽象与自顶向下的逐层分解(T).9、结构化分析方法于20世纪70年代末到80年代中期提出(F).10、需求规格说明书中必须说明运行环境(T).第四章练习题一、单项选择题1、高层设计通常是在需求明确、准备开始(A)之前进行.A.编码B.维护C.需求分析D.测试2、以下对于高层设计的描述错误的是(D).A.高层设计也称概要设计B.高层设计要把软件“做什么”的逻辑模型变换为“怎么做”的物理模型,即着手实现软件的需求C.高层设计阶段的重点是体系结构设计D.高层设计因为是对系统初略的分析过程.因此,设计的结果无需记录在文档中3、概要设计的主要设计方法包括(D).A.模块化方法B.功能分解方法C.面向数据流和面向数据结构D.以上都包括4、最常采用的概要设计方法是(D).A.模块化方法B.功能分解方法C.面向数据流和面向数据结构D.面向对象方法5、以下不属于详细设计阶段的是(A).A.体系结构设计B.数据库设计C.模块设计D.数据结构与算法设计6、详细设计的结果决定了最终程序的(C).A.代码的规模B.运行速度C.质量D.可维护性7、详细设计的基本任务是确定每个模块的(D)设计.A.功能B.调用关系C.输入输出数据D.数据结构和算法8、内聚表示一个模块(B)的程度.A.细化B.模块内部成分之间关联C.模块之间依赖D.仅关注在一件事情上9、耦合表示一个模块(C)的程度.A.细化B.模块内部成分之间关联C.模块之间依赖D.仅关注在一件事情上10、模块化设计的指导思想是分解、信息隐藏与(D).A.抽象B.数据独立性C.程序独立性D.模块独立性11、模块化的目的是(D).A.增加内聚性B.降低复杂性C.提高易读性D.减少耦合性12、在模块设计中,以下哪一个应该公开,而不需要隐藏(A).A.接口设计B.算法C.数据结构D.实现体13、下列关于模块的描述,不正确的是(A).A.具有独立的模块软件不容易开发出来B.独立的模块比较容易测试和维护C.模块的独立程度可以通过内聚和耦合标定D.独立的模块可以完成一个相对独立的特定子功能14、模块(C),则说明模块的独立性越强.A.耦合越强B.扇入数越高C.耦合越弱D.扇入数越低15、模块内聚度越高,说明模块内各成分彼此结合的程度越(B).A.松散B.紧密C.无法判断D.相等二、判断题1、系统设计的好坏在根本上决定了软件系统的优劣(T).2、“差的系统设计必定产生差的软件系统”,同样“好的系统设计必定产生好的软件系统”(F).3、为了追求技术的先进性,开发人员可以稍微偏离需求开展系统设计工作(F).4、高层设计阶段的重点是体系结构设计(T).5、详细设计是在概要设计之后进行的.它利用概要设计的结果,对系统中的每个模块给出足够的过程性描述(T).6、软件模块之间的耦合性越弱越好(T).7、模块设计应当争取“高内聚、低耦合”,而避免“低内聚、高耦合”(T).8、为降低系统的开发难度,将系统分解得非常细、得到的功能模块越多越好(F).第五章练习题一、单项选择题1、以下属于第三代程序设计语言的选项是(B).A.机器语言B.现代语言C.汇编语言D.SQL语言2、以下描述错误的是(D).A.程序设计语言的特性和程序设计风格,会深刻地影响软件的质量和可维护性B.为了保证程序编码的质量,程序员必须深刻理解、熟练掌握并正确地运用程序设计语言的特性C.高效的程序代码能缩短开发周期,并减少维护代价D.只要程序设计语言选择的好就可以设计出高效的程序代码,对于程序的结构没有要求3、以下属于选择程序设计语言的标准的选项是(D).A.选择用户熟悉的程序设计语言B.从程序员知识水平和心理因素等方面考虑C.从软件的可移植性考虑D.以上三项都属于4、编程时应注意的编程风格是(D).A.源程序文档化B.数据说明C.满足运行工程学的输入输出风格D.以上三项都属于5、结构化程序设计主要强调的是(D).A.程序的规模B.程序的效率C.程序设计语言的先进性D.程序易读性6、下列属于编码时标准书写格式的是(A).A.书写时适当使用空格分隔B.一行写入多条语句C.嵌套结构不使用分层缩进的写法D.程序中不加注释7、以下符合程序设计过程中语句结构要求的是(C).A.一行内可写多条语句B.程序的编写首先应当考虑效率:效率第一,清晰第二C.尽可能用通俗易懂的伪码来描述程序的流程,然后再翻译成必须使用的语言D.尽量使用“否定”条件的条件语句二、判断题1、4GL语言属于第三代程序设计语言(F).2、程序设计这一阶段的工作是把详细设计中,具体的过程性描述内容,翻译成某一种程序设计语言编写的源程序(T).3、高效的程序代码能缩短开发周期,并减少维护代价(T).4、程序设计风格指人们编制程序时所表现出来的特点、习惯、逻辑思路(T).5、编码时应从以下几方面注意编程风格:源程序文档化、数据说明、语句结构、满足运行工程学的输入输出风格(T).6、夹在程序中的注释可有可无(F).7、程序设计语言中应绝对禁止使用GOTO语句(F).8、在设计阶段已经确定了数据结构的组织及其复杂性.因此在编写程序时,无需再注意数据说明的风格(F).第六章练习题一、单项选择题1、软件开发时,一个错误发现得越晚,为改正它所付出的代价就(A).A.越大B.越小C.越不可捉摸D.越接近平均水平2、确定测试计划是在(A)阶段制定的.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.单元测试B.集成测试C.确认测试D.组合测试9、软件测试的目标是().A.证明软件是正确的B.发现错误、减低错误带来的风险C.排除软件中所有的错误D.与软件调试相同10、以下对黑盒测试方法描述错误的是().A.又称功能测试或数据驱动测试B.测试人员完全不考虑程序内部的逻辑结构和内部特性,只检查程序的功能是否符合它的功能说明C.黑盒测试不关心输入与输出的对应关系D.黑盒测试不关心被测程序的内部关系11、以下不属于黑盒测试方法和技术的是().A.等价类划分B.边界值分析C.接口测试D.基本路径覆盖12、黑盒测试在设计测试用例时,主要需要研究().A.需求规格说明与概要设计说明B.详细设计说明C.项目开发计划D.概要设计说明与详细设计说明13、黑盒测试的优点是().A.适用于各阶段测试B.有一定的充分性度量手段C.可获较多工具支持D.代码测试全面14、以下哪项不属于黑盒测试方法要测试的错误().A.是否有不正确或遗漏了的功能B输入能否正确地接受,能否输出正确的结果 C性能上是否能够满足要求D内部数据结构的是否有效15、以下对白盒测试方法描述正确的是().A.白盒测试又称结构测试或逻辑驱动测试B.白盒测试允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例C.白盒测试允许对程序所有逻辑路径进行测试D.以上三项全都正确16、软件人员使用白盒测试方法对程序模块进行检查时,以下哪个说法不正确().A.对所有的逻辑判定,取“真”与取“假”的两种情况都至少测试一次B.对程序模块的所有独立的执行路径只能测试一次C.在循环的边界和运行界限内执行循环体D.测试内部数据结构的有效性等二、判断题1、软件测试是为了证明程序是正确的().2、软件测试能发现程序中所有的错误().3、要通过测试发现程序中的所有错误,就要穷举所有可能的输入数据().4、程序测试是为了证明程序正确地执行了预期的功能().5、一个好的测试用例是指很可能找到迄今为止尚未发现的错误的测试用例().6、软件测试是用人工或自动的手段来执行和评价系统或系统部件的过程,以检验它是否满足规定的需求,或识别期望的结果和实际的结果之间有无差别().7、所有的测试都应可追溯到客户需求().8、测试应从“大规模”开始,逐步转向“小规模”().9、测试中发现的80%的错误可能来自于20%的程序代码().10、需妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便().11、黑盒测试是把测试对象看做一个黑盒,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求和功能规格说明,检查程序的功能是否符合它的功能说明().12、黑盒测试只关心被测程序的内部关系().13、循环结构分析属于黑盒测试法().14、路径覆盖测试要求对程序模块的所有独立的执行路径至少测试一次().15、逻辑覆盖测试要求对所有的逻辑判定,取“真”与取“假”的两种情况都至少测试一次().16、白盒测试法是将程序看成一个透明的盒子,不需要了解程序的内部结构和处理过程().第七章练习题一、单项选择题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.系统规模越大,维护越困难B.系统运行时间越长,在维护中结构的多次修改会造成维护的困难C.不合理的程序结构会带来维护困难D.以上三项全都正确9、以下不属于软件可维护性主要影响因素的选项是().A.可理解性B.可靠性C.可适应性D.可测试性二、判断题1、软件维护是指软件系统交付使用以后,为了改正错误或满足新的需要而修改软件的过程().2、软件维护是在软件产品生产过程中对其进行修改,以达到随时纠正故障的目的().3、软件维护是一次新的开发活动().4、软件维护就是改错().5、软件维护是软件生命周期中历时最长,但人力和资源耗费却是最少的一个阶段,也是研究最少的一个阶段().6、软件维护可以分为改正性维护、适应性维护、完善性维护和预防性维护四类().7、为了改正软件系统中的错误,使软件能够满足预期的正常运行状态的要求而进行的维护叫做软件的改正性维护().8、为了提高软件的可维护性、可靠性等,为以后进一步改进软件打下良好基础而修改软件的活动叫做软件的完善性维护().9、系统规模越大,维护越困难().10、影响软件维护的因素不包括人员因素和管理因素().11、维护中的多次修改只会改善系统而不会造成维护的困难().。