登陆注册
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):本个案描述管理员添加构件结构信息

同类推荐
  • FlashCS动画制作基础

    FlashCS动画制作基础

    适合爱好flash动画制作的初、中级读者作为入门学习的参考书,还可以供从事网页制作与动画设计的人员参考,同时也可以作为初、中级电脑短训班的培训教材,对有一定经验的flashcs5使用者也有很高的参考价值。
  • 图说电子计算机

    图说电子计算机

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

    一本书读懂24种互联网思维

    本书整合的改变世界的24种互联网思维,让我们对互联网新思维的认识变得立体、系统起来;同时深入浅出、通俗易懂地从技术和实践分析互联网新思维与传统思维相比较的优势,医治互联网焦虑症。未来属于既能深刻理解传统商业的本质,同时又具备互联网思维的人。
  • 玩转手机

    玩转手机

    本书主要包括:手机的发展历史、手机知识、手机的选购与巧用、手机与网络、手机短信等内容。
热门推荐
  • 快穿之炮灰要做主

    快穿之炮灰要做主

    【快穿+虐渣+甜宠】大道五十,天衍四九,人遁其一。但不是人人都能抓到那一线生机,那些没能抓住生机的气运者死亡后,怨气污染了世界气运,为害一方世界。甘蓝因缘巧合之下横空出世,来到一个个光怪陆离的世界,帮助一个又一个有缘人。期间遇到神秘莫测的灰团,灰团一直陪伴着甘蓝,既会卖萌又会卖蠢的灰团常常让甘蓝啼笑皆非。但是谁来告诉他,说好的灰团怎么变成眼前这个眼巴巴的男人的?!!变成人也就算了,反正甘蓝也是人形,可是我把你当兄弟,你却想上我?!!滚滚滚!!不约!不约!就算你是什么渡厄魔尊也不约!!
  • 星战师

    星战师

    年青的一代相术大师及风水大师刘伟在得到一个奇异的罗盘后,意外的被传送到了星辰大陆。在这个既没有魔法也没有斗气的大陆中,人类主要修炼的职业被称为星战师,所谓星战师,便是这个世界上能够觉醒星魂,从浩瀚的星空中吸收星力进行武技修炼的人类的一种称呼。虽然从星辰罗盘中,刘伟学到了并不完整的功法《化星大法》,只是他却是一个没有星魂的星战师,在这个实力为尊的世界中,刘伟依靠着自己丰富的相术及风水学知识化开一道又一道的困难及危险,实力也在不断的提升,最终站在了星辰大陆的最巅峰!
  • 紫月至尊

    紫月至尊

    究竟是什么种族,让仙魔联手。究竟是什么种族,让天道颤抖。究竟是什么种族,让他们万年前就开始谋划。又是什么种族,让他举百万族人自五千年前布置杀阵。紫月帝尊凌寒,被佛门启用圣器杀死。最终因怨气太重,重生于东州。从此,他结兄弟,救红颜。一把紫金枪,败帝王,掌帝国。一柄手中剑,斗苍天,成至尊。最终,谁才是胜利者。让我们恃目以待。QQ群:307447971注:本书纯属虚构。
  • 圣桦:抓堆美男唱征服

    圣桦:抓堆美男唱征服

    "即沫禾语!""哎,老娘在。""你就这么缺男人?""不多不少,差八百。""你。。。""抬起你低贱的头颅,给老娘唱征服!""就这样被你征服。。。。。。。"冷艳的面容夹杂着笑容,美轮美奂。她,即沫继承者,黑白势力强强争夺她,她颜柔性刚,与世常争,诋毁本小姐,杀无赦!学校内的纷争,视若无睹,社会中的靡乱,一滴不沾。败,就败在了自己,赢,就赢过了男人。
  • 烈女猎爱双记

    烈女猎爱双记

    她们两个,从小争到大,争成绩,争宠爱,争人气。还好,这是一所女子中学,她们从不争男人。可是,危机来了,当女子中学和男子中学合并时,该怎么办?哦呵呵!让她们把这所学校搅个天翻地覆吧!
  • 诸天男主角

    诸天男主角

    本书又叫《诸天捕人达人》《女神养成计划》《我创造了世界》单身狗勿看! 孙悟空半夜花果山唱征服,到底是道德沦丧还是人性道德的扭曲? 恶魔天使战争早已结束,但是自己家两个恶魔天使天天干架。 当少年萧炎早已没了斗志,求求你带我回去。 原本一个焰灵姬诱惑自己犯罪也就受够了,但是女女混合双打! “我要回去见小三!” “我要回去见萧炎哥哥!” 袁歌穿越到一个无人的星球,然后他凭借着一张网在世界诸天捕鱼。他不仅可以补到鱼,还可以捕到功法,甚至还可以捕到美女! 焰灵姬、莫甘娜、云韵、彦、楚玉、娜美……袁歌:我不想当男主,我要单身,如果要说一个期限的话,那就一万年!这是一本无限流的故事! QQ群:564589267
  • 男主他又凶又奶又病娇

    男主他又凶又奶又病娇

    小豆丁江离淮第一次遇见叶玖笙,只是一个草莓棒棒糖而已。江.傲娇.离淮表示:好温油的小姐姐~我要淡定!第二次是叶玖笙受欺负的时候,他驾着七彩祥云,从天而降【吹牛中……】,解救她于水火之中。结果他自己以身相许了……江离淮:白送她都不要!【躲墙角哭.JPG】数年后叶玖笙重踏故土,万丈光芒,追求者数不胜数。这时江离淮无法淡定:你是我老婆,不可以有别人!【前期凶中期奶后期病娇的江离淮x多疑、忧虑的叶玖笙】【咱小说有一个特点,cp多,所以又名《今天你磕的cp在一起了吗》,多多支持呀!】
  • 应王途

    应王途

    武道之路何为王?王者,随心所欲,挥手斩轮回!王者,不死不灭,笑谈定乾坤!本是一个普通的少年,却因多了一道魂,而命运多舛,踏上逆天改命之路。本是一个普通的世界,却因多了一块碑,而非同凡响,成就无数绝世强者。
  • 仙王陨落

    仙王陨落

    一代仙王在仙界惨遭暗算,陨落后来到一片新的大陆,开始了一段新的复仇之路。
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!