当前位置:文档之家› 软件体系结构总结【强烈推荐】

软件体系结构总结【强烈推荐】

软件体系结构总结【强烈推荐】
软件体系结构总结【强烈推荐】

第一章:

1、软件体系结构的定义

国内普遍看法:

体系结构=构件+连接件+约束

2、软件体系结构涉及哪几种结构:

1、模块结构(Module)

系统如何被构造为一组代码或数据单元的决策

2、构件和连接件结构(Component-And-Connector,C&C)

系统如何被设计为一组具有运行时行为(构件)和交互(连接件)的元素

3、分配结构(Allocation)

展示如何将来自于模块结构或C&C结构的单元映射到非软件结构(硬件、开发组和文件系统)

3、视图视点模型

视点(View point)

ISO/IEC 42010:2007 (IEEE-Std-1471-2000)中规定:视点是一个有关单个视图的规格说明。

视图是基于某一视点对整个系统的一种表达。一个视图可由一个或多个架构模型组成

架构模型

架构意义上的图及其文字描述(如软件架构结构图)

视图模型

一个视图是关于整个系统某一方面的表达,一个视图模型则是指一组用来构建

4、软件体系结构核心原模型

1、构件是具有某种功能的可复用的软件结构单元,表示了系统中主要的计算元素和数据存储。

2.连接件(Connector):表示构件之间的交互并实现构件

之间的连接

特性:1)方向性2)角色3)激发性4)响应特征

第二章

1、软件功能需求、质量属性需求、约束分别对软件架构产生的影响

功能性需求:系统必须实现的功能,以及系统在运行时接收外部激励时所做出的行为或响应。

质量属性需求:这些需求对功能或整个产品的质量描述。

约束:一种零度自由的设计决策,如使用特定的编程语言。

质量原意是指好的程度,与目标吻合的程度,在软件工程领域,目标自然就是需求。

对任何系统而言,能按照功能需求正确执行应是对其最基本的要求。

正确性是指软件按照需求正确执行任务的能力,这无疑是第一重要的软件质量属性。质量属性的优劣程度反映了设计是否成功以及软件系统的整体质量。

系统或软件架构的相关视图的集合,这样一组从不同视角表达系统的视图组合在一起构成对系统比较完整的表达

2、质量属性

3、系统非功能性需求?包括哪些质量属性

非功能性需求:用户对软件质量属性、运行环境、资源约束、外部接口等方面的要求或期望,包括:

(1) 性能需求:用户在软件响应速度、结果精度、运行时资源消耗量等方面的要求。

(2) 可靠性需求:用户在软件失效的频率、严重程度、易恢复性,以及故障可预测性等方面的要求。

(3) 易用性需求:用户在界面的易用性、美观性,以及对面向用户的文档和培训资料等方面的要求。

(4) 安全性需求:用户在身份认证、授权控制、私密性等方面的要求

(5) 外部接口:用户对待开发软件系统与其他软件系统或硬件设备之间的接口的要求。

(6) 可保障性(supportable)需求:用户在软件可配置性、可扩展性、可维护性、可移植性等方面的要求。

4. 可靠性可用性区别

可靠性通常低于可用性,因为可靠性要求系统在[0,t]的整个时间段内需正常(注意是“连续”!)运行;

可用性大于或等于可靠性,对于可用性,要求就没有那么高,系统可以发生故障,然后在时间段[0,t]内修复。修复以后,只要系统能够正常运行,它仍然计入系统的可用性。

计算:

第三章

1、软件架构风格(是一个面向一类给定环境的架构设计决策的集合,这些通用的设

计决策形成了一种特定的模式,为一族系统提供粗粒度的抽象框架。

每一个软件系统都有其占主导地位的软件架构风格。

“从软件中来,到软件中去”

架构风格通过为常见的问题提供解决方案,增强了对问题的分解能力、提升了设

计重用的水平。

)

1)独立构建风格:(这种风格的主要特点是:事件的触发者并不知道哪些构件会被这些事件影响,相互保持独立。

这样不能假定构件的处理顺序,甚至不知道哪些过程会被调用;

各个构件之间彼此无直接的连接关系,各自独立存在,通过对事件的发布和注册实现关联。

进程通信体系结构风格:构件是独立的进程,连接件是消息传递。消息传递通常用来实现进程之间的同步和对共享资源的互斥操作

典型例子:客户-服务器架构,其中服务器通常用来为一个或多个客户端提供数据服务,客户端则用来向服务器发出请求,针对这些请求服务器通过同步或异步方式进行请求响应。

基于事件的隐式调用风格

:构件不直接调用一个过程,而是触发或广播一个或多个

事件。

?系统中的其它构件中的过程在一个或多个事件中注册。

?当一个事件被触发/发布,系统自动调用在这个事件中注

册的所有过程。

?这样,一个事件的触发就导致了另一模块中的过程的调

用。

?这种系统,称为基于事件的系统(Event-based system),

采用隐式调用(Implicit invocation)的方式。

2)层次风格优点:

通过把逻辑层分布到多个物理层中,可以提高可伸缩性、容错性

(fault tolerance)和性能。

可重用性。每一层提供的功能都是独立的和定义良好的。不同层之间有明确的接口,在解决一个新的问题时,使开发人员更容易地重用一个已有的层。

可测试性。由于有了明确定义的接口,以及可以在层接口的不同实现之间实现按需切换,可测试性明显增强了。

标准化。清晰定义并且广泛接受的抽象层次能够促进实现标准化的任务和接口开发,同样接口的不同实现能够互换使用。

缺点:

1)并不是每个系统都可以很容易地划分为分层的模式,甚至即使一个系统的逻辑结构是层次化的,出于对系统性能的考虑,系统设计师不得不把一些低级或高级

的功能综合起来;

2)效率的降低:

由分层风格构成的系统,运行效率往往低于整体结构。

在上层中的服务如果有很多依赖于最底层,则相关的数据必须通过一些中间层的若干次转化,才能传到;

3)很难找到合适的、正确的层次抽象方法:

层数太少,分层不能完全发挥这种风格的可复用性、可修改性和可移植性上的潜力。

层数过多,则引入不必要的复杂性和层间隔离冗余以及层间传输开销。

3) 虚拟机风格:

不管何种类别的虚拟机,本质上都是在高层次抽象的

用户与低层次抽象的OS/硬件之间建立一道屏障。

但是,如何把上层应用的请求映射到下层OS/硬件系

统的执行?

?解释器(Interpreter)

?基于规则的系统(Rule-based System)

解释器:是一个用来执行其他程序的程序.

基本构件:

?解释器引擎

?存储区

连接器:

?对存储区的数据访问

基于规则的系统:核心思想:

将业务逻辑中可能频繁发生变化的代码从源代码中分离出来;

基本过程:

使用规则定义语言(IF…THEN…的形式,通常基于XML或自然语言,但绝不是程序设计语言),将这些变化部分定义为“规则”;

4)客户机/服务器:一个应用系统被分为两个逻辑上分离的部分,每一部分充当不同的角色、完成不同的功能,多台计算机共同完成统一的任务。

1)客户机(前端,front-end):接受用户的输入,并把输入进行适当组织,转换成服务器接受的形式,通过网络传递给服务器,同时,负责接收服务器的回送消息,并表back-end)

2)服务器:提供各种服务,通常在高档计算机(服务器)上运行。服务器软件根据客户机的请求提供相应的服务,如数据库服务、邮件服务、Web服务等。3)连接件:建立在网络协议上,驻留在服务器和客户机两端,提供透明的网络连接和服务。

5)基于B/S体系结构的软件

优点

?系统维护成本低:

?客户端无任何业务逻辑

?良好的灵活性和可扩展性

?较好的安全性

?良好的容错能力和负载平衡能力。

缺点

?客户端浏览器一般情况下以同步的请求/响应模式交换数据,每请求一次服务器就要刷新一次页面;

?受HTTP协议“基于文本的数据交换”的限制,在数据查询等响应速度上,要远远低于C/S体系结构;

?提交一般以页面为单位,数据的动态交互性不强,不利于在线事务处理(OLTP)应用;

?受限于HTML的表达能力,难以支持复杂GUI (如报表等)。

6)SOA风格

定义:面向服务的体系结构(Service-Oriented Architecture,SOA)是一个构件模型,它将应用程序的不同功能单元通过定义良好的接口和契约联系起来

接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。

服务(service)是封装成用于业务流程的可复用构件的应用程序函数。它提供信息或简化业务数据从一个有效的、一致的状态向另一个状态的转变

用于实现特定服务的流程并不重要,只要它响应命令并为请求提供高质量的服务就可以了

服务特征:

可在网际间请求调用

具有良好的兼容性

粗粒度的操作

松散耦合的关联

基于接口的设计

具有透明的搜索和查询

SOA好处:利用现有的资产

更快的响应和上市速度

减少成本和增加复用

更易于集成和管理复杂性

说到做到

2.Web Services定义

部署在Web上的对象

从外部使用者的角度来看, Web Services是部署在Web上的对象,具备以下特征:

完好的封装性(数据和处理)

松散耦合

使用协约的规范性

标准化

高度可集成能力

3、Web Service与SOA区别

Web Service是技术规范,而SOA是设计原则。从本质上来说,SOA是一种架构模式,而Web Service是利用一组标准实现的服务。Web Service 是实现SOA 的方式之一。

4.为什么Web Services是最佳解决方案?

HTTP+XML, 最通用的访问方式

基于规范协议的访问接口, 可支持所有平台和应用

仅使用Web Service作为访问界面, 使得所有接入模块的编写变得容易

开发代价显著降低:程序员无需与多种平台进行交互,只需与Web Service进行交互;其调用接口使用XML及其相关技术,在代码实现上的代价也显著降低部署和集成的费用大大降低,流程的更改也无需更改大量的代码,甚至无需更改代码

只有使用Web Services架构, 今后的大规模的面向公众的系统对接才成为可能

第四章

1、常用SA描述方法

线框描述法:

优点:

灵活

能够直观反应系统架构,同时也易于理解

缺点:

二义性:图形的本质所决定的模糊性,不同人有不同的理解;

矛盾性:模型中可能存在相互冲突的陈述;

不完备:无法描述所有的细节;

异构性:各个建模规范不同,模型也不同,难以支持模型在各个建模工具之交换;无法自动化:只能由人理解,靠软件工具来理解比较困难,因此无法实现自动化的验证与推理。

形式化描述法:

优点:

表达架构的一个正式方式

可做到人机可读

在一个比以前更高的水平上描述系统

允许在完整性、一致性、歧义性和性能等方面分析和评估架构

支持自动生成软件系统

ADL的缺点:

使用类计算机高级语言的形式描述,表达不够直观,难以理解

对于ADLs应该表达什么,没有一个普遍共识,特别是关于架构的行为目前使用表达解析相对比较困难,没有很好的商业工具提供支持

UML描述

2、4+1视图

第五章

2、属性驱动的设计方法(Attribute-Driven Design, ADD)是定义软件架构的

一种方法,可根据软件质量属性需求实施架构设计过程

ADD通过一个分解系统或者系统元素的循环过程,使用架构模式和策略来满足系统质量属性需求,以完成分解操作和模式

3、质量属性设计策略

4、模块设计评价标准:

可分解性

可组合型

可理解性

可持续性(连续性)

可保护性

模块化五大规则:直接映射、少的接口、小的接口、显示接口、信息隐藏模块化设计的基本原则

1.类设计原则:单一责任原则

开放-封闭原则

里氏替换原则

依赖倒置原则

接口隔离原则

2.(包聚合设计原则)

?(REP) The Reuse/Release Equivalency Principle

复用/发布等价原则

?(CCP) The Common Closure Principle

共同封闭原则

?(CRP) The Common Reuse Principle

共同复用原则

3. PRINCIPLES OF PACKAGE COUPLING

(包耦合设计原则)

:?(ADP) The Acyclic Dependencies Principle

无圈依赖原则

?(SDP) The Stable Dependencies Principle

稳定依赖原则

?(SAP) The Stable Abstraction Principle

稳定抽象原则

第八章

2、三大产品线的三大基本活动

1.核心资产开发:目标是建立产品的生产能力,描述了核心资产开发活动及其输入输出主要输入:产品约束生产约束生产策略现有资产清单

主要输出:产品线范围核心资产生产计划

2、产品开发

主要输入:产品特定需求核心资产开发输出:产品线范围核心资产生产计划

主要输出:特定产品对核心资产的反馈增加新的核心资产和产品约束

3、核心资产管理

天津理工大学-软件工程总结(红字是考点)分析解析

填空10个,选择10个,名词解释5个,简答题2个,画图题2个 第一章 一、FAQs about software engineering软件工程中常见的问题 1、software:Computer programs and associated documentation 软件是计算机程序和所有使程序正确运行所需要的相关文档和配置信息 Software products软件产品分为:Generic通用、Bespoke (custom)定制 2、Software engineering is an engineering discipline that is concerned with all aspects of software production.软件工程是一门工程学科,涉及软件生产的各个方面 Software engineers should adopt a systematic and organised approach 软件工程人员运用的是系统的、有组织的工作方法。 3、difference between software engineering and computer science:系统工程和计算机科学的区别:Software engineering is an engineering discipline that is concerned with all aspects of software production.计算机科学侧重于理论和基础,而软件工程侧重于软件开发和交付的实际活动。 4、the difference between software engineering and system engineering: 软件工程和系统工程的区别:System engineering is concerned with all aspects of computer-based systems development including hardware, software and process engineering. Software engineering is part of this process系统工程侧重基于计算机系统开发的所有方面,包括硬件、软件和处理工程。软件工程只是它的一部分。 5、software process :A set of activities whose goal is the development or evolution of software. 软件工程是以软件开发和进化为目的的一系列活动 Generic activities in all software processes:软件过程的基本活动 a)Specification 软件描述 b)Development 软件开发 c)Validation软件有效性验证 d)Evolution 软件进化 6、software process model:软件过程模型 A simplified representation of a software process, presented from a specific perspective. 从特定角度提出的软件过程的简化表示形式 Examples of process perspectives are ?Workflow perspective 工作流模型 ?Data-flow perspective 数据流或活动模型 ?Role/action perspective角色/动作模型 Generic process models 通用过程模型 ?Waterfall瀑布型开发方法 ?Iterative development迭代式开发方法 ?Component-based software engineering(CBSE)基于组件的软件工程 7、the costs of software engineering软件工程的成本 Roughly 60% of costs are development costs, 40% are testing costs. For custom software, evolution costs often exceed development costs. 软件开发成本约占60%,测试成本占40%。 对于定制软件而言,进化成本常常高于开发成本。 8、software engineering methods软件工程方法: Structured approaches to software development which include system models, notations, rules, design advice and process guidance.软件开发的结构化研究方法,包括:系统模型、标记

软件体系结构总结

第一章:1、软件体系结构的定义 国内普遍看法: 体系结构=构件+连接件+约束 2、软件体系结构涉及哪几种结构: 1、模块结构(Module) 系统如何被构造为一组代码或数据单元的决策 2、构件和连接件结构(Component-And-Connector,C&C) 系统如何被设计为一组具有运行时行为(构件)和交互(连接件)的元素 3、分配结构(Allocation) 展示如何将来自于模块结构或C&C结构的单元映射到非软件结构(硬件、开发组和文件系统) 3、视图视点模型 视点(View point) ISO/IEC 42010:2007 (IEEE-Std-1471-2000)中规定:视点是一个有关单个视图的规格说明。 视图是基于某一视点对整个系统的一种表达。一个视图可由一个或多个架构模型组成 架构模型 架构意义上的图及其文字描述(如软件架构结构图) 视图模型 一个视图是关于整个系统某一方面的表达,一个视图模型则是指一组用来构建 4、软件体系结构核心原模型 1、构件是具有某种功能的可复用的软件结构单元,表示了系统中主要的计算元素和数据存储。 2.连接件(Connector):表示构件之间的交互并实现构件

之间的连接 特性:1)方向性2)角色3)激发性4)响应特征 第二章 1、软件功能需求、质量属性需求、约束分别对软件架构产生的影响 功能性需求:系统必须实现的功能,以及系统在运行时接收外部激励时所做出的行为或响应。 质量属性需求:这些需求对功能或整个产品的质量描述。 约束:一种零度自由的设计决策,如使用特定的编程语言。 质量原意是指好的程度,与目标吻合的程度,在软件工程领域,目标自然就是需求。 对任何系统而言,能按照功能需求正确执行应是对其最基本的要求。 正确性是指软件按照需求正确执行任务的能力,这无疑是第一重要的软件质量属性。质量属性的优劣程度反映了设计是否成功以及软件系统的整体质量。 系统或软件架构的相关视图的集合,这样一组从不同视角表达系统的视图组合在一起构成对系统比较完整的表达

软件体系结构最新总结

1.软件危机:指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 2.软件危机的表现:(重点) 1软件的成本日益增长 2开发进度难以控制 3软件质量差,4软件维护困难 3.软件危机的成因: 1用户需求不明确 2缺乏正确的理论指导 3软件规模越来越大 4软件复杂度越来越高 4.软件工程三个要素:方法、工具和过程 ---(重点) 5.软件重用是指在两次或多次不同的软件开发过程中重复使用相同或相近软件元素的过程。 6.软件元素包括程序代码、测试用例、设计文档、设计过程、需求分析文档甚至领域知识 7.构件:指语义完整、语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辨 识的系统。即是具有一定功能,能够独立工作或能同其他构件装配起来协调工作的程序体。 8.构件分类方法归纳为三大类:关键字分类法,刻面分类法和超文本组织方法 ---(重点) 9.构件库系统是一个开放的公共构件共享机制,任何使用者都可以通过网络访问构件库。--- 判断 10.软件体系结构(software architecture --SA)记住英语单词及缩写----(重点) 定义:软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。11.软件体系结构的意义:---(简答) 1)体系结构是风险承担者进行交流的手段; 2)体系结构是早期设计决策的体现; 3)体系结构是可传递和可重用的模型 12.为什么体系结构是早期设计决策的体现---(简答) 1)软件体系结构明确了对系统实现的约束条件; 2)软件体系结构决定了开发和维护组织的组织结构; 3)软件体系结构制约着系统的质量属性; 4)软件体系结构通过研究软件体系结构可能预测软件的质量; 5)软件体系结构使推理和控制更改更加简单; 6)软件体系结构有助于循序渐进的原型设计; 7)软件体系结构可以作为培训的基础 13.软件体系结构技术的发展过程经历四个阶段:--选择,判断 (1)“无体系结构”设计阶段----以汇编语言进行小规模应用程序开发为特征。 (2)萌芽阶段-----以控制流图和数据流图构成软件结构为特征 (3)初期阶段-----出现了从不同侧面描述系统的结构模型,以UML为典型代表 (4)高级阶段-----描述系统的高层抽象结构,以提出的“4+1”模型为标志 14.软件体系结构模型5种:结构模型、框架模型、动态模型、过程模型和功能模型。---- 填空 15.“4+1”视图模型从五个不同的视角,包括逻辑试图,进程试图,物理视图,开发视图和 场景视图来描述软件体系结构。 -----记住名称及相应的功能 逻辑视图主要支持系统的功能需求,是系统提供给最终用户的服务。通过抽象,封装和继承,可以用对象模型来代表逻辑视图,用类图来描述逻辑视图; 开发视图也称模块视图,主要侧重于软件模块的组织和管理,主要考虑软件内部的需求,如软件开发的容易性、软件的重用等,通过系统输入输出关系的模型图和子系统图来描述,提供给编程人员的; 进程视图侧重于系统的运行特性,主要关注非功能性的需求,如系统的性能和可用性。进程视图强调并发性、分布性、系统集成性和容错能力管道和过滤器风格、客户/服务器风格等适合进程视图,提供给系统集成人员的; 物理视图主要考虑如何把软件映射到硬件上,它通常考虑系统性能、规模、可靠性等,解决

计算机系统结构复习总结

计算机系统结构复习总结

计算机系统结构复习总结 一、计算机系统结构概念 1.1 计算机系统结构:程序员所看到的计算机的基本属性,即概念性结构与功能特性。 *注意:对不同层次上的程序员来说,由于使用的程序设计语言不同,可能看到的概念性结构和功能特性会有所不同。 1.2 计算机系统的层次结构 现代计算机是一种包括机器硬件、指令系统、系统软件、应用程序和用户接口的集成系统。 现代计算机结构图 *注意:计算机结构的层次模型 依据计算机语言广义的理解,可将计算机系统看成由多级“虚拟”计算机所组成。

从语言层次上画分可得下图: 计算机结构的层次模型 1.3计算机系统结构组成与实现 计算机系统结构:是计算机系统的软件与硬件直接的界面 计算机组成:是指计算机系统结构的逻辑实现 计算机实现:是指计算机组成的物理实现*计算机系统结构、组成与实现三者间的关系: 计算机系统结构不同会影响到可用的计算机组成技术不同,而不同的计算机组成又会反过来影响到系统结构的设计。因此,计算机系统结构的设计必须结合应用来考虑,要为软件和算法的实现提供更多更好的硬件支持,同时要考虑可

能采用和准备采用哪些计算机组成技术,不能过多或不合理地限制各种计算机组成、实现技术的采用与发展。 计算机组成与计算机实现可以折衷,它主要取决于器件的来源、厂家的技术特长和性能价格比能否优化。应当在当时的器件技术条件下,使价格不增或只增很少的情况下尽可能提高系统的性能。 1.4 计算机系统结构的分类 计算机结构分类方式主要有三种: (1)按“流”分类 按“流”分类法是Flynn教授在1966年提出的一种分类方法,它是按照计算机中 指令流(Instruction Stream)和数据流(Data Stream)的多倍性进行分类。指令流是指机 器执行的指令序列,数据流是指指令流调用 的数据序列。多倍性是指在计算机中最受限 制(瓶颈最严重)的部件上,在同一时间单 位中,最多可并行执行的指令条数或处理的 数据个数。 *注意:按“流”分类法,即Flynn分类法的逻

软件工程知识点总结

软件工程(简要知识点) 一、. 软件过程五个模型对比(瀑布模型、快速原型、增量、螺旋、喷泉模型) 二、可行性研究: 1、任务:用最小的代价在尽可能短的时间内确定问题是否能够解决。 2、四个方面:技术、经济、操作可行性、法律 3、数据流图四种成分:1、源点/终点2、处理3、数据存储 4、数据流 三、需求分析: 1、任务:确定系统必须完成哪些工作,对目标系统提出完整、清晰、具体的要求。 2、结构化方法就是面向数据流自顶向下逐步求精进行需求分析的方法。 3、实体联系图:1、数据对象2、属性3、联系(1:1、1:N、M:N) 四、总体设计: 1.任务:回答“概括的说,系统应该如何实现”,用比较抽象概括的方式确定系统如何完成预定的任务,也就是说应该确定系统的物理配置方案,并且进而确定组成系统的每个程序结构。 2.系统设计阶段(确定系统具体实施方案)、结构设计阶段(确定软件结构) 3.模块独立:内聚和耦合 4. 耦合表示一个软件结构内各个模块之间的互连程度,应尽量选用松散耦合的系统

5. 内聚(Cohesion): 一个模块内各元素结合的紧密程度 6.面向数据流的设计方法:变换流和事务流 五、详细设计: 1.任务:确定应该怎样具体的实现所要求的系统,也就是说经过这个阶段的设计工作应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。 2.过程设计的工具(程序流程图、盒图、PAD图、判定表、判定树) 七、测试: 1、单元测试:又称模块测试。每个程序模块完成一个相对独立的子功能,所以可以对该模块进行单独的测试。由于每个模块都有清晰定义的功能,所以通常比较容易设计相应的测试方案,以检验每个模块的正确性。 2、集成测试: 在单元测试完成后,要考虑将模块集成为系统的过程中可能出现的问题,例如,模块之间的通信和协调问题,所以在单元测试结束之后还要进行集成测试。这个步骤着重测试模块间的接口,子功能的组合是否达到了预期要求的功能,全程数据结构是否有问题等。 3、白盒测试技术(逻辑覆盖、基本路经测试)

软件体系结构作业 完整版

第一章: 1.根据自己的经验,谈谈对软件危机的看法。 软件危机是指软件生产方式无法满足迅速增长的计算机需求,开发和维护过程出现的一系列问题。 以下几个原因导致:(1)软件自身特点 (2)开发人员的弱点 (3)用户需求不明 (4)缺乏正确理论指导 (5)开发规模越来越大 (6)开发复杂度越来越高 可以通过软件生命周期的模型和软件工具的使用来缓解危机,通过程序自动化和软件工业化生产的方法实现软件标准化的目标,进一步缓解软件危机带来的影响。 软件危机有利有弊,除了带来许多麻烦,也给我们带来许多挑战,克服危机的过程,我们在技术上和创新上都有了一个提升,也算是间接为软件产业的发展做了贡献。 2.什么是软件重用,软件重用的层次可以分为哪几个级别? 软件重用:是指在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程。可以分为三个层次: (1)代码重用(2)设计结果重用(3)分析结果重用 3.什么是可重用构件?相对于普通的软件产品,对可重用构件有何特殊要求? 可充用构件表示软件重用过程中,可重用的软件构件元素。 可重用构件的特殊要求: (1)可重用构件应该具有功能上的独立性与完整性; (2)可重用构件应该具有较高的通用性; (3)可重用构件应该具有较高的灵活; (4)可重用构件应该具有严格的质量保证; (5)可重用构件应该具有较高的标准化程。 4.基于构件的软件开发的优势是什么?基于构件的软件开发面临哪些挑战和困难? 优势:基于构件的软件将软件开发的重点从程序编写转移到了基于已有构件的组装,更快地构造系统,减轻用来支持和升级大型系统所需要的维护负担,从而降低了软件开发的费 用 困难和挑战:没有可依据的参考,可用资源和环境缺乏,开发难度高,而各方面需求增长速度与日剧增,更新和升级的跟进是一个不小的挑战.此外,在同一系统采用多个开 发商提供的构件,它们之间的兼容性可能是开发过程中所要面对的一个严峻的问题挑战和困难:

计算机系统结构学习心得

计算机系统结构学习心得 姓名: 班级: 学号:

在大四上学期课程中对于计算机系统结构的学习已经结束,老师细心的讲解,耐心的辅导,是我从中学到很多的知识。 从中我了解到计算机系统结构(Computer Architecture)也称为计算机体系结构,它是由计算机结构外特性,内特性,微外特性组成的。经典的计算机系统结构结构的定义是指计算机系统多级层次结构中机器语言机器级的结构,它是软件和硬件固件的主要交界面,是由机器语言程序、汇编语言源程序和高级语言源程序翻译生成的机器语言目标程序能在机器上正确运行所应具有的界面结构和功能。计算机系统结构指的是什么? 是一台计算机的外表? 还是是指一台计算机内部的一块块板卡安放结构? 都不是,那么它是什么? 计算机系统结构就是计算机的的机器语言程序员或编译程序编写者所看到的外特性。所谓外特性,就是计算机的概念性结构和功能特性。用一个不恰当的比喻一,比如动物吧,它的"系统结构"是指什么呢? 它的概念性结构和功能特性,就相当于动物的器官组成及其功能特性,如鸡有胃,胃可以消化食物。至于鸡的胃是什么形状的、鸡的胃部由什么组成就不是"系统结构"研究的问题了。系统结构只管到这一层。关于计算机系统的多层次结构,用"人"这种动物的不恰当的例子列表对比如下。计算机系统,人,应用语言级,为人民服务级,高级语言级,读书、学习级,汇编语言级,语言、思维级,操作系统级,生理功能级,传统机器级,人体器官级,微程序机器级,细胞组织级,电子线路级,分子级。传统机器级以上的所有机

器都称为虚拟机,它们是由软件实现的机器。软硬件的。功能在逻辑上是等价的,即绝大多部分硬件的功能都可用软件来实现,反之亦然。计算机系统结构的外特性,一般应包括以下几个方面(这也就是我们要分章学习的几个章节)把这几个方面弄清了,系统结构也就基本明确了:(1)指令系统 (2)数据指令 (3)作数的寻址方式 (4)寄存器的构成定义 (5)中断机构和例外条件 (6)存 储体系和管理 (7)I/O结构 (8)机器工作状态定义和切换 (9)信息保护。所以在以后的学习中常回头想想这是系统结构的哪一方面,这对把握全局有好处。这里提一下计算机系统结构的内部特性,计算机系统结构的内特性就是将那些外特性加以"逻辑实现"的基本属性。所谓"逻辑实现"就是在逻辑上如何实现这种功能,比如"上帝"给鸡设计了一个一定大小的胃,这个胃的功能是消化食物,这就是鸡系统的某一外特性,那怎么消化呢,就要通过鸡喙吃进食物和砂石,再通过胃的蠕动、依靠砂石的研磨来消化食物,这里的吃和蠕动等操作就是内特性。还有一个就是计算机实现,也就是计算机组成的物理实现。它主要着眼于器件技术和微组装技术。拿上面的例子来说,这个胃由哪些组织组成几条肌肉和神经来促使它运动就是"鸡实现"。据此我们可以分清计算机系统的外特性、内特性以及物理实现之间的关系。在所有系统结构的特性中,指令系统的外特性是最关键的。因此,计算机系统结构有时就简称为指令集系统结构。我们这门课注重学习的是计算机的系统结构,传统的讲,就是处在硬件和软件之间介面的描述,

软件工程知识点汇总

软件工程知识点汇总 1 软件工程、软件工程方法学:三要素 1.1 软件工程:○1应用系统化的、规范化的、可度量的方法来开发、运行和维护软件,即将工 程应用到软件;○2对○1的各种方法的研究 1.2 软件工程是一门研究用工程化方法构建和维护有效的实用的和高质量的软件的学科 1.3 软件工程三要素是:方法、工具、过程 软件工程的方法:是指完成软件开发各项任务的技术方法 软件工具:是指为软件工程方法的运用提供自动半自动的软件支撑环境 软件工程过程:是指将软件工程方法和工具综合起来以达到合理、及时地进行计算机软件开发这一目的 2 软件工程的原则包括:模块化原则、信息隐蔽原则、抽象化原则、模块独立原则(内聚、耦合)、 依赖倒转原则、开闭原则等 2.1 模块化原则:指解决一个复杂问题时自顶向下逐层把软件系统划分为若干模块的过程。模 块是程序中相对独立的成分,一个独立的编程单位,应有良好的编程接口,模块的大小要 适中,模块过大会使模块内部的复杂性增加不利于模块的理解和修改,模块过小会导致整 个系统表示过于复杂,不利于控制系统的复杂性。 2.2 信息隐蔽原则:采用封装技术,将程序模块的实现细节隐藏起来,使模块接口尽量简单。 2.3 抽象化原则:抽取事物最基本的特性和行为,忽略非本质细节,采用分层次抽象,自顶向 下,逐层细化的办法控制软件开发过程的复杂性。 2.4 模块独立原则:是指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少 且接口简单。要求在一个物理模块内集中逻辑上相互关联的计算机资源,保证模块间由松 散的偶合关系,模块内部有较强的内聚性,这有助于控制系统的复杂性。(即:高内聚低 耦合) 2.5 依赖倒转原则:抽象不应该依赖于细节,细节应该依赖于抽象。 2.6 开闭原则:软件实体应该是可扩展的,但是不可以修改。即对于扩展是开放的,对于更改 是封闭的。 3 软件开发模型:瀑布模型;快速原型;喷泉模型;各种模型的工作原理、阶段、每阶段任务、 特点、示意图; 软件开发模型(也称为软件过程模型):是从软件项目需求定义开始直至软件经使用后废弃为止,跨 越整个生命周期的系统开发、运行和维护所实施的全部过程、活动和任务的结构框架 3.1 瀑布模型(又称线性模型): 3.1.1工作原理:规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。 前一阶段的工作成果是后一阶段工作开始的基础.所以,每个阶段都必须交出合格的文档,必须对前阶段的工作进行评审,前一阶段的工作完成后才可以开始后一阶段的工作 3.1.2 阶段: 计划时期:问题定义、可行性研究 开发时期:需求分析、设计、编码、测试 运行时期:运行和维护 3.1.3 各阶段任务: 1.需求分析和定义 在软件项目进行过程中,需求分析是从软件定义到软件开发的关键步骤,是今后软件,开发的基本依据,同时也是用户对软件产品进行验收的基本依据。需求分析和定义是以用

软件体系结构综述

软件体系结构研究综述 班级:软件092 学号:17 姓名:陈世华摘要: 近年来,软件体系结构逐渐成为软件工程领域的研究热点以及大型软件系统与软件产品线开发中的关键技术之一.归纳了软件体系结构技术发展过程及其主要研究方向.在分析了典型的软件体系结构概念之后,给出了软件体系结构的定义.通过总结软件体系结构领域的若干研究活动,提出了软件体系结构研究的两大思路,并从7个方面介绍了软件体系结构研究进展.探讨了软件体系结构研究中的不足之处,并分析其原因.作为总结,给出了软件体系结构领域最有前途的发展趋势. 关键词: 软件体系结构;基于体系结构的软件开发;软件体系结构描述语言;软件体系结构描述方法;软件体系结构演化;软件体系结构发现;软件体系结构分析;软件体系结构验证;特定域软件体系结构(DSSA) Abstract: Software architecture (SA) is emerging as one of the primary research areas in software engineering recently and one of the key technologies to the development of large-scale software-intensive system and software product line system. The history and the major direction of SA are summarized, and the concept of SA is brought up based on analyzing and comparing the several classical definitions about SA. Based on summing up the activities about SA, two categories of study about SA are extracted out, and the advancements of researches on SA are subsequently introduced from seven aspects. Additionally, some disadvantages of study on SA are discussed, and the causes are explained at the same time. Finally, it is concluded with some significantly promising tendency about research on SA. Key words: software architecture; architecture-based development; architecture description language; architectural representation and description; architectural evolution and reuse; architectural discovery; architectural analysis; architectural verification and evaluation; domain-specific software architecture (DSSA)

软件工程基础知识点总结

软件工程基础部分知识点总结 知识点一软件工程的基本概念 1、软件定义:是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。 1)程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令(语句)序列。 2)数据是使程序能够正常操作信息的数据结构。 3)文档是与程序开发、维护和使用有关的图文资料。 国标(GB)计算机软件的定义:与计算机系统的操作相关的计算机程序、规程、规则以及可能有的文件、文档及数据。 2、软件特点: 1)软件是一种逻辑实体,而不是物理实体,具有抽象性,是计算机的无形部分; 2)软件的生产与硬件不同,它没有明显的制作过程; 3)软件在运行、使用期间不存在磨损、老化问题; 4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题; 5)软件复杂性高,成本昂贵; 6)软件开发涉及诸多的社会因素 3、软件的分类: 按照功能可以分为:应用软件、系统软件、支撑软件(或工具软件)

1)应用软件是为解决特定领域的应用而开发的软件。 2)系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。 3)支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具软件。 4、软件危机:是指在软件的开发和维护过程中所遇到的一系列严重问题。软件危机主要体现在以下几个方面: ①软件开发的实际成本和进度估计不准确 ②开发出来的软件常常不能使用户满意 ③软件产品的质量不高,存在漏洞,需要经常打补丁 ④大量已有的软件难以维护 ⑤软件缺少有关的文档资料 ⑥开发和维护成本不断提高,直接威胁计算机应用的扩大 ⑦软件生产技术进步缓慢,跟不上硬件的发展和人们需求增长 5、软件工程:此概念的出现源自软件危机。软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来开发与维护软件的学科。 1)研究软件工程的主要目的就是在规定的时间、规定的开发费用内开发出满足用户需求的高质量的软件系统(高质量是指错误率低、好用、易用、可移植、易维护等)。 2)软件工程的三个要素:方法、工具和过程。 ①方法:完成软件工程项目的技术手段;

软件架构总结

总结 本学期课程已上一半,在这半个学期内对所学前五章的知识进行系统的分析和归纳,总结如下。 第1章:软件体系结构概论 1.什么是软件危机,软件危机的具体表现有哪些? (1)软件危机:落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。 (2)软件危机的表现:软件成本日益增长,开发进度难以控制,软件质量差,软件维护困难。 2.产生软件危机的原因,如何克服软件危机? (1)产生软件危机的原因有:用户需求不明确,缺乏正确的理论指导,软件规模越来越大,软件复杂度越来越高。 (2)如何克服软件危机:人们面临的不光是技术问题,更重要的是管理问题。要提高软件开发效率,提高软件产品质量,必须采用工程化的开发方法与生产技术。在技术上,应该采用基于重用的软件生产技术;在管理上,应该采用多维的工程管理模式。 3.构件:(components,也译为组件,部件): 是指语义完整、语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辨识的系统;结构上,它是语义描述、通讯接口和实现代码的复合体。是具有某种功能的可重用的软件模板单元,表示了系统中主要的计算元素和数据存储。 4.软件体系结构的定义: 软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述,这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。软件架构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。 5.软件体系结构的意义 体系结构是风险承担者进行交流的手段,体系结构是早期设计决策的体现,它明确了对系统实现的约束条件,决定了开发和维护组织的组织结构,制约着系统的质量属性,可以预测软件的质量,是推理和控制更改更简单,有助于循序渐进的原型设计。同时,软件体系结构是可传递和可重用的模型。 6.软件体系结构的应用现状 1. 目前,软件体系结构领域研究非常活跃,归纳现有体系结构的研究活动,主要包括以下几个方面: (1)软件体系结构描述语言(2)体系结构构造与表示(3)体系结构分析、设计与验证(4)体系结构发现、演化与重用(5)基于体系结构的软件开发方法(6)特定领域的体系结构框架(7)软件体系结构支持工具(8)软件产品线体系结构(9)建立评价软件体系结构的方法。 2.架构分析、设计与验证,发现、演化与重用 架构分析的内容可分为结构分析、功能分析和非功能分析。生成一个满足软件需求的架构的过程即为架构设计。架构设计过程的本质在于将系统分解成相应的组成成分,并将这些成分重新组装成一个系统。架构设计有两大类方法:过程驱动方法和问题列表驱动方法。架构测试着重于仿真系统模型,解决架构层的主要问题。由于测试的抽象层次不同,架构测试策略可以分为单元/子系统/集成/验收测试等阶段的测试策略。架构发现从既存系统中提取软件的架构,属逆向工程。 架构重用属于设计重用,比代码重用更抽象。由于软件架构是系统的高层抽象,反映了系统的主要组成元素及其交互关系,因而较算法更稳定,更适合于重用。 软件架构演化是指由于系统需求、技术、环境、分布等因素的变化而导致软件架构的变动。软件系统在运行时的架构变化称为架构的动态性,而将架构的静态修改称为架构扩展。两者都是架构适应性和演化性的研究范畴。 第2章软件体系结构建模。 1.软件体系结构建模的种类

计算机体系结构知识点汇总

第一章计算机体系结构的基本概念 1.计算机系统结构的经典定义 程序员所看到的计算机属性,即概念性结构与功能特性。 2.透明性 在计算机技术中,把这种本来存在的事物或属性,但从某种角度看又好像不存在的概念称为透明性。 3.系列机 由同一厂家生产的具有相同系统结构、但具有不同组成和实现的一系列不同型号的计算机。 4.常见的计算机系统结构分类法有两种:Flynn分类法、冯氏分类法Flynn分类法把计算机系统的结构分为4类: 单指令流单数据流(SISD) 单指令流多数据流(SIMD) 多指令流单数据流(MISD) 多指令流多数据流(MIMD) 5. 改进后程序的总执行时间

系统加速比为改进前与改进后总执行时间之比 6.CPI(Cycles Per Instruction):每条指令执行的平均时钟周期数 CPI = 执行程序所需的时钟周期数/IC 7.存储程序原理的基本点:指令驱动 8.冯·诺依曼结构的主要特点 1.以运算器为中心。 2.在存储器中,指令和数据同等对待。 指令和数据一样可以进行运算,即由指令组成的程序是可以修改的。 3.存储器是按地址访问、按顺序线性编址的一维结构,每个单元的位数是固定的。 4.指令的执行是顺序的 5.指令由操作码和地址码组成。 6.指令和数据均以二进制编码表示,采用二进制运算。 9.软件的可移植性 一个软件可以不经修改或者只需少量修改就可以由一台计算机移植到另一台计算机上正确地运行。差别只是执行时间的不同。我们称这两台计算机是软件兼容的。 实现可移植性的常用方法:采用系列机、模拟与仿真、统一高级语言。 软件兼容: 向上(下)兼容:按某档机器编制的程序,不加修改就能运行于比它高(低)档的机器。 向前(后)兼容:按某个时期投入市场的某种型号机器编制的程序,不加修改地就能运行于在它之前(后)投入市场的机器。 向后兼容是系列机的根本特征。 兼容机:由不同公司厂家生产的具有相同系统结构的计算机。

软件工程知识点总结

软件工程知识点总结 软件工程专业是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。接下来是为大家收集的软件工程知识点总结,以供大家学习! 知识点一软件工程的基本概念 1、软件定义:是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。 1)程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令(语句)序列。 2)数据是使程序能够正常操作信息的数据结构。 3)文档是与程序开发、维护和使用有关的图文资料。 国标(GB)计算机软件的定义:与计算机系统的操作相关的计算机程序、规程、规则以及可能有的文件、文档及数据。 2、软件特点: 1)软件是一种逻辑实体,而不是物理实体,具有抽象性,是计算机的无形部分; 2)软件的生产与硬件不同,它没有明显的制作过程; 3)软件在运行、使用期间不存在磨损、老化问题; 4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题; 5)软件复杂性高,成本昂贵; 6)软件开发涉及诸多的社会因素

3、软件的分类: 按照功能可以分为:应用软件、系统软件、支撑软件(或工具软件) 1)应用软件是为解决特定领域的应用而开发的软件。 2)系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。 3)支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具软件。 4、软件危机:是指在软件的开发和维护过程中所遇到的一系列严重问题。软件危机主要体现在以下几个方面: ①软件开发的实际成本和进度估计不准确 ②开发出来的软件常常不能使用户满意 ③软件产品的质量不高,存在漏洞,需要经常打补丁 ④大量已有的软件难以维护 ⑤软件缺少有关的文档资料 ⑥开发和维护成本不断提高,直接威胁计算机应用的扩大 ⑦软件生产技术进步缓慢,跟不上硬件的发展和人们需求增长 5、软件工程:此概念的出现源自软件危机。软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来开发与维护软件的学科。

计算机系统结构复习(个人总结)

第一章: 计算机系统的层次结构:(按照计算机语言从低级到高级) 微程序机器,传统机器语言机器,操作系统机器,汇编语言机器,高级语言机器和应用语言机器。 计算机系统结构: 传统机器程序员所看到的计算机属性,即概念属性和功能特性。 计算机组成: 计算机系统结构的逻辑实现,包括物理机器级中的数据流和控制流的组成和逻辑设计等。计算机实现: 计算机组成的物理实现,包括处理机,主存等物理结构及整机装配技术。(器件技术和微组装技术) 透明性: 在计算机技术中,把这种本来存在的事物和属性,但从某种角度看又好像不存在的概念称为透明性。 Flynn分类法是依旧:指令流和数据流的多倍性进行分类的。 冯氏分类发:是按照计算机系统的最大并行度来分类的。 计算机系统设计的定量原则: 1,以经常性事件为重点:在计算机系统中对于经常发生的事件,赋予它优先的处理权和系统使用权。 2,Amdahl定律:加快某部件的执行速度所获得的系统性能的加速比。S n=1 1?F e+F e e (注: Fe=可改进时间比例,Se=性能提高倍数) 3,CPU性能公式:执行一个程序所需要的CPU时间=IC*CPI*时钟周期时间(CPI指令平均时 钟周期=执行程序所需要的时钟周期数/所执行的指令数)CPI=(CPI i?IC i IC ) n i=1 4,程序的局部属性:程序执行时,所访问的存储器地址不是随机分布的,而是相对簇聚的。 包括时间局部性和空间局部性。 计算机系统设计者的主要任务: 1,确定用户对计算机系统的功能,价格和性能的要求。 2,软硬件功能的分配。 3,设计出生命周期长的系统结构。 软件兼容: 一台计算机上的程序不加修改或只需要少量的修改就可以由一台计算机一直到另一台计算机上运行,差别只是执行时间的不同 从中间开始设计:

计算机二级考试复习软件工程基础

第3章软件工程基础 经过对部分考生的调查以与对近年真题的总结分析,笔试部分经常考查的是软件生命周期、软件设计的基本原理,软件测试的目的、软件调试的基本概念,读者应对此部分进行重点学习。 详细重点学习知识点: 1.软件的概念、软件生命周期的概念与各阶段所包含的活动 2.概要设计与详细设计的概念、模块独立性与其度量的标准、详细设计常用的工具 3.软件测试的目的、软件测试的4个步骤、 4.软件调试的任务 3.1软件工程基本概念 考点1 软件定义与软件特点 考试链接: 考点1在笔试考试中,是一个经常考查的内容,考核的几率为70%,主要是以选择题的形式出现,分值为2分,此考点为识记内容,读者应该识记软件的定义,特点与其分类。 软件指的是计算机系统中与硬件相互依存的另一部分,包括程序、数据和相关文档的完整集合。程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令序列。数据是使程序能正常操纵信息的数据结构。文档是与程序的开发、维护和使用有关的图文资料。可见,软件由两部分组成: (1)机器可执行的程序和数据; (2)机器不可执行的,与软件开发、运行、维护、使用等有关的文档。

软件的特点: (1)软件是逻辑实体,而不是物理实体,具有抽象性; (2)没有明显的制作过程,可进行大量的复制; (3)使用期间不存在磨损、老化问题; (4)软件的开发、运行对计算机系统具有依赖性; (5)软件复杂性高,成本昂贵; (6)软件开发涉与诸多社会因素。 根据应用目标的不同,软件可分应用软件、系统软件和支撑软件(或工具软件)。 小提示:应用软件是为解决特定领域的应用而开发的软 件;系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件;支撑软件是介于两者之间,协助用户开发软件的工具性软件。 考点2 软件工程过程与软件生命周期 考试链接: 考点2在笔试考试中,在笔试考试中出现的几率为30%,主要是以选择题的形式出现,分值为2分,此考点为识记内容,读者应该识记软件生命周期的定义,主要活动阶段与其任务。 软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。一般包括可行性分析研究与需求分析、设计、实现、测试、交付使用以与维护等活动,如图3-1所示。

软件体系结构总结

●什么是“软件体系结构”: 架构是以组件、组件之间的关系、组件与环境之间的关系为内容的某一系统的基本组织结构,以及指导上述内容设计与演化的原理。 ●SA概念两大流派: 决策派是在一些重要方面所作出的决策集合 组合派将系统描述为组件及组件之间的交互 ●软件体系结构核心模型: ●构件的定义: 构件是指语义完整、语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辨识的系统;结构上,它是语义描述、通讯接口和实现代码的复合体。 ●RUP 4+1视图: 逻辑视图(Logical View):逻辑试图主要是用来描述系统的功能需求,即系统提供给最终用户的服务. 在逻辑视图中,系统分解成一系列的功能抽象、功能分解与功能分析,这些主要来自问题领域(Problem Definition)。在面向对象技术中,通过抽象、封装、继承,可以用对象模型来代表逻辑视图,可以用类图(Class Diagram)来描述逻辑视图。 过程视图(Process View):进程试图侧重系统的运行特性,关注非功能性的需求(性能,可用性)。服务于系统集成人员,方便后续性能测试。强调并发性、分布性、集成性、鲁棒性(容错)、可扩充性、吞吐量等。定义逻辑视图中的各个类的具体操作是在哪一个线程(Thread)中被执行。 物理视图(Physical View):物理试图主要描述硬件配置。服务于系统工程人员,解决系统的拓扑结构、系统安装、通信等问题。主要考虑如何把软件映射到硬件上,也要考虑系统性能、规模、可靠性等。可以与进程视图一起映射。 开发视图(Development View):开发视图主要用来描述软件模块的组织与管理(通过程序库或子系统)。服务于软件编程人员,方便后续的设计与实现。它通过系统输入输出关系的模型图和子系统图来描述。要考虑软件的内部需求:开发的难易程度、重用的可能性,通用性,局限性等等。开发视图的风格通常是层次结构,层次越低,通用性越好(底层库:Java SDK,图像处理软件包)。场景(Scenarios):场景用于刻画构件之间的相互关系,将四个视图有机地联系起来。可以描述一个特定的视图内的构件关系,也可以描述不同视图间的构件关系。文本、图形表示皆可。(小结:逻辑视图、开发视图,都主要是用来描述系统的静态结构。进程视图、物理视图,主要是用来描述系统的动态结构。并非每个系统都必须把5个视图都画出来,而是各有侧重。例如MIS系统侧重于逻辑视图、开发视图,而实时控制系统则侧重于进程视图、物理视图。) ●体系结构描述语言: 专门的语言,用于支持严格的体系结构描述,形式的、(半)自动的分析和代码生成。例如ACME(Component, Connector, Port, Role, System) ●软件体系结构风格:是描述某一特定应用领域中系统组织方式的惯用模式。 ●软件体系结构风格分类: 数据流系统(批处理系统,管道/过滤器系统) 调用/返回系统(主程序/子程序系统,面向对象系统,层次风格)独立构件(进程通信,事件系统) 虚拟机(解释器,基于规则的系统) 数据为中心的系统(数据库,超文本系统,黑板系统) ●客户/服务器风格: 优点:(1)C/S 体系结构具有强大的数据操作和事务处理能力,模型思想简单,易于人们理解和接受。(2)系统的客户应用程序和服务器构件分别运行在不同的计算机上,系统中每台服务器都可以适合各构件的要求,这对于硬件和软件的变化显示出极大的适应性和灵活性,而且易于对系统进行扩充和缩小。(3)在C/S 体系结构中,系统中的功能构件充分隔离,客户应用程序的开发集中于数据的显示和分析,而数据库服务器的开发则集中于数据的管理,不必在每一个新的应用程序中都要对一个DBMS进行编码。将大的应用处理任务分布到许多通过网络连接的低成本计算机上,以节约大量费用。 缺点:(1)开发成本较高(2)客户端程序设计复杂(3)信息内容和形式单一(4)用户界面风格不一,使用繁杂,不利于推广使用(5)软件移植困难(6)软件维护和升级困难(7)新技术不能轻易应用。 ●三层客户/服务器风格: 表示层:应用的用户接口部分,担负着用户与应用间的对话功能功能层:应用的本体,将具体的业务逻辑编入程序 数据层:负责管理对数据库数据的读写 优点:(1)允许合理地划分三层结构的功能,使之在逻辑上保持相对独立性,能提高系统和软件的可维护性和可扩展性。(2)允许更灵活有效地选用相应的平台和硬件系统,使之在处理负荷能力上与处理特性上分别适应于结构清晰的三层;并且这些平台和各个组成部分可以具有良好的可升级性和开放性。(3)应用的各层可以并行开发,可以选择各自最适合的开发语言。(4)利用功能层有效地隔离开表示层与数据层,未授权的用户难以绕过功能层而利用数据库工具或黑客手段去非法地访问数据层,为严格的安全管理奠定了坚实的基础。 注意点:(1)三层C/S结构各层间的通信效率若不高,即使分配给各层的硬件能力很强,其作为整体来说也达不到所要求的性能。(2)设计时必须慎重考虑三层间的通信方法、通信频度及数据量。这和提高各层的独立性一样是三层C/S结构的关键问题。

相关主题
文本预览
相关文档 最新文档