ADD、形成团队结构、创建骨架系统.ppt_第1页
ADD、形成团队结构、创建骨架系统.ppt_第2页
ADD、形成团队结构、创建骨架系统.ppt_第3页
ADD、形成团队结构、创建骨架系统.ppt_第4页
ADD、形成团队结构、创建骨架系统.ppt_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章设计体系结构,软件构架实践LenBass著车立红译清华大学出版社,7.1生命期中的体系结构7.2良好体系结构的评判原则7.3体系结构设计的质量驱动方法7.4创建骨架系统7.5团队结构的形成7.6设计师的职责7.7小结,瀑布模型(waterfallmodel)WinstonRoyce在1970年提出了著名的“瀑布模型”。瀑布模型将软件生命周期划分成了:制定计划、需求分析和定义、软件设计、程序编写、软件测试、运行和维护这六个阶段。规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。优点:各个阶段的划分非常明确,每一个阶段有明确分工,从对软件生命周期各阶段有明确的界定,可以良好的把握。,常见的软件生命周期模型,瀑布模型(waterfallmodel),常见的软件生命周期模型,7.1生命期中的体系结构,瀑布模型(waterfallmodel)如需求分析后,紧接着是系统设计。在系统设计过程中,往往会发现更多的需求。或者在系统设计过程中,由于跟用户交流增多,用户又意识到了更多的需求。所以在系统设计当中,往往会引发新的需求。从而引起需求分析的改变,进一步的引发系统设计的更改。又或,在系统实现的过程当中,发现系统分析的不足,从而影响到对系统设计的更改。,常见的软件生命周期模型,1.瀑布模型(waterfallmodel)在实际的软件开发过程中,会存在很多循环反复的行为。软件生命周期后面阶段的行为,会影响到软件生命周期前面阶段的行为。而瀑布模型认为每一阶段是相互分离的,而每一阶段不可能回到前面一阶段,这也是为什么称为瀑布模型,瀑布从高往下流,从前面阶段往后面阶段流,不可能倒流回来。缺点:没有考虑到软件开发过程中常见的循环往复的行为。从而很难适应实际开发的需要。,常见的软件生命周期模型,2.演化模型,常见的软件生命周期模型,2.演化模型用户可以给出待开发系统的核心需求,并且当看到核心需求实现后,能够有效地提出反馈,以支持系统地最终设计和实现。演化模型对软件开发过程中的循环往复的行为,尤其是对需求的不断变更提供了良好的支持。演化模型中可以在核心需求实现之后,把对核心需求进一步的新的反馈信息溶入到系统当中,从而更好的支持系统的设计和实现。演化模型中各个阶段都可以有循环往复的行为,可以更好的适应实际开发的需要,常见的软件生命周期模型,3.螺旋模型是瀑布模型与演化模型的结合,并加入了两者所忽略的风险分析因素,所建立的一种软件开发模型。,常见的软件生命周期模型,体系结构设计在软件生命周期中处于什么位置?下图的演变交付生命期模型(演化模型)表明了体系结构所应处的位置。,7.1生命期中的体系结构,软件过程对软件开发活动的组织、规范和管理基于体系结构的开发步骤:(即以体系结构为核心来进行软件开发)1.为软件系统构建一个商业案例需要设计师来参与,不仅要看到商业前景,还要看到现有的技术水平能否实现系统。2.弄清系统需求在需求阶段是无法弄清楚需求的,要在需求与设计的迭代过程中才能真正理解需求,也可以设计出满足需求的体系结构。这也需要设计师参与。3.构建或选用体系结构通常是选用体系结构,很少是新建体系结构。,4.正确表述此体系结构(写出文档),并与有关各方进行交流(例如与需求的各方交流)5.对此体系结构进行分析和评价请专家评审,用需求与设计的迭代来实现用户的真正的需求,也可以得到满足这些需求的体系结构。6.实现基于体系结构的系统并保证与体系结构相一致在实现的过程中,体系结构并不是不可以修改。在实现过程中可能体系结构出现一些问题,可以作修改,要保证实现的内容与体系结构一致。7.系统维护时,体系结构文档应同步维护,何时可以开始设计体系结构?对需求有了初步了解就可以开始设计,但是并不需要太多的需求。关注哪些重要的需求,而忽略不重要的需求,以免设计师在设计时有太多相互制约的约束。体系结构驱动因素(即设计的依据)的组成:重要的功能(或功能需求)重要的质量属性(或质量需求)重要的限制条件(或商业需求等)以上三个因素构成的某个子集。,功能需求和质量需求是无关,体系结构的设计是由质量需求决定的,这是否意味着体系结构的设计是否跟功能需求无关呢?实事上一个系统的体系结构设计是不能不考虑系统的功能需求的。体系结构设计是将系统的功能需求划分到系统的各个不同的模块当中,即体系结构设计是功能划分的过程。各种不同的功能划分,形成了系统的不同结构,从而形成了系统的不同体系结构,也就表现出不同的质量属性。所以体系结构设计是功能划分的过程,体系结构设计离不开功能需求的。如何确定体系结构驱动因素?业务目标优先级较高的要求,7.2良好体系结构的评判原则,设计体系结构过程的建议:体系结构的设计应该由一位设计师来完成设计师应全面掌握对系统的技术需求,以及对各项定性指标优先级的清单体系结构的文档完备,并采用所有人员认可的文档形式体系结构设计方案应让各风险承担者积极参与评估通过专家对体系结构分析,得出明确的定性与定量指标体系结构设计应有助于具体实现允许体系结构带来一定的资源争用,并给出可行的解决方案,关于体系结构的建议:体系结构由定义良好的模块组成,各模块的功能划分应基于信息隐藏模块的划分应体现出相互独立的原则把计算机基础结构的特性封装在一定的模块中(便于系统的移植)体系结构尽量不依赖于某个特定版本的商用产品或工具(如果依赖于某个特定版本的商用产品或工具,系统以后升级会受到制约,会产生更高昂的代价。所以要采用更加通用的、可以替代的工具和产品。),关于体系结构的结构的建议:5.产生数据的功能和使用数据的功能应分属于不同的模块(一般采用数据库来管理数据,会把写入数据模块和读入数据的模块进行分离)6.对并发系统,体系结构应充分考虑进程与模块结构的不对应7.进程编写要考虑到与特定处理器的关系,并容易改变关系7.体系结构应尽量采用一些已知的设计模式(如工厂模式、门面模式、模板模式等等)。,7.3体系结构设计的质量驱动方法,你作为设计师对体系结构的设计和评价就如同一个足球教练对一场比赛的球队组织。你首先要了解自身和对手的情况,明确你这场比赛想打输、打赢或打平(质量目标);然后根据该目标设计比赛阵型,如攻击或防守阵型;再确定相关战术和人员组织(体系结构设计、战术选用);最后将你的设计和队员沟通,取得全体队员的共识(体系结构评价)。,属性驱动的设计(AttributeDrivenDesign,ADD)把一组质量属性场景作为输入,利用对质量属性实现与体系结构设计之间的关系的了解(如体系结构风格、质量战术等),对体系结构进行设计。ADD是一种定义软件体系结构的方法,该方法将模块分解过程建立在软件必须满足的质量属性之上。它是一个递归的分解过程,其中在每个阶段都选择体系结构模式和战术来满足一组质量属性场景,然后对功能进行分配,以实例化有该模式所提供的模块类型。,ADD与普通体系结构设计方法的区别:普通体系结构设计方法是先按功能划分模块,后看系统满足相应质量,即以功能为主要矛盾,质量为次要矛盾来设计软件;ADD是将模块分解过程建立在软件必须满足的质量属性之上,再把功能作为模块的实例化来把功能附加在模块上。即先满足质量,在对功能进行分配。即以质量为主要矛盾,功能为次要矛盾来进行体系结构设计。,ADD的结果是粗粒度的,ADD的结果是体系结构的模块分解和其他视图的最初的几个层次,不是所有视图的所有细节都是通过ADD得到,它不能取代传统的面向对象的设计。由ADD得到的体系结构和已经为实现做好准备的体系结构之间的区别是,需要做出更详细的设计决策。如先由ADD方法得到系统的整体框架初步确定,再由面向对象的的方法得到更加详细的设计。,ADD体系结构设计的步骤如下(共4步):样本输入。系统要满足的功能、质量及受到的限制。选择要分解的模块。首先要分解的就是系统本身最大的等待分解的模块。根据下列步骤对模块进行求精:a.从具体的质量场景和功能需求集合中选择体系结构驱动因素。先找到比较重要的功能、重要的质量场景及重要的限制条件,但是个数不能太多。b.选择满足体系结构驱动因素的体系结构风格。根据体系结构风格、质量战术来选择满足体系结构驱动因素的体系结构风格,c.实例化模块并根据用例分配功能,使用多个视图进行表示。d.定义子模块的接口。e.验证用例和质量场景(是否得到满足)并对其进行求精,使它们成为子模块的限制(这样可以使子模块得到进一步划分)。对需要进一步分解的每个模块重复上述步骤。这样递归的过程一般不超过23步。,7.4创建骨架系统,用ADD方法将体系结构设计出来,是否可以直接用来实现系统呢?中小规模的软件系统可以中大规模的交复杂的软件系统,能否得到实现还不确定,这样可以求助与骨架系统。骨架系统类似于楼盘模型,7.4创建骨架系统,提高开发效率,鼓舞士气。能更早发现复杂的依赖关系。使开发人员更多关注在设想中最难以实现的部分。能够缩短系统集成时间,降低其成本,并使集成成本更明确。便于评审和测试。,创建骨架系统的思想是提供一种基本能力,以一种对项目有力的顺序实现系统的功能。在系统开发的最初阶段创建整个系统的骨架系统是非常重要的,主要原因包括:,创建骨架系统的步骤:实现处理体系结构组件交互的软件部分。(先实现关节点)选择组件逐步添加到系统中。逐步进行测试。,7.5设计师的职责,设计师要和多个部门和多种人沟通如要指导以体系结构为核心形成开发团队,协调团队之间的合作,解决他们之间的冲突;设计师要支持项目经理的工作,要知道开发团队的技术水平;为明确组织的业务目标,设计师需要和售前、售后部门交流,拜访客户。因此,设计师必须纵观软件过程的全局,并对不同角色相互合作的接口和时机有清晰的把握。,设计师的职责包括:1了解所在组织的业务目标,使体系结构更好地支持业务目标2规划产品的开发与演进3规划和建设体系结构级的重用,如产品线等4领导并负责体系结构设计,定义系统的高层结构和接口5为项目管理提供支持,如技术可行性、任务划分、人员招聘6领导和协调项目组的主要技术活动,对主要技术产品负责实际参与体系结构原型的开发实现7讲解体系结构、指导详细设计和开发、协调冲突以实现既定的体系结构目标8规划

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论