搜档网
当前位置:搜档网 › 软件再工程及其应用

软件再工程及其应用

软件再工程及其应用
软件再工程及其应用

软件再工程及其应用

谷耀

(天津市信息中心)

摘要本文从软件在运行维护阶段经常遇到的维护困难大、费用高,已开发的软件需要移植等问题出发,介绍了软件再工程(Reengineering)的基本内容和相关技术,并通过国外的应用实例说明再工程对提高软件生产率的重要作用。

关键词软件工程、软件再工程

为了建立各类信息系统,人们很重视软件开发过程,提出了多种软件加工模型,如瀑布模型、快速原型模型等,并研制了支持这些模型的软件开发环境和软件开发工具。这类开发环境和工具的应用对于辅助软件开发人员缩短软件开发周期,提高软件生产效率和质量起到了不可低估的作用。但是,目前多数开发环境和开发工具是为了支持开发新的应用软件而设计的,对于那些已投入运行的软件系统的维护与移植并没有带来多少帮助。

1.问题的提出

根据软件生存周期的概念,一个软件投入运行只是标志开发阶段的结束,而非软件生存周期的终止。软件进入运行维护阶段经常会遇到如下问题:

1)软件维护费用高。一般来讲软件运行维护阶段是其整个生存周期中持续时间最长的阶段,只要软件仍在使用,其维护工作就不会终止。据统计,软件维护费用在整个生存期中所占的比例逐渐增长,七十年代35-40% ,八十年代占40一60% ,估计九十年代会上升到70%。美国空军的一软件项目,其开发费用为每行源程序75美元,而维护费用达到每行源程序400美元。

2)软件维护难度大。软件难以维护主要反映在以下几个方面:

a.被维护软件文档不齐、质量差,或自投入运行后程序已经过多次修改,而文档资料并未随之更新;

b.早期开发的软件采用的是非结构化设计方法,原有软件结构不良或经过多次修补使其组织结构变得模糊不清;

c.在软件开发阶段缺乏对软件的可维护性的考虑,软件的可理解性、可扩充性差;

d.由于维护工作中考虑不周,在改正原有错误的同时又给软件引入了新的问题,即产生了波及影响;

e.软件系统规模很大时,系统复杂,理解工作费时费力。

3)软件资产数额巨大。随着计算机的广泛应用,正在使用和正在开发的软件数量与日俱增。

据估计,美国正在使用的软件已超过一千亿行源代码。这些软件中的大部分生存期需要延长,不仅要保障正常运行,还要根据环境的变化扩充功能,改善性能,同时随着信息技术的不断进步,许多现有系统要适时地移植到性能更为强大、符合国际标准的软硬件平台上,继续为用户创造效益,正是为了解决软件在运行维护阶段所遇到的种种问题,近年来人们提出了软件再工程(Reengineering)的概念。

2.再工程的基本概念

软件再工程是对现有软件系统进行验证、评价,重新设计构造成为一个新的形式并加以实现,使其满足新的需要和/或适合于新的运行环境的软件工程活动。

2.1再工程主要应用范围

在软件系统的使用过程中,其运行的内、外部环境可能发生不同程度的变化。软件再工程可以充分利用和改造现有软件以适应这些变化,避免因重新开发软件而造成时间、人力及软件资源的浪费。再工程主要应用于:

1)改进软件的可维护性。在软件仍可满足原规格设计说明书所规定的功能、性能的条件下,因原有程序结构不良,文档不齐、不精确,或经过多次修改致使结构不清、有冗余、死码,文档与实际系统不一致等原因造成进一步的维护困难,通过文档再编制(re-documentation)和重构(re-structuring)等再工程活动使得文档齐备、精确,程序结构清晰,有利于系统继续正常运行与维护。

2)增强功能,改进性能。在原有软件不能满足当前的要求,用户需求超出原规格设计说明书所确定的范围的情况下,可通过再工程对原有软件进行再设计以适应用户需求。这实际是软件版本的改进和升级。

3)软件移植。在原有软件系统的业务处理规则、基本算法等仍基本适用的条件下,由于原有支持系统运行的内部环境——硬件、系统软件等不能满足目前的要求或不符合新的标准规范(如非开放系统) ,不宜继续支持系统正常运行,就需将原系统移植到新的平台上(如计算机系统、操作系统、DBMS、网络系统等)。

4)系统开发。在需要开发与己有的、经实践证明是成功的软件系统相类似的软件时,可以直接利用或稍作修改就可利用已有系统的程序代码、设计说明和规格说明,这样会大大提高软件生产率,缩短开发周期,保证软件质量并能节省开发经费。

2.2再工程活动类型级别

根据用户对现有软件改进要求的不同,再工程活动一般可分为系统级、数据级和源程序级三个层次。

1)系统级: 是对现有应用系统的功能规格说明进行再设计。这需要全面恢复系统的原有功能规格说明和设计说明,在此基础上根据应用要求修改设计,重新产生可执行程序。

2)数据级: 从现有文件/数据库的物理定义中产生概念与逻辑设计文档,并将这些文档转换成适合新要求的数据结构,有可能的话,同时产生访问这些文件/数据库的程序。

3)程序级: 从现有软件的源程序(或经过反编译工具产生的源程序)中提取出设计说明,经过修改设计,再进行相反的转换。这样做可避免源程序与设计说明的不一致性,同时还降低了详细设计的要求。源程序级的再工程活动可看作是再编码(ecoding)工作,可以将结构化不良的语言(如BASIC语言)转化为结构化语言(如PASCAL语言等) ,将3GL过程性语言转换成4GL非过程性语言。

2.3再工程活动的步骤

软件再工程通常由两个阶段组成:

1)逆向工程(reverse engineering)阶段,通过分析、理解现有软件,恢复其设计信息并抽象成为高层次的表示;

2)正向工程(forward engineering)阶段,即软件开发过程。对逆向工程提取出的软件的设计表示进行评审,再设计,重新产生出新的目标程序。

在一些情况下,如现有软件的各项设计文档完备、精确,再工程活动可以不需要经历逆向工程的部分过程。

3.再工程的相关软件技术

3.1逆向工程

逆向工程是对现有的目标软件系统进行分析与理解,包括:

●分析、识别系统整体结构、各个组成成份及其相互关系;

●提取软件的设计信息;

●以其它或更高级的形式表示系统。

类似的软件工程活动也采用其它术语,如设计恢复(design recovery)、程序理解(program understanding)等。

逆向工程主要包括两个层次:

1)反汇编、反编译。这是比较成熟的技术。反编译是编译的逆过程,它可将机器代码或汇编语言程序翻译成为与原有程序功能相同的高级语言形式。

2)设计信息提取。从已有的设计文档和源程序出发,抽象出原有的设计思想,即恢复软件的功能规

格说明和设计说明,这是设计和编码的逆过程。通常这个过程需要具有原应用系统的问题领域知识(domain knowledge)。

逆向工程的关键在于对目标系统的理解,一般对系统的理解可以分为四个层次:

●程序设计语言层;

●控制结构层;

●通用算法层;

●问题领域层。

3.2正向工程(软件开发方法)

关于软件开发方法及开发环境、工具方面的书籍资料已有许多,这里仅简要介绍较新的几种。

1) 4GL: 4GL为非过程性语言,用户无需具备系统软件与高级语言的知识,只要编写出系统规格说明,用4GL编译程序进行编译就能生成出可运行的程序。

2) OOP(面向对象的程序设计) : 与传统的面向过程的程序设计以功能划分模块的方法不同,OOP是按处理对象(实际事物的抽象模型)划分模块。OOP将部件级的软件对象结合起来构成应用软件。在进行维护时只需更换、扩充或添加部件,不影响系统的其它部件和整体结构,可显著降低开发和维护成本。

3) CASE: CASE对再工程的主要支持是帮助用户分析存储于CASE字典中的系统描述,这些分析可用于程序、子系统以及整个系统。一些综合CASE (I-CASE)可满足整个软件生存周期的需要,包括维护阶段和逆向工程。

目前要实现完全自动化的再工程是不可行的。千差万别应用领域的再工程离不开人的理解、判断、设计、决策能力。软件的再工程不仅要具有软件工程知识,更重要的是要具备特定问题领域知识。

4.再工程应用实例

国外近年来研制出多种软件工程环境和系统再工程产品,在对现有系统实施再工程方面有许多成功的事例。下面列举几例以使读者对此领域的应用情况有一个初步的了解。

例一. Allnet公司是美国最大的经营长途电讯业务的公司之一,每日处理长途电话达600多万个。由于业务高速增长,使得原设计的计费处理工作经常拖延,影响了公司的资金周转,迫切需要对系统进行改进。Allnet采用了Viasoft公司的系统再工程产品VIA/Renaissanse,该产品能够自动地分析和提取源程序(COBOL语言)中的各种功能说明,然后形成这些功能的独立程序模块,这些模块编译后即可投入运行。同时这些模块还可供其它应用程序使用或纳入公司的CASE环境,用于今后新系统的开发。Allnet公司对其计费模块实行改造后;使账单处理的记录数减少到不足原来的10% ,不仅计费处理速度满足了要求,

主机IBM3090 - 300J的处理时间和I/O操作时间都明显减少。

例二. 美国Zortec公司推出的面向商务应用的软件开发环境产品SYSTEM-Z集4GL和DBMS功能于一体,可在百余种机型、十多种操作系统上安装。该产品不仅具有良好的开发环境,而且支持软件移植工作。如总部设在纽约的一家纺织品公司主机系统是王安VS,数据处理采用COBOL语言,下属几家工厂采用XENIX系统,未与公司联网,采用SYSTEM-Z只用几个月就将系统由开销过大的王安系统移植到HP9000上,并实现了与工厂的联网。又如,美国西弗吉尼亚州立大学使用SYSTEM-Z,不到三个月就把Unisys1100计算机上的3400多个MAPPER程序移植到IBM RS/6000上,节省了大笔经费。再如,Alpha Omega公司只用很短的时间就将美国迪斯尼乐园的大部分应用软件移植到开放系统中,比预计节省了95%的工作日。

例三. 美国马里兰大学、NASA (国家宇航局)和CSC(计算机科学公司)联合组织的软件工程实验室(SEL)共同了解、研究NASA的飞行动力学环境中的100多个软件项目,每个软件项目从几千行到一百万行源程序不等,有Ada语言,也有早期开发的Fortran语言,通过SEL的工作NASA的每行源程序开发成本平均降低10%,软件可靠性平均改进了35%,软件的可管理性明显提高。

参考文献

1.徐家福,杨冬青,为软件工程的未来建立基础,计算机科学,1990年第6期

2.David Sharon,The Psychology of Reengineering,IEEE Software,Vo18. No 6. 1991

3.Don Yu,A View on Three R's: Reuse,Re - engineering,and Reverse - engineering,Software Engineering Notes,Vo1 16. No 3. 1991

4.John Kador,Reengineer to Boot Software Productivity,DATAMA ION,Vo1 38. No24. 1992

5.刘东波,张华伟,新一代商务软件开发环境SYSTEM-Z,计算机世界,1993年37期

本文原载于1994年第1期《信息系统工程》杂志

研究生现代软件工程期末考试试题

2013年研究生现代软件工程期末考试 2014年6月20日 某软件企业已经具有5年以上的开发经历,为了进一步拓展市场和提升市场竞争能力,在三个项目组以及SQA小组选拔了一些技术骨干作为SEPG小组成员,期望在公司内部推广CMM,争取3年之内能够通过CMM3的评级认证。 公司管理层要求一年内通过CMM2评级,第三年申请CMM3的资质认证并争取通过评审。为此,三个项目组的项目经理与SEPG和SQA小组成员共同商讨如何能够满足近期和远期目标。经了解,发现三个项目组的管理方式各不相同,开发方法也不统一:项目组A:采用传统的演化模型并使用基于数据流图的结构化方法进行系统开发; 项目组B:采用基于面向对象方法的UP模型进行系统开发; 项目组C:采用极限编程方法进行开发; 问题一:SEPG要求各项目组的项目经理给出各自项目组的基于里程碑的软件开发过程及相应的文档编制计划。 问题二:为了CMM3的目标SEPG根据各小组的软件开发过程决定采用通用的面向对象方法定义一个公司级的统一软件工程过程并给出基于KPA组织过程定义必须执行的活动(Key Practices)。 问题三:SQA小组基于SPEG定义的公司级的软件工程过程,参考ISO的质量模型开始着手制定CMM3需要的针对软件需求分析阶段的质量评估模型及其必须的尺度度量准则。 除此之外,项目组A各人员组成的工资待遇如下:1、项目经理:12000;2、工程师_X:5000;3、工程师_Y:6500;4、工程师_Z:3000;公司规定项目经理有权掌握项目40%经费进行管理,其中包括项目组的人员成本和平时加班补贴(平时加班按工资的2倍支付,国家法定假日3倍支付)。此时,公司交付给项目组A一个必须在2个月完成的项目,要求项目必须按照客户的具体需求完成分析、设计和开发任务,并能实现20%的利润,同时项目经理自己也打算给自己保留5%经费作为自己奖励。具体需求如下: 有一个医院期望开发一个《医院取药告知管理系统》。该系统要求实现病人在交费处使用自己的就医卡交费完毕后,系统会根据当前的取药人数分配取药窗口和相应的药剂师。每个窗口的药剂师按顺序使用系统,并接收系统分配的菜单。药剂师配药完成后使用系统功能显示并通知病人取药。 每个取药窗口有一个大屏幕显示取药的病人名称,每个人取药时间为2分钟并反复显示并广播病人的姓名;超过两分钟没来取药的病人信息会转到屏幕下方的滚动条滚动显示,可以显示多人姓名。取过药的病人信息随即被清除。取药大厅设置多台自动查询机,病人使用就医卡扫描后,查询机会显示病人姓名、取药窗口号以及在本病人之前未取药的人数或者是否处于超时等待取药。 作为项目经理,请根据上述功能需求回答以下问题: 问题四:给出该系统的功能列表(以用例表示)开发和后期维护的报价。 问题五:给出系统开发的进度安排,并确定关键任务路径上的人员安排使得项目进度效率最高且成本最低。 问题六:请根据自己熟悉的编程语言估算该系统的KLOC、C K(技术状态常数),并由此根据“软件工程”计算该系统开发的工作量。 问题七:给出开发周期内TOP5的风险因素。

软件开发技术

病案无纸化管理系统 目录: 一、系统简介 二、组织框架 三、物流与功能流程 一、系统简介

二、组织框架 1.机构 、层次 共分三级:公司级、分店部门级和班组织。如图1-1 、现有机构组成

公司级:总经理室; 部门级:分布在具体地区的连锁店(加盟店、特许店),公司各职能部门(人事行政部,财务部、信息管理部、市场营销采购部、企划管理部等)、配送中心班组级:分店和配送中心的管理班组; 、职能与权限 下面我只对与系统开发有关的机构职能进行阐述(按层次说明): 公司级: 、总经理室 、制定公司整体发展策略; 、批准销售计划;协调公司内各部门的工作; 、管理监督和指导下属各分店(部门)的工作; 、决定公司高层人事的变动; 、分析公司的销售、库存、采购、付款等情况; 、批准各分店和配送中心的盘点、损益报告及价格政策 公司部门级: 、人事行政部

、负责人员的工资考勤、招聘、培训、建档、考核、晋级、定级、奖惩和解聘; 、管理全公司的固定资产以及办公用品 、财务部 、处理公司日常财务事宜; 、根据销售数据和总经理室或市场营销采购部的要求支付货款,并记录货款流水; 、根据合同(协议)制定出财务付款计划;对进出发票进行管理; 、根据分店和配送中心提供的销售、进货、配送、退货、退厂、调价、优惠、损益、报残、盘点数据,对公司进、销、存按进价和售价进行核算; 、财务部市场营销采购部 、实施商品的引进、退货、更新、定位和淘汰; 、制定价格政策(调价和优惠)和促销计划(方案)并付诸实施; 、为总经理室和其他部门提供相关报表和数据; 、制定付款计划报总经理批准后交财务部实施; 、处理大宗销售合同(批发销售)

软件在土木工程中的应用

PKPM软件在工程中的应用 通过假期的实习活动,我基本了解了土建工程的建造过程,并与工地上的预算师交到了朋友,通过他的介绍,我了解到了计算机软件在土建工程中的应用,大到主体浇筑需要的混凝土总量,小到工程中需要的螺钉数目,一应俱全,更重要的是,关于结构的受力,承载量等等十分繁琐的内容,也能准确的计算,下面对该软件简单的介绍下。PAAD(PKPM AutoCAD Aided Design)是中国建筑科学研究院悉心打造的新一代基于AutoCAD平台的施工图软件,是与AUTODESK公司的首次战略合作的产品。PAAD软件具有七大优势功能: 1.实现施工图与结构模型双向互联 基于先进的BIM技术和理念,引入自定义实体开发技术,真实模拟施工图纸中的所有构件信息,包括标注信息和结构模型的各种特性,由此带来了施工图与结构模型的双向互联,实现了建模、计算和图纸间的联动效果,使绘图过程仿真化,提高效率同时降低风险。 2.与主流结构软件无缝连接 无缝接力PMCAD模型数据,同时联接SATWE、PMSAP、TAT等结构分析软件计算结果,更能够通过STAT-S软件统计工程量,建模,计算,出图,统计一次完成,不需要借助第三方接口软件,避免因信息不对称导致的设计风险。 3.根据数据来源提供多种施工图实现方式 自动接力PMCAD、SATWE(或PMSAP、TAT)数据后,自动生成包括梁、柱、墙、板等所有构件相应的施工图标注,并可进行自动数据检查;

在已有的DWG图(建筑或结构底图)基础上,通过插入数据方式,完成施工图绘制。同时利用软件提供的专用工具,手动完成相应的专业标注。客户可依照习惯自由选择实现方式。 4.首次实现二维与三维施工图的统一 首次引入基于结构设计模型的三维施工图表达方式,并与模型修改实时联动,提供判断结构构件连接关系工具,显著降低错、漏、碰、缺的风险,提高图纸的准确性。 5.个性化选筋方案 对梁、柱、墙、板各模块的设计选筋方案,结合用户多年的使用习惯和实际要求进行了优化,并为不同工程类型和用户需求进行个性化定制,使得从计算钢筋自动生成的实配钢筋更加经济合理且符合广大用户习惯,大幅度提高成图效率。 6.全参数化智能关联技术 首次提供包括构件图形显示、尺寸标注、配筋标注等的全参数化智能关联,一次性联动修改所有参数,避免反复修改过程中的不必要失误。 7.与10新规范、新平法图集紧密结合 严格执行10新规范各项条文并进行自动检查,首次提供楼板施工图的平法绘图功能,缩减设计人员的楼板施工图工作量。 其实,PKPM是两个软件内容的合称,PK是指钢筋砼框架、框排架、连续梁结构计算与施工图绘制软件,PM是指结构平面计算机辅助设计软件。 PK:PK模块具有二维结构计算和钢筋混凝土梁柱施工图绘制两大功

现代软件工程课程报告

现代软件工程与实践 课程考核报告 题目铁路售票系统 专业班级 姓名 指导教师 2020年月日

目录 1 需求分析 (1) 1.1 需求概述 (1) 1.2 需求分析 (1) 1.3 需求模型(用例图) (4) 2 静态模型 (9) 2.1 类图 (9) 2.2 对象图 (10) 2.3 包图 (11) 3 动态模型 (12) 3.1 时序图 (12) 3.2 状态图 (13) 3.3 协助图 (14) 3.4 活动图 (15) 4 总结 (15) 5 参考资料 (16)

1 需求分析 1.1需求概述 网络火车票售票系统是一款功能强大、操作简便、易维护的、具有良好人机交互界面的线上订票系统,它包括系统设置模块、票务信息模块、订票管理模块、实时信息模块、数据管理模块。实现火车票线上预定的自动化的计算机系统,能够为旅客提供准确、精细、迅速的火车票销售信息和方便、简单的订票功能。 网络火车票售票系统主要是对于订票信息的统一管理,满足了中小型线上订票网站对于用户的管理订票信息的收集和处理方面的要求。用现代化的方式取代以前的传统模式更有利于信息的流通资源的宏观管理。具有体积小、代码简洁、易维护、易修改的优点。 系统模块图 1.2需求分析 网上订票系统主要提供的服务有:站点信息管理服务、车次信息管理服务、网民订票服务和网民取票服务,具体如下: (1)站点信息管理----铁路工作人员根据实时站点路况实时反馈站点信息; (2)车次信息管理----铁路工作人员发布实时车次信息; (3)订票服务----网民在订票系统预定自己所需的车票; (4)取票服务----订票成功的网民,凭借订票号码到售票处,售票员输入订票码后,提取处网民的预定信息,然后收款付款,发票。 1.2.1 系统设置模块

软件工程(习题与参考答案)

第1章概述(习题与参考答案) [判断题] 1. 由于今天个人计算机不断发展壮大,人们不再采用软件团队的开发方式。(×) 2. 由于软件是产品,因此可以应用其他工程制品所用的技术进行生产。(×) 3. 购买大多数计算机系统所需的硬件比软件更昂贵。(×) 4. 大多数软件产品在其生命周期中不需要增强功能。(×) 5. 大多数软件系统是不容易变化的,除非它们在设计时考虑了变化。(√) 6. 一般来说,软件只有在其行为与设计者的目标一致的情况下才能成功。(×) [选择题] 1. ()因素促使计算机系统越来越复杂。(D) A. 计算机内存和存储容量上的巨大增长 B. 外部输入/输出选项的更加多样性 C. 计算机体系结构方面的深刻变化 D. 以上所有选项 2. 下面的()不再是现代软件工程师关注的问题。(A) A. 为什么计算机硬件的成本这么高? B. 为什么软件需要很长时间才能完成? C. 为什么开发一个软件的成本这么高? D. 为什么不能在产品发布前去除软件错误? 3. 软件会逐渐退化而不会磨损,其原因在于()。(C) A. 软件通常暴露在恶劣的环境下 B. 软件错误通常发生在使用之后 C. 不断的变更使组件接口之间引起错误 D. 软件备件很难订购 4. 大多数软件仍然是定制开发的,其原因在于()。(C) A. 软件组件重用是十分普遍的 B. 可重用的组件太昂贵而无法使用 C. 软件在不使用其他组件的情况下很容易构造出来 D. 商业组件在很多应用领域中可以得到 5. 下面的()说法是正确的。(C) A. 软件危机在20世纪70年代末期全面爆发

B. 当前先进的软件工程方法已经解决了软件危机的问题 C. 软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题 D. 软件危机是指在软件产品中存在一系列的质量问题 6. 软件工程的基本目标是()。(B) A. 消除软件固有的复杂性 B. 开发高质量的软件 C. 努力发挥开发人员的创造性潜能 D. 更好地维护正在使用的软件产品 7. ()是将系统化的、规范的、可定量的方法应用于软件的开发、运行和维护的过程,它包括方 法、工具和过程三个要素。(D) A. 软件产品 B. 软件过程 C. 软件测试 D. 软件工程 8. 软件工程的基本要素包括方法、工具和()。(C) A. 软件系统 B. 硬件环境 C. 过程 D. 人员 9. 软件工程师在从事软件工作时应使用下面的()准则。(E) A. 从来不为个人获利而窃取数据 B. 从来不散布或出售项目中自己工作的信息 C. 从来不故意毁坏或修改别人的程序、文件或数据 D. 从来不侵犯个人、小组或组织的隐私 E. 以上所有选项 第2章软件过程(习题与参考答案) [选择题] 1. ()是软件生存期中的一系列相关软件工程活动的集合,它由软件规格说明、软件设计与开发、 软件确认、软件改进等活动组成。(A) A. 软件过程 B. 软件工具 C. 软件产品 D. 软件工程 2. 软件过程的基本活动是()。(A) A. 分析、设计、实现、测试、演化 B. 沟通、计划、建模、构造、部署 C. 计划、分析、设计、实现、调试 D. 沟通、风险管理、度量、产品化、评审 3. ()软件需求规格说明书在软件开发过程中具有重要的作用,它是软件可行性分析的依据。(B) A. 真 B. 假

计算机软件开发和应用领域十大关键技术解析

计算机软件开发和应用领域十大关键技术解析在当今的IT就业市场,有人欢喜有人忧。有人对目前的工作和薪水很满意,有人目前正面临着下岗,或者已经下岗…… 可能你是公司里唯一谙熟某项关键技术的高手,缺了你,公司便玩不转了;也可能你所在的公司对你现有的专业技能高枕无忧,认为你在任期内足以胜任公司给你的开发任务(当然就不会再花银子去培训你啦)。 不要告诉我你们公司对原来用VB开发的业务处理系统很满意,而你呢,也认为自己除了用C语言开发程序以外,不会再去做别的什么事情。 你是不是对.NET和Java为争夺开发工具市场撕破脸皮而熟视无睹,你是不是对XML将要取代关系数据库而无动于衷以及不屑一顾。你是不是认为你能用汇编或C开发任何东西,所以觉得其它开发工具都不再重要…… 如果真是这样,那么你离失业的日子不远了 俗话说——未雨绸缪…… 想一想如果你现在失业没有工作会怎么样? 想一想现在还有如此之多的弟兄们为了找一个饭碗而四处奔波。 想一想如果现在你们公司为了抢占市场,突然要进行技术转向,你该怎么办? 想一想你现在为了自己的前途,突然需要改变技术领域,你该怎么办?或者你不满足于现在自己的知识结构,想要再充实一下,但又

不知选择那些内容来学习。那么继续往下看,并一起参加讨论吧,相信会有收获的。 在人才招聘市场,人事经理们关注的是实际技能,要求现在和将来从事开发工作所需要的实际技能。作为一个技术开发人员,自己的知识结构是就业和保持自身岗位的关键。此外还有一点也很重要,那就是即便你不再从事或者寻求实际的开发工作,也必须尽可能多地了解和熟悉当今你所从事的领域中最前沿的技术和信息,只有这样才能跟上技术发展的步伐。以便使自己始终处于不败之地。 本文列出了当今计算机软件开发和应用领域最重要十种关键技术排名,如果你想保证你现在以及未来的几年不失业,那么你最好跟上这些技术的发展。虽然你不必对这十种技术样样精通,但至少应该对它们非常熟悉。 一、XML 在十种技术中,最重要的一种技术我想应该非XML莫属。这里不仅仅指XML规范本身,还包括一系列有关的基于XML的语言:主要有XHTML,XSLT,XSL,DTDs,XML Schema(XSD),XPath,XQuery和SOAP。如果你现在还对XML一无所知,那么赶快狂补吧。XML是包含类似于HTML标签的一个文本文件,在这个文件中定义了一个树型结构来描述它所保存的数据。 XML最大的优点是你既可以在这个文本文件中存储结构化数据,也可以在其中存储非结构化数据——也就是说,它能包含和描述“粗糙的”文档数据,就像它描述“规则的”表格数据一样。

现代软件工程(复习1)

软件的定义:(1)指令的集合,通过执行这些指令可以满足预期的特征、功能和性能需求;(2)数据结构,它使得程序可以充分利用信息;(3)描述程序操作和使用的文档 遗留软件的定义:年代久远的过时的软件。 软件如其他工程原则制造的制品的区别:软件传递了我们这个时代最重要的产品——信息。 软件特征和硬件特征的区别:(1)软件是设计开发的,而不是传统意义上生产制造的。(2)软件不会“磨损”。 (3)虽然整个工业向着基于构件的构造模式发展,然而大多数软件仍是根据实际的顾客需求定制的。 为什么说软件不会随着时间而演化的说法是错误的:不管其应用领域、软件规模或者复杂性如何不同,计算机软件都将随着时间的推移不断演化。软件维护推动了软件演化,它通常是由以下情况引发的:程序纠错,调整软件以适应新的环境,满足用户新特性和功能的需求,以及对软件实施再工程以便在现代应用中发挥作用。 软件生命周期:软件的产生知道报废的生命周期,包括问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级和废弃。 软件工程的四个层次及之间的关系:工具、方法、过程和质量关注点。软件工程的根基在于质量关注点;软件工程的基础是过程层;软件工程方法为构造软件提供技术上的解决方法;软件工程工具为过程和方法提供自动或半自动化的支持。 软件工程的主要目标是什么?基本目标是什么? 软件工程的目标:从管理和技术两个方面开发和维护计算机软件,用低成本,开发出达标、高性能、易于移植、可靠性高的软件。 软件工程的基本目标是:优质、高产。 软件构建与软件部署的区别:软件构建是程序员对软件进行编码和测试,是基于程序员的;软件部署是用户对软件成品的使用和反馈,是基于客户的。 软件过程的定义:(1)将系统化的、规范的、可量化的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件。(2)在(1)所述方法的研究。 软件开发的原型模型的各个阶段:沟通、快速策划、建模快速设计、构建原型和部署交付品及反馈;循环执行以上步骤。 随着时间的推移,为什么软件需要不断演化? (1)环境运行环境的变化(2)用户需求的变化(3)用户业务需求的变化 软件工程中基于构件的软件过程模型的主要优势:基于构件开发模型能够使软件复用,软件复用为软件工程师带来极大收益。 在目前环境下,为什么说增量过程模型被认为是最佳的软件开发方法:早期的增量可以有少量的人员实现;增量可以规避技术风险。 ------------------------------------------------------------------------------------------------------------------------------------------------------------ 软件工程的通用框架以及框架活动:沟通、策划、建模、构建和部署;其中建模包括创建模型和设计,构建包括编码和测试。 惯例模型:规定了一套过程元素(框架活动、软件工程动作、任务、工作产品、质量保证以及每个项目的变更控制机制) ①瀑布模型 定义:传统软件工程方法学的软件过程,基本上可以用瀑布模型来描述。 瀑布模型的特点:1.阶段间具有顺序性和依赖性;2.推迟实现的观点;3.质量保证的观点。瀑布模型的成功在很大程序上是由于它基本上是一种文档驱动的模型。 瀑布模型的主要优点:a.可强迫开发人员采用规范的技术方法; b.严格地规定了每个阶段必须提交的文档; c.每个阶段结束前必须正式进行严格的技术审查和管理复审。 瀑布模型的主要缺点:在可运行的软件产品交付给用户之前,用户只能通过文档来了解未来的产品是什么样的。 开发人员和用户之间缺乏有效的沟通,很可能导致最终开发出的软件产品不能真正满足用户的需求。 ②快速原型模型 定义:所谓“快速原型”,是快速建立起来的、可在计算机上运行的程序,它所能完成的功能往往是最终的软件

《现代软件工程》作业.

《现代软件工程》作业 作业一: (一)名词解释 1.软件危机 2.数据流图 3.数据字典 4.变换流 5.事务流 6.耦合性 7.内聚性 8.程序设计语言(PDL) (二)填空题 1. 在信息处理和计算机领域内,一般认为软件是_____、_____ 和_____ 。 2. 数据流图的基本组成部分有_____、_____、_____、_____。 3. 数据流图和数据字典共同构成了系统的_____模型,是需求规格说明书的主要组成部分。 4. 数据流图一般可分为_____和_____两类。 5. 结构化设计方法中,要把数据流图转换成软件结构,若某个加工将它的输入流分离成许多发散的数据流,形成许多加工路径,并根据输入的值选择其中一个路径来执行,这种特征的DFD称为_____数据流图。 6. PDL是描述处理过程“_____ ”的细节,结构化语言是描述加工“_____ ”的。 (三)选择题 1. 软件工程的概念是哪年提出的( )。 A. 1988 B. 1968 C. 1948 D. 1928 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. 模块

软件工程应用-练习题(全版)

软件工程及应用练习题 一. 单项选择题 1.不属于软件架构设计工作的内容是 D 。 A. 软件的层次结构 B. 全局数据结构 C. 接口 D. 程序流程图 2.有三个模块,它们都访问同一组数据,各部件之间只有数据关系,没有控制关系。把这三个模块放到一起,形成的内聚是 A 。 A. 通信内聚 B. 过程内聚 C. 顺序内聚 D. 功能内聚 3.可以用于制定软件项目进度计划的工具是 D 。 A. 部署图 B. 用例图 C. 时序图 D. 甘特图 4.软件企业最重要的资产是 A 。 A. 人 B. 工具 C. 办公楼 D. 技术 5.软件开发过程中一个对所要解决的问题进行定义并确定系统范围的活动是B 。 A. 风险管理活动 B. 问题定义活动 C. 可行性研究活动 D. 需求分析活动 6.作为设计活动的核心角色,在整个项目中对设计活动进行领导和协调的角色是 A 。 A. 系统架构师 B. 构件设计师 C. 项目经理 D. 数据库设计师 7.实施活动将按照设计说明书进行开发,具体工作体现在三个方面,下面的工作不属于实施活动的是 D 。 A. 编码 B. 单元测试 C. 集成 D. 验收测试 8.测试是选择适当的测试用例执行被测试程序的过程,目的在于 A 。 A. 发现程序错误 B. 证明程序无错 C. 改进程序质量 D. 预防程序缺陷 9.在可行性研究中,首先考虑用户是否已经拥有或者准备购买相应的计算机硬件和软件,以支持新系统的开发和应用。这项研究任务属于 A 。 A. 技术可行性 B. 操作可行性 C. 经济可行性 D. 操作可行性 10.“验收标准1:在使用该产品的前3周,系统从未发生过崩溃或者死机现象”,这项需求描述体现的需求分析建模原则是 B 。 A. 循序渐进 B. 可验证性 C. 可追踪性 D. 自顶向下逐层分解 11.为了得到一个高质量的软件系统,除了设计人员的经验和创造性之外,还要遵守一些设计指导原则。下面指导原则中正确的是 D 。 A. 应尽早考虑系统细节 B. 应对系统做最大程度地分解,越彻底越好 C. 应选择最酷的技术 D. 应考虑系统的可维护性与可扩展性 12.在一个影像传输子系统中,一个模块负责从摄像头中读取影像信息,然后由影像增强模块锐化、几何校正,再由压缩模块压缩影像数据,之后传输模块负责传递数据。把这些模块放到一起,形成的内聚是 C 。 A. 通信内聚 B. 过程内聚 C. 顺序内聚 D. 功能内聚 13.类图是面向对象设计建模描述方法中的重要模型之一,下面的类图中Inventory和Product两个类之间的关系是 C 。

现代软件工程平时作业及答案

(一)名词解释 1.软件 2.软件危机 3.数据流图 4.数据字典 5.变换流 6.事务流 7.耦合性 8.内聚性 9.程序设计语言(PDL) (二)填空题 1. 在信息处理和计算机领域内,一般认为软件是_____、_____ 和_____ 。 2. 数据流图的基本组成部分有_____、_____、_____、_____。 3. 数据流图和数据字典共同构成了系统的_____模型,是需求规格说明书的主要组成部分。 4. 数据流图一般可分为_____和_____两类。 5. 结构化设计方法中,要把数据流图转换成软件结构,若某个加工将它的输入流分离成许多发散的数据流,形成许多加工路径,并根据输入的值选择其中一个路径来执行,这种特征的DFD称为_____数据流图。 6. PDL是描述处理过程“_____ ”的细节,结构化语言是描述加工“_____ ”的。 (三)选择题 1. 软件工程的概念是哪年提出的( )。 A. 1988 B. 1968 C. 1948 D. 1928 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. 与确认测试阶段有关的文档是( )。

现代软件工程作业

(一)名词解释 1.软件: 软件是计算机程序、数据以及相关的各种文档的集合。 2.软件危机 软件危机是在软件发展第二阶段末期的规模较大的项目开发中,出现了与当初的计划推迟交工、费用比预算大幅度上升、不能满足用户要求、可靠性低、维护困难等问题,导致了软件危机。 3.数据流图 数据流图是以图形的方式描述数据在系统中流动和处理的过程,只反映系统必须完成的逻辑功能,是一种功能模型。 4.数据字典、 数据字典是用来定义数据流图中的各个成分的具体含义的。它以一种准确的、无二义性的说明方式为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述。 5.变换流 变换流指数据流图(简称DFD)具有明显的输入、变换和输出界面。 6.事务流 事务流指数据流图中输入流被分离成许多数据流,形成许多加工路径,并根据输入值选择其中一条路径来执行。 7.耦合性 耦合性也称块间关系,指软件系统结构中各模块间相互联系紧密程度的一种度量。 8.内聚性 内聚性又称块内联系,指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。 9.程序设计语言(PDL) 程序设计语言(简称PDL),又称伪码,它是一种用于描述模块算法设计和处理细节的语言。 (二)填空题 1. 在信息处理和计算机领域内,一般认为软件是_程序____、__文档___ 和__数据___ 。 2. 数据流图的基本组成部分有_数据流__、_加工_、_数据存储_、_数据源点或终点_。 3. 数据流图和数据字典共同构成了系统的__逻辑_模型,是需求规格说明书的主要组成部分。 4. 数据流图一般可分为_变换型_和_事务型_两类。 5. 结构化设计方法中,要把数据流图转换成软件结构,若某个加工将它的输入流分离成许多发散的数据流,形成许多加工路径,并根据输入的值选择其中一个路径来执行,这种特征的DFD称为_事务型_数据流图。

计算机软件开发技术及应用研究

qiyekejiyufazhan 0引言 随着社会的快速发展,人们逐渐意识到计算机科学技术在生产和生活中的重要性,并对其进行推广和应用,有效改善了人们的生活质量,并提升了人们的生活品质,但在时代的发展要求下,计算机技术的应用也要坚持与时俱进,不断地进行开发和创新。当前,计算机软件开发技术已经不能满足人们的生产和生活要求。为了符合时代的发展需求,进一步发挥计算机软件开发技术的实用价值,实现其安全稳定地运行,对软件开发者提出了更高的要求,要求其主动地去学习和研究相关计算机软件开发技术知识,不断地提高自身的知识水平和实践能力,从而使得计算机软件开发技术创造出更多的社会效益和经济效益。 1计算机软件开发技术概述 1.1计算机软件开发的特点 在计算机软件中,系统软件和应用软件在计算机软件中占据非常重要的位置。一般情况下所说的计算机软件开发,主要是对其系统软件和应用软件进行开发,开发时研究者都是立足于用户和社会的实际需求。比如,系统软件开发的目的旨在对计算机的运行进行控制和管理,从而使得用户在面对计算机应用界面时,能获得良好的用户体验;一般应用软件的开发,大多是通过充分的市场调研,结合企业和个人发展的需求,进行办公软件及娱乐软件的开发。计算机软件开发的特点主要包括2个方面:第一,由于计算机技术的发展,软件开发技术在各行各业内实现了广泛的推广和应用,而且创造出了重大的社会效益和经济效益,充分地发挥了自身的社会使用价值,有效地推动了社会的发展和进步。第二,计算机软件开发技术作为一项科学研究项目,必然需要大量的人力、物力和财力,由于涉及的程序多而复杂,所以要求其开发技术更加细致化。在信息 时代下,计算机软件开发技术已经在部分行业得到了充分应用,并且也取得了很好的效果。 1.2计算机软件开发技术坚持的原则 研究者在进行计算机软件开发时,必须坚持以下3个原则:第一,在进行软件开发时,其开发技术必须科学规范化,不违反相关法律法规,确保其开发的软件呈现最好的质量,并且能够稳定运行和保护用户的个人隐私安全。第二,在进行计算机软件开发前,研究者都会制定相应的开发计划,并根据计划设计出其相应的软件模型,严格按照程序进行各个阶段的研究,确保高效率的研究开发。第三,在计算机软件正式应用于市场前,都需要对其运行的稳定性及其他方面进行评估,评估方法必须科学合理,从而确保用户在使用软件时能够获得良好的用户体验。 1.3计算机软件开发的技术方法 首先,生命周期法。在进行计算机软件开发中,该技术方法的应用原理主要是立足于软件开发所需要的开发时间,为其研究开发制定一个研究时间段。由于软件开发中存在不同的开发阶段和程序,主要包括对软件模型进行初步设计和规划,并根据设计理念和模型进行软件开发,对开发后的软件采取科学合理的方法进行评估,并将其投入市场后进行软件运行,在后期定期对软件进行维护。在不同的开发阶段,都需要遵循相关标准和制度。开发者可以根据生命周期法,结合软件的特点和实际情况,针对软件进行充分的市场调研,了解客户需求,为研究项目制订一个科学合理的规划方案,从而让研究项目有计划地实施,在最短的时间内有序、高效地完成软件开发。 其次,系统开发法。该种软件技术开发方法是一个自动化的过程,在进行软件开发应用前,软件开发者都需要软件使用者针对软件自身,并结合使用者自身发展需求,对其软件开发的功能进行明确,并详细地说明其开发所要实现的目标,然后 【作者简介】姜慧慧,女,河南商丘人,西北工业大学本科在读学生,研究方向:软件工程、电子商务。 计算机软件开发技术及应用研究 姜慧慧 (西北工业大学,陕西西安710072) 【摘要】我国经济发展迅速,为计算机技术的进步和创新奠定了坚实的经济基础,也促进 了计算机的推广和应用。计算机技术的广泛应用,改变了人们的生活方式,促进了技术的不断创新,从而更好地服务于社会。计算机软件开发技术在计算机技术中起着关键作用,在计算机的发展中占据非常重要的位置。随着时代的不断发展,人们对计算机软件开发技术提出了更高的标准。文章首先对计算机软件的开发特点及常用的开发方法进行阐述,然后就计算机软件的开发应用进行分析和论述。【关键词】计算机;软件开发;应用研究【中图分类号】TP311.52【文献标识码】A 【文章编号】1674-0688(2019)05-0103-02 103

人工智能及其在土木工程中的应用

人工智能及其在土木工程中的应用 1.地理信息系统的基本功能 地理信息系统是一门集计算机科学、信息学、地理学等多门科学为一体的新兴学科,基于其能快速、方便地管理海量数据的特点,已经被广泛应用于资源开发、环境保护、城市规划建设和灾害监测与评估等领域 J.它是在计算机硬件和软件支持下,运用系统工程和信息科学的理论,科学管理和综合分析具有空间内涵的地理数据,以提供对规划、管理、决策和研究所需信息的空间信息系统.长期以来,人们普遍使用模拟地图来存储和查询空间信息.地图和描述地图信息的文献著作的结合,可视为一种模拟的地理信息系统.这种模拟地理信息系统的使用存在一些缺点,如修改能力差,不便于数据的及时更新;各种地图大多数具有不同的比例尺,不利于综合分析多种地图信息;资料繁杂,不利于管理人员的查询等.计算机数据库管理技术(DBMS)、计算机辅助设计(CAD)及计算机图形学(Computer Graphics)的发展,使人们用数字技术解决这些问题成为可能.一个用来存储和处理地理信息的计算机系统即成为地理信息系统(GIS).GIS在这些技术的基础上发展起来,综合了它们的功能,并且具有自己独特的功能.GIS的功能主要包括数据的输入、管理、分析和显示.通过对模拟地图数字化、键盘输入或数据格式转换等途径,将各种数据输入GIS后,GIS可以快捷地对其进行管理和分析.GIS处理的数据包括两种,一种是空间地理数据,如建筑物的位置、地下管线的布局等;另一种是空间信息对应的属性数据,如建筑物的结构类型、管径等.GIS可以象DBMS、CAD一样对数据进行编辑、更新等操作,更重要的是可以运用其独特的空间综合分析功能,由原有信息导出新的信息.此外,和其他开放式程序一样,GIS还可以挂接外部专业应用程序,增强其计算分析能力.GIS具有强大的显示功能,可以在空间域内直观地表达查询及检索结果,同时提供高质量的图文报告输出功能. 地理信息系统(GIS)在土木工程中的应用 随着地理信息系统技术的发展, 软件功能日趋多样化, 其应用范围也由传统领域扩展到其它越来越多的新兴或交叉学科目前, 技术己经开始逐步融入并推动着土木工程大学科中若干重要领域的进一步发展。从一定程度上讲, 的应用模式正在逐步影响和改变着土木工程师惯有的思维方式。 (一)、GIS技术在工程地质勘察软件中的体现 工程地质勘察行业中引入GIS技术, 旨在利用GIS强大的数据管理和空间分析功能,对以各种图件、图像、表格、文字报告为基础的单个工程勘察项目或区域地质调查成果资料以及基本地理信息, 进行一体化存储管理。在此基础上可以进行二维地质图形生成及分析计算, 并能够利用钻孔数据建立区域三维地质结构模型, 采用三维可视化技术直观、形象地表达区域地质构造单元的空间展布特征以及各种地质参数, 建立集数字化、信息化、可视化为一体的空间信息系统, 为相关部门提供有效的工程地质信息和科学决策依据。目前, 国内将GIS 技术和工程地质勘察业务相结合, 对应用于工程地质勘察行业的GIS软件也成为软件研发的新领域, 如有武汉中地公司的MapGIS工程勘察GIS信息系统、理正勘察系列软件等。 典型的工程勘察GIS系统由以下几个功能模块组成: 1、数据管理 数据管理模块主要实现对地理底图、工程勘察所获取的资料和成果的录导入、转换、编辑、查询等功能。其中数据建库可根据需要建立地理底图库或者工程勘察数据库,以实现对海量数据的方便输入、存储和编辑而基于GIS强大的数据管理功能, 工程勘察GIS软件能方便

现代软件工程在软件开发中的应用论文

现代软件工程在软件开发中的应用论文 随着近年来社会主义市场经济的迅猛发展越来越多的科技产品逐渐为人们所了解和关注正如我们所知科技产品的运行离不开相应软件软件的结构和特性决定了其能否在开发软件的过程中得以更好的运用因此软件工程的合理选择对于现代软件的开发就有了十分重要的意义本文旨在对软件开发过程中现代软件工程的应用进行解读希望能起到抛砖引玉的作用 科学技术的进步推动着软件工程向新的层次迈进现代软件工程方法也渐渐取代了过去传统软件工程方法在软件开发过程中的作用成为越来越多软件开发团队的选择而过去传统软件工程方法所具备的优势也愈发不明显在这一背景下许多人开始使用新的软件开发技术但同时却常常忽视了磨合期的必要性导致所开发出的软件存在各种问题接下来笔者将就这一问题谈谈自己的认识 1过去传统软件工程方法分析 一般来说传统软件工程方法大多采用结构化样式由若干程序构件组成在使用时需要进行问题的定义与概括此后还需对解决该问题的工程实施进行可能性与必要性的整体分析得出采用该工程方法所必须满足的各项要求随后进行应用方法的系统构建在完成整体建构之后还需分层次地对内容进行详细建构最后再在完成软件代码的编写之后对软件性能进行检测在必要情况下还需对其中的弊端和漏洞进行维护和修整确保其能够满足相应要求

需求分析可谓是这一系列复杂环节之中最为关键的步骤只有对需求有充分的了解并在软件之中进行回应才能确保所开发的产品能够迎合大众需求进而取得成功另外系统建构的重要性也是毋庸置疑的从层次到整体内容的建构都应将需求作为设计标准并参照相关的软件数据做到具体问题具体分析一般而言建构方法主要有状态图、数据关系图、数据流动图像等几种结构图在建构程序中的应用比较普遍也是常见的系统建构方法而层次结构中所用的则更多以程序图标编码方式为主 2现代软件工程方法分析 与传统软件工程方法相比现代软件工程方法的优势在于所针对的对象更加具体处理的弊端与问题也都是具体存在的这彻底解决了传统软件工程方法中最大的不足和缺陷 现代软件工程方法主要由五部分构成: (1)分析; (2)设计; (3)编码; (4)测试; (5)维护 尽管这与传统软件工程方法基本类似但现代软件工程方法的长处与优点也正是体现在各个细节之中例如传统的软件工程方法在分析时更加笼统不具有存在的问题和对象而现代软件工程方法则是对

软件再工程及其应用

软件再工程及其应用 谷耀 (天津市信息中心) 摘要本文从软件在运行维护阶段经常遇到的维护困难大、费用高,已开发的软件需要移植等问题出发,介绍了软件再工程(Reengineering)的基本内容和相关技术,并通过国外的应用实例说明再工程对提高软件生产率的重要作用。 关键词软件工程、软件再工程 为了建立各类信息系统,人们很重视软件开发过程,提出了多种软件加工模型,如瀑布模型、快速原型模型等,并研制了支持这些模型的软件开发环境和软件开发工具。这类开发环境和工具的应用对于辅助软件开发人员缩短软件开发周期,提高软件生产效率和质量起到了不可低估的作用。但是,目前多数开发环境和开发工具是为了支持开发新的应用软件而设计的,对于那些已投入运行的软件系统的维护与移植并没有带来多少帮助。 1.问题的提出 根据软件生存周期的概念,一个软件投入运行只是标志开发阶段的结束,而非软件生存周期的终止。软件进入运行维护阶段经常会遇到如下问题: 1)软件维护费用高。一般来讲软件运行维护阶段是其整个生存周期中持续时间最长的阶段,只要软件仍在使用,其维护工作就不会终止。据统计,软件维护费用在整个生存期中所占的比例逐渐增长,七十年代35-40% ,八十年代占40一60% ,估计九十年代会上升到70%。美国空军的一软件项目,其开发费用为每行源程序75美元,而维护费用达到每行源程序400美元。 2)软件维护难度大。软件难以维护主要反映在以下几个方面: a.被维护软件文档不齐、质量差,或自投入运行后程序已经过多次修改,而文档资料并未随之更新; b.早期开发的软件采用的是非结构化设计方法,原有软件结构不良或经过多次修补使其组织结构变得模糊不清; c.在软件开发阶段缺乏对软件的可维护性的考虑,软件的可理解性、可扩充性差; d.由于维护工作中考虑不周,在改正原有错误的同时又给软件引入了新的问题,即产生了波及影响; e.软件系统规模很大时,系统复杂,理解工作费时费力。 3)软件资产数额巨大。随着计算机的广泛应用,正在使用和正在开发的软件数量与日俱增。

现代软件工程第四章答案

习题四参考答案 1. 交互设计具体采用什么方法进行?有哪些设计手段和过程? 交互设计使用目标导向的设计方法,包括角色设计、目标设计、任务设计和人性化设计等几种方法。其中角色设计是虚构软件的潜在用户并进行精确的定义和设计,目标设计是提炼角色的目标,任务设计是角色为达到某个目标而必须执行的任务进行简洁的描述,也就是进行行为设计,最后进入界面设计阶段。 交互设计的手段 首先考虑什么人会使用产品?用在什么地方?接下来要了解用户会有些什么样的行为?交互设计的关键在于如何优化用户与产品之间的交互,从而使产品满足用户的期望。在做选择的时候你应当有所依据,而这个依据就是对用户的理解。这就涉及到: 考虑人们擅长什么、不擅长什么。 考虑什么可能对用户的当前做法有所帮助。 考虑如何提供高质量的用户体验。 听取人们想要些什么,并让他们参与设计。 在设计过程中,让用户来尝试和验证。 交互设计的过程 一般来说,交互设计涉及以下4项基本活动: (1)理解用户需要,建立用户需求 开发人员必须了解谁是目标用户、他们需要哪些支持,才可能设计出能支持这些用户的产品。首先找到真正的用户,然后从他们那里找到需求。用户和他们的需求是所有设计、开发工作的基础。在“以用户为中心”的方法中,这个活动是“万物之源”。简而言之,在这个阶段开发人员需要知道:用户想要什么,开发人员要做什么。 (2)开发一些候选设计方案 这是设计的核心活动,也就是提出满足用户需求的构思。它可以划分为两个子活动:概念设计和物理设计。所谓概念设计就是用一种用户能够理解的方式去描述产品应该做些什么、如何运作、外观如何;而物理设计考虑的则是产品的细节,包括要使用的色彩、声音和图像,还有菜单设计和图标设计。这些设计构思都需要提出各种候选方案,从而制作出原型以供评估。这个阶段其实就是:试试该如何来做。 (3)制作设计方案的原型 评价一个交互设计的最佳方法,就是让用户与产品进行交互,让用户去感受。这就要求开发人员要把设计方案转化为可以交互的版本,或者说产品的原型。 这些原型并不一定必须是能够运行的真正软件版本,可以采用很多技术来实现所谓的“交互”。比如说,制作纸张原型(把步骤画在纸片上并口头为用户演示)就又快捷又便宜,而且能在设计的早期阶段就发现问题。这个阶段概括来说就是:先简单地做个样子出来。 (4)用户测试和评估 开发者需要让用户来检验产品或软件。用一句简单的话来概括这个阶段也就是:让用户看看这个设计行不行。测试也需要重复进行。这个相互联系并且重复进行的特征被称为“迭代”,是交互设计过程的关键特征之一。测试的目的是要保证产品是可用的。因为不同的用户有不同的需要,开发人员需要相应地设计不同类型的产品。 为用户“度身订造”产品或服务,这一点通常可以采用“以用户为中心”的设计方法来实现。UCD方法要一切以用户的最终感受为出发点,让用户参与整个设计过程。同时,为 了验证产品确实能够满足用户,你也需要通过测试和评估来进行判断。

相关主题