系统开发可行性报告范文

时间:2023-03-21 06:27:26

导语:如何才能写好一篇系统开发可行性报告,这就需要搜集整理更多的资料和文献,欢迎阅读由公务员之家整理的十篇范文,供你借鉴。

系统开发可行性报告

篇1

形考任务二

一、单项选择题(每小题2分,共56分)

题目1

1.从使用者角度看,任何一个管理信息系统均有明确的目标,并由若干具体功能组成,为了完成这个目标,各功能相互联系,构成了一个有机结合的整体,表现出系统的特征,这就是管理信息系统的(

选择一项:

A.

概念结构

B.

功能结构

C.

管理职能结构

D.

网络计算结构

题目2

2.总体规划阶段的主要工作不包括(

选择一项:

A.

分析和确定系统目标

B.

分析子系统的组成及其基本功能

C.

建立系统的逻辑模型

D.

进行系统的可行性研究

题目3

3.管理信息系统的层次结构中,最高层是(

选择一项:

A.

执行控制子系统

B.

战略计划子系统

C.

管理控制子系统

D.

事务处理系统

题目4

4.管理信息系统的金字塔结构也称为(

选择一项:

A.

职能结构

B.

层次结构

C.

管理职能结构

D.

功能结构

题目5

5.管理信息系统的纵向结构是按(

)划分的

选择一项:

A.

管理层次

B.

组织职能

C.

管理层次和组织职能

D.

网络计算模式

题目6

6.管理信息系统的横向结构是按(

)划分的

选择一项:

A.

层次

B.

职能

C.

层次和职能

D.

网络计算模式

题目7

7.C/S是一种重要的网络计算机模式,其含义是(

选择一项:

A.

客户/服务器模式

B.

文件/服务器模式

C.

分时/共享模式

D.

浏览器/服务器模式

题目8

8.B/S是一种重要的网络计算机模式,其含义是(

选择一项:

A.

客户/服务器模式

B.

文件/服务器模式

C.

分时/共享模式

D.

浏览器/服务器模式

题目9

9.软件危机通常是指在计算机软件开发和维护中所产生的一系列严重问题,这些问题中相对次要的因素是(

选择一项:

A.

软件功能

B.

文档质量

C.

开发效率

D.

软件性能

题目10

10.结构化分析与设计是信息系统开发时常用的方法,按其生命周期特征,它应属于(

选择一项:

A.

螺旋模型

B.

喷泉模型

C.

混合模型

D.

瀑布模型

题目11

11.原型化方法一般可分为三类,即(

选择一项:

A.

探索型、开发型、直接型

B.

探索型、实验型、演化型

C.

灵活型、结构型、复杂型

D.

目标型、实验型、探索型

题目12

12.面向对象开发方法是基于(

选择一项:

A.

原型模型

B.

喷泉模型

C.

混合模型

D.

瀑布模型

题目13

13.下列准确概括结构化分析方法核心思想的是(

选择一项:

A.

由分解到抽象

B.

自顶向下,由细到粗,逐步抽象

C.

自下而上,由抽象到具体

D.

自顶向下,由粗到细,逐步求精

题目14

14.总体规划是管理信息系统建设的第一步,其主要任务是明确(

选择一项:

A.

系统“是什么”

B.

系统的数据流程

C.

系统的业务流程的细节

D.

系统的开发工具等

题目15

15.在管理信息系统的系统分析阶段,其主要任务是明确(

选择一项:

A.

系统“干什么”

B.

系统的模块划分

C.

系统测试方案

D.

可行性报告

题目16

16.在管理信息系统的系统设计阶段,其主要任务是明确(

选择一项:

A.

系统“怎么干”

B.

系统的模块划分

C.

系统测试方案

D.

系统分析说明

题目17

17.开发管理信息系统,早期使用的是(

选择一项:

A.

结构化方法

B.

原型法

C.

面向对象的方法

D.

企业系统规划法

题目18

18.面向对象的程序设计的英文缩写是(

选择一项:

A.

SA

B.

OOP

C.

OOD

D.

OOA

题目19

19.一种从用户的基本需求入手,快速地实现新系统的一个原型,用户、开发者及其它有关人员在适用原型的过程中,反复修改原型系统,确定各种需求细节,最终达到建立系统的目的的方法为(

选择一项:

A.

生命周期法

B.

原型化法

C.

面向对象法

D.

结构化方法

题目20

20.管理信息系统开发前的准备工作不包括(

选择一项:

A.

收集和整理基础数据

B.

确立系统目标,开发侧策略和投资金额

C.

借鉴同类系统的癌发经验

D.

可行性分析报告

题目21

21.所谓管理信息系统的横向结构是按(

)划分的。

选择一项:

A.

管理层次

B.

组织或机构的管理职能

C.

管理层次和组织或机构的职能

D.

网络计算模式

题目22

22.系统开发过程中的第一个正式文档是(

)。

选择一项:

A.

系统说明书

B.

评审报告

C.

开发合同

D.

可行性报告

题目23

23.

管理信息系统开发的主要阶段依次是(

)。

选择一项:

A.

需求分析、系统设计、系统评价、系统实施、运行维护

B.

需求分析、系统设计、系统实施、运行维护、系统评价

C.

系统设计、需求分析、系统实施、运行维护、系统评价

D.

需求分析、系统设计、运行维护、系统评价、系统实施

题目24

24.结构化开发方法各阶段的顺序是(

)。

选择一项:

A.

总体规划、系统设计、系统实施、系统评价、系统分析、运行维护

B.

总体规划、系统分析、系统设计、系统实施、运行维护、系统评价

C.

系统分析、总体规划、系统设计、系统实施、运行维护、系统评价

D.

系统分析、系统设计、系统实施、运行维护、总体规划、系统评价

题目25

25.系统设计产生的文档是(

)。

选择一项:

A.

可行性报告

B.

系统分析报告

C.

系统设计报告

D.

用户操作手册

题目26

26.结构化设计的是(

)。

A.

相对独立、功能单一的模块结构;块内联系大、块间联系小

B.

相对独立、功能单一的模块结构;块内联系大、块间联系小;采用结构图的描述方式

C.

相对独立、功能单一的模块结构;采用结构图的描述方式

D.

块内联系大、块间联系小;采用结构图的描述方式

题目27

27.结构化开发方法是一种开发管理信息系统较为成熟的方法,下列选项中,不具有该方法所具有的特征是(

)。

选择一项:

A.

充分理解用户需求

B.

自顶向下进行开发

C.

动态地定义系统功能

D.

完整的文档资料

题目28

28.信息系统开发方法的指导思想、开发策略常常相同或相似于(

)。

选择一项:

A.

网络建设

B.

软件工程

C.

数据库设计

D.

硬件工程

二、判断题(每小题1分,共24分)

题目29

1.

MIS之所以要以计算机网络为基础主要是进行信息的贮备和加工处理。

选择一项:

题目30

2.

MIS建成并投入使用后,可能会使企业现有的人员、组织机构发生重组。

选择一项:

题目31

3.管理者特别是高层领导在MIS的建设和使用中起主导地位。

选择一项:

题目32

4.管理组织从横向看可以分为若干个层次,相应地MIS也应具有层次结构。

选择一项:

题目33

5.管理控制子系统主要是为企业基层管理者提供信息服务的。

选择一项:

题目34

6.对于复杂的MIS进行分析和研究,通常可采用系统理论中的系统分解法,基本思路是先分解后协调。

选择一项:

题目35

7.文件服务器模式是最早出现的网络计算结构。

选择一项:

题目36

8.从管理/职能角度看,MIS具有金字塔结构。

选择一项:

题目37

9.MIS的开发必须在具备一定条件下才能着手进行。

选择一项:

题目38

10.

MIS的开发方式有自行开发、委外开发和合作开发等几种,最好的方式是自行开发。

选择一项:

题目39

11.

MIS的开发需要一定的周期,但MIS投入使用后通常不会对原有的人工管理方式产生太大的影响。

选择一项:

题目40

12.MIS是一个软件系统,属于无形资产,其效益不易用货币形式直接反映。

选择一项:

题目41

13.MIS开发的核心问题是采用何种语言、数据库编写程序代码。

选择一项:

题目42

14.如果时间紧迫,采用增加开发人员的方式是加快MIS开发进度的最有效办法。

选择一项:

题目43

15.软件工程的方法大约产生于20世纪90年代。

选择一项:

题目44

16.结构化分析的核心思想是“自底向上,逐层分解”。

选择一项:

题目45

17.原型化方法一般可以分为探索型、实验型和演化型三种类型。

选择一项:

题目46

18.为了有效地进行MIS开发与管理,往往将开发过程划分为若干阶段,通常称这种方法为“螺旋模型”法。

选择一项:

题目47

19.

CIMS和OA的中文含义分别是计算机集成制造系统和办公自动化。

选择一项:

题目48

20.一般将系统产生、发展和灭亡的生命历程称为系统的生命周期。

选择一项:

题目49

21.结构化分析方法的基本手段是:“分解”和“抽象”。(

选择一项:

题目50

22.结构化分析方法的基本策略是“自顶向下,逐步求精”。(

选择一项:

题目51

23.用结构化分析方法获得的系统分析说明书由一套分层的数据流图和一本数据字典构成。(

选择一项:

题目52

24.原型化方法是一种确定用户需求的有效方法。(

选择一项:

三、选择填空题(每小题5分,共20分,请点击选项,然后拖拽至相应的方框内)。

题目53

1.

请为英文缩写①~⑤在A~E中选择表示其含义的描述,将正确选项拖拽至相应的方框内。

答:(1)SLC:

B.

系统的生命周期

(2)OOD:

C.面向对象的设计方法

(3)OOP:

D.

面向对象的编程方法

(4)SA:

A.结构化分析

(5)SD:

E.结构化设计。

题目54

2.

请为结构化开发方法的

(1)~(5)选择该阶段产生的文档,将正确选项拖拽至相应的方框内)

答:(1)

C.可行性报告;

(2)A.系统分析报告

(3)E.系统设计报告;

(4)

B.用户操作手册

(5)D.运行状况报告。

题目55

3.

3.请为名词(1)~(5)选择表示其含义的描述,将正确选项拖拽至相应方框内。

答:

(1)[B.其主要职责是起到用户和系统开发其他人员之间的桥梁和接口作用,是系统开发的核心人物。];

(2)[C.负责依据系统逻辑方案和系统的硬件、软件环境进行系统的总体设计、模块设计以及模块之间接口的设计工作。];

(3)[D.负责依据新系统逻辑方案中提出的对硬件网络的基本要求制定硬件网络配置方案,并负责该方案的全部实施工作。];

(4)[E.负责依据系统逻辑方案中提出的数据需求进行数据库设计,监督和控制数据库运行,以及进行数据库的维护和改进工作。];

(5)[A.负责依据系统逻辑方案进行系统的程序设计,实现方案中的各项功能,还负责进行用户的使用培训工作,以及系统的测试和试运行。]。

题目56

4.

图1是管理信息系统的管理职能结构(金字塔结构)示意图,其含义描述如下:首先,组织的管

理是分层次的,一般可分为战略计划层(高层)、管理控制层(中层)和执行控制层(基层)。相应的管理信息系统为它们提供的信息处理与决策支持也分为三层。其次,组织的管理在分层的同时,又按管理职能划分,相应的管理信息系统也就可以分为市场销售子系统、物资子系统、财务子系统、人事管理子系统等。第三,下层的系统处理量大,上层的处理量小,下层系统为上层提供数据,形象地说,下层较“宽”、上层越来越“窄”。综合上述三点就组成的纵横交织的金字塔式的结构。

该金字塔结构示意图不完整,请为图1中(1)~(5)匹配合适的内容描述,将正确答案拖拽至相应的方框内。

A.管理控制层;B.管理层次;C.战略计划层;D.执行控制层;E.职能划分

答:(1)D.执行控制层

;

(2)

C.战略计划层

(3)A.管理控制层

篇2

关键词:数据库设计;软件工程技术;作用

数据库设计是一项复杂且系统的过程,包括了物理结构和逻辑结构,这两种结构是复杂的映射联接起来的,不太灵活效率也低。而软件工程技术能有效避免上述问题,在数据库设计中发挥着重要作用。本文主要针对数据库设计中每个阶段的软件工程技术进行研究,并分析软件工程技术发挥的作用。

1软件工程技术概述

某种程度上来说软件开发其实就是“高层概念”到“低层概念”的映射,从而实现高层处理逻辑向低层处理逻辑转变。而对于大型软件系统而言定义就并非如此简单,因为大型软件开发包括有关人员、技术、途径以及成本和进度的方方面面,综合来看要把软件工程定义为:软件工程是一门能够满足客户需求并以软件产品和工程为对象的学科,主要应用计算机科学理论和工程管理原则。囊括了程序语言设计、数据库以及设计模式等多个方面。软件工程技术早期主要为瀑布式开发模型,经过不断的发展演变为螺旋式的迭代开发,到现在软件工程技术敏捷开发的方法,软件工程技术随着社会科学技术的发展而不断进步。另外,在不同时期研究软件工程技术时都要遵循使用科学的方法进行管理并通过合作的形式提高软件生产率的原则,推动软件工程技术的发展。学者根据软件工程技术发展的历程总结出了多种软件开发的方法并产生了软件工程学,但软件工程学的出现并不代表软件危机的结束。由于软件工程自身理论性强、实施方法局限大等特点,使得软件危机依然存在于生活中。经过不断努力和探索,近年来出现了多种新的思想和方法,例如软件再用、软件自动生成器等,为软件工程技术的发展提供了坚实的基础,软件工程技术逐渐向自动化、标准化转变。

2软件设计中的工程技术

2.1软件的生存周期

软件的生存周期主要由六个环节组成,包括要求分析、规格说明、设计、编码、测试以及维护。要求分析和规格说明主要根据客户的需求完成,明确软件设计的目的。后面四个环节是对计算机系统而言该如何做才能实现前两个环节中明确的设计目的。同时在软件设计过程中要注意以下几个问题才能确保软件生存周期中各个环节的顺利进行:首先要明确软件开发的目的是为了更好的服务于生产生活,所以要严格按照生存周期中的分析要求和规格说明进行软件设计。其次,由于软件设计最终呈现给人们的是使用的产品,所以与系统工程联系极为密切,在进行软件设计时要采用结构化的方法,实现标准化的软件设计。最后在软件设计的各个环节都要重视设计验证,设计验证应当贯穿软件设计的始终。

2.2规格说明书

在这个环节主要是将用户的需求输入并将结果输出整理成规格说明书的形式,在表现用户需求的同时不允许出现二义性,这是软件开发的关键步骤。在对规格说明书进行设计时主要按照先以用户需求建立数据流程图,再设计数据项图的方法。

2.3软件设计

软件设计是将上述的规格说明书翻译成主要由软件、硬件、人和通讯为基本元素组成的系统,而且这四个元素都完整的保存于信息系统中。在进行软件设计时首要工作是要了解各个部分的功能,再将客户的需求以规格说明书的形式输入到系统中并重复进行下级功能的设计。当然,在进行软件设计时需要注意以下几个问题:首先,软件系统设计是一项严密的工程,所以要设计一系列的制度规定约束设计人员的行为。其次要设计多个方案以备不时之需。

3软件工程技术在数据库设计中的应用

3.1分析其可行性

该阶段通过分析现有的计算机技术和人工控制技术,从经济、技术和操作方便性几个方面对数据库进行考察,以初步估计能否完成数据库设计的任务。该阶段应当将分析结果记录下来,整理撰写可行性报告。

3.2制定开发计划

如果前阶段的分析有很强的可行性,分析员将要开始制定该项目的开发计划。项目开发计划应当包括系统开发团队的人员构成、人员分配、项目开发进度、验收方式和验收标准以及开发过程中的关键环节等。此外,用户界面对数据库的开发非常重要,美观、友好而方便的用户界面才能被客户接受,在项目开发时也应当将界面设计考虑进去。

3.3分析数据库系统的需求

数据库系统的需求分析,包括对数据的需求分析、对系统性能的需求分析、对运行环境的需求分析等。该阶段通过对数据库的需求进行分析,以了解建立数据库软件需要的配置标准和运行环境,为数据库的开发提供标准和参数。

3.4数据库设计阶段

数据库的建立和设计是数据库系统的重点内容。数据库系统的运行效率和效果直接受到数据库设计质量的影响。一项优秀的数据库软件系统不但能简化运算方式,提高运行效率,还能帮助数据库使用者简单直接地获取相关信息,保证数据的完整性,有利于完成数据库的设计。数据库设计的基础是需求分析。首先应当设计数据库的概念和结构,总体上把握用户需求,并据此绘制系统实体联系图。然后应当设计数据库的逻辑结构,把概念中的E-R图转化为计算机语言,与DBMS系统相适应,把实体之间的关系转化为数据库系统之间的表与表的关系。数据库的物理结构设计由数据存取方法和数据存取结构两个方面组成。该阶段的设计通常包括两个环节,一是确定数据库系统的物理结构,二是评价该结构的运行效率,通过对两个环节的综合考虑,以评价数据库物理结构的合理性。

3.5详细设计和概要设计阶段

系统的详细设计不是编写程序,而是设计程序框架。总体而言,系统的概要设计包括两个阶段:首先应当制定系统实施方案,然后进行软件结构设计。

4结束语

根据研究和数据显示,软件工程技术不仅能够提高数据库设计的效率,同时还能增加数据库的灵活性的适应性,对数据库的发展具有重要的推动作用。目前我国对软件工程技术的研究尚处于发展阶段,但经过研究和探索数据库中的软件开发技术能够发挥更大的作用。

参考文献

[1]高猛.数据库设计中软件工程技术的作用分析[J].读写算(教育教学研究),2014,(17):365-365.

篇3

[关键词] 医院信息化建设;HIS系统

doi : 10 . 3969 / j . issn . 1673 - 0194 . 2012 . 14. 037

[中图分类号] F272.7;R197.324 [文献标识码] A [文章编号] 1673 - 0194(2012)14- 0063- 02

1 医院信息化建设的意义

医院信息化建设涵盖面很宽,主要是指基于Intranet局域网的信息化建设,最基本的医院信息系统(Hospital Information System,简称HIS),包括门急诊挂号收费、住院结算、医生工作站、护士工作站、药房药库管理、设备物资管理等;电子病历系统(简称EMR);实验室信息系统(简称LIS);医疗影像存储与传输系统(简称PACS),以及相关配套的子系统如病案统计管理系统、合理用药管理系统等等;与之相匹配的机房、服务器、布线、路由器、终端自是必需内容。此外,基于局域网的无纸办公和信息系统也是重要组成部分。

2 医院信息化建设的阻碍

2.1 资金不足

资金不足是制约我国医院信息化发展的首要因素。据专家估计,一个三级甲等医院要实施整个医院的信息化建设至少需要几千万元甚至上亿元的投资。而这种投资完全依赖行政拨款进行信息化建设是不可能的,巨额的资金投入要靠医院自已解决。资金不足是绝大多数医院普遍面临的难题。因为资金缺乏,项目无法开展,已开始的项目也会由于资金供给不足而半途中止。而且有些医院更愿意投资在一些马上产生效益的医疗设备,而不愿意在不能直接盈利的信息系统上投资。

2.2 医学的复杂性

医学自身的复杂性也导致了信息技术和医学的结合极其困难。由于太过专业,而且业务流程十分繁琐,医疗信息化本身的复杂程度非一般的其他行业所能比拟。全球没有哪一家医院能算得上实现了医疗信息化,由于对医疗行业信息化复杂度估计不足而导致系统失败是很多见的。例如:IBM在20世纪60年代就尝试过开发医院中实施HIS系统,原以为把政府和其他行业用的好的财务管理系统照搬过来就行,结果还是因为医学的复杂性而失败。

2.3 人才

医院信息化建设要得以迅速发展,必须有一批从事这一工作的专业技术人才。随着医院信息化建设的深入发展,现有的专业技术人才无论在数量上还是质量上都不能满足需要。据统计,美国81%以上的医院信息专业人员超过10人,31%的医院信息专业人员超过50人。目前,我国医院信息化建设过程中既懂IT、又懂医学以及医院管理的复合型人才少之又少。医院即使有这样的复合型人才,又因为体制原因这样的人才在职称评定及职位升迁方面不能享受优厚待遇或正常待遇,以至于人才流失很严重。

3 解决方法

3.1 资金问题

在中国卫生信息学会成立暨全国及广东卫生信息技术学术交流会上,国家卫生部副部长王陇德透露,今后3年国家将对医疗卫生系统投资80多亿元。其中为了加快完成医疗卫生网络信息化,卫生部明确规定,今后医院必须将年收入的5%用于信息系统建设的支出。管理者要转变传统模式,充分意识到信息化对医院发展的重要性。医院HIS的建设是一种基础建设,是医院建设的硬件设施,是医院管理现代化、规范化的有力手段。

3.2 人才问题

医院信息化建设必须有一支技术过硬的信息化专才队伍,建议通过以下两种途径来实现:一是引进卫生信息学专业的学生。二是加强信息化在职人员的培训。培养信息化人才,还要积极营造医院信息文化氛围。加强全院职工的信息意识和信息观念,普及信息化知识,掌握信息技术操作技能,提高认识水平。

3.3 HIS系统

在HIS产品方面,医院和软件开发商之间应建立关系基础。对医院信息管理系统的进一步完善、升级几不同数据平台软件之间的整合具有巨大影响,关系到医院信息管理系统的生存和发展。对于医院信息化管理软件来说,应紧密围绕医院管理目标,体现管理思想,任何软件都不是万能软件,因此必须从医院实际出发,针对具体情况,本着优质、高效的管理目标选择合适自己的信息化管理软件。其中应着重解决以下问题:根据网络系统的相应时间、事物处理实时性要求解决存储、通信容量等方面的问题;充分考虑整个网络的开放性、可扩充性、维护性,以及先进性要求,为医院未来发展做好准备;在资金保证的前提下提高性能及兼顾先进性与实用性问题。总之要在充分调查医院的基本要求后编写可行性报告与需求分析报告,与使用科室充分交换意见后同软件提供者充分协商后实施。并编写实施规划,按规划分步实施,争取做到万无一失。

从IT企业来说要是想从事医院的信息系统开发,一定要有较大的规模和较强的实力。要多和医院交流、沟通,才能真正为医院解决问题。而从医院方面来说,一方面要全力配合软件开发人员做好技术调研和系统应用工作。另一方面要培养建设医院信息管理系统。对医院来说既不是简单购买一台大型设备的概念,也不是做一个2~3年能完成的课题项目。医院的信息化建设是一个大型的、复杂的系统工程,其中包含和涉及了太多的科学内容。在此,我们可以借鉴江门市人民医院,采用“没有接口的大集成”方法,医院全部应用系统由一家公司完成,系统间没有无缝连接,实现了医院信息系统(HIS)、临床信息系统(CLS)、实验室管理系统(LIS)、放射科信息系统(RIS)、医疗影像存储与传输系统(PACS)、体检系统及其他系统的有机融合,使之一体化,实现了管理信息、医疗信息、影像信息、实验室信息、病人信息、病例信息、药品信息、财务信息、物资信息的高度共享。

4 总 结

医院信息化建设是一项系统工程,需要总体规划、分步实施。医院信息化不是目的,而是手段。医院信息化建成后,将形成合理高效的管理手法,逐步完善医院管理,提升医院的综合院力。因此,对于医院信息系统的建设一定要有理性的目标定位,有充分的论证、统筹和组织协调,真正做到“整体规划,分步实施,阶段见效,持续发展”。

主要参考文献

篇4

关键词:关键词:C++;软件复用;软件开发

中图分类号:TP393     文献标识码:A     文章编号:

 

 

1. 软件复用技术简介

从上世纪60年代软件开发逐渐兴起以来,软件开发经历的多个发展阶段。随着软件规模的越来越大,软件开发复杂度的逐渐提高,落后的软件开发方式需要改变,同时企业对于软件的质量要求也越来越高,如何提高开发效率以及提高软件质量成为了软件开发企业和软件工程师需要解决的一个主要问题。在这样的背景之下,软件复用技术应运而生。

当前,软件工程思想中有三个主要的策略,它们分别是软件复用、折中、分而治之。其中,软件复用的思想是软件工程开发中一个实用性极强且功能强大的技术。

软件复用技术放弃了一切从头开始设计的软件开发方式,借鉴采用了许多工程设计学科中利用的基于构件的思想来进行资源的复用。软件复用技术,不仅仅指开发过程中对程序代码进行复用,对于软件设计过程中的其它的一些成果也可以进行复用,比如:针对软件设计的需求分析、软件设计的可行性报告、软件开发完成之后进行的软件测试方案、项目计划书等等。采用软件复用技术之后,软件开发企业可以大大减少许多不必要的创建工程,从而大大加快了软件开发速度,极大的减少了产品的形成周期,节约来的大量的资源和成本。同时,采用软件复用技术也改善了产品的质量,提高了产品的可靠性,因为进行软件复用的资源,一般都经过许多次利用和测试,其中的问题与缺陷得到了很好的纠正,因此大大减少了软件系统出现问题的概率。另外从企业管理的角度来讲,采用软件复用技术,可以减少企业开发组件的成本的不确定性,尤其针对大规模的系统开发,可以大大降低企业的项目成本的不确定性,从而使软件开发企业面临的风险降到最低。最后,采用此技术对于软件的标准化开发也有一定的意义。

2. C++技术与软件复用技术

C++语言是一种面向对象的语言,而面向对象技术为软件复用过程中的关键——软件构件问题提供了坚实的理论基础,使软件复用技术成为可能。首先,面向对象的多态特性和继承特性可以使软件开发人员选择某些问题的可重用的部分;其次,面向对象的软件开发技术可以将现有的软件进行抽象与封装,从而使之成为可复用成分。总而言之,面向对象语言中的抽象、封装、继承和多态技术可以和软件复用的各种技术相结合,从而很好的实现软件的复用。

当前,C++中的软件复用技术,主要可以分为四类,基于类的软件复用技术、基于继承特性和派生类的软件复用技术、基于多态特性的软件复用技术、基于模板机制的软件复用技术,下面我们对四种软件复用技术进行简单的介绍。

 

3.  C++中的软件复用技术

3.1 基于类的软件复用技术

C++中的类库技术是软件复用的基础,在软件开发过程中,程序员通过调用类库中的函数可以达到软件复用的目的。比如,调用C++类库中的输入输出流函数可以实现输入输出的功能。如下:

#include<iostream>

#include<string>

int main{

     string  in_string;

     cout<<“please enter your name”;

     cin>>in_string;

     if(in_string.empty())

cerr<<”error:input string is empty!n”;

     else cout<<”hello,”<<in_string<<”!n”;

}

3.2 基于继承特性和派生类的软件复用技术

C++语言中,通过其继承特性,可以在原有的类的基础之上生成新的类,原有的类我们称之为基类,新生成的类我们称之为派生类。继承技术是C++语言的一个重要特性,也是实现软件复用的一种重要技术。利用继承技术派生出新类时,我们不需要完全重新开始写代码,每一个派生类都继承了基类的数据成员和成员函数,派生类只需要编写出与基类行为不同的扩展特性即可,因此它大大简化了程序量,提高了工作效率。另外,在派生类的基础之上,我们还可以进一步设计新的派生类,由此可见,派生类的设计可以实现树形发展。继承关系图如下所示:

 

图一  继承关系图

基类和派生类的定义如下:

class Base {

public:

foo( int );

// ...

protected:

int _bar;

double _foo_bar;

};

class Derived : public Base {

     public:

    foo( string );

    bool bar( Base *pb );

    void foobar();

    // ..

      protected:

    string _bar;

};

3.3 基于多态特性的软件复用技术

多态特性是C++语言的一种重要属性,利用C++的多态属性,可以很好的实现软件复用。概况来说,多态特性主要从三个方面来实现软件复用,分别为:运算符重载、函数重载和虚函数技术。其中前面两个属于静态多态特性,而后面一个属于动态多态特性。下面分别就几种多态技术进行介绍:

(1)C++中自带的运算符只针对某些数据类型适用,对某些数据类型是不适用的,为了扩大运算符的适用范围,提出了运算符的重载。运算符重载就是对已有的运算符进行重新定义,赋予其另一种功能,从而适应不同的数据类型。进行运算符重载的关键是要准确理解运算符的定义,从而把原来的运算符变换为一个运算符函数,进而进行调用,运算符重载的实例如:

complex operator+(complex c1,c2)

{ complex result(0,0);

result.setreal(c1.getreal()+c2getreal());

result.setimaginary(c1.getimaginary()+c2.getimaginary());

     return result;

}

上面实例实现了对加法运算符的重载,C++中自带的加法运算符不能直接进行复数的加法,通过重载,可以进行复数的相加。

(2)函数重载所谓函数重载是指同一个函数名可以对应着多个函数的实现。例如,可以给函数名max()定义多个函数实现,该函数的功能是求两个数中较大的数,一个函数实现是求两个int型数中较大的数,另一个实现是求两个浮点型数中两个较大的数,后面两个函数对应的参数不是两个。每种实现对应着一个函数体,这些函数的名字相同,但是函数的参数的类型或者参数的个数不同。

int max( int, int );

float max(float,float);

int max( const vector<int> & );

int max( const matrix & );

函数重载在类和对象的应用尤其重要。函数重载要求编译器能够唯一地确定调用一个函数时应执行哪个函数代码,即采用哪个函数实现。确 定函数实现时,要求从函数参数的个数和类型上来区分。这就是说,进行函数重载时,要求同名函数在参数个数上不同,或者参数类型上不同。否则,将无法实现重载。

(3)虚函数是C++技术中实现多态的一种重要的方式。虚函数是通过一张虚函数表来实现的。简称为。在这个表中,主要是一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其真实反应实际的函数。这样,在有虚函数的类的实例中这个表被分配在了这个实例的内存中,所以,当我们用父类的指针来操作一个子类的时候,这张虚函数表就显得由为重要了,它就像一个地图一样,指明了实际所应该调用的函数。实例如下:

class A

{  public:

virtual void foo()

 { cout << "A::foo() is called" << endl;

}

};

class B: public A

{  

public:

virtual void foo()

{

cout << "B::foo() is called" << endl;

}

};那么,在使用的时候,我们可以:

A * a = new B();

a->foo(); //

在这里,a虽然是指向A的指针,但是被调用的函数(foo)却是B的!这个例子是虚函数的一个典型应用,一个类函数的调用并不是在编译时刻被确定的,而是在运行时刻被确定的。由于编写代码的时候并不能确定被调用的是基类的函数还是哪个派生类的函数,所以被成为“虚”函数。

3.4 基于模板机制的软件复用技术

函数模板就是建立一个通用的函数,其参数类型和返回类型不具体指定,用一个虚拟的类型来代表。它相比较于函数重载而言,具有很大的优势,它不需要为每一个函数写一组函数体完全相同的函数体,利用这个通用的函数,可以应用于不同的数据类型,真正实现了代码的充分利用。

4. 总结

软件复用技术可以重用系统代码,设计方案等,大大减轻了工作量,提高了软件开发的效率并且极大的改善了软件的质量。本文介绍了C++中的四种主要的软件复用技术并对每种技术进行了分析和思考,总的来说,这几种C++中的软件复用技术各有优劣,具有不同的应用环境,我们在实际的软件开发过程中,要根据实际的情况来选择合适的软件复用技术,从而使软件的性能与效率得到最优化。

参考文献:

[1] 张海藩,倪宁.软件工程(第3版)[M].人民邮电出版社,2010-02.

[2] 段小君,高金环.软件复用与面向

对象技术[J].西安邮电学院学报,2004,9(2):103_106.

[3] 吴昌钱.软件复用与面向对象技术[J].南昌教育学院学报,2010(6):192-193.

[4] 赵宝琴.如何在C++中实现软件复用[J].电脑开发与应用,2005,18(1):60-61

[5] Stanley B Lippman,Josee Lajoie著,潘爱民,张丽译,C++ Primer(第三版).