登陆注册
8724600000037

第37章 软件工程实例——构件库管理系统(1)

8.1项目背景介绍

可复用的软件开发之路将是软件行业发展的主流。所谓软件复用(或软件重用)是指充分利用过去软件开发中积累的成果、知识和经验,去开发新的软件系统,使人们在新系统的开发中着重于解决当前出现的新问题,满足新的需求,从而避免或减少软件开发中的重复劳动。而软件复用的基础就是构件。所谓软件构件(也称软件组件)是软件系统内可标识的、符合某种标准要求的构成成分,类似于传统工业中的零部件。广义上讲,构件可以是需求分析、设计、代码、测试用例、文档或软件开发过程中的其他产品;狭义来说,一般指对外提供一组规约化接口的、符合一定标准的、可替换的软件系统的程序模块。通常情况下是指后者。

常见的构件接口标准包括:微软提出的COM/COM+、SUN公司提出的JavaBean/EJB、OMG提出的Corba、Borland公司提出的VCL、微软与IBM提出的WebService等。

具体的构件可能是一个界面控件,如常见的TextBox控件;也可能是个动态链接库(dll),如常见的用以实现数据库访问,执行命令的ADO组件;当然也可以是一个可执行程序,比如计算器中的小程序;当然还有可能是以WebServeice形式存在的Web服务。随着实验室项目经验不断积累,业已实现各种形式的大量构件,实验室的软件开发也渐渐走上了可复用的软件开发之路。为了有效提高软件的开发速度,迫切需要对已有的构件实行有效的管理,以方便开发新项目时能够做到快速地查找所需的构件,并能方便使用。

后面的内容来自于上海理工大学计算机学院中爱班软件综合课程设计的构件库管理系统小组报告。参加这次课程设计的同学基本上都是第一次分析、设计、编写综合软件,第一次接触.NET平台,第一次综合使用SQL Server、VisualStudio.NET、IS、DreamverWeaver等各类工具,但是在适当的管理和引导之下,同学们在短短两个月左右时间内做出了优秀的作品。在这次课程设计辅导中,强调软件团队开发过程中管理方面的内容,强调分析和设计的过程,并综合应用包括极限编程中的很多有益的思想。对于整个软件开发过程,并不强调文档自身的规范化,也并不重视各种分析、设计、表述的标准化,因为文档本质上只是形式,目的在于促进高效的开发,所以更关心学生总体软件过程的把握,团队协作精神的培养,以及实际解决问题能力的培养。

当然,对于只是大学三年级的同学来说,这样一个综合软件开发任务毕竟是全新的、具有挑战性的任务,要想尽善尽美是不可能的,疏漏之处难免会出现。在后面的文档中,或多或少会有诸多不成熟不完善之处。但它毕竟是一个实际的软件过程。为了让读者认识一个实际的软件过程原貌,完全保留了原有的报告,以供读者品评。

8.2项目规划

8.2.1项目简介

软件复用使人们在软件开发中不必“一切从零开始”,提高了软件生产率和质量,缩短了开发周期,降低了开发成本。软件重用中没有材料的消耗,而且软件通过多次重用后,其质量和可靠性会越来越高。

构件(component)是可复用的软件组成成分,可被用来构造其他软件。软件构件可以是被封装的对象类、类树、一些功能模块、软件框架(framework)、软件构架(或体系结构Architectural)、文档、分析件、设计模式(DesignPattern)等。构件分为构件类和构件实例,通过给出构件类的参数,生成实例,通过实例的组装和控制来构造相应的应用软件。

这不仅大大提高了软件开发者的开发效率,也大大提高了软件的质量。

1.项目的主要技术与平台

ASP.NET

VB.NET

MSSQL Server2000

2.项目实现功能

以WebService形式存在的构件管理系统网站,普通用户可以对构件进行查询,包括对关键字的查询,还可以浏览有关构件的技术文章;管理员可以对构件进行添加和更新,以及对所有类的查询、添加和修改。

3.项目基础的需求

具体功能实现如下。

1)基本信息管理

可以添加构件功能,构件类别,产品类型,操作系统,构件作者,相关项目,开发工具。对其描述和介绍进行修改。

2)构件基本信息管理

添加一个构件,包括构件名称,构件类别,开发工具,产品类型,功能类型,构件简介和功能介绍。并可以对确定版本的构件信息进行修改。

3)构件版本信息管理

添加一个已存在构件的新版本信息,包括构件版本号、构件作者、操作系统、主要技术、先决条件和更新内容,并可以对其信息修改。

4)构件使用信息管理

添加一个构件的使用信息,包括构件的使用方法、使用实例、构件路径和源代码路径。

并可以对已存在的信息进行修改。

5)构件结构信息管理

注册一个构件所含有的类信息。同时在确定的类中添加、修改和删除属性、方法(删除方法时同时删除所有相关参数)、事件、父类和基类,在确定的方法中添加、修改、删除参数信息。

6)构件检索浏览

可以按构件名称、构件项目、构件类别、构件功能、构件作者进行关键字查询。可以按构件功能、构件名称、构件版本的顺序做树形的构件信息浏览检索。

7)类信息的检索浏览

可以查询类的属性、事件、基类、父类、方法及参数。并可以浏览相关的使用说明和实例。

8)用户信息管理

注册管理员信息。

9)相关文章管理和浏览

管理员可以添加和删除构件相关文章,用户可以浏览构件的技术文章。

4.技术难点分析

难点1:注册

数据库中表单之间的关系比较复杂,在构件注册时,所涉及的表单很多,所以需要反复对数据库进行读写操作。与构件直接相关的有基本信息表、版本信息表和用法表三张表,在注册一个新构件时需要依次对三张表插入新记录,而由于基本信息表和版本信息表中均有外键指向与之相关的基本信息表,所以在Page_Load()事件时需要动态绑定数据库中的字段,并写入DropDownList中,来限制用户选择。而在注册构件时,又需将用户所选的选项名与其在数据库中对应的编号写入构件表中。构件的信息量较大,在网页上所用的控件分为TextBox,Label,FileFieldBox(上传)、DropDownList,所以,在写Insert语句时所对应的变量会比较复杂。此外,由于构件编号时需要自动生成,在用户打开注册网页时得到一个新的构件编号。对于用户输入的检查也是注册时的一个难点。

难点2:更新

构件更新是对已存在的构件增加新的版本。用户在打开此网页时需要看到构件基本信息表中对应的构件记录,所以需要在Page_Load()时读出数据库中指定记录相应的字段值。

与注册相同,需要用到多个控件来承载数据,所以编码的难度会增加。

难点3:修改

网页显示的是用户选定的构件记录,所以在加载网页时需要读出三张表单中关于构件的信息,dropdownlist控件既要实现数据库中基本信息动态的绑定,又要在第一条记录中显示指定记录里的值。

难点4:参数互传

在构建TreeView时,会有各节点间的参数互传,而各节点的信息存在于不同的表单中。例如,第一层的“功能”循环,要从tb_Component Function中选出Component Funtion Name字段内容传到第二层的“构件”循环,然后在第二层循环中,要从多张表中才能确定同一功能的构件,并把Component Name字段内容传到第三层的“版本”循环,在第三层中同样要在多张表中寻找关系,确定同一构件名同一版本号的类,把Version ID字段内容传到第四层的“类”循环。如此连接各表单的SELECT语句会比较烦琐,关系也不容易确定,因此需要在多张表单选取所需字段,建立视图。

难点5:计算

建立四层的Tree View需要有四层的FOR循环语句,它的跳出条件应是视图中的记录数,因此要计算功能、构件、版本及类的记录数。

难点6:添加

对TreeView中功能、构件、版本及其叶子节点的添加。

难点7:显示信息内容

在“类信息添加”,“类信息修改”功能的实现上,单击“功能”名、“构件”名、“版本”号时,也要能显示相应的信息内容。

难点8:查询功能的实现

查询功能的实现需要涉及调用数据库表单,由于在一个页面中的数据绑定将涉及许多数据库表单,所以在编码时,SELECT语句将比较烦琐,例如:在构件功能查询时,首先出现的一个列出所有构件功能的列表,此页面将涉及TB_COMPONENTFUNCTION表中的Function Name字段及Function Deion字段,然后键入构件、功能时,将出现一张关于此构件功能的所有构件的网页,它涉及TB_component Basic Infor mation中的Component Name字段及Component Instruction字段。若键入详细信息,将涉及TB_component Basic Information中的字段。对于整个查询功能的编码来说,在调用表单方面将会变得非常复杂和烦琐。

难点9:VB编码的形成

在实现查询数据的显示时运用了DATALIST这个控件,其中涉及了Hyper Link控件数据绑定问题,由于在DATALIST中添加的声明都在HTML语言中,所以对VB编码有一定的困难,无法在VB编码中写HyperLink.NavigateUrl指向哪个网页,并且也无法传参数。

难点10:设置

由于要运用FRAMESET,所以查询部分主要分为上下两个FRAME,本应写在上方FRAME中的关键字查询的搜索按钮选用HYPERLINK,但是HYPERLINK控件没有ON_CLICK()事件,所以要完成该功能需要用TEXTBOX和DROPDOWNLIST两个控件的触发事件来共同完成。然而,若TEXTBOX的触发事件(textbox_TextChanged)要人为完成的话,需要将其AUTOPOSTBACK属性设置为TRUE。但是一旦将AUTOPOSTBACK设置为TRUE时,在运行填写完关键字后就需要先让TEXTBOX失去它的焦点来判断是否输入完毕,要判断是否失去焦点,就要在除TEXTBOX的其他区域上单击一次,然后再按下搜索键。这样的话,在运行时就变成了要按两下搜索键才能完成功能(注:第一次是使TEXTBOX失去焦点,第二次则是正式的运用功能)。

8.2.2项目管理

1.角色分工

2.时间规划

8.3项目分析设计

8.3.1数据库设计

1.ER图

2.表单关系图

3.详细表单定义

1)构件基本信息表——tb_ComponentBasicInformation

2)构件版本信息表——tb_ComponentVersionInformation

3)构件使用信息表——tb_ComponentUsageInformation

4)构件类别表——tb_ComponentCategory

5)开发工具表——tb_Tool

6)产品类型表——tb_ProductType

7)构件功能表——tb_ComponentFunction

8)操作系统表——tb_OperationSystem

9)项目信息表——tb_ProjectInformation

10)构件—项目表——tb_ComponentProject

11)作者表——tb_Author

12)类信息表——tb_ClassInformation

13)类—基类表——tb_ClassBase

14)类—属性表——tb_ClassAttribute

15)类—方法表——tb_ClassMethod

16)类—事件表——tb_ClassEvent

17)参数表——tb_Reference

18)用户表——tb_UserInformation

19)关于构件表——tb_ComponentIntroduction

4.视图定义

1)构件—功能表——view_Function

2)构件—版本表——view_Version

3)构件—项目表——view_Project

4)构件—作者表——view_Creator

5)构件—类别表——view_Category

6)构件—类表——View_Class

7)类—父类表——View_SuperClass

8)类—基类表——View_BaseClass

9)构件下载表——View_Download

8.3.2UML设计

1.USECASEDIAGRAM

用例(USECASENAME):添加结构信息

角色(ACTOR):管理员

描述(DEION):本个案描述管理员添加构件结构信息

同类推荐
  • 图说电子计算机

    图说电子计算机

    今天人们谈到计算机常常会把它和网络联系起来。20世纪90年代兴起的因特网其影响之广、普及之快也是大家始料未及的,也从没有一种技术能像网络一样日新月异,并迅速地改变着我们的学习和生活方式。因特网大大缩小了时空界限,为我们提供了快捷方便的交流途径。在未来10年内,计算机又将会有怎样飞速的发展呢?在互联网上进行医疗诊断、远程教学、电子商务、视频会议等活动已经实现,未来的互联网的传输速率将会提高100倍,大家可以随时随地连接到因特网上,更方便地进行交流、沟通和开展商务活动。
  • 体感交互技术

    体感交互技术

    本书提出了体感计算的研究,探讨了基于体验性认知的个性化电子学习方式,并且分析了面向儿童的艺术创造体验,在体感虚拟化身的帮助下,用户可以通过身体运动,促进情感心智的全面发展,
  • 天下一家:网络联通世界(科学新导向丛书)

    天下一家:网络联通世界(科学新导向丛书)

    《天下一家:网络联通世界》一书从网络的基本知识出发,详细地介绍了网络科技的发展与用途,还包括校园网络对普及教育的重大作用。本书内容翔实、结构清晰、图文并茂,是一本实用性极强的网上冲浪参考书。
  • 下一代互联网

    下一代互联网

    本书系统介绍了下一代互联网的进展情况,包括下一代互联网的概念解析,国内外下一代互联网的最新发展情况,下一代互联网的关键技术进展,以及各国发展下一代互联网的政策计划。最后分析了下一代互联网对未来社会的影响,提出我国发展下一代互联网的政策建议等。全书共6章,包括互联网发展历史和现状,下一代互联网基本概念,下一代互联网研究最新进展,下一代互联网发展现状,我国发展下一代互联网现状,发展下一代互联网战略建议。
  • 我看电商

    我看电商

    本书是作者近30年从事零售及电子商务管理的总结和分享。近年来电商行业在中国迅猛发展,2012年网络零售市场规模达到13,000亿人民币,诞生了淘宝、天猫、京东、当当、凡客、唯品会……等一大批全新的网络公司,电子商务正在日益深入的影响着越来越多人的生活。如今这位自称跨界老兵的电商操盘手第一次全方位剖析电商风云,细说中美电子商务发展的不同路径,评点国内各大电商企业的是是非非,详解其中的融资、模式、运营、效率……个中经验,毫无保留的娓娓道来,笔触至深,让人不禁掩卷沉思。
热门推荐
  • 律杂抄

    律杂抄

    本书为公版书,为不受著作权法限制的作家、艺术家及其它人士发布的作品,供广大读者阅读交流。
  • 网游之创技神贼

    网游之创技神贼

    凌锋被公司裁员降为失业人员,因为学历不高被众多公司拒绝门外,为了生存他进入了《王者主宰》这款游戏。因为黑客入侵,凌锋意外的成为唯一隐藏职业死灵梦魇。惊喜,意外,收获,接踵而至的事件让凌锋尝尽喜怒哀乐。神秘的11C女孩伊莉娜的出现又突如其来的消失,让凌锋陷入低潮。凌锋渐渐的摆托了悲哀,从菜鸟渐渐步入王者之巅。。。。。。。。。。。。
  • 真爱
  • 楚楚动人,老婆一百块

    楚楚动人,老婆一百块

    相恋五年,换来的却是他挽着另一个女人的手,走进民政局。她发誓一定要在一个月之内把自己嫁出去,却不想第三十七次相亲,被一个可恶的男人破坏,从此两人纠缠不清,甚至领了结婚证。直到那次拍卖会,某女才知道自己嫁给了云城最高贵,最富有的龙氏总裁。某女想着自己对他的恶行,准备连夜跑路,却被某男一把抓住:“老婆,你这是打算吃干抹净不负责吗?”腹黑总裁杠上无良女,笑到喷,雷到爆,精彩不断。【纯属虚构,请勿模仿】
  • 校草大大:放过我好不

    校草大大:放过我好不

    她女扮男装去了她未婚夫所在的贵族圣佩里德男校,只为了见她未曾谋面的未婚夫。“什么未婚夫嘛!我连见过都没有!爸妈真是的!定什么娃娃亲啊!”他不知道他的未婚妻来找他了,更不知道未婚妻就是陪伴自己很久的舍友、‘好兄弟’。“岚(假名),你真像女孩子,只是睡在一起而已,你害羞什么?”终于,到了秘密被揭开的时刻了……工藤新一:“我的未婚妻啊,你就那么喜欢我以至于来男校,女扮男装来找我?看来你真的很喜欢我,既然这样,我就委屈一下,答应等到你毕业时我们结婚。”毛利兰:“你……唔……唔……”她支吾了半天也说不上来一个字,因为……某男已经把她压在身下,对她展开攻势了……
  • 系统求生记之这个宿主好恐怖

    系统求生记之这个宿主好恐怖

    【算是黑历史】……上官言前世被一人拔了氧气罩而死,在此之前被一场火烧的容貌尽毁,而且还因为内向被人“抓小辫子”,原本她觉得死就死吧,但自己却莫名其妙回到了十几年前,她想这既然是老天给的第二次机会,那自己就好好活着就行,她肯定不作死,但是别人来找茬的就怪不得她了。而她本来想着做一个三好青年但却发现自己一个小小的平民竟然还是因为别人有所图谋,才死翘翘的……以下为系统宿主日常“宿主啊,刚刚有个小绿来找茬。”上官言:“没事,一会儿她就该去医院躺着了。”系统:“宿主,那人不是找你的茬子而是找你闺蜜的茬子啊。”上官言沉默:“……”最后她咳了一声,“不用管,咱俩快走……”系统:“……”某日傍晚系统:“宿主大大请冷静,放下屠刀立地成佛。”上官言:“……”我把你解决了也成,猪肉好吃,但是贵上官言看了一眼墙角那缩成一团的人,发现那人眼里满满的惊恐上官言好心的给那人打了个救护车,又盯了一眼猪猪——系统躲在墙角瑟瑟发抖【欢迎观看我家宿主怕闺蜜系列and我家宿主一言不合就黑化系列呜呜呜……】
  • 天道神尊

    天道神尊

    少年严麒偶得一块血色璞玉,本以为能够借助神奇的璞玉获得强大的能力,击杀仇敌,守卫家园,却没想让云海迎来了毁灭性的灾难。天道震怒,降下雷罚,众多强者陨落,散落的天道碎片浓缩了无上力量,传说炼化足量的碎片可以达到神境,与天道抗衡。既然天道不仁,那就逆天而行,我严麒定要突破神境,将天道斩落!
  • 幽幽一诺缘

    幽幽一诺缘

    一个美丽少女在特殊年代生下一女孩,无法生存送给一家寄养。多年后因得绝症,寻找孩子,看到孩子在养父母家幸福,没去打扰。十几年过去,女孩遗传亲生父母得了绝症,养父母一家为女孩花去所有积蓄,天不随人愿,大学没毕业女孩离开人世......
  • 风云初记

    风云初记

    《临高启明》小说支线剧情,元老院忙于进攻广东之际,在海南岛大后方发生的一些故事。
  • 血手情杀不归路

    血手情杀不归路

    一壶老酒,一身武艺,笑说江湖趣事,解说江湖恩仇。躲在众人宠爱的庇护之下,他可以自在悠闲,只是世事难料,有多少英雄好汉终究会被卷入江湖世事之中。也正因为如此才有英雄的肝肠寸断,才有江湖儿女的爱恨情仇……但是你怎样才能在江湖之中立于不败之地?是消极入世,还是拼搏奋起,打下一片天地,侠士群起,英雄纷争,谁又能定夺天下?