软件工程之软件概要设计

软件⼯程之软件概要设计
在完成对软件系统的需求分析之后,接下来需要进⾏的是软件系统的概要设计。⼀般说来,对于较⼤规模的软件项⽬,软件设计往往被分成两个阶段进⾏。⾸先是前期概要设计,⽤于确定软件系统的基本框架;然后是在概要设计基础上的后期详细设计,⽤于确定软件系统的内部实现细节。概要设计也称总体设计,其基本⽬标是能够针对软件需求分析中提出的⼀系列软件问题,概要地回答问题如何解决。例如,软件系统将采⽤什么样的体系构架、需要创建哪些功能模块、模块之间的关系如何、数据结构如何?软件系统需要什么样的⽹络环境提供⽀持、需要采⽤什么类型的后台数据库等。应该说,软件概要设计是软件开发过程中⼀个⾮常重要的阶段。可以肯定,如果软件系统没有经过认真细致的概要设计,就直接考虑它的算法或直接编写源程序,这个系统的质量就很难保证。许多软件就是因为结构上的问题,使得它经常发⽣故障,⽽且很难维护。
⼀、概要设计过程和任务
1.设计过程
概要设计基本过程如图 5-1 所⽰,它主要包括三个⽅⾯的设计。⾸先是系统构架设计,⽤于定义组成系统的⼦系统,以及对⼦系统的控制、⼦系统之间的通信和数据环境等;然后是软件结构和数据结构的设计,⽤于定义构造⼦系统的功能模块、模块接⼝、模块之间的调⽤与返回关系,以及数据结构、数据库
结构等。
概要设计要求建⽴在需求分析基础之上,软件需求⽂档是软件概要设计的前提条件。只有这样,才能使得开发出来的软件系统最⼤限度地满⾜⽤户的应⽤需要。实际上,概要设计的过程也就是将需求分析之中产⽣的功能模型、数据模型和⾏为模型等分析结论进⾏转换,由此产⽣设计结论的过程。在从分析向设计的转换过程中,概要设计能够产⽣出有关软件的系统构架、软件结构和数据结构等设计模
型来。这些结论将被写进概要设计⽂档中,作为后期详细设计的基本依据,能够为后⾯的详细设计、程序编码提供技术定位。需要注意的是,概要设计所能够获得的还只是有关软件系统的抽象表达式,需要专⼼考虑的是软件系统的基本结构,⾄于软件系统的内部实现细节如何,则被放到以后详细设计中去解决。例如模块,概要设计中的模块只是⼀个外壳,虽然它有确定的功能边界,并提供了通信的接⼝定义,但模块内部还基本上是空的,诸多具体的功能加⼯细节则必须等到详细设计完成以后才能确定下来。因此,在有关软件设计的全部⼯作中,概要设计所提供的并不是最终设计蓝图,⽽只是⼀份具有设计价值的具体实施⽅案与策略,⽤于把握系统的整体布局。尽管概要设计并不涉及系统内部实现细节,但它所产⽣的实施⽅案与策略将会最终影响软件实现的成功与否,并影响到今后软件系统维护的难易程度。
2.设计任务
概要设计阶段的任务既包括技术⽅⾯的,也包括管理⽅⾯的,具体说来,主要有以下⼏个⽅⾯:
(1)制定规范
具有⼀定规模的软件项⽬总是需要通过团队形式实施开发,例如,组成⼀个或⼏个开发⼩组来承担对软件系统的开发任务。为了适应团队式开发的需要,在进⼊软件开发阶段之后,⾸先应该为软件开发团队制定在设计时应该共同遵守的规范,以便协调与规范团队内各成员的⼯作。
概要设计时需要制定的规范或标准包括:
      a.需要采⽤的管理规则,例如操作流程、交流⽅式、⼯作纪律等。
      b.设计⽂档的编制标准,包括⽂档体系、⽂档格式、图表样式等。
      c.信息编码形式,硬件、操作系统的接⼝规约,命名规则等。
现代汉语频率词典      d.设计⽬标、设计原则。
(2)系统构架设计
系统构架设计就是根据系统的需求框架,确定系统的基本结构,以获得有关系统创建的总体⽅案。其主要设计内容包括:
    a.根据系统业务需求,将系统分解成诸多具有独⽴任务的⼦系统。
        b.分析⼦系统之间的通信,确定⼦系统的外部接⼝。
    c.分析系统的应⽤特点、技术特点以及项⽬资⾦情况,确定系统的硬件环境、软件环境、⽹络环境和数据环境等。
    d.根据系统整体逻辑构造与应⽤需要,对系统进⾏整体物理部署与优化。很显然,当系统构架被设计完成之后,软件项⽬就可按每个具有独⽴⼯作特征的⼦系统为单位进⾏任务分解了,由此可以将⼀个⼤的软件项⽬分解成许多⼩的软件⼦项⽬。
(3)软件结构设计
软件结构设计是在系统构架确定以后,对组成系统的各个⼦系统的结构设计。例如,将系统进⼀步分解为诸多功能模块,并考虑如何通过这些模块来构造软件。
软件结构设计主要内容包括:
    a.确定构造⼦系统的模块元素。
    b.根据软件需求定义每个模块的功能。
    c.定义模块接⼝与设计模块接⼝数据结构。
    d.确定模块之间的调⽤与返回关系。
    e.评估软件结构质量,进⾏结构优化
(4)公共数据结构设计
概要设计中还需要确定那些将被许多模块共同使⽤的公共数据的构造。例如,公共变量、数据⽂件以及数据库中数据等,可以将这些数据看作为系统的公共数据环境。对公共数据的设计包括:
    a.公共数据变量的数据结构与作⽤范围。
    b.输⼊、输出⽂件的结构。
    c.数据库中的表结构、视图结构以及数据完整性等。
(5)安全性设计
系统安全性设计包括:操作权限管理设计、操作⽇志管理设计、⽂件与数据加密设计以及特定功能的操作校验设计等。概要设计需要对以上⽅⾯的问题作出专门的说明,并制定出相应的处理规则。例如操作权限,假如应⽤系统需要具有权限分级管理的功能,则概要设计就必须对权限分级管理中所涉及的分级层数、权限范围、授权步骤以及⽤户账号存储⽅式等,从技术⾓度作出专门的安排。
(6)故障处理设计
非政府间国际组织
软件系统⼯作过程中难免出现故障,概要设计时需要对各种可能出现的来⾃于软件、硬件以及⽹络通信⽅⾯的故障作出专门考虑。例如,提供备⽤设备、设置出错处理模块、设置数据备份模块等。network ntr
(7)可维护性设计
软件系统在投⼊使⽤以后必将⾯临维护,如改正软件错误、扩充软件功能等。对此,概要设计需要作出专门安排,以⽅便⽇后的维护。例如,在软件中设置⽤于系统检测维护的专⽤模块;预计今后需要进⾏功能扩充的模块,并对这些接⼝进⾏专门定义。
镁合金熔炉
(8)编写⽂档
概要设计阶段需要编写的⽂档包括:概要设计说明书、数据库设计说明书、⽤户操作⼿册。此外,还应该制定出有关测试的初步计划。上述⽂档中,概要设计说明书是概要设计阶段必须产⽣的基本⽂档,涉及系统⽬标、系统构架、软件结构、数据结构、运⾏控制、出错处理、安全机制等诸多⽅⾯的设计说明。
(9)概要设计评审
在诸多概要设计任务完成之后,应当组织对概要设计的评审。概要设计评审内容主要包括:
    a.需求确认:确认所设计的软件是否已覆盖了所有已确定的软件需求。
    b.接⼝确认:确认该软件的内部接⼝与外部接⼝是否已经明确定义。
    c.模块确认:确认所设计的模块是否满⾜⾼内聚、低耦合的要求,模块的作⽤范围是否在其控制范围之内。
    d.风险性:该设计在现有技术条件下和预算范围内是否能按时实现。
    e.实⽤性:该设计对于需求的解决是否实⽤。
    f.可维护性:该设计是否考虑了今后的维护。
    g.质量:该设计是否表现出了良好的质量特征
⼆、系统构架设计
⼤型的综合应⽤系统⼤都是由许多⼦系统组成的。⼀般说来,这些⼦系统能够独⽴运⾏,有⾃⼰专门的服务任务,并可能需要部署在不同的计算机上⼯作。应该说,组成系统的⼦系统具有⼀定的独⽴性,但⼦系统之间⼜有着联系。例如,有共同的数据源,相互之间需要通信,并可能需要协同⼯作。系统构架设计的任务就是根据需求规格中的需求基本框架,把组成系统的这些⼦系统、⼦系统之间的关系、它们之间需要的数据通信等确定下来,并把它们⼯作时所需要的设备环境、⽹络环境和数据环
境等也⼀同确定下来,由此对系统作出⼀个合理的、符合应⽤需要的整体部署。需求分析中的需求框架是基于⽤户应⽤域建⽴的,概要设计时可以通过需求框架来映射系统构架。例如,可以利⽤需求分析中的⾼层数据流图对系统基本⼯作流程的描述,来映射系统的基本结构,使得需求分析中对系统的逻辑描述,转换为概要设计中对系统的物理描述。⼀般情况下,系统构架设计可以按照以下步骤进⾏。
(1)定义⼦系统。根据需求分析中有关系统的业务划分情况,将系统分解成诸多具有独⽴任务的⼦系统。
(2)定义⼦系统外部接⼝。分析⼦系统之间的通信与协作,以获得对⼦系统外部接⼝的定义。阿伐斯汀
(3)定义系统物理构架。根据系统的整体逻辑结构、技术特点、应⽤特点以及系统开发的资⾦投⼊情况等,选择合适的系统物理构架,包括:硬件设备、软件环境、⽹络结构和数据库结构,并将⼦系统按照所选的物理构架进⾏合理部署与优化。下⾯将介绍⼏种典型的系统构架。需要注意的是,任何⼀种结构都会有优点与缺点,尽管是⼀些现在看来已经过时的结构也有它存在的现实价值。
1.集中式结构
集中式结构是最传统的系统构架,系统由⼀台计算机主机和多个终端设备组成,其结构如图 5-2 所⽰。
集中式结构的特点是系统中的全部软件资源都被集中安装在这⼀台主机上,包括:操作系统、数据库系统、应⽤系统和资源⽂件等。系统的智能处理器也被集中在主机上。⽤户则是通过和主机连接的基本⽆智能的终端设备与系统进⾏通信。由于所有计算任务都通过主机完成,因此集中式结构对计算机性能有⽐较⾼的要求。早期应⽤中⼀般使⽤⼩型以上计算机提供⽐较强⼤的主机计算⽀持,操作系统则⼀般是 Unix 系统,能够向外提供多⽤户服务。
应该说,集中式结构具有⾮常好的⼯作稳定性。另外,由于集中式结构是直接通过终端接⼝实现多⽤户通信,因此系统还具有较⾼的安全保密特性。集中式结构优点是⾼稳定性和⾼安全性。但集中式结构有较苛刻的设备要求,系统建设费⽤、运⾏费⽤都⽐较⾼,⽽且系统灵活性不够好,系统结构不便于扩充。
2. 客户机/服务器结构
客户机/服务器结构是⼀种分布与集中相互结合的结构,系统依靠⽹络被分布在许多台不同的计算机上,但通过其中的服务器计算机提供集中式服务。图 5-3 所⽰的是客户机/服务器结构的典型应⽤。这是⼀个提供视频信息和图⽚信息的多⽤户超⽂本应⽤系统,系统中有多个服务器,能够分别提供不同的信息服务。其中,视频服务器提供视频数据服务,传送的数据需要快速同步,但分辨率相对较低;图⽚服务器提供图⽚数据服务,数据需要以⾼分辨率发送;⽬录服务器则提供⽬录查询服务,能够⽀持各种查询,并能够与超⽂本信息进⾏链接。与集中式结构中的⽆智能终端不同,客户机/服务器结构中的客户机是具有智能的,需要安装客户程序,并需要通过客户程序访问服务器。例如图 5-3 中的诸多客户机,它们可以通过⼀个⽤户界⾯客户程序对服务器进⾏访问,并可以通过这个⽤户界⾯程序显⽰从服务器返回的图⽚或视频信息。在客户机/服务器结构中,客户机是
主动的,它主动地向服务器提出服务请求;⽽服务器则是被动的,它被动地接受来⾃客户机的请求。
⼀般说来,客户机在向服务器提出服务请求之前,需要事先知道服务器的地址与服务;但服务器却不需要事先知道客户机的地址,⽽是根据客户机主动提供的地址向客户机提供相应的服务。
客户机/服务器结构的优越性是结构灵活、便于系统逐步扩充。例如上⾯的多⽤户超⽂本应⽤系统,也许⽤户最初只需要提供图⽚信息服务,因此系统初期开发时可以只创建图⽚服务器,只是当⽤户需要提供视频信息服务时,才创建视频服务器。显然,这有利于应⽤系统的分阶段实现与逐步扩充。另外,由于客户机/服务器中服务器可以采⽤⾼性能微机配置,因此其建设成本、运⾏费⽤等也明显低于
基于⼩型机的集中式结构。需要注意的是,客户机/服务器结构是⼀种逻辑结构,客户机或服务器都只是⾓⾊概念。因此可以将客户软件和服务软件安装在⼀台计算机上,⽽使这台计算机既担任客户机⾓⾊,⼜担任服务器⾓⾊。当然,也可以在⼀台计算机上安装多个服务软件,⽽使这台计算机承担多个服务器⾓⾊,例如,它可以既是图⽚服务器,⼜是视频服务器。
3.多层客户机/服务器结构
客户机/服务器结构已被⼴泛应⽤基于数据库的信息服务领域,并演变出了多层客户机/服务器结构。图 5-4 所⽰是⼀个有关信息管理应⽤的逻辑结构。这是⼀个三层逻辑结构,其中的表⽰层是指对⽤户的信息服务;应⽤层是指对数据的应⽤逻辑加⼯;数据层是指系统中的数据库管理。在集中式系统中,以上各个不同层⾯的元素都被部署在⼀台主机上,这时或许没有必要在它们之间清楚地划分边界。但值得注意的是,当采⽤客户机/ 服务器结构时,这些元素却有可能要被分布到不同的计算机上去,因此必须在它们之间给出⼀个清楚的边界。
(1)两层结构
两层客户机/服务器结构是将信息表⽰与应⽤逻辑处理都放在了客户机上,⽽服务器只需要管理数据库事务,其结构如图 5-5 所⽰。这时的客户机⼀般被称为“胖客户机”。
两层结构的优点是结构简单,技术上⽐较容易实现。⽽且应⽤软件基本上是在客户端⼯作,因此⾮常⽅便客户端数据的计算与表现,能够有效保证系统的⼯作性能。两层结构的缺陷是在管理与维护上存
在困难。这时的客户端承担了信息表⽰与应⽤计算双重任务,客户端程序复杂,并且被分散在许多不同的客户计算机上。除⾮应⽤软件的功能⾮常稳定或客户端⼝很少,否则当应⽤软件由于⽤户应⽤规则的变化,⽽不得不对其功能进⾏改造时,系统中数⽬庞⼤的客户机,将会使系统变更显得⾮常⿇烦,需要很⼤的系统变更开销。
(2)三层结构
三层结构是鉴于两层客户机/服务器结构在管理与维护上存在的困难⽽专门提出的,这就是使“胖客户机”减肥,使它尽量简单,变成“瘦客户机”。更具体地说,就是将“胖客户机” 中⽐较复杂,并且容易发⽣变化的应⽤逻辑部分提取出来,将它放到⼀个专门的“应⽤服务器” 上,由此产⽣的结构如图 5-6 所⽰。
中华慈善总会会长显然,三层结构使信息表⽰、应⽤逻辑处理和数据库管理被⾃然地分成了三个独⽴的部分。其中,应
⽤逻辑处理是应⽤系统中的最易发⽣需求改变的部分,被放到了应⽤服务器上。与两层结构⽐较,三层结构给系统维护带来了很⼤的便利,当⽤户应⽤规则发⽣变化时,需要改变的不是数⽬庞⼤客户端,⽽是⼀个或少数⼏个应⽤服务器。但是,三层结构使实现软件的技术难度加⼤、开发周期延长,并且对服务器设备也有更⾼的要求。需要指出的是,三层客户机/服务器结构也是逻辑结构,因此⼀个单⼀的服务器计算机可以既是应⽤服务器,⼜是数据库服务器。然⽽许多情况下,为了使系统具有更⾼的性能指标,或使系统具有更好的稳定性,系统中⼤都分别设置有专门的应⽤服务器和数据库服务器。⽽在⼀些实际开发中,为了使应⽤服务器能够承担来⾃于许多客户机的计算请求,还往往需要根据软件系统的计算负荷状态,对应⽤服务器进⾏专门的配置设计,例如,按事务进⾏任务分⼯,并在系统中设置多台专门应⽤服务器,它们分别完成⼀些特定的服务请求任务。
(3)B/S结构
B/S 结构是基于 Web 技术与客户机/服务器结构的结合⽽提出来的⼀种多层结构,其中的 B 是指 Web 浏览器(Browse),S 是指应⽤服务器与数据服务器(Server)。⽬前,这种结构已被⼴泛应⽤于⽹络商务系统之中,例如⽹上银⾏、⽹上商店等。其结构图如图 5-7 所⽰。 B/S 结构将信息表⽰集中到了专门的“Web 服务器”上。因此,与三层客户机/服务器结构⽐较,B/S 结构多了⼀层服务器。应该说,B/S 结构使客户端程序更加简化。这时的客户机上已经不需要专门的应⽤程序了,只要有⼀个通⽤的 Web 浏览器(例如,Microsoft Internet Explorer),就可以实现客户端数据的应⽤。
B/S 结构的优点是不需要对客户机进⾏专门的维护(客户机上没有专门的应⽤程序),特别适合于客户机位置不固定或需要依靠互联⽹进⾏数据交换的应⽤系统。缺点是最终⽤户信息需要通过 Web 服务器获取,并通过⽹络传送到客户机上,因此系统的数据传输速度以及系统的稳定性,都将明显低于三层客户机/服务器结构。如同其他客户机/服务器结构⼀样,B/S 结构也是逻辑结构,因此⼀个单⼀的服务器计算机可以既是 Web 服务器,⼜是应⽤服务器和数据库服务器。但如果需要使系统具有更⾼的性能或更加稳定的运⾏状态,那么则有必要将 Web 服务、应⽤处理和数据管理从物理上分离开来,设置专门的 Web 服务器计算机、应⽤服务器计算机和数据库服务器计算机。在许多应⽤中,B/S 结构和三层客户机/服务器往往被结合起来使⽤。例如“⽹上购物系统”,其⾯向消费者的购物操作⼀般采⽤的是 B/S 结构,但⾯向购物中⼼⼯作⼈员的相关操作,为了保证系统运⾏稳定快捷,则可能会采⽤三层客户机/服务器结构。其对应的物理构架如图 5-8      所⽰。
B/S 结构的优点是不需要对客户机进⾏专门的维护(客户机上没有专门的应⽤程序),特别适合于客户机位置不固定或需要依靠互联⽹进⾏数据交换的应⽤系统。缺点是最终⽤户信息需要通过 Web 服
务器获取,并通过⽹络传送到客户机上,因此系统的数据传输速度以及系统的稳定性,都将明显低于三层客户机/服务器结构。如同其他客户机/服务器结构⼀样,B/S 结构也是逻辑结构,因此⼀个单⼀的服务器计算机可以既是 Web 服务器,⼜是应⽤服务器和数据库服务器。但如果需要使系统具有更⾼的性能或更加稳定的运⾏状态,那么则有必要将 Web 服务、应⽤处理和数据管理从物理上分离开来,设置专门的 Web 服务器计算机、应⽤服务器计算机和数据库服务器计算机。在许多应⽤中,B/S 结构和三层客户机/服务器往往被结合起来使⽤。例如“⽹上购物系统”,其⾯向消费者的购物操作⼀般采⽤的是 B/S 结构,但⾯向购物中⼼⼯作⼈员的相关操作,为了保证系统运⾏稳定快捷,则可能会采⽤三层客户机/服务器结构。其对应的物理构架如图 5-8 所⽰。

本文发布于:2024-09-22 08:30:23,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/102984.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:系统   设计   结构   服务器   需要   客户机
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议