admin管理员组

文章数量:1567572

2023年12月20日发(作者:)

篇一:软件架构学习小结

软件架构学习小结

软件架构设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单。本文从架构师职责、软件架构定义、设计架构、评估架构、架构管理等方面来描述了解软件架构的含义和怎样设计软件架构。

一、软件架构师的职责

架构师分为以下几大类:业务架构师、主题领域架构师、技术架构师、项目架构师(j2ee架构师、.net架构师等)、系统架构师。

1、架构师的职责主要体现

架构师的职责就是设计一个公司系统的基础架构,并提供关于怎样建立和维护系统的指导方针。具体来讲,架构师的职责主要体现在以下几方面:

1)、负责公司系统的架构设计、研发工作。

2)、承担从业务向技术转换的桥梁作用。

3)、协助项目经理制定项目计划和控制项目进度。

4)、负责辅助并指导系统分析开展设计工作。

5)、负责组织技术研究和攻关工作。

6)、负责组织和管理公司内部的技术培训工作。

7)、负责组织及带领公司内部员工研究与项目相关的新技术。

8)、管理技术支撑团队并给项目、产品开发实施团队提供技术保障。

9)、理解系统的业务需求,制定系统的整体框架(包括、技术框架和业务框架)。

10)、对系统框架相关技术和业务进行培训,指导开发人员开发。并解决系统开发、运行中出现的各种问题。

2、构架设计师必须具备的技能

经验:既包括在问题领域的经验(通过彻底了解需求),也包括在软件工程领域的经验。对于一个构架团队,这些素质要求可由各团队成员来分别承担,但其中至少要有一名构架设计师能够把握项目的全局。

领导才能:能够推

动各个团队的技术进展,并能在压力下作出关键性的决策然后将其贯彻到底。要提高效率,构架设计师和项目经理必须紧密协作。构架设计师主要负责解决技术问题,项目经理主要负责解决行政管理问题。构架设计师必须有权在技术问题上作出决定。 沟通:能够赢得他人的信任,以对其进行说服、激励和指导。构架设计师不能靠命令进行领导,而必须要赢得项目中其他人员的赞同。为了提高效率,构架设计师必须赢得项目团队、项目经理、客户、用户群体以及管理团队的尊敬。

以目标为中心、积极主动:不懈地追求成效。构架设计师是推动项目发展的技术动力,而不是空想家。在其职业生涯中,成功的构架设计师一直都要在捉摸不定和承受压力的情况下作出折衷决定。构架设计师只有将注意力集中在该做的事情上,才能在项目中取得成功。 专业:精通构架设计的理论、实践和工具,并掌握多种参考构架、主要的可重用构架机制和模式(例如j2ee架构等)。具备系统设计员的所有技能,但涉及面更广、抽象级别更高。

二、软件架构、架构模式、参考模型、参考架构

1、对于软件架构定义有很多种,通用的定义是:某个软件或计算机系统的软件架构是该系统的一个或多个结构,他们由软件元素,这些元素的外部可见属性以及这些元素之间的关系组成。

这里所说的某个元素的“外部可见属性”是指其他元素对该元素所做的假设,如它所提供的服务、性能特征、错误处理、共享资源的使用,等等。

其他的定义包括:架构是一种高层设计。架构是系统的总体结构。架构是一个软件或系

统的组件、组件之间的相互关系以及管理其设计和演变的原理和方针的结构。架构是组件和连接器。

2、架构模式是对元素和关系类型以及一组对其使用方式的限制的描述。

3、参考模型是一种考虑数据流的功能划分。

4、参考架构是映射到软件元素(它们相互协作,共同实现在参考模型中定义的功能)及元素之间数据流上的参考模型。

5、软件架构、架构模式、参考模型、参考架构之间的关系:

出了8种体系结构模式: 层(layers)、管道和过滤器(pipes and filters) 、黑板(black

board )、代理者(broker)、模型-视图-控制器(model-view-controller)、表示-抽象-控制(presentation-abstraction-control)、微核(microkernel)、映像(reflection)。

6、架构定义中指出系统由多种结构构成的,下面列出一些常见的结构。

7、质量属性

系统从设计、实现到部署的整个过程中考虑质量属性的实现。质量属性包括下列三类:

(1)、系统的质量

属性。(可用性、可修改性、性能、安全性、可测试性和易用性)

(2)、受架构影响的商业属性。(上市时间、成本和收益、所希望的系统生命期的长短、目标市场、推出计划、与老系统的集成)

(3)、与架构本身相关的一些质量属性。(概念完整性、正确性与完整性、可构建性)

六个质量属性的战术列表:

三、设计架构

几乎在我们遇到的所有成功的面向对象系统中都具有但失败的系统中缺少的两个特性是:存在一个强大的构架构想,应用管理良好的迭代式增量开发周期。功能、质量和商业需求的某个集合“塑造”了构架。我们把这些塑造需求称为“构架驱动因素”。

构架设计必须按需求分析进行,但不需要在需求分析完成后在开始构架设计。实际上,在确定了关键的构架驱动因素后,就可以开始构架设计了。当设计了构架的足够多的部分后,就可以开始开发骨架系统了。该骨架系统在上面进行迭代开发(以及其在任何一个点交付的能力)的框架。组织结构对构架产生影响。

属性驱动的设计(add)是一个用于设计构架以满足质量需求和功能需求的方法。add把一组质量属性场景作为输入,并使用对质量属性实现和构架之间的关系的了解,对构架进行设计。

add步骤:

(1)选择要分解的模块。

(2)根据这些步骤对模块进行求精。

对需要进一步分解的每个模块重复上述步骤。

在设计架构过程中可以重用架构,重用一些技术以方便来实现架构与设计。高层重用技术分类

高层重用

设计模式

框架

软件架构

架构风格

架构设计风格

架构框架

架构平台

设计模式:使用相互通信的类和对象可为常见的设计问题提供通用的解决方案。为了帮助用户掌握模式的概念并有效地设计模式,我通常为设计模式的描述提供一个带有比喻性的抽象。常见的设计模式有:fvacade(外观模式),它为子系统中的一系列动作提供一个统一接口;ovbserver(观察

者模式),具体的设计模式内容参考gof23设计模式。

框架:提供一组相互协作的类及运行时对象,用于生成某些特定领域的应用软件。我们可以根据特定应用的需求方便地对框架中的抽象和类进行定制,以重用框架的设计和代码。

软件架构:编制软件也称为架构软件。一个可操作的软件内部应具有某种形式的架构。软件架构技术中可重用的实体可以进一步地分为4类:架构风格、架构设计风格、架构框架、架构平台。

架构风格给出了精心设计的软件全局的通用形态。例如,shaw和garlan提出了7种架构风格:管道和过滤器、面向对象的组织、隐式调用、分层系统、仓库、状态机、解释器,及过程控制。

架构设计风格给出了软件架构的设计方法论。shaw将众多的设计风格分类为如下8种:功能分解、数据流、面向对象、状态机、面向事情、过程控制、数据结构及决定表。

架构框架是来为详细而完整的框架,它为开发特定领域的应用系统使用了一系列多种架构设计风格。一个采用了某些设计风格的软件架构制品,只有当它具有完备的文档,并具备包含一个特定的应用领域所需要的充分灵活性时才可以作为软件框架来重用。

四、架构评估方法

软件构架的评估方法:saam和atam。这里只详细说明atam方法。

atam一种进行构架评估的综合方法,atam

是评估软件构架的一个健壮的方法。在该

篇二:软件体系结构作业2

软件体系结构作业(二)

1. 层次系统体系结构和基于消息的层次体系结构有什么区别? 层次系统组织成一个层次结构,每一层为上层服务,并作为下层客户。这种风格支持基于可增加抽象层的设计。这样,允许将一个复杂问题分解成一个增量步骤序列的实现。每一层最多影响两层。在一些层次系统中,除了一些精心挑选的输出函数外,内部层次只对相邻层可见,这样的系统中,构建在一些层实现了虚拟机(在另一些层次系统中层是部分不透明的),连接件通过决定层间如何交互的来定义,拓扑约束包括相邻层间的交互约束。

jb/ hmb风格基于层次消息总线、支持构件的分布和并发,构件之间通过消息总线进行通讯消息总线是系统的连接件,负责消息的分派、传递和过滤,以及处理结果的返回;各个构件挂接在消息总线上,向总线登记感兴趣的消息类型;构件根据需要发出消息,由消息总线负责将该消息分派到系统中所有对此消息感兴趣的构件,消息是构件之间通讯的唯一方式;构件接收到消息后,根据自身状态对消息进行响应,并通过总线返回处理结果.由于构件通过总线进行连,并不要求各个构件具有相同的地址空间或局限在一台机器上.

2. 分析比较b/s,二层c/s,三层c/s,指出优缺点。

b/s 是基于浏览器

与服务器之间的应用程序,网站就基本上属于这种结构,输入一个地址就可以访问的,c/s基于客户端与服务器之间的应用程序,比如说现在的一些网游,需要下载一个客户端才能运行的程序,b/s结构大部分处理都是由服务器来完成的,而c/s则可以在本机上处理大部分的事情,只需要把数据跟服务器交换下就可以了,在服务器的负载上,b/s显然要比c/s结构的要大的多 b/s、c/s结构软件技术上的比较:

c/s:client/server 在网络连接模式中,除对等网外,还有另一种形式的网络,即客户机/服务器网,client/server。在客户机/服务器网络中,服务器是网络的核心,而客户机是网络的基础,客户机依靠服务器获得所需要的网络资源,而服务器为客户机提供网络必须的资源。

这里客户和服务器都是指通信中所涉及的两个应用进程(软件)。使用计算机的人是计算机的“用户”(user)而不是“客户”(client)。 它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到 client端和server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是client/server形式的两层结构,由于现在的软件应用系统正在向分布式

的web应用发展,web和client/server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。

一、b/s模式的优点和缺点

b/s结构的优点

(1)、具有分布性特点,可以随时随地进行查询、浏览等业务处理。

(2)、业务扩展简单方便,通过增加网页即可增加服务器功能。

(3)、维护简单方便,只需要改变网页,即可实现所有用户的同步更新。

(4)、开发简单,共享性强

b/s 模式的缺点

(1)、个性化特点明显降低,无法实现具有个性化的功能要求。

(2)、操作是以鼠标为最基本的操作方式,无法满足快速操作的要求。

(3)、页面动态刷新,响应速度明显降低。

(4)、功能弱化,难以实现传统模式下的特殊功能要求。

二、c/s 模式的优点和缺点

c/s 模式的优点

1.由于客户端实现与服务器的直接相连,没有中间环节,因此响应速度快。

2.操作界面漂亮、

形式多样,可以充分满足客户自身的个性化要求。

3.c/s结构的管理信息系统具有较强的事务处理能力,能实现复杂的业务流程。

c/s 模式的缺点

1.需要专门的客户端安装程序,分布功能弱,针对点多面广且不具备网络条件的用户群体,不能够实现快速部署安装和配置。

2.兼容性差,对于不同的开发工具,具有较大的局限性。若采用不同工具,需要重新改写程序。

3.开发成本较高,需要具有一定专业水准的技术人员才能完成。

b/s、c/s结构软件技术上的比较

3. 组织或参考参与采用b/s,和c/s的体系项目开发,总结开发经验。

总结:

整体开发过程与一般项目开发一致,不过在工程准备的前期需要正对需求做好相关的架构,在该系统中,需要对聊天系统做好模块的划分,并依据这些模块的划分做好人员的安排和项目进度的调度。其他的软件过程遵守如瀑布模型等标准过程。

需求变化 :项目的需要变化是肯定有的,而且变化一般都很频繁,我们怎么应对客户的这种需求变化呢,以不变应万变。首先在前期的需求调研要做好,尽可能的替用户考虑,达到功能质量满足最大化。需求调研前期的《目标与范围》和需求调研末期的《功能规格说明书》都要跟客户签字确认,这样既能保证我们所理解的需求就是客户所要的,也使得项目末期跟客户验收时有据可依。在项目中期是发生需求变更是很常见的,这时要做好需求变更管理流程。需求变更表,小的

变更自己掌握,客户要求的变更有开发人员和设计人员共同商讨后提交项目经理,项目经理预估变更损耗工程时间,在一定阶段一起提交给客户,大的变更直接提交客户,并且要把需求变更对项目产生的影响让客户知道,把球尽可能的踢给客户,让客户在进度、功能、资源三者中取舍出一个平衡来。对需求进行分类评级,关键部分不能改动的做特别确认(如系统架构等,如果改变等于从头再来)。同时完成客户签字确认,当然如果能将这部分写成合同细节中去是最好。

在某种意义上,全员设计可能增加交流的成本。两个人之间有一条交流途径,三个人之间最多有三条,四个人之间最多有六条。途径越多,信息量就越大,而这些信息不见得都是有用的信息。详细设计的任务分解后,不可避免地有更多的人参与交流和沟通,大家要花更多的时间来理解他人的想法,也可能要花更多的时间向他人阐述自己的观点。特别是在并行撰写详细设计的过程中,系统分析员反而可能成为另一个瓶颈了。但从总体上来看,在设计阶段花费适当的代价发现更多的问题,比在实现阶段或测试阶段再发现问题,仍然是划算的。

分解后的详细设计可能引入冲突的设计内容。由于设计由不同的程序员撰写,他们考虑问题的角度和思维的方式不可能完全一致,这增大了不同的设计内容之间的计算口径或交互方式不一致的可能性。这需要设计者们尽可能遵循一致的设计原则,也需要审阅者们尽可能找到这些不一致的地方。

并不是所有的程序员都适合参与设计。很明显,例如刚入职的同事就不适合参与设计,他们对系统架构还缺乏足够的认识。另外兼职的同事也不适合参与设计,他们的工作方式可能无法保证及时提交设计文档与参与讨论等。

4.在软件开发中,采用异构结构有什么好处其负面影响有哪些?

(1)从最根本上说,不同的结构有不同的处理能力的强项和弱点,一个系统的体系结构应该根据实际需要进行选择,以解决实际问题。

(2)关于软件包、框架、通信以及其他一些体系结构上的问题,目前存在多种标准。即使在某段时间内某一种标准占统治地位,但变动最终是绝对的。

(3)实际工作中,总会遇到一些遗留下来的代码,它们仍有效用,但是总与新系统有某种程度上的不协调。然而在许多场合,将技术与经济综合进行考虑时,总是决定不再重写它们。

(4)即使在某一单位中,规定了共享共同的软件包或相互关系的一些标准,仍会存在解释或表示习惯上的不同。

坏处:

5. 通过查资料然后分析,给出下列体系结构

windows7,android,p2p,web service,

要求:1.模块划分和功能描述。

2.模块间的关系。

3.典型功能模块的调用关系。

4.各自优缺点。

windows7:

window 7在图形架构方面的更新主要有如下方面:

wddm 1.1:新的驱动模型

directx 11:更新的direct3d 11,以及相关的新direct2d api

dxva-hd:高清视频回放加速

显示设备连接和配置

色彩管理

高dpi输出和可读性

多gpu系统

联合显示适配器(又叫联合渲染)

windows 7核心图形架构

老的gdi/gdi+仍被单独支持,不过,windows 7提供了它们对应功能的新的实现方法相比vista带的directx

10,windows 7自带了directx 11,和wddm 1.0到1.1的变化不同,directx 11的版本号表示其变化更大一些。windows 7 directx 11改变了以往的工作模式,将direct3d 10.1升级到direct3d 11,同时将以前vista无法硬件加速的gdi/gdi+的工作重新划分、引入新的direct2d和directwrite api来完成

图形界面一直是windows系统的核心,而从windows vista开始,windows就开始将提供一个富图形化的桌面图形界面作为要目,不仅仅是因为vista和7的桌面本身就是一个3d应用程序,而是因为

vista和7可以更好地发挥图形加速硬件的作用。从windows vista到windows7,操作系统与gpu的结合越来越紧密。

win7优缺点:

多年的使用习惯让大家对于他的上手难度几乎为零,可使用的应用软件资源是目前所有操作系统中最为丰富的,而且它对硬件、软件的兼容性也是最好的.

它并不适合平板电脑,因为windows操作系统是专门为个人电脑设计的,而非平板电脑,再加上用户在使用习惯上的惯性思维,导致它无论从软硬件配合还是使用感受等多个方面,都无法满足用户苛刻的要求。可以说在平板电脑平台上,windows操作系统有一个好的基础,但是无法发挥出相应的潜力.

android:

android的系统架构和其操作系统一样,采用了分层的架构。从架构图看,android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。蓝色的代表java程序,黄色的代码为运行java程序而实现的虚拟机,绿色部分为c/c++语言编写的程序库,红色的代码内核(linux内核+drivers)

android作为一个移动设备的平台,其软件层次结构包括了一个操作系统(os),中间件(middleware)和应用程序(application)。

根据android的软件框图,其android核心模块结构自下而上分为以下几个层次:

第一、操作系统层(os)

第二、各种库(libraries)和android 运行环境(runtime)

第三、应用程序框架(application framework)

第四、应用程序(application)

以下分别介绍andoid各个层次的软件的重点及其相关技术:

● android核心模块之操作系统层(os)

篇三:软件架构学习小结 .

软件架构设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单。本文从架构师职责、软件架构定义、设计架构、评估架构、架构管理等方面来描述了解软件架构的含义和怎样设计软件架构。

一、软件架构师的职责

架构师分为以下几大类:业务架构师、主题领域架构师、技术架构师、项目架构师(j2ee架构师、.net架构师等)、系统架构师。 1、架构师的职责主要体现

架构师的职责就是设计一个公司系统的基础架构,并提供关于怎样建立和维护系统的指导方针。具体来讲,架构师的职责主要体现在以下几方面: 1)、负责公司系统的架构设计、研发工作。 2)、承担从业务向技术转换的桥梁作用。 3)、协助项目经理制定项目计划和控制项目进度。 4)、负责辅助并指导系统分析开展设计工作。 5)、负责组织技术研究和攻关工作。

6)、负责组织和管理公司内部的技术培训工作。

7)、负责组织及带领公司内部员工研究与项目相关的新技术。 8)、管理技术支撑团队并给项目、产品开发实施团队提供技术保障。

9)、理解系统的业务需求,制定系统的整体框架(包括、技术框架和业务框架)。 10)、对系统框架相关技术和业务进行培训,指导开发人员开发。并解决系统开发、运行中出现的各种问题。

2、构架设计师必须具备的技能

经验:既包括在问题领域的经验(通过彻底了解需求),也包括在软件工程领域的经验。对于一个构架团队,这些素质要求可由各团队成员来分别承担,但其中至少要有一名构架设计师能够把握项目的全局。

领导才能:能够推动各个团队的技术进展,并能在压力下作出关键性的决策然后将其贯彻到底。要提高效率,构架设计师和项目经理必须紧密协作。构架设计师主要负责解决技术问题,项目经理主要负责解决行政管理问题。构架设计师必须有权在技术问题上作出决定。 沟通:能够赢得他人的信任,以对其进行说服、激励和指导。构架设计师不能靠命令进行领导,而必须要赢得项目中其他人员的赞同。为了提高效率,构架设计师必须赢得项目团队、项目经理、客户、用户群体以及管理团队的尊敬。

以目标为中心、积极主动:不懈地追求成效。构架设计师是推动项目发展的技术动力,而不是空想家。在其职业生涯中,成功的构架设计师一直都要在捉摸不定和承受压力的情况下作出折衷决定。构架

设计师只有将注意力集中在该做的事情上,才能在项目中取得成功。 专业:精通构架设计的理论、实践和工具,并掌握多种参考构架、主要的可重用构架机制和

模式(例如j2ee

架构等)。具备系统设计员的所有技能,但涉及面更广、抽象级别更高。

二、软件架构、架构模式、参考模型、参考架构

1、对于软件架构定义有很多种,通用的定义是:某个软件或计算机系统的软件架构是该系统的一个或多个结构,他们由软件元素,这些元素的外部可见属性以及这些元素之间的关系组成。

这里所说的某个元素的“外部可见属性”是指其他元素对该元素所做的假设,如它所提供的服务、性能特征、错误处理、共享资源的使用,等等。

其他的定义包括:架构是一种高层设计。架构是系统的总体结构。架构是一个软件或系统的组件、组件之间的相互关系以及管理其设计和演变的原理和方针的结构。架构是组件和连接器。

2、架构模式是对元素和关系类型以及一组对其使用方式的限制的描述。 3、参考模型是一种考虑数据流的功能划分。

4、参考架构是映射到软件元素(它们相互协作,共同实现在参考模型中定义的功能)及元素之间数据流上的参考模型。

5、软件架构、架构模式、参考模型、参考架构之间的关系:

面向模式的软件体系架构) >中首次提出了8种体系结构模式: 层(layers)、管道和过滤器(pipes and filters) 、黑板(black board )、代理者(broker)、模型-视图-控制器(model-view-controller)、表示-抽象-控制(presentation-abstraction-control)、微核(microkernel)、映像(reflection)。 6、架构定义中指出系统由多种结构构成的,下面列出一些常见的结构。

7、质量属性

系统从设计、实现到部署的整个过程中考虑质量属性的实现。质量属性包括下列三类: (1)、系统的质量属性。(可用性、可修改性、性能、安全性、可测试性和易用性) (2)、受架构影响的商业属性。(上市时间、成本和收益、所希望的系统生命期的长短、目标市场、推出计划、与老系统的集成)

(3)、与架构本身相关的一些质量属性。(概念完整性、正确性与完整性、可构建性)

六个质量属性的战术列表:

三、设计架构

几乎在我们遇到的所有成功的面向对象系统中都具有但失败的系统中缺少的两个特性是:存在一个强大的构架构想,应用管理良好的迭代式增量开发周期。功能、质量和商业需求的某

篇四:软件工程期末复习

1.软件生命周期:

由软件定义,软件开发和运行维持三个时期组成,每个时期又进一步划分成若干个阶段。

2.瀑布模型是一个项目开发架构、开发过程是通过设计一系列夹断顺序展开的,从系统需求 分析开始直到产品发布和维护,每个阶段都会产生循环反馈。

3.迭代增量模型是软件开发过程中常用的开发模型。其中的增量是指软件开发过程中,先开发主要功能模型,在开发次要功能模块,通过完善,迭代是指增量开发过程中各个模块开发是反复进行的。

4.数据仓库:是一个面向主题的集成的相对稳定、反应、反应历史变化的数据集合,用于支持管理决策。

分析:是种企业战略分析方法,都根据企业自身的既定内在条件进行分析,照出企业的优势、劣势及核心竞争力之所在。s代表优势strength,w代表劣势weakness,o代表机会opportunity,t代表威胁threat。

6.逆向需求:说明软件系统不应该做什么,理论上有无限多个。

7.实务分析:经过一些步骤吧具有事务流特点的数据流图按预先确定的模型映射成软件结构,包括一个接收分支和一个发送分支。

8.等价划分:是一种黑盒测试技术,这种技术把程序的输入域划分成若干个数据类。

9.动态模型:表示瞬时的视为化的系统的“控制”性质,它规定了对像模型中的对象的合法变化序列,也就是说,它是用来表述系统的过程和行为。

10.概念模型:是对真实世界中问题域内的事务的描述,不是软件设计的描述,概念的描述抱愧记号、内涵、外延,其中记号和内涵式最具有实际意义的。

11.用力场景:是指实例化的用例,欧诺个一个用力实例化可以出来多个用例场景。

简答题:

1. 系统分析员在系统开发中的角色是什么?与其他关联角色是什么关系?

系统分析员既懂业务又懂计算机技术,他们首先研究业务问题和机遇,然后把业务

和信息需求转换成对基于计算机的信息系统的规格说明。系统分析员需要同系统中的其他关联人员交互工作。

对于系统所有者和用户来说,分析员确定并验证他们的业务问题和需求;对于系统设计人员和构造人员来说,分析员确保技术方案实现了业务需求,并将技术方案集成到业务中。换句话说,系统分析员通过与其他关联人员的交互推动信息系统的开发

2.请解释模块的耦合和内聚的区别。

耦合性是对一个软件结构内部不同模块间联系紧密程度的度量指标

内聚性是对一个模块内部各个组成元素之间相互结合的紧密程度的度量指标。

3.什么是业务流程图?业务流程图的主要作用是什么?

业务流程图就是用一些尽可能少的规定的符号及连线来表示某个具体业务处理过

程,业务流程图易于阅读和理解,是分析业务流程的重要步骤。其作用是:业务流程分析可以帮助了解某项业务的具体处理过程,发现和处理系统调查工作中的错误和瑕疵,修改和删除原系统不合理的部分,在新系统的基础上优化处理流程。

4.用例建模包括哪两个部分?它们有什么区别?

?用例图(use case

diagram)

确定系统中所包含的参与者、用例和两者之间的对应关系,用例图描述的是关于系统功能的一个概述。

?用例规约(use

case specification)

针对每一个用例都应该有一个用例规约文档与之相对应,该文档描述用例的细节内容。

5.和结构化软件技术相比,面向对象技术最主要的技术优点是什么?

与人类习惯的思维方法一致

稳定性好

可重用性好

较易开发大型软件产品

可维护性好

结构化方法首先关心的是功能,强调以模块(即过程)为中心,采用模块化、自顶向下、逐步求精设计过程,系统是实现模块功能的函数和过程的集合,结构清晰、可读性好,的确是提高软件开发质量的一种有效手段。

结构化设计从系统的功能入手,按照工程标准和严格规范将系统分解为若干功能模块。然而,由于用户的需求和软、硬件技术的不断发展变化,作为系统基本成分的功能模块很容易受到影响,局部修改

甚至会引起系统的根本性变化。开发过程前期入手快而后期频繁改动的现象比较常见。

面向对象方法则从所处理的数据入手,以数据为中心来描述系统,数据相对于功能而言,具有更强的稳定性,这样设计出的系统模型往往能较好地映射问题域模型。对象、类,、继承性、多态性、动态定连概念和设施的引入使用,显然令面向对象的设计方法具有一定的优势,能为生产可重用的软件构件和解决软件的复杂性问题提供一条有效的途径。

面向对象的设计过程就是指通过建立一些类以及它们之间的关系来解决实际问题,这就需要对问题域中的对象作整体分析,类和类间关系的设计要求较高,否则设计出的并不是真正意义上的面向对象的软件系统,而只是一些类的堆砌而已,不能体现出面向对象设计方法的优势之处。

同时,系统的分析设计是一个注重实践的领域,不仅仅依赖于一整套核心的概念与原理,要想设计出一个成功的系统来,还需要相应的语言、工具和技术的有力支持。在这方面,经过多年的实践和发展,适应结构化方法的技术和开发环境已经相当成熟稳定。而对面向对象方法而言,虽然近时期涌现了大量的新工具和新技术,但仍有待于不断的完善和改进,特别是面向对象的数据库技术。

6.一个完整的用例描述应该包括哪些内容?

一个完整用例包括标题,前提条件,步骤,预期结果。

前提条件:已有正确的用户名和密码用户名:7575489363494948密码:password

步骤:

2。输入用户名和密码。

3。点击登陆按年或直接按回车键。

7.请阐述什么是模块的耦合度,按照藕合的高低请至少列出三种以上的藕合类型?

模块的耦合度是对软件结构中模块之间的关联程度的一种度量(2分)。耦合的强弱取决于模块间接口的复杂程度、进入或调用模块的位置以及通过界面传送数据的多少等,直接影响了系统的可理解性、可测试性、可靠性和可维护性(1分)。按照耦合的程度从低到高分别有数据耦合、控制耦合、公共耦合、内容耦合(2分

8.简述可行性研究的主要内容。

可行性研究包括可能性和必要性两个方面。所谓开发的可能性就是指开发的条件是否具

备,而必要性是指客观上是否需要。可能性和必要性相辅相成,缺一不可。具体讲可行性研究一般从技术上的可行性、经济上的可行性、管理上的可行性、开发环境的可行性等几个方面进行分析。(1)技术上的可行性,指根据新系统的目标来考虑系统的硬设备、软件、环境条件和技术力量等是否具备,即技术上实现的可能性;(2)经济上的可行性,是指通过对管理信息系统的投资和效益的投入——产生分析,来说明开发新系统在经济上是否合算;(3)

管理上的可行性,主要考虑当前系统的管理体制是否有条件提供新系统所必需的各种数据和企业最高层领导及各级管理人员对新系统所提供信息需求的迫切性,即研究开发新系统是否是必要的;(4)开发环境的可行性,主要指领导意见是否一致,企业有无资金保证,能否抽出骨干力量参加系统开发等。

判定表、决策树:

假定某搬家公司规定的收费标准如下:

搬运车次小于或等于2车,每车次收60元,

若车次超过2车,则超出部分每车次收40元,最低起价是100元。

这项标准只适应于低层建筑,若高层建筑,则增加20%收费。

试用决策树表达该收费标准。

画出反映此方法的决策表。

某仓库发货方案如下:欠款时间在30天(含)以内的,如果需求量不大于库存量,则立即发货,否则先按库存发货,进货后再补发;欠款时间在30天以上100天(含)以内的,如果需求量不大于库存量,先付款再发货,否则不发货;欠款时间在100天以上的,通知先交欠款。

dfd图:

试根据以下储蓄所取款过程画出数据流程图:

储户将填好的取款单及存折交储蓄所,经查对存款账,

将不合格的存折和取款单退回储户,合格的存折和取款单被送交取款处理,

处理时要修改存款账户,处理的结果是将存折、利息单和现金交储户,

同时将取款单存档的情况下,还需要发通知单。

篇五:软件架构学习小结

软件架构学习小结

软件架构设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单。本文从架构师职责、软件架构定义、设计架构、评估架构、架构管理等方面来描述了解软件架构的含义和怎样设计软件架构。

一、软件架构师的职责

架构师分为以下几大类:业务架构师、主题领域架构师、技术架构师、项目架构师(j2ee架构师、.net架构师等)、系统架构师。

1、架构师的职责主要体现

架构师的职责就是设计一个公司系统的基础架构,并提供关于怎样建立和维护系统的指导方针。具体来讲,架构师的职责主要体现在以下几方面:

1)、负责公司系统的架构设计、研发工作。

2)、承担从业务向技术转换的桥梁作用。

3)、协助项目经理制定项目计划和控制项目进度。

4)、负责辅助并指导系统分析开展设计工作。

5)、负责组织技术研究和攻关工作。

6)、负责组织和管理公司内部的技术培训工作。

7)、负责组织及带领公司内部员工研究与项目相关的新技术。

8)、管理技术支撑团队并给项目、产品开发实施团队提供技术保障。

9)、理解系统的业务需求,制定系统的整体框架(包括、技术框架和业务框架)。

10)、对系统框架相关技术和业务进行培训,指导开发人员开发。并解决系统开发、运行中出现的各种问题。

2、构架设计师必须具备的技能

经验:既包括在问题领域的经验(通过彻底了解需求),也包括在软件工程领域的经验。对于一个构架团队,这些素质要求可由各团队成员来分别承担,但其中至少要有一名构架设计师能够把握项目的全局。

领导才能:能够推动各个团队的技术进展,并能在压力下作出关键性的决策然后将其贯彻到底。要提高效率,构架设计师和项目经理必须紧密协作。构架设计师主要负责解决技术问题,项目经理主要负责解决行政管理问题。构架设计师必须有权在技术问题上作出决定。

沟通:能够赢得他人的信任,以对其进行说服、激励和指导。构架设计师不能靠命令进行领导,而必须要赢得项目中其他人员的赞同。为了提高效率,构架设计师必须赢得项目团队、项目经理、客户、用户群体以及管理团队的尊敬。

以目标为中心、积极主动:不懈地追求成效。构架设计师是推动项目发展的技术动力,而不是空想家。在其职

业生涯中,成功的构架设计师一直都要在捉摸不定和承受压力的情况下作出折衷决定。构架设计师只有将注意力集中在该做的事情上,才能在项目中取得成功。

专业:精通构架设计的理论、实践和工具,并掌握多种参考构架、主要的可重用构架机制和模式(例如j2ee架构等)。具备系统设计员的所有技能,但涉及面更广、抽象级别更高。

二、软件架构、架构模式、参考模型、参考架构

1、对于软件架构定义有很多种,通用的定义是:某个软件或计算机系统的软件架构是该系统的一个或多个结构,他们由软件元素,这些元素的外部可见属性以及这些元素之间的关系组成。

这里所说的某个元素的“外部可见属性”是指其他元素对该元素所做的假设,如它所提供的服务、性能特征、错误处理、共享资源的使用,等等。

其他的定义包括:架构是一种高层设计。架构是系统的总体结构。架构是一个软件或系统的组件、组件之间的相互关系以及管理其设计和演变的原理和方针的结构。架构是组件和连接器。

2、架构模式是对元素和关系类型以及一组对其使用方式的限制的描述。

3、参考模型是一种考虑数据流的功能划分。

4、参考架构是映射到软件元素(它们相互协作,共同实现在参考模型中定义的功能)及元素之间数据流上的参考模型。

5、软件架构、架构模式、参考模型、参考架构之间的关系:

注:在<pattern-oriented software architecture (面向模式的软件体系架构) >中首次提出了8种体系结构模式: 层(layers)、管道和过滤器(pipes and filters) 、

黑板(black board )、代理者(broker)、模型-视图-控制器(model-view-controller)、表示-抽象-控制(presentation-abstraction-control)、微核(microkernel)、映像(reflection)。

6、架构定义中指出系统由多种结构构成的,下面列出一些常见的结构。

7、质量属性

系统从设计、实现到部署的整个过程中考虑质量属性的实现。质量属性包括下列三类:

(1)、系统的质量属性。(可用性、可修改性、性能、安全性、可测试性和易用性)

(2)、受架构影响的商业属性。(上市时间、成本和收益、所希望的系统生命期的长短、目标市场、推出计划、与老系统的集成)

(3)、与架构本身

相关的一些质量属性。(概念完整性、正确性与完整性、可构建性)

六个质量属性的战术列表:

三、设计架构

几乎在我们遇到的所有成功的面向对象系统中都具有但失败的系统中缺少的两个特性是:存在一个强大的构架构想,应用管理良好的迭代式增量开发周期。功能、质量和商业需求的某个集合“塑造”了构架。我们把这些塑造需求称为“构架驱动因素”。

构架设计必须按需求分析进行,但不需要在需求分析完成后在开始构架设计。实际上,在确定了关键的构架驱动因素后,就可以开始构架设计了。当设计了构架的足够多的部分后,就可以开始开发骨架系统了。该骨架系统在上面进行迭代开发(以及其在任何一个点交付的能力)的框架。组织结构对构架产生影响。 属性驱动的设计(add)是一个用于设计构架以满足质量需求和功能需求的方法。add把一组质量属性场景作为输入,并使用对质量属性实现和构架之间的关系的了解,对构架进行设计。

add步骤:

(1) 选择要分解的模块。

(2) 根据这些步骤对模块进行求精。

对需要进一步分解的每个模块重复上述步骤。

本文标签: 系统设计架构技术构架