WSR软件分析文档自动生成系统可行性报告(完美版)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
WSR软件分析文档自动生成系统可行性报告
(此文档为word格式,可任意修改编辑!)
一、申请单位、合作单位简介
1.基本情况
xx有限公司, 于2004年3月成立,注册地址为xx工业基地,注册资本550万,专业从事计算机软硬件产品的研发设计生产、销售和服务业务,并着力为用户提供IT应用的解决方案。
公司目前的主要产品有xx商用台式电脑、xx家用台式电脑,xx服务器。
xx品牌目前是浙江省省产计算机第一品牌,xx市名牌,也是我省知名的政府采购指定品牌,已被市场检验为是一款品质可靠、性价比高、被用户所广泛接受的本土品牌。
为了进一步提高xx品牌的产品定位以及产品内在的核心竞争力,公司非常注重对产品研发的投入,2005年组建成立了高新技术研发中心并得到了政府有关部门的认定,研发中心的任务主要包括两个方面,一方面是对计算机硬件本身品质性能优化提高的研究,另一方面是以市场的需求为导向,着眼于为某些特定用户开发应用方案。
目前研发中心在进展中的项目有高性能计算服务器、高性能网络计算平台、个性化家用电脑等。
现公司办公总部位于xx文三路商务中心地带,经营面积约400平方米的高档写字楼,研发场地100多平方米,以及约1000平米的生产场地。
为了进一步适应发展的需要,2005年公司在政府的支持下,项目征地近15亩,用于xx台式电脑、服务器与笔记本电脑的研发制造。
该项目得到了政府有关部门的大力支持,目前已获得xx市计经委批准,列为政府资助的技术改造项
目之一,项目基建在2006年启动。
公司现有员工80人,80%以上都是专业对口的大专、本科、以及硕士生的专业人员,其中软件开发/研发人员12名,已形成一支有战斗力的高效的员工队伍和管理团队。
公司的主要经营管理班子,均具有五年以上的项目操作经验,公司主要负责人毕业于浙江大学计算机应用专业硕士研究生院,从事IT公司经营管理十年,整个管理团队拥有丰富的管理与实战经验,并具有高度的兢业精神和忠诚度,为公司的快速发展提供强有力的团队保障。
通过几年的发展,目前公司在产品、技术、管理等方面都已具备了较强的实力,2005年公司顺利地通过了ISO9001的质量体系论证,管理严谨、创新并注重实效,是公司最明显的特点。
随着公司的不断发展壮大,xx品牌的知名度正在逐步提高并深入人心,公司上下齐心协力,正在加紧实施品牌战略,以期发展成为行业的龙头企业,并以我们xx企业产品为核心,形成“互联网络”,使地区优势得以发挥,积极促进我市计算机整机产业的发展,形成新的经济增长点,同时树立地区形象,改善本地区内引外联的软环境,促进区域经济整体发展,实现地区经济与企业的共同繁荣!
2.技术能力
作为高科技产品的研发制造厂家,xx自成立起,即深知走技术创新之路、发展自主知识产权产品的重要性,为了实现这样的技术目标,公司非常注重对技术人才的引进、培养,和技术队伍
的打造,注重对技术研发的不断投入,以期形成一个可持续性发展的技术研发与创新环境。
公司现有技术人员30多名,其中软件开发/研发人员12名,95%以上人员具有专业对口的大专以上学历,其中本科生在50%以上,并拥有几名硕博士作为技术领军。
这些专业工程师分别具有在硬件开发、测试、软件开发、信息管理应用等不同方面的专长,为公司承接各类项目作好了很好的技术人才队伍的准备。
同时,为了进一步加强技术力量,公司于2005年成立的技术研发中心,不仅荟萃了公司技术队伍中的精英力量,还与多家在杭知名高校的计算机研究所或实验室,建立了很好的产学研横向合作关系,使得研发中心得以充实进一批来自高校的科研人才,大大提高了公司整体的技术力量,和技术项目的承接能力。
除了人才队伍的建设外,公司也着力创造良好的研发环境,研发中心拥有独立的办公、试验以及研发场地,总建筑面积200 平方米,包括产品设计室、软件开发实验室、检测实验室,老化测试以及整机测试等实验室。
中心各实验室配有各种各样的先进仪器设备,各实验室除具备常用的仪器设备外,还针对性的配备了先进的专用仪器,为每位研发人员配有专用计算机。
综之,研发中心具备了开展各项研发设计测试任务的良好环境和保证条件。
本项目在整个开发团队的共同努力下,经过8个多月的辛勤工作,业已大体完成第一阶段的系统概要设计工作。
3.财务状况
随着xx品牌的知名度的不断提升,xx产品在全省的销售渠道得到了快速地扩展,用户群在不断的扩大,总体的销售形势呈现出快速递增的趋势。
从2004年的销售收入735万,到2005年实现销售259万,2006年上半年共实现销售2135万左右,销售的增长是非常明显的。
从资产情况看,2004年520多万,2005年760万,截止2006年6月760多万,公司资产在快速的增长。
从财政稳健性看,2005年底资产负债率是26.7%,到2006年6月底,资产负债率是18%,可见,公司财务状况是非常良好稳健的。
4.获奖情况
因xx公司成立时间不算太长,多项技术项目或新产品仍在开发中,或者还在申报鉴定中,因此,获奖情况目前尚不多,可以一数的资质或荣誉有:
2005年xx品牌获得xx市名牌称号,并列入“省名牌培育计划”
2005年通过ISO9001论证
2005年通过区高新技术研发中心认定
2005年通过xx市“信息港”企业论证备案
二、项目的必要性及市场前景
本项目是设计一种分析、解剖软件的软件,是属于计算机系统软件中的基础性工具软件。
它运用软件理解技术对软件进行反向
汇编、回溯、和自动分析与归纳,提取软件系统各部件之间的相互关联信息,反映软件系统功能结构、设计模式的不同抽象层次视图等信息,并将软件理解的信息用恰当的图形化界面或文档的方式进行展示和输出。
该软件可以有效地辅助软件系统的开发与维护;能进行快速分析和理解(大型)软件系统,提高软件开发效率;可评估软件系统与软件文档之间的一致性;以及辅助软件上线后的长期维护,对整个软件生命周期均有重要的支撑作用。
此类软件开发正在受到软件业的高度重视,软件本身涉及多类创新工作。
该软件的主要用户是软件开发商和应用软件的用户,有较大市场空间和实际需求。
该软件的开发成功,对促进浙江软件产业发展,提高软件开发效率,提升应用软件维护质量,创建自主品牌软件系统,尤其是基础性软件系统,具有重要示范意义。
1.国内外技术发展现状及趋势
从上世纪90年代早期开始,由于国外软件市场对遗产软件复用的迫切需求,逆向工程技术得到了长足的发展,对此,IEEE Computer Society、ACM SIGSOFT、ACM SIGPLAN、Reengineering Forum等主要组织也在软件逆向工程领域发起了三个年会,以深入研讨逆向工程问题。
这三个年会是:WRCE (the Working Conference on Reverse Engineering)、IWPC (the International Workshop on Program Comprehension)和PASTE(the Workshop on Program
Analysis for Software Tools and Engineering)。
此外,以CMU (卡内基梅隆大学)为代表的多所世界知名大学在1984年就成立了专门的软件逆向工程研究中心,以致力于相关技术的研究。
另外IBM、Microsoft等在此领域的研究工作也进行了多年。
近年来,由于国内软件市场对遗产软件重构的刺激,逆向工程技术的重要性也开始得到了国内学术界和商业界的认同。
作为控制软件复杂性、提高软件系统质量、支持软件开发和复用的重要手段之一,软件体系结构对软件开发组织具有极其重要的作用。
然而,实际的程序开发却往往背离最初的软件体系结构设计而造成体系结构性破坏,为此需要进行体系结构恢复。
同时,遗产软件系统由于早期的开发缺乏有效的设计或缺乏详细描述文档而需要重构或恢复。
为此,逆向工程领域中对软件理解中的体系结构恢复与重建成为了研究的热点,每年都有此领域的论文在WRCE、IWPC、PASTE等相关杂志上发表。
此项目的关注点在以体系结构为中心的软件理解上。
逆向工程中软件理解技术发展至今,业界已经研发出一些辅助工具,一些典型软件有:
(1)Rigi
Rigi是发展较早的软件逆向工程辅助工具,至今它仍是Victoria大学的Rigi Research在研工程项目。
Rigi先对软件系统进行分析以获得一个基本的系统分层视图,然后由相当熟悉该软件系统的用户对此分层视图进行修改和编辑以得到更精练的系统分层视图。
由于Rigi的分析器只能分析函数和结构类型的数
据,这使得产生的视图局限于函数视图。
(2)Refine/C
Refine/C由Reasoning公司开发。
它是一种可扩展的、交互的工作台,逆向分析C程序,用户能够使用其API并配合使用其公司开发的另一个工具Software Refinery来细化特定的应用程序。
但是它不支持文档输出、增量分析,不能显示函数调用等一系列视图,而且在分析包含语法错误的源代码时表现不佳。
(3)Imagix4D
Imagix4D由Imagix公司开发。
Imagix4D 是一个C和C++软件理解工具。
它能在很多层次上快速地分析系统代码,这些层次分为高层的设计到建构的细节、类和函数依赖性等。
Imagxi4D 以一种3D图形的格式描述软件的关键信息,这能让用户快速定位到相关视图。
但是它不支持源代码浏览定位、输出文档局限于函数级别、源代码分析速度低下、不能抽取实体关系图信息。
(4)SNIFF+
Sniff+由TakeFive Software GmbH公司开发. 它是一个开放的、可扩展的和可分层的C/C++编程环境, 同时也提供逆向工程功能。
Sniff+提供一个高效和便携的环境,同时有着良好的用户接口。
但是,它对于错误语法分析欠佳,不能展示重要的函数、变量、数据类型信息,没有控制流图等层次视图,不能记录外部变量或函数信息。
(5)Source Insight
Source Insight由Source Dynamics公司开发,目前被Microsoft,IBM,Intel,Novell,Motorola等很多国际大公司所使用。
它以工程的方式分析软件源代码,通过图形界面显示各种符号、符号引用树,类继承视图、函数调用视图等。
它没有供外部使用的API接口,不能有效集成到其它工作平台。
它不支持文档生成,其函数调用视图仅能展示调用关系图,即仅仅是按字母顺序罗列的被调用函数列表,而不能反映函数控制流程视图。
(6)Source Navigator
Source Navigator是遵守GPL的Open Source软件,具有与Source Insight相似的功能,但是界面环境不如Source Insight友好。
它的图形用户界面采用Tcl/Tk(一种解释语言)语言实现,故分析大型软件系统时速度会慢于Source Insight。
它能通过图形用户界面显示各种符号信息、符号上下文信息、符号引用树,类继承图、函数调用图。
它不支持文档生成,其函数调用视图仅能展示调用关系图,即仅仅是按字母顺序罗列的被调用函数列表,而不能反映函数控制流程视图。
另外,它不能分析并获取局部符号信息,不便于上下文查看、不能查看定位同名符号。
(7)JBPAS
JBPAS是国内青鸟II型系统的逆向工程组成部分。
它是由一个C++分析器前端和一组分析工具集组成的软件理解系统。
它采用增量分析技术对程序源代码进行静态分析,能抽取软件系统中
部件至今的交叉引用关系。
它能生成Rose描述文档,但是需要预装Rational Rose和Microsoft的DAO工具集。
JBPAS对源代码的分析速度很慢(对大约10万行源代码的程序大约需要6小时),不适合软件开发组织日常对软件系统的开发、维护和理解分析。
一般地,对程序分析与文档生成类软件的评价标准主要体现在:体系结构文档输出、浏览定位、增量分析、错误语法分析、源文件目录布局、调用视图、数据结构视图、实体关系图、合成抽象视图、源代码编辑,等方面。
通过对一些典型软件的分析,认为这些软件在体系结构层次上的软件理解与文档描述方面的研究不足,特别是软件文档生成技术远未解决,至今,业界已开发出的软件理解工具仍然没有一种系统能较好满足逆向工程中软件理解的需要。
2.国内外市场需求分析
随着计算机科学与技术的深入发展,软件开发技术取得了巨大的进步。
然而随之而来的软件危机给软件开发提出了严峻的挑战。
软件规模越来越大、软件复杂度越来越高给软件开发和维护带来了巨大的压力,其根本原因在于设计文档的缺乏或设计文档与软件系统具体实现的不一致,造成了软件开发组织对软件系统的理解缺陷。
①软件文档生成技术远未解决
至今,业界已有的软件理解工具仍然没有一种系统能较好满
足逆向工程中软件理解的需要,技术发展空间广阔,具有理论研究意义,也具有重要的实际应用意义。
②对国内、国外软件企业具有技术支撑作用
据统计资料,软件资源预算的50%到80%消耗于对现有系统的维护,软件维护者理解程序源码的时间超过软件生命期的70%,而完备、准确的软件文档是进行软件维护的重要基础。
一些软件企业普遍存在不同程度的软件文档不完备的问题,特别是在一些中小型软件企业表现得比较突出。
本项目的预期成果,对国内、国外软件企业具有技术支撑作用。
③对推动我省基础软件的开发具有重要意义
软件产业作为浙江省经济发展的主导产业之一,需要在系统软件、软件开发工具领域有所作为。
浙江省作为国内的一个软件产业大省,但软件产品主要集中于嵌入式应用软件、金融证券、基金财务、医疗卫生、印染服装、税务、工商、公安、宾馆酒店、工业控制,而在最基础、最核心的诸如操作系统、底层工具、系统工具等系统软件产品方面则相当薄弱,与发达国家有很大的差距,限制了我省软件业的发展空间和利润空间。
开发具有自主知识产权的系统工具、系统软件是软件业界必需攻坚的一个目标。
浙江省十一五规划纲要提出: 加强自主创新,提升产业国际竞争力, 重点建设国家和省级软件、信息、生物等高技术产业基地,这些目标的实现都需要核心系统软件的研究成果来支撑。
3.项目现有基础及竞争力分析
本项目的开发力量以本企业的高新技术研发中心的研发团队为主要依托,充分发挥企业实际开发和市场运作经验,同时,又充分利用高校实验室在研究上的技术积累、对领域前沿的把握和人才集中的优势,形成优势互补的多方合作关系。
项目组主要研究人员具有长期从事科研工作的经历,对本研究内容作了长期的跟踪与积累,研究成员中具有专业从事编译器设计的工作经验,对关键内容已经作了比较系统的研究,掌握研究工作所需的基本理论和技术,具备正常开展项目研究的基础和很强的竞争力。
截止申报时间,本项目已经投入了72人月的开发人力,大致完成了第一阶段的80%的工作(系统概要设计工作),目前正在努力深入完善中。
本系统的竞争力主要体现在技术的先进性和功能上切合市场需求,具体方面:
(1)该项目在国内尚属于空白点,也是技术难点。
在国内技术具有开拓性意义。
(2)本系统适合多语言理解的系统架构设计。
在本项目中,先以C/C++代码为对象设计,但预留其他语言理解的规则空间设计系统架构,体现软件的通用性。
(3)比国际上的同类系统相比较,本系统特别加强了对文档生成/表达功能,适合国内市场的需求。
(4)市场需求较为迫切,需求面较为可观,因此市场前景较好。
三、项目概况
1.项目主要实施内容
本项目首先需要对软件系统进行低级的源代码分析,提取系统部件之间的相互关联信息,即对软件系统进行适当粒度的分解;然后合成反映软件系统体系结构、设计模式的不同抽象层次视图等,即对软件系统进行高层次的归并,将软件理解的信息用恰当的人机界面或以文档的方式进行展示和输出。
①软件信息抽取
正确获取软件信息是整个研究工作的重要基础。
将运用编译理论与技术、智能信息处理技术,研究软件源信息规律,获取软件的符号信息、从属关系信息、交叉引用信息、层次结构信息,以及信息依赖关系。
②软件信息组织与存储
在软件分析过程中收集到大量符号信息、从属关系信息、交叉引用信息、层次结构信息,以及信息依赖关系等数据后,将进行智能化的分类和管理研究,为软件文档生成和信息可视化的检索、应用、处理和更新提供快速的存取。
③软件信息合成
软件信息抽取可获得粗糙的低级程序代码级信息,如变量定义/声明、数据结构定义、函数引用关系等,但这些信息不足以让用户宏观掌控软件系统的体系结构,为此需要对源代码基别的低级信息进行子系统合成,以逐步由小到大,由粗到精地合成更高层次的全局体系结构视图,展现全局的程序控制流程。
而且,用户在理解过程中还可以由大到小地对各个子系统进行放大,详细了解精确到函数级别的代码实现细节。
④软件文档的描述与生成
研究软件文档的系统化、结构化、图形化的描述方法,设计系列化的描述方案,生成不同抽象层次的软件文档,多视角展现分析结果。
同时也需要研究本系统产生的文档与其它逆向工程工具的互操作性。
⑤软件理解与文档生成集成环境
研究和构建集信息分析,信息获取,信息处理、信息利用、信息可视化和文档生成为一体的集成分析环境。
通过一体化的集成环境,提供统一的分析视图,避免用户在分析程序、修改代码、产生文档之间来回的切换,使用户专注于软件理解工作。
2.项目主要技术指标
主要技术指标体现在所实现的目标上,具体反映在:
①实现和正确提取软件描述信息。
②实现具有增量分析及容错机制的程序分析。
③实现高层抽象视图信息合成技术。
④实现文档布局和生成技术。
⑤实现大规模图形视图快速生成和按需裁剪技术。
3.项目技术路线
本项目借鉴和吸收一些商业软件和开放源代码的核心思想,采用C/C++为主的开发语言,采取模型的改进和算法优化等方法来开发此系统。
在研究工作中强调标准化,通过实验来验证和推进整个研究工作的进行,并参考一些开放程序分析工具和开放集成开发环境作为当前工作的基础。
针对各个子系统的具体技术路线描述如下:
(1)软件理解子系统
软件理解子系统是整个系统的核心,它抽取软件系统而建立的信息库是其它子系统工作的基础,为此本项目对它进行了比较深入了前期研究。
通过前期对很多开源程序分析工具的调研,如Source Insight、Source Navigator、Cscope、Cxref、Global、Ncc等,并对之进行了深入的评估与分析。
本项目拟设计出如图1所示的软件理解子系统基本组织框架。
图1 软件理解子系统基本组织框架
在图1所示的框架中,有十个功能组件,其中File Editor,Project Manager,Symbol Browser,Info Carrier共同构成界面显示环境-IDE。
对各个部件简要描述如下:
①Project Manager 工程管理器,它用于管理对工程的所有操作。
②File Editor 文件编辑器,它用于对源文件进行编辑。
③Info Carrier 信息传递器,它把用户在Project Manager,File Editor中的操作信息传递给Driver;待Driver调用后续的工具链更新内部符号表后,它将根据用户的操作情况来调用Symbol Browser更新符号显示。
④Driver 驱动器,它用于驱动后续除Symbol Browser外的所有工具链。
⑤Parser 分析器,它用于对源代码进行分析,并输出分析信息文件Analysis Info。
⑥Database Constructor 数据库构建器,它用于为分析工程创建符号信息数据库。
⑦Database Updater 数据库更新器,它用于对数据库的数据进行更新。
⑧Database Retriever 数据库检索器,它用于检索符号信息数据库,并输出格式化的符号信息。
⑨Symbol Table Manager 符号表管理器,它用于把格式化的符号信息录入内部符号表。
⑩Symbol Browser 符号浏览器,它用于读取内部符号表,并显示符号。
(2)文档生成子系统
文档生成子系统的核心技术在于高层抽象层次信息的合成及文档信息的合理布局。
通过前期对很多开源文档生成工具的调研,如Doxygen、Doc++、Javadoc、DocBook、ROBODoc 等,本项目主要参考Rigi和Doxygen作为研究工作的基础,因为Rigi具有一定的高层信息合成机制,而Doxygen具有了一定文档布局和生成功能。
(3)信息浏览子系统
信息浏览子系统的核心技术在于综合高层抽象视图快速生成
与按需裁剪。
很多开源的集成界面环境都可以提供参考,如DEV-C++、eclips、qmwedit、cEdit等。
尽管等相关文献提供了一些大型图形生成技术指引,但是设计具有按需裁剪功能的视图生成算法则仍是努力解决得技术难点。
根据上述分析,初步拟定的软件理解系统总体规划方案如图2所示。
图2 软件理解系统总体规划方案
4.项目创新点
从90年代早期开始至今,基于程序理解的逆向工程技术得到了很大的发展,尽管研究工作不尽人意,但国内外的学者们围绕这个项目已经产生出一些技术成果。
为此,本项目的创新主要集中在引进消化吸收再创新。
其创新点有:
(1)适合多语言理解的系统架构设计。
在本项目中,先以C/C++代码为理解对象实现设计。
但通过适合多语言理解的系统架构设计,预留其他语言理解的规则空间,体现软件的通用性。
(2)文档生成功能。
通过对国内外研究现状的分析可以看到,现有的开源程序理解工具几乎没有文档生成能力,而且没有合成体系结构视图等关键功能。
虽然存在一些文档生成工具,如Javadoc,Doxygen,Doc++等,但是这些工具仅仅是根据软件系统源代码的注释信息生成相应文档,而非分析软件系统源代码而生成文档。
(3)软件理解与文档生成的集成。
本系统将吸收某些开源工具的合理因素,增加信息合成、内部文档描述与可视化、外部文档描述与生成等核心功能,建立一个集程序理解和文档生成为一体的,以体系结构为中心的程序理解系统。
5.项目完成后的主要技术成果
●提交《WSR软件分析文档自动生成系统》开发报告。
●实现相关算法及软件。
●将具有原创性的算法设计与成果整理后,完成相关软件著。