软件工程基础知识

软件工程基础知识
软件工程基础知识

软件工程基础知识考点指导

考点1 :软件工程和项目管理基础★★★

考点点拨:本考点考查软件工程和软件生成周期的概念,常用的软件开发模型,以及软件开发项目管理基础知识。

【试题1】软件工程三要素是______。

A)技术、方法和工具B)方法、工具和过程

C)方法、对象和类D)过程、模型、方法

答案:B

分析:软件工程三要素:方法、工具和过程。软件工程方法为软件开发提供了“如何做”的技术。软件工具为软件工程方法提供了自动的或半自动的软件支撑环境。软件工程过程定义了:方法使用的顺序、要求交付的文档资料、为保证质量和适应变化所需要的管理以及软件开发各个阶段完成的工作。

理论链接:软件工程概述

1.软件危机

软件危机是指计算机软件开发和维护过程中所遇到的一系列严重问题。概括的说即为:能否满足对软件日益增长的需求?能否维护数量日益增长的现有软件?

2.软件工程

软件工程是一类求解软件的工程,它应用计算机科学、数学及管理科学等原理,借鉴传统工程的原则、方法,创建软件以达到提高质量、降低成本的目的。其中,计算机科学、数学用于构造模型与算法,工程科学用于制定规范、设计范型、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。软件工程是一门指导计算机软件开发和维护的工程学科。

软件工程准则可以概括为六条基本原理:(1)用分阶段的生存周期计划严格管理;(2)坚持进行阶段评审;(3)实行严格的产品控制;(4)采用现代程序设计技术;(5)应能清楚地审查结果;(6)合理安排软件开发小组的人员。

【试题2】软件开发的结构化生命周期方法将软件生命周期划分成______。

A)计划阶段、开发阶段、运行阶段B)计划阶段、编程阶段、测试阶段

C)总体设计、详细设计、编程调试D)需求分析、功能定义、系统设计

答案:A

【试题3】软件生命周期的最后的一个阶段是______。

A)书写软件文档B)软件维护C)稳定性测试D)书写详细用户说明

答案:B

理论链接:软件生存(生命)周期

软件生存周期:软件的产生直到报废的生命周期。从时间角度对软件开发和维护的复杂问题进行分解,把软件生命的漫长周期依次划分为若干阶段,每个阶段有相对独立的任务,

然后逐步完成每个阶段的任务。软件生存周期受软件规模、种类、开发方式、开发环境、方法论的影响有多种划分方法:

一种划分方法为:软件定义(又称系统分析,包括问题定义,可行性研究,需求分析),软件开发(包括总体设计,详细设计,编码和单元测试,综合测试),软件使用与维护等三个时期。各阶段的关键问题和阶段性成果如表7-1所示:

另一种划分是把软件生命周期划分为6个阶段:即制定计划、需求分析、软件设计、程序编写、软件测试和运行维护。

【试题4】瀑布模型(Waterfall Model)突出的缺点是不适应______的变动。(2002年上午填空22)

A)算法B)平台C)程序语言D)用户需求

答案:D

分析:瀑布模型最为突出的缺点是缺乏灵活性,不能适应用户需求的动态变更。

【试题5】在编制程序时,应采纳的原则之一是__ A __。开发软件时对提高开发人员工作效率至关重要的是__ B __。软件工程中描述生命周期的瀑布模型一般包括计划、__ C __、设计、编码、测试、维护等几个阶段,其中设计阶段通常又可依次分成__ D __和__ E __两步。(1994年上半年题6)

A;①不限制 goto 语句的使用②减少或取消注解行

③程序越短越好④程序结构应有助于读者理解

B;①操作系统的资源管理功能②程序开发环境

③程序人员数量④计算机的并行处理能力

C:①需求分析②需求调查③可行性分析④问题定义 D,E:①数据结构设计②详细设计③概要设计④数据库设计

⑤方案设计⑥代码设计

答案:A)④ B)② C)① D)③ E)②

【试题6】包含风险分析的软件工程模型是_____。

A)螺旋模型B)瀑布模型 C)增量模型D)喷泉模型

答案:A

理论链接:软件开发模型

软件开发模型是软件开发全部过程、活动和任务的结构框架。常用的软件开发模型有:瀑布模型、演化模型、螺旋模型、喷泉模型等。

1.瀑布模型

瀑布模型将软件生存周期的各项活动规定为依固定顺序连接的若干阶段工作,是一种线性模型。各个阶段自顶向下,如瀑布流水,逐级下落。各阶段活动为:可行性研究与计划、需求分析、设计(概要设计和详细设计)、编码、测试、运行和维护。每个开发阶段具有以下特征,从上一阶段接受本阶段工作的对象作为输入,对上述输入实施本阶段的活动,给出本阶段的工作成果作为输出传入下一阶段,对本阶段工作进行评审,若本阶段工作得到确认,则继续下阶段工作,否则返回前一阶段甚至更前阶段。瀑布模型最为突出的缺点是该模型缺乏灵活性。它的特点如下:

1)阶段间具有顺序性和依赖性:前一阶段工作完成之后,才能开始后一阶段的工作;前一阶段的输出文档就是后一阶段的输入文档;

2)推迟实现的观点:区分逻辑设计与物理设计,尽可能推迟物理实现;

3)质量保证的观点:每个阶段必须完成规定的文档。每个阶段结束前都需对所完成的文档进行评审,以尽早发现问题;

2.演化模型

演化模型主要针对事先不能完整定义需求的软件开发,其开发过程一般是首先开发核心系统,当核心系统投入运行后,软件开发人员根据用户的反馈,实施开发的迭代过程,每一迭代过程均由需求、设计、编码、测试、集成等阶段组成,直到软件开发结束。演化模型在一定程度上减少了软件开发活动的盲目性。

3.螺旋模型

它是在瀑布模型和演化模型的基础上,加入两者所忽略的风险分析所建立的一种软件开发模型。沿螺旋模型顺时针方向,依次表达了四个方面的活动,制定计划、风险分析、实施工程、客户评估。

4.喷泉模型

它体现了软件创建所固有的迭代和无间隙特征,喷泉模型主要用于支持面向对象开发过程。

5.瀑布模型、演化模型、螺旋模型比较

相同点是这三个模型都分为多个阶段。但瀑布模型一次完成软件;演化模型分为多次完成,每次迭代完成软件的一个部分;螺旋模型也分为多次完成,每次完成软件的一个新原型,并考虑风险分析。

【试题7】软件项目管理所涉及的范围覆盖了整个软件的_____ 。

A)开发过程 B)运行与维护过程 C)定义过程D)生存期答案:D

【试题8】为使软件开发获得成功,一个关键问题是必须对软件范围、风险、资源、任务、里程碑、成本,进度等做到心中有数,而______可以提供这些信息。

A)计算机辅助工程 B)软件开发工具 C)软件项目管理 D)软件估算

答案:C

【试题9】Putnam提出的模型,是一种______模型。它是假定在软件开发的整个生存期中工作量有特定的分布。

A)模块化成本 B)结构化成本

C)动态单变量成本 D)动态多变量成本

答案:D

【试题10】软件开发成本主要是指软件开发过程中所花费的______及相应的代价。

A)劳动力B)工作量C)资源D)持续时间

答案:B

【试题11】对于一个大型的软件项目,由于项目的复杂性,需要进行一系列的估算处理。主要按__(1)__和__(2)__手段进行。估算的方法分为3类:从项目的整体出发,进行(2)的方法称为__(3)__估算法。把待开发的软件细分,直到每个子任务都已明确所需要的开发工作量,然后把它们加起来,得到软件开发总工作量的方法称为__(4)__估算法。而把待开发的软件项目与过去已完成的软件项目做类比,区分出类似部分和不同部分分别处理的方法称为__(5)__估算法。__(6)__是由多位专家进行成本估算的方法。

1、2:A)类推B)类比C)分解D)综合

3~6:A)差别B)自顶向下C)自底向上D)专家判定技术 E.循序渐进 F.比较

答案:1)C 2)A 3)B 4)C 5)A 6)D

分析:成本估算通常按类推(根据以往开发类似软件的经验估算)和分解(按软件生存周期的各个阶段花费的代价估算)手段进行。注意,这里答题(1)和(2)的答案不能互换,因为题目后面用到了(2)的答案。根据题意:“从项目的整体出发,进行(2)的方法称为__(3)__估算法。”显然,答题(3)的答案应为B,因此(2)的答案为A,(1)的答案为C。把待开发的软件细分,直到每个子任务都已明确所需要的开发工作量,然后把它们加起来,得到软件开发总工作量的方法称为自底向上估算法。而把待开发的软件项目与过去已完成的软件项目做类比,区分出类似部分和不同部分分别处理的方法称为差别估算法。由多位专家进行成本估算的方法称为专家判定技术。

理论链接:软件开发项目管理基础知识

软件开发项目管理,就是对软件生存期的一切活动进行管理。具体内容包括对开发人员、组织机构、用户、文档资料等方面的管理。

1.成本估算

成本估算主要指软件开发过程中所花费的工作量及相应的代价。通常可以根据以往开发类似软件的经验估算,也可以按软件生存周期的各个阶段所花费的代价分别估算。有二种估算方法:

开发费用=人月数×每个人月的代价

开发费用=源代码行数×每行平均费用

现常用的几种估算模型如下:

1)IBM模型

1977年,IBM的Walston和Felix提出了如下的估算公式:

E = 5.2×L0.91,L是源代码行数(以KLOC计,LOC:代码行),E是工作量(以PM计,PM:人月)

D = 4.1×L0.36,D是项目持续时间(以月计)

S = 0.54×E0.6,S是人员需要量(以人计)

DOC = 49×L1.01。DOC是文档数量(以页计)

在此模型中,一般指一条机器指令为一行源代码。一个软件的源代码行数不包括程序注释、作业命令、调试程序在内。对于非机器指令编写的源程序,如汇编语言或高级语言程序,应转换成机器指令源代码行数来考虑。

2)Putnam模型

这是1978年Putnam提出的模型,是一种动态多变量模型。它是假定在软件开发的整个生存期中工作量有特定的分布。这种模型是依据在一些大型项目(总工作量达到或超过30个人年)中收集到的工作量分布情况而推导出来的,但也可以应用在一些较小的软件项目中。

Putnam模型可以导出一个“软件方程”,把已交付的源代码(源语句)行数与工作量和开发时间联系起来。其中,td是开发持续时间(以年计),K是软件开发与维护在内的整个生存期所花费的工作量(以人年计),L是源代码行数(以LOC计),Ck是技术状态常数,它反映出“妨碍程序员进展的限制”,并因开发环境而异。其典型值的选取如下所示:L = Ck * K1/3 * td4/3

其中:L-----------源代码行数(以LOC计)

K-----------整个开发过程所花费的工作量(以人年计)

td-----------开发持续时间(以年计)

Ck----------技术状态常数,它反映“妨碍开发进展的限制”,取值因开发环境而异,见表7-2。

从上述方程加以变换,可以得到估算工作量的公式: K = L3/(Ck3*td4)

还可以估算开发时间: td = [L3/(Ck3*K)]1/4

3)COCOMO模型(COnstructive COst MOdel)

这是由TRW公司开发。Boehm提出的结构型成本估算模型,是一种精确、易于使用的成本估算方法。该模型还分为:基本COCOMO模型,是一个静态单变量模型,它是对整个软件系统进行估算;中级COCOMO模型,是一个静态多变量模型,中级COCOMO模型将软件系统型分为系统和部件两个层次,它用于部件级的估算更精确些;详细COCOMO模型,将软件系统模型分为系统、子系统和模块三个层次。

2.风险分析

与任何其他工程项目一样,软件工程项目的开发也存在各种各样的风险,有些风险甚至是灾难性的。R.Charette认为,风险与下面三个方面有关:

1)关心未来,风险是否会导致失败;

2)关系变化,用户需求、开发技术、及所有与项目有关的实体会发生什么变化;

3)解决选择,采用什么方法和工具,配备多少人力,质量如何。

软件工程的风险分析包括:风险标识、风险估算、风险评价和风险管理四部分。

1)风险标识

从宏观上看,风险可以分为项目风险、技术风险和商业风险三类。由于项目在预算、进度、人力、资源、顾客和需求等方面的原因对软件项目产生的不良影响称为项目风险。软件在设计、实现、接口、验证和维护过程中可能发生的潜在问题,如规格说明的二义性、采用陈旧或尚不成熟的技术等等,对软件项目带来的危害称技术风险。开发了一个没人需要的优质软件,或推销部门不知如何销售这一软件产品,或开发的产品不符合公司的产品销售战略,等等,称为商业风险。这些风险有些是可以预料的,有些是很难预料的。

2)风险估算

估算造成或影响风险的因素,以及风险所造成的损失。

3)风险评价和管理

尽可能地估计各种风险,然后逐一列出并评价风险的程度,对这些风险进行密切关注和严格管理。

3.进度管理

对软件的开发进度进行管理,制定开发进度表。制定进度表有2 种方法:

1)系统最终交付日期已确定,软件开发部门必须在规定期限内完成;

2)系统最终交付日期只确定了大致的时限,最后交付日期由软件开发部门确定。

进度安排的常用图形描述方法有:Gantt图(甘特图)和PERT图(计划评审技术图)4.人员管理

可按项目进度对软件人员分组,如需求分析组、设计组、编码组、测试组、维护组、质量保证等。

程序设计小组的组织形式可有多种形式分类。如主程序员组、无主程序员组、层次式程序员组等。

【试题12】软件开发环境是支持软件产品开发的软件系统,它由____和环境集成机制构成,环境集成机制包括数据集成、控制集成和界面集成。(2004年下半年上午题49)A)软件工具集 B)软件测试工具集

C)软件管理工具集D)软件设计工具集

答案:A

分析:软件开发环境是由软件开发工具集和环境集成机制构成的。前者用于支持软件开发的相关过程、活动和任务;后者为工具集成、软件开发、维护和管理提供统一的支持。

理论链接:软件工具与软件开发环境

1.软件工具

可用来帮助和支持软件需求分析、软件开发、测试、维护、模拟、移植或管理而编制的计算机程序或软件。软件工具是一个程序系统。软件工具通常由工具、工具接口和工具用户接口三部分构成。工具通过工具接口与其他工具、操作系统或网络操作系统,以及通信接口、环境信息库接口等进行交互作用。当工具需要与用户进行交互作用时则通过工具的用户接口。软件工具可以分为:

1)软件开发工具:对应软件开发过程中的各种活动,通常有需求分析工具、设计工具、编码与排错工具等

2)软件维护工具:对应软件维护过程中的各种活动,主要有版本控制工具、文档分析工具、开发信息库工具、逆向工程工具、再工程工具等。

3)软件管理和软件支持工具:用来辅助管理人员和软件支持人员的管理和软件支持活动,以确保软件高质量完成。通常有项目管理工具、配置管理工具、软件评价工具等2.软件开发环境

软件开发环境是指在计算机的基本软件的基础上,为支持软件的开发而提供的一组工具软件系统。软件开发环境的定义可从三方面理解:

(1)软件开发环境是一组相关工具的集合。

(2)这些相关工具按一定的开发方法或一定开发处理模型组织起来的。

(3)这些相关工具支持整个软件生存期的各阶段或部分阶段。

软件开发环境按解决的问题可分为:程序设计环境、系统合成环境、项目管理环境三类;按软件开发环境的演变趋向可分为:以语言为中心的环境、工具箱环境和基于方法的环境三类;按集成化程度有第一代、第二代、第三代的开发环境。

【试题13】CASE是一组______的集合。

A)工具B)工具和方法C)方法D)程序

答案:B

【试题14】CASE系统所涉及到的技术有两类:一类是支持软件开发过程本身的技术;另一类是支持软件_____的技术。

A)开发过程本身B)开发方法管理C)开发方法本身D)开发过程管理

答案:D

【试题15】平台集成是指工具运行在相同的______平台上。

A)硬件B)软件C)硬件/操作系统D)硬件/软件

答案:C

理论链接:C ASE工具

CASE是一组工具和方法的集合,可以辅助软件开发生命周期各阶段进行软件开发。CASE 把软件开发技术、软件工具和软件开发方法集成到一个统一而一致的框架中,并且吸收了CAD(计算机辅助设计)、软件工程、操作系统、数据库、网络和许多其他计算机领域的原理和技术。因而,CASE领域是一个应用、集成和综合的领域。

根据CASE系统对软件过程的支持范围,CASE可分为三类:(1)支持单个过程任务的工具。(2)支持某一过程所有活动或某些活动的工作台。(3)环境支持软件过程大部分乃至所有活动,一般包括几个不同工作台的集合。

集成化CASE包括五级模型:

(1)平台集成:工具运行在相同的硬件/操作系统平台上

(2)数据集成:工具使用共享数据模型来操作

(3)表示集成:工具使用相同的用户界面

(4)控制集成:工具激活后能控制其他操作

(5)过程集成:工具在一个过程模型和"过程机"的指导下使用

CASE工具台是一组工具集,支持像设计、实现或测试等特定的软件开发阶段。CASE工具组装成一个工具台后工具能协同工作,可提供比单一工具更好的支持。CASE工作台包括:(1)程序设计工作台。由支持程序设计的一组工具组成。

(2)分析和设计工作台。支持软件过程的分析和设计阶段。

(3)测试工作台。

(4)交叉开发工作台。这些工作台支持在一种机器上开发软件,而在其他的系统上运行所开发的软件。

(5)配置管理(CM)工作台。这些工作台支持配置管理。

(6)文档工作台。这些工具支持高质量文档的制作。

(7)项目管理工作台。支持项目管理活动。

【试题16】______是指在开发和维护软件及其相关产品时,遵循某个软件过程所能达到的期望效果。

A)软件过程能力B)软件过程性能C)编程能力D)CMM

答案:A

理论链接:软件过程能力评估

1. 软件过程:

人们在开发和维护软件及其相关产品时所涉及的各种活动、方法、实践和改革等。其中软件相关产品包括软件项目计划、设计文档、程序代码、测试用例和用户手册等。

2. 软件过程能力:

当遵循某个软件过程时所能达到的期望效果,它可以有效预测企业接收新的软件项目时可能得到的结果。

3. 软件过程性能:

当遵循某个软件过程时所达到的实际效果。它可以用于验证软件过程能力。

4.软件过程评估的意义:

1)软件过程改进的需要

(1)软件过程不断改进是软件工程的基本原理之一。

软件过程的基本原理有以下七条:

●按软件生成周期分阶段指定计划并认真实施

●逐阶段进行确认

●坚持严格的产品控制

●使用现代程序设计技术

●明确责任

●用人少而精

●不断改进开发过程)

(2)软件过程改进是软件生存周期的基本过程之一。

2)减低软件风险的需要

减低软件风险包括减低软件采购者的风险和软件研制者的风险。

【试题17】CMM描述了______个级别的软件过程成熟度,成熟度反映了软件过程能力(Software Process Capability)的大小,任何一个软件机构的软件过程必定属于其中某个级别。

A)3 B)5 C)7 D)9

答案:B

理论链接:软件过程能力成熟度(CMM)模型简介

软件过程成熟度:指一个特定的软件过程被显式定义、管理、度量、控制和能行的程度。成熟度可以用于指示企业加强其软件过程能力的潜力。当一个企业达到了一定的软件过程成熟级别后,它将通过制定策略、建立标准和确立机构结构使它的软件过程制度化。而制度化又促使企业通过建立基础设施和公司文化来支持相关的方法、实践和过程。从而使之可以持续并维持一个良性循环。

CMM描述了五个级别的软件过程成熟度(初始级可重复级已定义级已管理级优化级),成熟度反映了软件过程能力(Software Process Capability)的大小,任何一个软件机构的软件过程必定属于其中某个级别。除了第一级以外,每级成熟度又由若干关键过程域(Key Process Area)构成。五个成熟度及其关键过程领域如图所示:

需要提出的是,任何一个成熟度级别的关键过程域集都是本级描述的关键过程域集和所有下级的关键过程域集的并集。如3级的关键过程域就应有13个不同的域,其中7个是3级自己包含的,6个属于2级成熟度,而4级应有15个域。

五个成熟度级别:初始级、可重复级(有规章的过程)、定义级(标准化、一致的过程)、管理级(可预测过程)、优化级(可持续改进的过程)分别描述如下:

第一级:初始级

成功来源于个人英雄主义而非机构行为,因此它不可重复,更换人员后成功便难以维持。

第二级:可重复级

主要特点是项目计划和跟踪是确定且有效的,项目的软件过程是可控的,以及已有的成功经验是可重复的。

第三级:定义级

主要特征在于软件过程已被提升成标准化过程,从而更加具有稳定性、重复性和可控性。

第四级:管理级

主要特征是定量化、可预测、异常控制和高质量。对于软件的过程和产品有定量的质量指标。重要的软件过程活动均配有生产率和质量方面的度量指标;

第五级:优化级

主要特征是新技术的采用和软件过程的改进被作为日常的业务活动来加以计划和管理。

考点2:面向对象技术基础★★★★★

考点点拨:本考点考查面向对象的基本概念和面向对象分析与设计的基本知识。基本概念包括:对象、类、消息、继承、多态等。

【试题18】在面向对象程序设计语言中,__(1)__是利用可重用成分构造软件系统的最有效的特性,它不仅支持系统的可重用性,而且还有利于提高系统的可扩充性;__(2)__可以实现发送一个通用的消息而调用不同的方法;__(3)__是实现信息隐蔽的一种技术,

其目的是使类的__(4)__相互分离。(2004年下半年上午填空31-34)

(1) A)封装 B)消息传递 C)引用 D)继承

(2) A)封装 B)多态 C)引用 D)继承

(3) A)引用 B)继承 C)封装 D)多态

(4) A)定义与实现B)分析与测试C分析与设计D)实现与测试

答案:(1)D (2)B (3)C (4)A

分析:面向对象的主要特性有继承性、多态性和封装性。继承是在已有类的基础上增量构造新的类,它是利用可重用成分构造软件系统的最有效的特性;多态可以实现发送一个通用的消息而调用不同的方法;封装指将一个数据和与这个数据有关的操作集合放在一起,形成一个独立的实体,它是实现信息隐蔽的一种技术,其目的是使类的定义与实现相互分离。

【试题19】采用面向对象技术开发的应用系统的特点是______。(2003年上午填空2)A)重用性更强B)运行速度更快C)占用存储量小D)维护更复杂

答案:A

分析:采用面向对象技术开发的应用系统的特点有:重用性更强、维护更简单等。

【试题20】在面向对象方法中,对象可看成是属性(数据)以及这些属性上的专用操作的封装体。封装是一种___A___技术,封装的目的是使对象的___B___分离。类是一组具有相同属性和相同操作的对象的集合,类中的每个对象都是这个类的一个___C___。类之间共享属性和操作的机制称为___D___。一个对象通过发送___E___来请求另一对象为其服务。(1999年上午题5)

A: (1)组装(2)产品化(3)固化(4)信息屏蔽

B: (1)定义和实现(2)设计和测试(3)设计和实现(4)分析和定义C: (1)例证(illustration)(2)用例(use-case)

(3)实例(instance)(4)例外(exception)

D: (1)多态型(2)动态绑定(3)静态绑定(4)继承

E: (1)调用语句(2)消息(3)命令(4)口令答案:A)4 B)1 C)3 D)4 E)2

理论链接:面向对象的基本概念

1.基本术语

(1)对象:是对客观世界事务的一种抽象,是由数据(属性)及其上操作(行为)组成的封装体。

(2)类:是一组具有相同属性和相同操作的对象的集合。

(3)属性:每一对象的属性是一些有着确定值的、用于描述对象状态信息的数据。

(4)方法:为了完成某一任务,一个对象所提供的、并体现其责任的操作。

(5)消息:一个对象为实现其责任而与其他对象的通信,在面向对象方法中,对象之间只能通过消息进行通信。

(6)继承:表达类之间相似性的一种机制,即在已有的类的基础之上增量构造新的类,前者称为父类(或超类),后者称为子类,如果子类只从一个父类继承,则称为单继承,如果子类从一个以上父类继承,则称为多继承。

(7)封装:指将一个数据和与这个数据有关的操作集合放在一起,形成一个独立的实体——对象,用户不必知道对象行为的实现细节,只需根据对象提供的外部特性接口访问对象即可。因此,从用户的观点来看,这些对象的行为就像包含在一个“黑匣子”里,是隐蔽的、看不见的。

(8)多态:描述的是同一个消息可以根据发送消息对象的不同采用多种不同的行为方式。

(9)依赖:一个依赖规约了两个模型元素(或两个模型元素集合)之间的一种语义关系。

(10)状态:一个状态是在对象的生命期内的一个条件,或在对象满足某个条件,进行某个动作或等待某个事件的期间内的一个交互。

(11)事件:指可以引发状态转换的所发生的事情。

2.对象的特点:自治性,对象具有一定的独立计算能力;封闭性,对象具有信息隐蔽的能力;通信性,对象具有与其他对象通信的能力。

3.面向对象的主要特性:封装性、继承性和多态性。

4.面向对象的模型(简单应用):包括三个,它们分别是:描述系统数据结构的对象模型、描述系统控制结构的动态模型和和描述系统功能的功能模型。

【试题21】______是用面向对象的方法对目标系统的问题空间进行理解,分析和反映。通过对象层次结构的组织确定解空间中应存在的对象和对象层次结构。

A)面向对象分析 B)面向对象设计C)抽象性D)对象图

答案:A

理论链接:面向对象分析与设计概述

1.面向对象分析

面向对象分析(Object-Oriented Analysis,OOA)强调直接对问题论域中的各种事物建立OOA模型中的对象,用对象的属性和服务分别描述对象的静态特征和动态行为。同时,在OOA模型中保存了问题论域中各个事物之间的关系,把具有相同属性和相同服务的对象归于一类,用一般化∕特殊化关系(分类结构)和整体∕部分关系(组装结构)描述事物间的结构关系,用实例连接和消息连接描述事物之间的静态联系和动态联系,从而忠实地反映了问题论域的原貌。

2.面向对象设计

面向对象设计OOD(Object-Oriented Design)通过对象的认定和对象层次结构的组织,确定解空间中应存在的对象和对象层次结构,并确定外部接口和主要的数据结构。

面向对象的设计准则有:模块化、抽象、信息隐藏、弱耦合、强内聚、可重用。

OOD分为四部分:1)问题域部分,保持系统总体结构的稳定性;2)人机交互部分;3)任务管理部分,简化总体设计和编码;4)数据管理部分,包括数据存放方法的设计和相应服务的设计。

3.面向对象方法同结构化方法的比较:

结构化方法强调过程抽象和模块化,将现实世界映射为数据流和加工,加工之间通过数据流进行通信,数据作为被动的实体被主动地操作所加工,是以过程(或操作)为中心来构造系统和设计程序的;

面向对象方法把世界看成是独立对象的集合,对象将数据和操作封装在一起,提供有限的接口,其内部的实现细节、数据结构及对它们的操作是外部不可见的,对象之间通过消息相互通信,面向对象方法具有的继承性和封装性支持软件复用,并易于扩充,能较好的适应复杂大系统不断发展和变化的要求。

4.Coad-Yourdon方法:

该方法认为,人类在认识和理解现实世界的过程中,普遍运用着下面三个构造法则,区分对象及其属性,区分整体对象及其组成部分,不同对象类的形成及区分。

【试题22】______是用来对软件密集系统进行描述、构造、视化和文档编制的一种语言

A)UML B)CMM C)Coad-Yourdon D)Booch

答案:A

理论链接:统一建模语言(UML)概述

统一建模语言(UML)是用来对软件密集系统进行描述、构造、视化和文档编制的一种语言。UML不仅统一了Booch、Rumbaugh和Jacobson的表示方法,而且对其作了进一步的发展,并最终统一为大众所接受的标准建模语言。其内容如下:

作为一种建模语言,UML的定义包括UML语义和UML表示法两个部分。

(1)UML语义:描述基于UML的精确元模型定义。元模型为UML的所有元素在语法和语义上提供了简单、一致、通用的定义性说明,使开发者能在语义上取得一致,消除了因人而异的最佳表达方法所造成的影响。此外UML还支持对元模型的扩展定义。

(2)UML表示法:定义UML符号的表示法,为开发者或开发工具使用这些图形符号和文本语法为系统建模提供了标准。这些图形符号和文字所表达的是应用级的模型,在语义上它是UML元模型的实例。

标准建模语言UML的重要内容可以由下列五类图(共9种图形)来定义:

●第一类是用例图,从用户角度描述系统功能,并指出各功能的操作者。

●第二类是静态图(Static diagram),包括类图、对象图和包图。其中类图描

述系统中类的静态结构。不仅定义系统中的类,表示类之间的联系如关联、依

赖、聚合等,也包括类的内部结构(类的属性和操作)。类图描述的是一种静

态关系,在系统的整个生命周期都是有效的。对象图是类图的实例,几乎使用

与类图完全相同的标识。他们的不同点在于对象图显示类的多个对象实例,而

不是实际的类。一个对象图是类图的一个实例。由于对象存在生命周期,因此

对象图只能在系统某一时间段存在。包由包或类组成,表示包与包之间的关系。

包图用于描述系统的分层结构。

●第三类是行为图(Behavior diagram),描述系统的动态模型和组成对象间的

交互关系。其中状态图描述类的对象所有可能的状态以及事件发生时状态的转

移条件。通常,状态图是对类图的补充。在实用上并不需要为所有的类画状态

图,仅为那些有多个状态其行为受外界环境的影响并且发生改变的类画状态

图。而活动图描述满足用例要求所要进行的活动以及活动间的约束关系,有利

于识别并行活动。

●第四类是交互图(Interactive diagram),描述对象间的交互关系。其中顺序

图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示

对象之间的交互;合作图描述对象间的协作关系,合作图跟顺序图相似,显示

对象间的动态合作关系。除显示信息交换外,合作图还显示对象以及它们之间

的关系。如果强调时间和顺序,则使用顺序图;如果强调上下级关系,则选择

合作图。这两种图合称为交互图。

●第五类是实现图(Implementation diagram)。其中构件图描述代码部件的物

理结构及各部件之间的依赖关系。一个部件可能是一个资源代码部件、一个二

进制部件或一个可执行部件。它包含逻辑类或实现类的有关信息。部件图有助

于分析和理解部件之间的相互影响程度。

配置图定义系统中软硬件的物理体系结构。它可以显示实际的计算机和设备(用节点表示)以及它们之间的连接关系,也可显示连接的类型及部件之间的依赖性。在节点内部,放置可执行部件和对象以显示节点跟可执行软件单元的对应关系。

从应用的角度看,当采用面向对象技术设计系统时,首先是描述需求;其次根据需求建立系统的静态模型,以构造系统的结构;第三步是描述系统的行为。其中在第一步与第二步中所建立的模型都是静态的,包括用例图、类图(包含包)、对象图、组件图和配置图等五个图形,是标准建模语言UML的静态建模机制。其中第三步中所建立的模型或者可以执行,或者表示执行时的时序状态或交互关系。它包括状态图、活动图、顺序图和合作图等四个图

形,是标准建模语言UML的动态建模机制。因此,标准建模语言UML的主要内容也可以归纳为静态建模机制和动态建模机制两大类。

考点3:系统分析基础知识★★★★

考点点拨:本考点考查系统分析的主要任务、过程,结构化分析方法以及系统分析报告的基本组成。

【试题23】需求分析中,开发人员要从用户那里解决的最重要的问题是______。

A)要让软件做什么B)要给该软件提供哪些信息

C)要求软件工作效率怎样D)要让该软件具有何种结构

答案:A

理论链接:系统分析概述

系统分析是以系统的整体最优为目标,对系统的各个主要方面进行定性和定量的分析,是一个有目的、有步骤的探索和分析过程。在此过程中,尽量收集相关资料、整理、分析、形成能体现整个系统灵魂的文档。实际上它就是将客户的需求从具体到抽象的一个过程,并制定编码人员可实施的规范和标准。

系统分析是信息系统开发工作中最重要的一环。系统分析的内容主要包括对组织内部整体管理状况和信息处理过程(侧重于具体业务全过程角度)进行分析。在系统分析中扎扎实实地了解实际工作部门的业务情况是基础,只有在对业务了解得非常透彻的前提之下才有可能提出新的改进方案。系统分析阶段的工作步骤有:

1.详细调查、收集和分析用户需求

在总体规划时所做的初步调查只是为了总体规划和进行可行性分析的需要,相对来说是比较粗糙的。现在,则应在初步调查的基础上,进一步收集和了解、分析用户需求,调查用户的有关详细情况。

2.确定初步的逻辑模型

逻辑模型是指仅在逻辑上确定的目标系统模型,而不涉及具体的物理实现,也就是要解决系统“干什么”,而不是“如何干”。逻辑模型由一组图表工具进行描述。用户可通过逻辑模型了解未来目标系统,并进行讨论和改进。

3.编制系统说明书

对上述采用图表描述的逻辑模型进行适当的文字说明,就组成了系统说明书。它是系统分析阶段的主要成果。系统说明书既是用户与开发人员达成的书面协议或合同,也是管理信息系统生命周期中的重要文档。

目前常用的系统开发方法有:结构化系统分析与设计方法、原型方法、目标导向(或称为面向对象)方法、计算机辅助软件工程方法等等。

【试题24】结构化分析方法(SA)的一个重要指导思想是______。(2002年上午填空25)

A)自顶向下,逐步抽象B)自底向上,逐步抽象

C)自顶向下,逐步分解D)自底向上,逐步分解

答案:C

分析:结构化分析方法基于模块化的思想,采用自顶向下,逐步分解的指导思想对系统

进行分析。

【试题25】在数据流图中,圆圈表示______。两条平行线表示______。(2002年上午填空23、24)

(1)A)加工B)外部实体C)数据流D)存储

(2)A)加工B)外部实体C)数据流D)存储

答案:1.A 2.D

分析:数据流图是一种描述数据变换的图形工具,有四个基本成分组成:加工(用圆圈表示)、数据流(用箭头表示)、数据存储(用两条平行线表示)、数据源和数据潭(用矩形表示)。

理论链接:结构化分析方法

结构化分析方法(SA)是一种以数据、数据的封闭性为基础,从问题空间到某种表示的映射方法,由数据流图(DFD图)表示。

结构化分析方法是结构化开发方法的一部分。结构化开发方法是一种系统化开发软件的方法,该方法基于模块化的思想,采用“自顶向下,逐步求精”的技术对系统进行划分,分解和抽象是它的两个基本手段,结构化开发方法是结构化分析(SA)、结构化设计(SD)和结构化编程(SP)的总称。

1.结构化分析模型的组成及详细内容:

(1)结构化分析模型及内容:

数据流图(DFD)是一种描述数据变换的图形工具,是结构化分析方法最普遍采用的表示手段,数据字典和小说明为数据流图提供了补充,并用以验证图形表示的正确性、一致性和完整性,以上三者构成了结构化分析的模型。

(2)结构化分析方法的基本内容:

数据流图是一种描述数据变换的图形工具,系统接受输入的数据,经过一系列的变换(或称加工),最后输出结果数据,数据流图由以下四个基本成分组成:加工、数据流、数据存储、数据源和数据潭,这四个基本成分是结构化设计方法为表达系统模型的基本概念,这些符号可以覆盖客观世界的一切事物。

加工是对数据进行处理的单元,用圆圈表示;数据流表示数据和数据流向,用箭头表示;数据存储用于表示信息的静态存储,用两条平行线表示;数据源和数据潭表示系统和环境的接口,是系统之外的实体,数据潭是数据流的最终目的地,数据源和数据潭用矩形表示。

(3)数据字典和小说明:

数据字典以一种准确的和无二义的方式定义所有被加工引用的数据流和数据存储,通常包括三类内容,数据流条目、数据存储条目、数据项条目。

小说明是用来描述底层加工的,小说明集中描述一个加工的输入数据和输出数据的逻辑关系,即加工逻辑,小说明并不描述具体的加工过程,小说明一般用自然语言、结构化自然语言、判定表和判定树等来描述。

(4)建立系统模型的步骤:

结构化分析从本质上说是一种运用抽象和分解技术,“自顶向下,逐步求精”的过程,首先确定系统边界,画出系统环境图,自顶向下,再画出各层数据流图,定义数据字典和小说明,最后汇总前面各步骤的结果。

(5)建立系统模型的模型平衡规则:

数据流图中所有的图形元素必须根据它们的用法规则正确使用,每个数据流和数据存储都要在数据字典中有定义,数据字典将包括各层数据流图中数据元素的定义,数据字典中的

定义使用合法的逻辑构造符号,数据流图中最底层的加工必须在小说明中有定义,父图和子图必须平衡,小说明和数据流图的图形表示必须一致。

(6)建立系统模型控制复杂性的一些规则:

上层数据流可以打包,上、下层数据流的对应关系用数据字典描述,同层的数据流也可以编号对应,包内流的性质(输入/输出)必须一致,为了便于人的理解,把一幅图中的图元个数控制在7±2以内,检查同每个加工相关的数据流,并寻找是否有其他可降低界面复杂性的划分方法,分析数据内容,确定是否所有的输入信息都用于产生输出信息,相应的,有一个加工产生的所有信息是否都能由进入该加工的信息导出。

(7)结构化分析的基本步骤:

通过对现实系统的了解和分析,或基于需求陈述,建立该系统的数据流图,基于得到的数据流图,建立该系统的数据字典,基于得到的数据流图,对最底层的加工给出其控制结构描述,依据需求陈述,建立人机接口和其他性能描述,通过分析和验证,建立系统完整的需求规约。

【试题26】原型化方法是一种动态定义需求的方法,______不具有原型化方法的特征。(2003年上午填空32)

A)简化项目管理 B)尽快建立初步需求

C)加强用户参与和决策 D)提供严格定义的文档

答案:D

分析:原型化方法强调的是软件开发人员与用户的不断交互,通过原型的演进不断适应用户任务改变的需求。不具备提供严格定义的文档。

理论链接:原型化方法

原型是软件开发过程中,软件的一个早期可运行的版本,它反映了最终系统的部分重要特性。

原型化方法的基本思想是花费少量代价建立一个可运行的系统,使用户及早获得学习的机会,原型化方法又称速成原型法(Rapid Prototyping)。强调的是软件开发人员与用户的不断交互,通过原型的演进不断适应用户任务改变的需求。将维护和修改阶段的工作尽早进行,使用户验收提前,从而使软件产品更加适用。

【试题27】系统分析报告的主要作用是______。

A)系统规划的依据B)系统实施的依据

C)系统设计的依据D)系统评价的依据

答案:C

理论链接:系统分析报告

系统分析报告是系统分析阶段的成果。系统分析报告一经确认,就成为具有约束力的指导性文件,成为下一阶段系统设计工作的依据和今后验收目标系统的检验标准。

系统分析报告必须简明扼要,抓住本质。至少要包括数据流图、数据字典和加工说明这3个主体。

考点4:系统设计知识★★★★

考点点拨:本考点考查系统设计(总体结构设计和详细设计)的基本知识;结构化设计方法的基本思想。

【试题28】系统设计可以分为两个阶段。其中,把系统分为许多基本的、具体的任务是在______阶段完成的。

A)总体设计B)详细设计C)A和B D)都不是

答案:A

理论链接:7.4.1 系统设计概述

分析阶段的主要任务是确定系统必须“做什么”,形成系统分析报告(软件的需求规格说明书),设计阶段的主要任务是确定系统“怎么做”,从软件需求规格说明书出发,形成系统(软件)的具体设计方案,软件设计可以采用多种方法,如结构化设计方法、面向数据结构的设计方法、面向对象的设计方法等。

软件设计可以分为总体(概要)设计和详细(过程)设计两个阶段。

【试题29】在结构化分析与设计方法中,为了在需求改变时对软件的影响较小,应该使______。(2004年上半年填空33)

A)程序结构与问题结构相对应B)程序结构与问题结构相独立C)程序结构与用户界面相对应D)程序结构与用户界面相独立

答案:A

分析:在结构化分析与设计方法中,为了在需求改变时对软件的影响较小,应该使程序结构与问题结构相对应。

理论链接:7.4.2 结构化设计方法

结构化设计方法(SD)是一种面向数据流的设计方法,将系统设计成由相对独立、单一功能的模块组成的结构。SD法与结构化分析(SA)和结构化编程(SP)法前后衔接,是结构化开发方法的核心。结构化设计的总则是:“降低块间联系,提高块内联系”。

由于软件具有两类特征:1)层次性: 反映软件整体的性质(结构图)。 2)过程性: 反映局部的性质(框图)。因此SD法也分为总体设计和详细设计两个阶段:1)总体设计

总体设计是软件设计过程中的关键,它决定了系统结构、数据结构及软件的质量,反映了系统的概貌。总体设计的主要任务是解决系统的模块结构,即分解模块,确定系统模块的层次结构。具体步骤为:①划分模块、②确定模块功能、③确定模块间调用关系、④确定模块间界面。

此阶段形成的文档是模块结构图及其模块功能说明。

2)详细设计

对模块图中每个模块的过程进行描述,常用的描述的方式有:伪代码,流程图,N-S图,PAD图等。

【试题30】模块的控制范围包括它本身及它所有的从属模块,模块的作用范围是指模块内一个判定的作用范围,凡是受到这个判定影响的所有模块都属于这个判定的作用范围,理想的情况是______。(2003年上午题20填空27)

A)模块的作用范围应在控制范围之内B)模块的控制范围应在作用范围之内C)模块的作用范围与控制范围交叉D)模块的作用范围与控制范围分离

答案:A

【试题31】关于模块设计的原则,以下叙述中正确的是______。(2003年上午题

21填空28)。

A)模块的内聚性高,模块之间的耦合度高

B)模块的内聚性高,模块之间的耦合度低

C)模块的内聚性低,模块之间的耦合度高

D)模块的内聚性低,模块之间的耦合度低

答案:B

分析:耦合性是指软件结构中模块相互连接的紧密程度,是模块间相互连接性的度量。

内聚性表示一个模块内部各种数据和各种处理之间联系的紧密程度,它是从功能的角度来度

量模块间的联系。显然,块内联系愈紧,即内聚性愈强,模块独立性愈好。模块分解的一个

目标是使块间联系尽可能小。

【试题32】结构图中,不是其主要成分的是______。

A)模块B)模块间传递的数据C)模块内部数据D)模块的控制关系

答案:C

理论链接:7.4.3 系统总体结构设计

1.几个术语

1)模块

模块是执行一个特殊任务或实现一个特殊的抽象数据类型的一组例程和数据结构,模块

由两部分组成,接口和实现模块功能的执行机制。

模块的基本属性有:

(1)接口:指模块的输入与输出;

(2)功能:指模块实现什么功能;

(3)逻辑:描述内部如何实现要求的功能及所需的数据;

(4)状态:指该模块的运行环境,即模块的调用与被调用关系。

功能、状态与接口反映模块的外部特性,逻辑反映它的内部特性。

2)结构图

结构图(Structure Chart 简称SC)是精确表达程序结构的图形表示方法。它清楚地

反映出程序中模块目的层次调用关系和联系:不仅严格地定义了各个模块的名字、功能和接

口,而且还反映了设计思想。即它以特定的符号表示模块、模块目的调用关系和模块间信息

的传递。结构图的主要内容有:

(1)模块:在结构图中,模块用矩形框表示,并用模块的名字标记它。模块的名字应当

能够表明该模块的功能。对于现成的模块,则以双纵边矩形框表示。

(2)模块的调用关系和接口:在结构图中,两个模块之间用单向箭头联结。箭头从调用

模块指向所调用模块,表示调用模块调用了所调用模块。但其中隐含了一层意思,就是执行

所调用模块完成之后,控制又返回到调用模块。

(3)模块间的信息传递:当一个模块调用另一个模块时,调用模块把数据或控制信息传

送给所调用模块,以使所调用模块能够运行。而在执行所调用模块的过程中又把它产生的数

据或控制信息回送给调用模块。为了表示在模块之间传递的数据或控制信息,在联结模块的

的短箭头表示控制信息。通常在短箭头附近应注有信息的名字。

(4)辅助符号:当模块A有条件地调用另一个模块B时,在模块A的箭头尾部标以一个

菱形符号。当一个模块A反复地调用模块C和模块D时,在调用箭头尾部则标以一个弧形符

号。

2.总体设计的主要任务及其内容

总体设计阶段的主要任务是把系统的功能需求分配给软件结构,形成软件的模块结构图(MSD),在结构图中矩形表示功能单元,称为“模块”,连接上下层模块的线段表示它们之间的调用关系,在总体设计阶段,每个模块还处于黑盒子级,模块通过外部特征标识,名字、输入、输出。

3.总体设计的表示形式

1)层次图:用来描绘软件的层次结构,图中的每个方框代表一个模块,方框间的连线表示模块的调用关系,层次图很适合于在自顶向下设计软件的过程中使用;

2)HIPO图:是由美国IBM公司发明的“层次图+输入/处理/输出图”的英文缩写,HIPO 图实际上由H图和IPO图两部分组成,H图就是上面提到的层次图,为了能使HIPO图具有可跟踪性,在H图里除了最顶层的方框之外,每个方框都加了编号;

3)结构图:和层次图类似,图中每个方框代表一个模块,方框之间的箭头(或直线)表示模块的调用关系,在结构图中通常还用带注释的箭头表示模块调用过程中来回传递的信息,尾部是空心圆表示传递的是数据,实心圆表示传递的是控制信息。

【试题33】Jackson设计方法是由英国的M.Jackson提出的,它是一种面向______的软件设计方法。(2002上午填空28)

A)对象B)数据流C)数据结构D)控制结构

答案:C

分析:结构化开发方法是一种面向数据流、数据封闭性的开发方法,而JACKSON系统开发方法则是面向数据结构的开发方法。其基本思想是先建立输入输出的数据结构,再将其转换为软件结构。

【试题34】软件的用户界面作为人机接口起着越来越重要的作用,用户界面的______是用户界面设计中最重要的也是最基本的目标。(2003年上午填空29)

A)灵活性 B)风格多样性 C)美观性 D)易操作性

答案:D

分析:软件的用户界面是面向用户的。开发者应尽力遵循用户界面设计标准,花精力使得产品好用,不要错误地认为编写更灵巧的代码或是使用一套风格多样的颜色方案才是重要的事。Constantine(1995)指出,好的用户界面使得人们不用阅读用户手册或接受培训就能使用应用软件。

用户界面的易操作性是界面设计最重要的也是最基本的目标。越易操作,不但培训用户越容易,可以降低培训成本;而且用户求助越少,也降低了客户支持成本。

理论链接:7.4.4 系统详细设计

详细设计的任务是为每个模块进行详细的算法设计、为模块内的数据结构进行设计、对数据库(如果有的话)进行物理设计以及一些其他设计(代码设计、输入输出格式设计、人机对话设计、编写详细设计说明书、评审等)。详细设计的工具可以分为图形、表格、语言三种,包括程序流程图、盒图(N-S图)、PAD图、类程序设计语言(PDL,又称伪码)。

考点5:程序设计和测试★★★★★

考点点拨:本考点考查程序设计和测试。包括程序设计语言、程序设计方法、程序质量及系统测试和调试。

【试题35】扩展名为DLL的动态链接文件的特点是______。(2003年上午题3)

A)可以自由地插入到其他的源程序中使用

B)本身是一个数据文件,可以与其他程序动态地链接使用

C)本身可以独立运行,也可以供其他程序在运行时调用

D)本身不能独立运行,但可以供其他程序在运行时调用

答案:D

分析:动态链接库(dynamic link library,缩写为dll)是一个可以被其它应用程序共享的程序模块,其中封装了一些可以被共享的例程和资源。动态链接库文件的扩展名一般是dll,也有可能是drv、sys和fon,它和可执行文件(exe)非常类似,区别在于dll中虽然包含了可执行代码却不能单独执行,而应由windows应用程序直接或间接调用。动态链接库的优点有:

1.共享代码、资源和数据:使用dll的主要目的就是为了共享代码,dll的代码可以被所有的windows应用程序共享。

2.隐藏实现的细节:dll中的例程可以被应用程序访问,而应用程序并不知道这些例程的细节。

3.拓展开发工具如VB、VC、delphi的功能:由于dll是与语言无关的,因此可以创建一个dll,被c++、vb或任何支持动态链接库的语言调用。这样如果一种语言存在不足,就可以通过访问另一种语言创建的dll来弥补。

【试题36】源程序清单是在软件生存周期的______阶段产生的文档。(2004年下半年上午填空50)

A)软件概要设计 B)编码 C)软件详细设计 D)测试

答案:B

分析:编码阶段是将详细设计得到的处理过程的描述转换为基于某种计算机语言的程序,即源程序代码。

【试题37】软件语言是用于书写计算机软件的语言。它主要包括需求定义语言、___A___、___B___、程序设计语言以及___C___等,适用于软件开发的各个阶段。程序设计语言的基本成分是数据成分、运算成分、控制成分以及___D___。程序设计语言有多种分类法,例如,按成分性质分,有顺序语言,并发语言,并行语言,___E___。(2000年上午题3)

A:(1)数据定义语言(2)功能性语言(3)面向对象语言(4)函数式语言

B:(1)设计性语言(2)结构性语言(3)命令式语言(4)申述式语言

C:(1)过程语言(2)非过程语言(3)逻辑式语言(4)文档语言

D:(1)对象成分(2)变量成分(3)语句成分(4)传输成分

E:(1)交互式语言(2)分布语言(3)面向对象语言(4)高级语言答案:A)2 B)1 C)4 D)4 E.2

分析:软件语言是用于书写计算机软件的语言。它主要包括需求定义语言、功能性语言、设计性语言、程序设计语言以及文档语言等。程序设计语言可从不同角度分类,根据成分性质的不同,可分为:顺序语言、并发语言和分布式语言。

理论链接:程序设计

程序设计是将详细设计得到的处理过程的描述转换为基于某种计算机语言的程序,即源程序代码。在软件生命期中,程序经常需要被人阅读和理解。一个逻辑上正确但杂乱无章的程序是没有什么价值的,因为它无法供人阅读,导致难以测试、排错和维护,因此,要提高程序的可读性。提高程序可读性的关键是使程序结构简单清晰,结构化程序设计(SP)方法是达到这一目标的有效手段。

1.程序设计方法

结构化程序设计是一种典型的面向数据流的软件总体设计方法,它采用采用自顶向下、逐步求精的设计方法和单入口单出口的控制结构,且只包含顺序、选择和重复3种结构。不用或少用goto方式。

2.程序设计语言

程序设计语言是人机对话的媒介。用程序设计语言编写程序的过程是一项人类特定的智力活动。对软件开发项目的成功与否有重要的影响。此外,语言的技术特性会影响设计的质量,它既关系到人也关系到软件项目。

1)程序设计语言的分类

程序设计语言可以从不同角度进行分类。

根据程序设计语言的发展及抽象层次,可分:机器语言、汇编语言、面向过程语言、面向对象的语言、面向问题的语言和自然语言;

根据成分性质的不同,可分为:顺序语言、并发语言和分布式语言等;

根据程序设计的方式,可分为:命令式语言、面向对象的程序设计语言、函数式程序设计语言和逻辑型程序设计语言。

2)程序设计语言的选择

为开发一个特定项目选择程序设计语言时,必须从技术角度、工程角度、心理学角度评价和比较各种语言的适用程度,又必须考虑现实可能性。在选择与评价语言时,首先要从问题入手,确定它的要求是什么?这些要求的相对重要性如何?再根据这些要求和相对重要性来衡量能采用的语言。通常考虑的因素有:项目的应用范围、算法和计算复杂性、软件执行的环境、性能上的考虑与实现的条件、数据结构的复杂性、软件开发人员的知识水平和心理因素等。其中,项目的应用范围是最关键的因素。

新的更强有力的语言,虽然对于应用有很强的吸引力,但是因为已有的语言已经积累了大量的久经使用的程序,具有完整的资料、支撑软件和软件开发工具,程序设计人员比较熟悉,而且有过类似项目的开发经验和成功的先例,由于心理因素,人们往往宁愿选用原有的语种。所以应当彻底地分析、评价、介绍新的语言,以便从原有语言过渡到新的语言。

3.对源程序的质量要求

对源程序的质量要求,不仅仅是源程序语法、逻辑上的正确,此外还要求源程序具有良好的结构和良好的程序设计风格。使其易维护和易移植。

易维护是指写出的源程序便于阅读,便于测试和排除所发现的程序故障,能根据用户的需要很容易扩充其功能及改善其性能。

移植性指程序从一种系统环境转移到另一种不同系统环境运行的能力。

【试题38】通常,在软件的输入输出设计中,合理的要求是:______。(2004年下半年上午填空52)

A)数据尽量由用户来输入,以便给用户提供更大的自主性

B)输入过程应尽量容易,以减少错误的发生

C)不能在输入过程中检验数据的正确性

D)在输入过程中,为了不干扰用户,应尽量避免提示信息

答案:B

分析:软件的输入和输出是与用户的使用直接相关的。输入和输出的方式和格式应当尽可能方便用户的使用,使输入过程应尽量容易,以减少错误的发生。

【试题39】编制一个好的程序首先要确保它的正确性和可靠性,除此以外,通常更注重源程序的___A___。此外,还应强调良好的编程风格,例如,选择标识符的名字时应考虑___B___;在书写语句时应考虑___C___;在书写功能性注解时应考虑___D___。源程序中应包含一些内部文档,以帮助阅读和理解源程序,源程序的内部文档通常包括选择合适的标识符、注解和___E___。(2000年上午题5)

A:(1)易使用性、易维护性和效率(2)易使用性、易维护性和易移植性

软件工程作业及参考答案(版)

软件危机与软件工程 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 . 质量保证 ② A . 需求分析 B . 可行性研究 C 总体设计 D 模块化设计 ③ A . 文档编制 B . 运行维护 C . 测试 D . 验收 &软件开发中常采用的生命周期方法,由于其特征而一般称其为() A .层次模型 B .瀑布模型 C .螺旋模型 D .对象模型 9.描述软件生存周期的瀑布模型包括计划、 (A ) 、设计、编码、测试、维护等阶段。其中,设计阶段又可 以分成(B )和(C )两个步骤。 A :①需求分析 ②可行性研究 ③需求调查 ④问题定义 B, C :①方案设计 ②代码设计 ③概要(总体)设计 ④数据设计 ⑤详细设计 10.什么是软件危机?软件危机产生的原因? ".生命周期阶段的划分?每个阶段的任务? 可行性研究 软件工程 1软件危机是指在开发和( A .运行 B .设计 2 ?造成软件危机的原因是: A. 用户使用不当 C .硬件不可靠 )过程中所遇到的一系列严重问题。 B .对软件的错误认识 D ?缺乏好的开发方法和手段

软件工程基础知识点总结

软件工程基础部分知识点总结 知识点一软件工程的基本概念 1、软件定义:是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。 1)程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令(语句)序列。 2)数据是使程序能够正常操作信息的数据结构。 3)文档是与程序开发、维护和使用有关的图文资料。 国标(GB)计算机软件的定义:与计算机系统的操作相关的计算机程序、规程、规则以及可能有的文件、文档及数据。 2、软件特点: 1)软件是一种逻辑实体,而不是物理实体,具有抽象性,是计算机的无形部分; 2)软件的生产与硬件不同,它没有明显的制作过程; 3)软件在运行、使用期间不存在磨损、老化问题; 4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题; 5)软件复杂性高,成本昂贵; 6)软件开发涉及诸多的社会因素 3、软件的分类: 按照功能可以分为:应用软件、系统软件、支撑软件(或工具软件)

1)应用软件是为解决特定领域的应用而开发的软件。 2)系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。 3)支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具软件。 4、软件危机:是指在软件的开发和维护过程中所遇到的一系列严重问题。软件危机主要体现在以下几个方面: ①软件开发的实际成本和进度估计不准确 ②开发出来的软件常常不能使用户满意 ③软件产品的质量不高,存在漏洞,需要经常打补丁 ④大量已有的软件难以维护 ⑤软件缺少有关的文档资料 ⑥开发和维护成本不断提高,直接威胁计算机应用的扩大 ⑦软件生产技术进步缓慢,跟不上硬件的发展和人们需求增长 5、软件工程:此概念的出现源自软件危机。软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来开发与维护软件的学科。 1)研究软件工程的主要目的就是在规定的时间、规定的开发费用内开发出满足用户需求的高质量的软件系统(高质量是指错误率低、好用、易用、可移植、易维护等)。 2)软件工程的三个要素:方法、工具和过程。 ①方法:完成软件工程项目的技术手段;

软件工程课后作业

第1次作业 路松峰20140062 2018-07-29 10:32:40

软件产品的开发基本上是线性顺序进行的。 2、什么是模型? 模型是认识客观事物时,用文字、符号或者图表等进行简化问题描述的一种方式。 二、判断题 1、在软件开发中采用原型系统策略的主要困难是成本问题。 正确 2、软件过程改进也是软件工程的范畴。 正确 三、选择题 1、包含风险分析的软件工程模型是( D )。 A.喷泉模型 B.瀑布模型 C.增量模型 D.螺旋模型 2、软件过程是(C )。 A.特定的开发模型 B. —种软件求解的计算逻辑 C.软件开发活动的集合 D.软件生命周期模型 3、CMM模型将软件过程的成熟度分为5个等级。在(B )使用定量分析来不断地改进和管理软件过程。 A.管理级 B.优化级 C.定义级 D.可重复级 第3次作业 路松峰_20140062 2018-07-29 10:34:34 一、简答题 1、需求分析有哪三种方法? 面向功能分析、面向数据分析、面向对象分析 2、什么是面向数据结构方法? 面向数据结构方法是一类侧重从数据结构方面去分析和表达软件需求,进行软件设计的开发方法。该方法从数据结构入手,分析信息结构,并用数据结构图来表示,再在此基础上进行需求分析,进而导岀软件的结构。

二、判断题 1、需求评审人员主要由开发人员组成,一般不包括用户。 错误 2、非功能需求是从各个角度对系统的约束和限制,反映了应用对软件系统质量和特性的要求。正确 三、选择题 1、增量模型本质上是一种( C )。 A.线性顺序模型 B.整体开发模型 C.非整体开发模型 D.螺旋模型 2、需求工程的主要目的是( C )。 A.系统开发的具体方案 B.进一步确定用户的需求 C.解决系统是“做什么的问题” D.解决系统是“如何做的问题” 3、在E-R模型中,包含以下基本成分(D )。 A.数据、对象、实体 B.控制、关系、对象 C.实体、关系、控制 D.实体、属性、关系 第4次作业 路松峰_20140062 2018-07-29 10:35:04 一、简答题 1、面向对象分析模型的五个层次是什么? 五个层次:类与对象层,属性层,服务层,结构层,主题层 2、对象的五个特点是什么?

计算机公共基础

第一章数据结构与算法 1.1算法 算法:是指解题方案的准确而完整的描述。 算法不等于程序,也不等计算机方法,程序的编制不可能优于算法的设计。 算法的基本特征:是一组严谨地定义运算顺序的规则,每一个规则都是有效的,是明确的,此顺序将在有限的次数下终止。特征包括: (1)可行性; (2)确定性,算法中每一步骤都必须有明确定义,不充许有模棱两可的解释,不允许有多义性; (3)有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后终止,包括合理的执行时间的含义; (4)拥有足够的情报。 算法的基本要素:一是对数据对象的运算和操作;二是算法的控制结构。 指令系统:一个计算机系统能执行的所有指令的集合。 基本运算和操作包括:算术运算、逻辑运算、关系运算、数据传输。 算法的控制结构:顺序结构、选择结构、循环结构。 算法基本设计方法:列举法、归纳法、递推、递归、减斗递推技术、回溯法。 算法复杂度:算法时间复杂度和算法空间复杂度。 算法时间复杂度是指执行算法所需要的计算工作量。 算法空间复杂度是指执行这个算法所需要的内存空间。 1.2数据结构的基本基本概念 数据结构研究的三个方面: (1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构; (2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构; (3)对各种数据结构进行的运算。 数据结构是指相互有关联的数据元素的集合。 数据的逻辑结构包含: (1)表示数据元素的信息; (2)表示各数据元素之间的前后件关系。 数据的存储结构有顺序、链接、索引等。 线性结构条件: (1)有且只有一个根结点; (2)每一个结点最多有一个前件,也最多有一个后件。 非线性结构:不满足线性结构条件的数据结构。 1.3线性表及其顺序存储结构 线性表由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是线性的。 在复杂线性表中,由若干项数据元素组成的数据元素称为记录,而由多个记录构成的线性表又称为文件。 非空线性表的结构特征: (1)且只有一个根结点a1,它无前件; (2)有且只有一个终端结点an,它无后件; (3)除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。结点个数n称为线性表的长度,当n=0时,称为空表。 线性表的顺序存储结构具有以下两个基本特点: (1)线性表中所有元素的所占的存储空间是连续的; (2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。 ai的存储地址为:ADR(ai)=ADR(a1)+(i-1)k,,ADR(a1)为第一个元素的地址,k代表每个元素占的字节数。 顺序表的运算:插入、删除。(详见14--16页) 1.4栈和队列 栈是限定在一端进行插入与删除的线性表,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。 栈按照“先进后出”(FILO)或“后进先出”(LIFO)组织数据,栈具有记忆作用。用top表示栈顶位置,用bottom表示栈底。 栈的基本运算:(1)插入元素称为入栈运算;(2)删除元素称为退栈运算;(3)读栈顶元素是将栈顶元素赋给一个指定的变量,此时指针无变化。 队列是指允许在一端(队尾)进入插入,而在另一端(队头)进行删除的线性表。Rear指针指向队尾,front 指针指向队头。 队列是“先进行出”(FIFO)或“后进后出”(LILO)的线性表。 队列运算包括(1)入队运算:从队尾插入一个元素;(2)退队运算:从队头删除一个元素。 循环队列:s=0表示队列空,s=1且front=rear表示队列满

软件工程知识点总结

软件工程(简要知识点) 一、. 软件过程五个模型对比(瀑布模型、快速原型、增量、螺旋、喷泉模型) 二、可行性研究: 1、任务:用最小的代价在尽可能短的时间内确定问题是否能够解决。 2、四个方面:技术、经济、操作可行性、法律 3、数据流图四种成分:1、源点/终点2、处理3、数据存储 4、数据流 三、需求分析: 1、任务:确定系统必须完成哪些工作,对目标系统提出完整、清晰、具体的要求。 2、结构化方法就是面向数据流自顶向下逐步求精进行需求分析的方法。 3、实体联系图:1、数据对象2、属性3、联系(1:1、1:N、M:N) 四、总体设计: 1.任务:回答“概括的说,系统应该如何实现”,用比较抽象概括的方式确定系统如何完成预定的任务,也就是说应该确定系统的物理配置方案,并且进而确定组成系统的每个程序结构。 2.系统设计阶段(确定系统具体实施方案)、结构设计阶段(确定软件结构) 3.模块独立:内聚和耦合 4. 耦合表示一个软件结构内各个模块之间的互连程度,应尽量选用松散耦合的系统

5. 内聚(Cohesion): 一个模块内各元素结合的紧密程度 6.面向数据流的设计方法:变换流和事务流 五、详细设计: 1.任务:确定应该怎样具体的实现所要求的系统,也就是说经过这个阶段的设计工作应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。 2.过程设计的工具(程序流程图、盒图、PAD图、判定表、判定树) 七、测试: 1、单元测试:又称模块测试。每个程序模块完成一个相对独立的子功能,所以可以对该模块进行单独的测试。由于每个模块都有清晰定义的功能,所以通常比较容易设计相应的测试方案,以检验每个模块的正确性。 2、集成测试: 在单元测试完成后,要考虑将模块集成为系统的过程中可能出现的问题,例如,模块之间的通信和协调问题,所以在单元测试结束之后还要进行集成测试。这个步骤着重测试模块间的接口,子功能的组合是否达到了预期要求的功能,全程数据结构是否有问题等。 3、白盒测试技术(逻辑覆盖、基本路经测试)

软件工程师考试大纲

一、考试说明 1.考试要求: (1) 掌握数据表示、算术和逻辑运算; (2) 掌握相关的应用数学、离散数学的基础知识; (3) 掌握计算机体系结构以及各主要部件的性能和基本工作原理; (4) 掌握操作系统、程序设计语言的基础知识,了解编译程序的基本知识; (5) 熟练掌握常用数据结构和常用算法; (6) 熟悉数据库、网络和多媒体的基础知识; (7) 掌握C程序设计语言,以及C++、Java、Visual、Basic、Visual C++中的一种程序设计语言; (8) 熟悉软件工程、软件过程改进和软件开发项目管理的基础知识; (9) 熟悉掌握软件设计的方法和技术; (10) 掌握常用信息技术标准、安全性,以及有关法律、法规的基本知识; (11) 了解信息化、计算机应用的基础知识; (12) 正确阅读和理解计算机领域的英文资料。 2.通过本考试的合格人员能根据软件开发项目管理和软件工程的要求,按照系统总体设计规格说明书进行软件设计,编写程序设计规格说明书等相应的文档,组织和指导程序员编写、调试程序,并对软件进行优化和集成测试,开发出符合系统总体设计要求的高质量软件;具有工程的实际工作能力和业务水平。 3.本考试设置的科目包括: (1) 计算机与软件工程知识,考试时间为150分钟,笔试; (2) 软件设计,考试时间为150分钟,笔试。

二、考试范围 考试科目 1.计算机科学基础 1.1 数制及其转换 二进制、十进制和十六进制等常用制数制及其相互转换 1.2 数据的表示 数的表示(原码、反码、补码、移码表示,整数和实数的机内表示,精度和溢出)非数值表示(字符和汉字表示、声音表示、图像表示) 校验方法和校验码(奇偶校验码、海明校验码、循环冗余校验码) 1.3 算术运算和逻辑运算 计算机中的二进制数运算方法 逻辑代数的基本运算和逻辑表达式的化简 1.4 数学基础知识 命题逻辑、谓词逻辑、形式逻辑的基础知识 常用数值计算(误差、矩阵和行列式、近似求解方程、插值、数值积分) 排列组合、概率论应用、应用统计(数据的统计分析) 运算基本方法(预测与决策、线性规划、网络图、模拟) 1.5 常用数据结构 数组(静态数组、动态数组)、线性表、链表(单向链表、双向链表、循环链表)、队列、栈、树(二叉树、查找树、平衡树、线索树、线索树、堆)、图等的定义、存储和操作 Hash(存储地址计算,冲突处理)

软件工程课后作业

路松峰_ 2018-07-29 10:32:40 一、简答题 1.什么是软件工程 软件工程是关于软件生产的各个方面的工程学科。 二、判断题 1、软件危机的主要表现是软件需求增加,软件价格上升。 / 正确 2、软件就是程序,编写软件就是编写程序。 错误 三、选择题 1、用来辅助软件开发、运行、维护、管理、支持等过程中的活动的软件称为软件开发工具,通常也称为( A )工具。 A. CASE C. CAM D. CAD 2、在下列选项中,( C )不是软件的特征。 A.系统性与复制性 B.可靠性与一致性 C.有形性与可控性 D.抽象性与智能性 ) 3、软件工程的三要素是( B ) A.技术、方法和工具 B.方法、工具和过程 C. 方法、对象和类 D.过程、模型和方法

第2次作业 路松峰_ 2018-07-29 10:33:32 一、简答题 … 1、快速原型模型的主要优点是什么 软件产品的开发基本上是线性顺序进行的。 2、什么是模型 模型是认识客观事物时,用文字、符号或者图表等进行简化问题描述的一种方式。 二、判断题 1、在软件开发中采用原型系统策略的主要困难是成本问题。 正确 2、软件过程改进也是软件工程的范畴。 · 正确 三、选择题 1、包含风险分析的软件工程模型是( D )。 A.喷泉模型 B.瀑布模型 C.增量模型 D.螺旋模型 2、软件过程是( C )。 A.特定的开发模型 B.一种软件求解的计算逻辑 C.软件开发活动的集合 D.软件生命周期模型 3、CMM模型将软件过程的成熟度分为5个等级。在(B )使用定量分析来不断地改进和管理软件过程。

… 第3次作业 路松峰_ 2018-07-29 10:34:34 一、简答题 1、需求分析有哪三种方法 面向功能分析、面向数据分析、面向对象分析 ) 2、什么是面向数据结构方法 面向数据结构方法是一类侧重从数据结构方面去分析和表达软件需求,进行软件设计的开发方法。该方法从数据结构入手,分析信息结构,并用数据结构图来表示,再在此基础上进行需求分析,进而导出软件的结构。 二、判断题 1、需求评审人员主要由开发人员组成,一般不包括用户。 错误 2、非功能需求是从各个角度对系统的约束和限制,反映了应用对软件系统质量和特性的要求。正确 三、选择题 ;

软件工程知识点汇总

软件工程知识点汇总 1 软件工程、软件工程方法学:三要素 1.1 软件工程:○1应用系统化的、规范化的、可度量的方法来开发、运行和维护软件,即将工 程应用到软件;○2对○1的各种方法的研究 1.2 软件工程是一门研究用工程化方法构建和维护有效的实用的和高质量的软件的学科 1.3 软件工程三要素是:方法、工具、过程 软件工程的方法:是指完成软件开发各项任务的技术方法 软件工具:是指为软件工程方法的运用提供自动半自动的软件支撑环境 软件工程过程:是指将软件工程方法和工具综合起来以达到合理、及时地进行计算机软件开发这一目的 2 软件工程的原则包括:模块化原则、信息隐蔽原则、抽象化原则、模块独立原则(内聚、耦合)、 依赖倒转原则、开闭原则等 2.1 模块化原则:指解决一个复杂问题时自顶向下逐层把软件系统划分为若干模块的过程。模 块是程序中相对独立的成分,一个独立的编程单位,应有良好的编程接口,模块的大小要 适中,模块过大会使模块内部的复杂性增加不利于模块的理解和修改,模块过小会导致整 个系统表示过于复杂,不利于控制系统的复杂性。 2.2 信息隐蔽原则:采用封装技术,将程序模块的实现细节隐藏起来,使模块接口尽量简单。 2.3 抽象化原则:抽取事物最基本的特性和行为,忽略非本质细节,采用分层次抽象,自顶向 下,逐层细化的办法控制软件开发过程的复杂性。 2.4 模块独立原则:是指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少 且接口简单。要求在一个物理模块内集中逻辑上相互关联的计算机资源,保证模块间由松 散的偶合关系,模块内部有较强的内聚性,这有助于控制系统的复杂性。(即:高内聚低 耦合) 2.5 依赖倒转原则:抽象不应该依赖于细节,细节应该依赖于抽象。 2.6 开闭原则:软件实体应该是可扩展的,但是不可以修改。即对于扩展是开放的,对于更改 是封闭的。 3 软件开发模型:瀑布模型;快速原型;喷泉模型;各种模型的工作原理、阶段、每阶段任务、 特点、示意图; 软件开发模型(也称为软件过程模型):是从软件项目需求定义开始直至软件经使用后废弃为止,跨 越整个生命周期的系统开发、运行和维护所实施的全部过程、活动和任务的结构框架 3.1 瀑布模型(又称线性模型): 3.1.1工作原理:规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。 前一阶段的工作成果是后一阶段工作开始的基础.所以,每个阶段都必须交出合格的文档,必须对前阶段的工作进行评审,前一阶段的工作完成后才可以开始后一阶段的工作 3.1.2 阶段: 计划时期:问题定义、可行性研究 开发时期:需求分析、设计、编码、测试 运行时期:运行和维护 3.1.3 各阶段任务: 1.需求分析和定义 在软件项目进行过程中,需求分析是从软件定义到软件开发的关键步骤,是今后软件,开发的基本依据,同时也是用户对软件产品进行验收的基本依据。需求分析和定义是以用

软件开发工程师面试题(基础知识)

.NET开发人员试题(综合) 1、用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的 关系以及为什么要这样分层? 2、软件开发过程一般有几个阶段?每个阶段的作用? 3、您对编程的兴趣如何?工作中遇到不懂的问题是怎样去解决的?您一 般怎样去提高自己的编程水平? .NET开发人员试题(基础) 1、请你说说.NET中类和结构的区别? 答:结构是值类型,在堆栈上分配地址,所有的基类型都是结构类型,如 System.int或System.string,不能被继承 类是引用类型(new),可以被继承,在堆上分配地址,堆栈的执行效率要比堆的执行效率高,但堆栈的资源有限, 2、死锁的必要条件?怎么克服? 答:系统资源不足,资源分配不当,一个资源每次只能被一个进程使用,一个资源请求资源时,而此时这个资源阻塞,且对已获得的资源不放 3、接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以 继承实 体类? 答:接口是可以继承接口;抽象类是可以实现接口;抽象类可以继承实体类,只要实体类有明确的构造函数. 4、构造器 Constructor是否可以被继承?是否可以被Override? 答: Constructor不可以被继承,因此不能被重写(Override),但可以被重载(Overloading) 5、当一个线程进入一个对象的方法后,其它线程是否可以进入该对象的 方法?

答:不可以,一个对象的方法只能由一个线程访问 6、C#是否可以对内存直接进行操作? 答:可以,因为可以使用指针 7、数组有没有Length()这个方法?string有没有这个方法?8、谈谈final,finally,finallize的区别? 答:final用来申明属性、方法、类,表示属性不可变,方法不可以被覆盖,类不可以被继承 Finally是异常处理语句结构,总是执行 Finallize是object类一个方法,在垃圾回收机制中执行的时候会被调用被回收对象的方法 9、C#中委托是什么?事件是不是一种委托? 答:委托是一种安全的类似于函数指针,但比指针安全,它可以把方法作为一个参数传递给另一个方法,可理解为指向函数的引用,事件是一种消息机制,是一种委托,委托不带方法体。 10、Override, Overload,的区别? 11、概述反射、序列化和反序列化?12、UDP和TCP连接有和异 同?13、进程和线程分别该怎么理解? 14、ASP。NET页面之间传递值的几种方式? 15、a=10,b=15在不使用第三方变量的前提下,把a,b的值互换。 答:a=b+(b=a)*0; 16、请简述面向对象的多态的特性及意义? 17、Session喜欢丢值且占内存,Cookies不安全,请问用什么办法替代这两种方法? 18、try{}里有一个return语句,那紧跟在这个后边有个finally{}里的代码会不会被执行,什么时候执行? 20、求当前日期所在的周的起止日期。 答:select sysdate-to_char(sysdate, 'D ')+1 as起始日 期,sysdate+7-to_char(sysdate, 'D ') as 中止日期 from dual 21、c#中的&符号与&&符号有什么区别?22、函数和存储过程的区别?

软件工程基础(复习题及答案)

复习题 一、判断题(每题2分,共30分) 1.螺旋模型是在瀑布模型和增量模型的基础上增加了风险分析 活动。(对) 2.数据字典是对数据流图中的数据流,加工、数据存储、数据的源和终点进行详细定义。(错) 3.JAVA语言编译器是一个CASE工具。(对)。 4.软件是指用程序设计语言(如PASCAL ,C,VISUAL BASIC 等)编写的程序,软件开发实际上就是编写程序代码。(错) 5.软件模块之间的耦合性越弱越好。(对) 6.数据库设计说明书是一个软件配置项(对) 7.在面向对象的软件开发方法中,每个类都存在其相应的对象,类是对象的实例,对象是生成类的模板。(错) 8.过程描述语言可以用于描述软件的系统结构。(错) 9.如果通过软件测试没有发现错误,则说明软件是正确的。(错) 10.快速原型模型可以有效地适应用户需求的动态变化。(对) 11.模块化,信息隐藏,抽象和逐步求精的软件设计原则有助于得到高内聚,低耦合度的软件产品。(对) 12.集成测试主要由用户来完成。(错) 13.确认测试计划应该在可行性研究阶段制定(错) 14.白盒测试无需考虑模块内部的执行过程和程序结构,只要了解模块的功能即可。(错) 15.软件概要设计包括软件系统结构设计以及数据结构和数据库设计。(对) 16.在可行性研究中最难决断和最关键的问题是经济可行性。(╳) 17.耦合是指一个模块内各个元素彼此结合的紧密程度。(╳) 18. 一笔交易、一个动作、甚至操作人员按一个按钮都可以看做是一次事物。(√)

19.概要设计阶段完成的主要文档是概要设计说明书。(√) 20.过大的模块可能是由于分解不充分造成的,即使降低模块独立性也必须继续分解。(╳) 21.程序设计语言中应绝对禁止使用GOTO语句。(╳) 22.类是关于对象性质的描述,由方法和数据组成。(√) 23.随着软件技术的发展,人们逐渐认识到编码不仅要强调效率还要强调清晰。(√) 25.为保证程序的安全,必须做到程序中没有任何错误存在,即容错。(╳) 26.如果把软件开发所需的资源画成一个金字塔,人是最基本的资源。(√) 名词解释 1.数据词典——是描述数据信息的集合,它对数据流图中的各 个元素按规定格式进行详细的描述和确切的解释,是数据流图的补充工具。 2.数据流图——他以图形的方式反映系统的数据流程 3.白盒测试——按照程序内部的结构测试程序,检验程序中的 每条路径是否都能按预定要求正确工作。有两种测试法既逻辑覆盖测试法和路径测试法 4.黑盒测试——按照程序的功能测试程序,检验与程序功能有 关的输入、输出与程序执行是否正确。有四种方法既等价分类法、边界值分析法、错误猜测法和因果图法 5.完善性维护——为了适应用户业务和机构的发展变化而对软 件的功能、性能进行修改、扩充的过程称为完善性维护。因为各种用户的业务和机构在相当长的时期内不可能是一成不变的,所以功能、性能的增加是不可避免的,而且这种维护活动在整个维护工作中所占的比重很大 6.软件可靠性——指在给定的时间内,程序按照规定的条件成 功地运行的概率 7.软件配置——是一个软件在生存周期内,他的各种形式、各 种版本的文档与程序的总称

c语言公共基础课本

第1章数据结构与算法 1.1算法 1.算法的概念:是指解题方案的准确而完整的描述 2.算法的基本特征:可行性、确定性、有穷性(有限的时间)、拥有足够的情报 3.算法的复杂度:时间复杂度和空间复杂度(1)时间复杂度:算法所需要的计算工作量(算法所执行的基本运算次数) (2)空间复杂度:执行这个算法所需要的内存空间1.2数据结构的基本概念 1.数据结构研究的三个问题 (1)逻辑结构:指反应数据元素之间逻辑关系的数据结构 (2)存储结构(物理结构):数据的逻辑结构在计算机存储空间中的存放形式。

(3)对各种数据结构进行的运算 2.数据结构定义:是指带有结构的数据元素的集合。所谓结构就是指数据元素之间的前 后件关系。 在数据结构中,没有前件的结点称为根结点,没有后件的结点为终端结点(也叫叶子结点)。3.空的数据结构:一个元素都没有的数据结构。4.数据结构的种类:线性结构与非线性结构。 线性结构:有且只有一个根结点,每一个结点最多有一个前件,也最多有一个后件。 非线性结构:如果一个数据结构不是线性结构,则称之为非线性结构。 1.3线性表及其顺序存储 1.线性表是最简单、最常用的一种线性结构。2.非空线性表的结构特征: (1)有且只有一个根结点,无前件

(2)有且只有一个终端(叶子)结点,无后件 (3)除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。 在线性表中结点的个数n称为线性表的长度,当n=0时,称为空表。 3.线性表顺序存储结构的基本特点: (1)所有元素所占的存储空间是连续的 (2)各元素在存储空间中是按逻辑顺序依次存放的4.在长度为n的顺序存储的线性表中,当在任何位置上插入或删除一个元素概率都相等时, 插入或删除一个元素所需移动元素的平均 个数是为n/2。 1.4栈和队列 1.栈:限定在一端进行插入与删除的线性表。 2.栈的结构特点:先进后出或后进先出 3.栈的基本运算:入栈运算、退栈运算、读栈

软件工程作业第一章

1-1什么是软件危机?它有哪些典型表现?为什么会出现软件危机? 软件危机:在计算机软件的开发和维护过程中所遇到的一系列严重问题。 典型表现:软件总是超出预算、落后于进度表,而且产品质量不可靠、维护困难等。 危机原因: 1、软件受其自身特点的影响,生产过程不象硬件那样规范,受人的因素和外界影响很大,在软件生产的各阶段都会引入不同程度的错误,造成不能预期完成任务,致使成本上升,甚至导致软件失败。 2、主客观不相适应。 ●客观上:软件规模增大、功能要求越来越复杂,需求不断变化等; ●主观上:传统的个体化开发观念和方法的影响,无开发过程指导,无开发过程管理;由于主客观矛盾,必然产生软件质量差、开发超期、超预算、维护困难等现象。 1-3 什么是软件工程?它有哪些本质特性?怎样用软件工程消除软件危机? ?基本思想:是强调在软件开发过程中应用工程化原则,解决软件的整体质量较低、最后期限和费用没有保证等问题。 ?软件工程定义:是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它. ?软件工程的根本在于提高软件的质量与生产率,最终实现软件的工业化生产。 本质特性:P6 消除软件危机:软件工程基本原理7条。 1-6 什么是软件过程?它与软件工程方法学有何关系? ?软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。 ?过程定义了运用方法的顺序、应该交付的文档资料、为保证软件质量和协调变化所需要采取的管理措施,以及标志软件开发各个阶段任务完成的里程碑。 关系:是软件工程方法学包含3个要素(方法、工具和过程)之一。 1-7 什么是软件生命周期模型?试比较瀑布模型、(快速)原型模型、增量模型和螺旋模型、喷泉模型的优缺点,说明每种模型的适用范围。 生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,也称为过程模型。 瀑布模型:它将软件生命周期划分为需求分析、软件设计、程序编写、软件测试和运行维护等基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。优点:文档驱动。 强迫开发人员采用规范的方法;严格地规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。遵守瀑布模型的文档约束,将使软件维护变得比较容易一些。 缺点:系统可能不满足需求,用户仅仅通过写在纸上的静态的规格说明,很难全面正确地认识动态的软件产品 适用范围:软件需求明确。 原型模型:在初步调查了解的基础上,提供快速的软件建造工具,开发出一个功能并不十分完善的可实际运行的系统,即原型。需求分析入手快速、表达直观、容易交流。重点解决瀑

国家二级公共基础知识(程序设计基础、软件工程基础)-试卷1

国家二级公共基础知识(程序设计基础、软件工程基础)-试卷 1 (总分:72.00,做题时间:90分钟) 一、选择题(总题数:36,分数:72.00) 1.选择题下列各题A、B、C、D四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上。(分数: 2.00) __________________________________________________________________________________________ 解析: 2.下列叙述中正确的是( )。 (分数:2.00) A.程序执行的效率与数据的存储结构密切相关√ B.程序执行的效率只取决于程序的控制结构 C.程序执行的效率只取决于所处理的数据量 D.以上都不正确 解析:解析:影响程序执行效率的因素有很多,如数据的存储结构、程序处理的数据量、程序的算法等。顺序存储结构和链式存储结构在数据插入和删除操作上的效率就存在差别。其中,链式存储结构的效率要高一些。 3.下列描述中,不符合良好程序设计风格要求的是( )。 (分数:2.00) A.程序的效率第一,清晰第二√ B.程序的可读性好 C.程序中要有必要的注释 D.输入数据前要有提示信息 解析:解析:一般来讲,程序设计风格是指编写程序时所表现出的特点、习惯和逻辑思路。程序设计风格总体而言应该强调简单和清晰,程序必须是可以理解的。著名的“清晰第一,效率第二”的论点已成为当今主导的程序设计风格。 4.结构化程序所要求的基本结构不包括( )。 (分数:2.00) A.顺序结构 B.GOTO跳转√ C.选择(分支)结构 D.重复(循环)结构 解析:解析:结构化程序的基本结构有:顺序结构、选择结构和循环结构,没有GOTO跳转结构。 5.下列选项中不属于结构化程序设计原则的是( )。 (分数:2.00) A.可封装√ B.自顶向下 C.模块化 D.逐步求精 解析:解析:结构化设计方法的主要原则可以概括为自顶向下、逐步求精、模块化、限制使用goto语句。 6.结构化程序设计的基本原则不包括( )。 (分数:2.00) A.多元性√ B.自顶向下 C.模块化

软件工程期末复习知识点整理

复习整理 、绪论 1. 软件的定义 软件是能够完成预定功能和性能的可执行的计算机程序,包括使程序正常执行所需要的数据,以及有关描述程序操作和使用的文档。(软件=程序+文档) 2.软件工程的定义 是指导计算机软件开发和维护的一门工程学科;采用工程化的原理与方法对软件进行计划、开发和维护;把证明正 确的管理技术和最好技术综合运用到软件开发中;研究经济地开发岀高质量的软件方法和技术;研究有效维护软件 的方法和技术。 3.软件危机的概念,及出现的原因 软件开发技术的进步未能满足发展的要求。在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。 产生原因: ⑴软件规模越来越大,结构越来越复杂 ⑵软件开发管理困难而复杂。 ⑶软件开发费用不断增加。 ⑷软件开发技术落后。 ⑸生产方式落后,仍采用手工方式。 ⑹开发工具落后,生产率提高缓慢。 4.三种编程范型的特点 (1)过程式编程范型:把程序理解为一组被动的数据和一组能动的过程所构成;程序=数据结构 +算法;着眼于程序的过程和基本控制结构,粒度最小 (2)面向对象编程范型:数据及其操作被封装在对象中;程序=对象+消息;着眼于程序中的对 象,粒度比较大 (3)基于构件技术的编程范型:构件是通用的、可复用的对象类;程序=构件+架构;眼于适合 整个领域的类对象,粒度最大 二、软件生存周期与软件过程 1、软件生存周期的定义,把生存周期划分为若干阶段的目的是什么,有哪几个主要活动 定义:一个软件从开始立项起,到废弃不用止,统称为软件的生存周期 目的:软件生存周期划分为计划、开发和运行3个时期;把整个生存周期划分为较小的阶段, 给每个阶段赋予确定而有限的任务,就能够化简每一步的工作内容,使因为软件规模而增长而大大增加了软件复杂性变得较易控制和管理。 主要活动:需求分析、软件分析、软件设计、编码、软件测试、运行维护( P19) 2、软件生命周期划分为哪几个阶段 软件生命周期分为三个时期八个阶段: 软件定义:问题定义、可行性研究; 软件开发:需求分析、概要设计、详细设计、编码、测试; 软件运行:软件维护

软件工程大作业.

软件工程大作业 题目:学生档案管理系统 小组成员:戚盈洁( 王大伟( 王磊( 霍成海( 目录 第一章. 系统调查 (3 1.1系统调查内容 (3 1.2系统调查方法 (3 第二章. 系统分析 (3 2.1 系统分析 (3 2.2 系统调结构图 (4 2.3 子系统功能描述 (4 第三章. 系统设计 (6 3.1 界面设计原则 (6 3.2 数据库设计 (6 3.3 代码设计 (10 第四章. 学生照片管理模块设计 (14

4.1 ImageFunc模块 (14 4.2 设计照片管理窗体 (16 4.3 在学生信息管理窗体中添加照片管理代码 (17 第五章. 系统测试 (18 5.1 系统测试项目 (18 5.2 系统评估 (20 第一章. 系统调查 1.1系统调查内容 学校各院系基本概况:院系名称,专业设置,课程设置,课时安排,学生人数,学生班级数等。 学校资源条件调查,包括计算机配备,网络支持条件等。 各院系专业设置概况:现有开设专业及规划中开设专业设置,专业开设课程,各课程授课教师与成绩处理。 学校各部门(学生处、教务处、档案管理室、各院系对学生基本情况的需求与掌握,对学生基本信息的处理方式与业务流程。 学校各部门、单位、教师、学生对系统的其他要求和希望。 1.2系统调查方法 通过对部分高校学生档案管理人员的访问,了解到目前大部分高校的档案管理工作存在工作效率低,成本高,保密性差,查询困难等问题。大部分工作人员都提出需要一个具有检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本

低等优点的现代化信息管理系统。为解决此问题我们决定开发一个既方便又操作简单,功能较为齐全的学生档案管理系统。 第二章. 系统分析 2.1 系统分析 1 系统开发的总体任务是学生档案管理的系统化和规范化。 2 系统开发的目标是使档案管理工作科学化和规范化,提高安全系数。 3 系统功能树本系统主要功能是实现学生基本情况的管理。 图3.1学生档案管理系统功能模块 2.2 系统调结构图

二级考试公共基础知识单元软件工程

二级考试公共基础知识单元:软件工程 A005:构成计算机软件的是() A、程序和文档 B、程序和数据 C、程序、数据及相关文档 D、源代码 参考答案:C A006:软件生命周期可分为定义阶段、开发阶段和维护阶段,下面不属于开发阶段任务的是()A、可行性研究B、测试C、设计D、实现 参考答案:A A007:下面不能作为结构化方法软件需求分析工具的是() A、数据字典(DD) B、判定表 C、数据流程图(DFD图) D、系统结构图 参考答案:D A052(图):软件详细设计产生的图如下: 该图是() A、E-R图 B、PAD图 C、程序流程图 D、N-S图 参考答案:C A056:软件设计中划分模块的一个准则是() A、低内聚低耦合 B、高内聚高耦合 C、低内聚高耦合 D、高内聚低耦合 参考答案:D A057:下列选项中不属于结构化程序设计原则的是() A、模块化 B、可封装 C、逐步求精 D、自顶向下 参考答案:B A097:下列不属于软件开发阶段任务的是() A、实现 B、设计 C、可行性研究 D、测试 参考答案:C A148:面向对象方法中,继承是指() A、各对象之间的共同性质 B、类之间共享属性和操作的机制 C、一个对象具有另一个对象的性质 D、一组对象所具有的相似性质 参考答案:B A149:软件生命周期是指()

A、软件的开发过程 B、软件的运行维护过程 C、软件产品从提出、实现、使用维护到停止使用退役的过程 D、软件从需求分析、设计、实现到测试完成的过程 参考答案:C A150:软件测试的目的是() A、评估软件可靠性 B、改正程序中的错误 C、发现程序中的错误 D、发现并改正程序中的错误参考答案:C A189:下列属于系统软件的是() A、财务管理系统 B、数据库管理系统 C、杀毒软件 D、编辑软件word 参考答案:B A190:程序测试的目的是() A、执行测试用例 B、诊断和改正程序中错误 C、发现并改正程序中错误 D、发现程序中的错误 参考答案:D A228:下面对软件特点描述正确的是() A、软件在使用中存在磨损,老化问题 B、软件是一种逻辑实体,具有抽象性 C、软件复制不涉及知识产权 D、软件具有明显的制作过程 参考答案:B A229:下面属于良好程序设计风格的是() A、随意使用无条件转移语句 B、程序效率第一 C、程序输入输出的随意性 D、源程序文档化 参考答案:D A230:下面对软件测试和软件调试叙述错误的是() A、正确的执行测试用例 B、严格执行测试计划,排除测试的随意性 C、软件测试不需考虑测试成本 D、软件调试的目的是改正软件错误 参考答案:C A268:下面属于软件设计阶段产生的文档是() A、详细设计规格说明书 B、数据流程图和数据字典 C、软件需求规格说明书 D、软件确认测试计划 参考答案:A A269:软件工程包括的要素是() A、算法和工具 B、技术和管理 C、算法和过程 D、方法、工具和过程 参考答案:D A308(图):某系统结构图如下图所示,该系统结构图中最大扇出数是()。

软件工程知识点总结

软件工程知识点总结 软件工程专业是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。接下来是为大家收集的软件工程知识点总结,以供大家学习! 知识点一软件工程的基本概念 1、软件定义:是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。 1)程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令(语句)序列。 2)数据是使程序能够正常操作信息的数据结构。 3)文档是与程序开发、维护和使用有关的图文资料。 国标(GB)计算机软件的定义:与计算机系统的操作相关的计算机程序、规程、规则以及可能有的文件、文档及数据。 2、软件特点: 1)软件是一种逻辑实体,而不是物理实体,具有抽象性,是计算机的无形部分; 2)软件的生产与硬件不同,它没有明显的制作过程; 3)软件在运行、使用期间不存在磨损、老化问题; 4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题; 5)软件复杂性高,成本昂贵; 6)软件开发涉及诸多的社会因素

3、软件的分类: 按照功能可以分为:应用软件、系统软件、支撑软件(或工具软件) 1)应用软件是为解决特定领域的应用而开发的软件。 2)系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。 3)支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具软件。 4、软件危机:是指在软件的开发和维护过程中所遇到的一系列严重问题。软件危机主要体现在以下几个方面: ①软件开发的实际成本和进度估计不准确 ②开发出来的软件常常不能使用户满意 ③软件产品的质量不高,存在漏洞,需要经常打补丁 ④大量已有的软件难以维护 ⑤软件缺少有关的文档资料 ⑥开发和维护成本不断提高,直接威胁计算机应用的扩大 ⑦软件生产技术进步缓慢,跟不上硬件的发展和人们需求增长 5、软件工程:此概念的出现源自软件危机。软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来开发与维护软件的学科。

软件工程作业(答案参考)

软件工程第一次作业 1)软件工程适用范围? 答:软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。在现代社会中,软件应用于多个方面。典型的软件比如有电子邮件、嵌入式系统、人机界面、办公套件、操作系统、编译器、数据库、游戏等。同时,各个行业几乎都有计算机软件的应用,比如工业、农业、银行、航空、政府部门等。这些应用促进了经济和社会的发展,使得人们的工作更加高效,同时提高了生活质量。 2)软件工程如何控制系统开发的复杂性的? 答:可理解性(understandability)。系统具有清晰的结构,能直接反映问题的需求。可理解性有助于控制软件系统的复杂性,并支持软件的维护、移植或重用。 3)以你的经验,举例说明一个成熟的软件通常采用什么方法来适应现实世界的变化的?答:以猎豹游览器为例,开始软件投入市场公测,软件自带收集错误报告的程式,当遇到问题软件错误,会将相关信息反馈到接受错误信息的服务器,已方便程序员及时发现问题加以修复,修复完成后提供程序更新,循环此法提供软件运行稳定性,另外还有用户反馈的相关功能,对软件的建议也会收集到服务器,按实用性需求程序员可在原有程序上开发调整更适合用户使用的程序。 4)假设某软件公司,能为同一个用户开发两个不同层次的软件:一个层次的软件功能非常强大,在满足用户所有需求的基础上,还能提供大大超过用户需求的其他更多更强的功能;另一个层次的软件仅仅能满足用户需求,但没有提供其他额外的功能。请问如果你是项目负责人,你会选择为客户开发那个层次的软件? 答:我会选择仅仅满足用户需求的软件。因为太多的功能,相对于非专业的人员,在用户体验上可能会造成困扰,太多的功能会导致难以操作。而且功能强大的软件还会给用户费用上带来不必要的投入,软件是以人为本,方便用户工作,达到提高工作效率的目的。若然日后此用户需要更多功能的时候,我们还是可以向其软件公司提供升级功能解决用户需求。

相关文档
最新文档