软件架构师-第5章软件工程基础知识-笔记_软件构件组装 顺序组装 层次组装

2 . 需求获取方法

1 ) 用户面谈
        2 ) 需求专题讨论会(会议的人员包括主持人、用户、技术人员、项目组人员。)
        3 ) 问卷调查
        4 ) 现场观察
        5 ) 原型化方法
        6 ) 头脑风暴法

专题讨论会具有以下优点。
(1)协助建立一支高效的团队,围绕项目成功的目标。
(2) 所有的风险京担人都畅所欲言。
(3)促进风险承担人和开发团队之间达成共识。
(4) 揭露和解决那些妨碍项目成功的行政问题。
(5) 能够很快地产生初步的系统定义。
(6) 可以有效地解决不同涉众之间的需求冲突。

需求变更

· 仔细评估[j边议的变更。
· 挑选合适的人选对变更做出判定.
· 变更应及时通知所有相关人员。
· 项目要按一定的程序来采纳需求变更,对变更的过程和状态进行控制-

  1. 变更控制过程

(1)问题分析和变更描述.
(2)变更分析和成本计算
(3)变更实现

需求变更策略:
(1) 所有日,;求变更必须j堕循变更控制过程。
(2) 对于未获得批准的变更,不应该做设计和实现工作。
(3) 变更应该由项问变更控制委员会决定实现哪些变更。
(4) 项日风险i~扭者应该能够了解变更的内容。
(5) 绝不能从项日配置库中删除或者修改变更请求的原始文挡.
(6) 每一个集成的27求变更必须能跟踪到一个经核准的变更请求,以保持水平可追踪性.

  1. 变更控制委员会

变更控制委员会(Change Control Board, CCB) 是项目所有者权益代表,负责裁定接受哪些变更。

变更控制委员会可能包括如下方而的代表。
(1) 产品或计划管理部门。
(2) 项目管理部门。
(3) 开发部门。
(4) 测试或质量保证部门。
(5) 市场部或客户代表。
(6) 制作用户文挡的部门。
(7) 技术支持部门。
(8) 帮助桌面或用户支持热线部门。
(9) 配置管理部门。

变更控制委员会应该有一个总则,用于描述变更控制委员会的目的、授权范围、成员构成、做出决策的过程及操作步骤。

1 )制定决策
制定决策过程的描述应确认:
· 变更控制委员会必须到会的人数或做出有效决定必须出席的人数。
· 决策的方法(例如投票,一致通过或其他机制)。
· 变更控制委员会主席是否可以否决该集体的决定。
变更控制委员会应该对每个变更权衡利弊后做出决定。"利"包括节省的资金或额外的收入、增强的客户满意度、竞争优势、减少上市时间; "弊"是指接受变更后产生的负面影响,包括增加的开发费用、推迟的交付日期、产品质量的下降、减少的功能、用户不满意度。
2) 交流情况
一旦变更控制委员会做出决策,指派的人员应及时更新请求的状态。
3) 重新协商约定
变更总是有代价的,即使拒绝的变更也国为决策行为(提交、评估、决策〉而耗费了资源。

需求追踪
需求跟踪包括编制每个街求同系统元素之间的联系文档

包括其他需求、体系结构、其他设计部件、源代码模块、测试、帮助文件和文档等,是要在整个项目的工件之间形成水平可追踪性。跟踪能力信息使变更影响分析十分便利,有利于确认和评估实现某个建议的需求变更所必须的工作.
需求跟踪提供了由需求到产品实现整个过程范围的明确查阅的能力.

需求跟踪的目的是建立与维护"需求· 设计- 编程. 测试"之间的一致性,确保所有的工作成果符合用户需求。
需求跟踪有两种形式:
(1) 正向跟踪。检查《产品需求规格说明书》中的每个需求是否都能在后继工作成果中找到对应点。
(2) 逆向跟踪。检查设计文档、代码、测试用例等工作成果是否部能在《产品需求规格说明书》中找到出处。正向跟踪和逆向跟踪合称为"双向跟踪"。

系统分析与设计
        系统分析阶段是应用系统思想和方法,把复杂的对象分解为简单的组成部分,找出这些部分的基本属性和彼此之间的关系的过程,其基本任务是系统分析师和用户在充分了解用户需求的基础上,把双方对新系统的理解表达为系统需求规格说明书。
        系统设计的目标是根据系统分析的结果, 完成系统的构建过程。J

结构化方法

SASD (Structured Analysisand Structured Dcs ign ) 方法,也可称为面向功能的软件开发方法或面向数据流的软件开发方法。

结构化开发方法提出了一组提高软件结构合理性的准则,如分解与抽象、模块独立性、信息隐蔽等。针对软件生#周期各个不同的阶段,它有结构化分析(SA) 、结构化设计( SD) 和结构化编程( SP) 等方法。

  1. 结构化分析
    结构化分析方法给出一组帮助系统分析人员产生功能规约的原理与技术。

一般利用图形表达用户需求,使用的手段主要有数据流图、数据字典、结构化语言、判定表以及判定树等。
结构化分析的步骤如下:
(1) 分析业务情况,做出反映当前物理模型的数据流阁C DataFlow Diagram, DFD);
(2) 推导出等价的逻辑模型的DFD;
(3) 设计新的逻辑系统,生成数据字典和基元描述;
(4) 建立人机接口,提出可供选择的目标系统物理模型的DFD;
(5) 确定各种方案的成本和风险等级,据此对各种方案进行分析:
(6) 选择一种方案:
(7) 建立完整的需求规约。
结构化分析的常用手段是数据流图( DFD ) 和数据字典。
1)数据流图
DFD 需求建模方法, 也称为过程建模和功能建模方法。DFD 建模方法的核心是数据流, 从
应用系统的数据流着手以图形方式刻画和表示一个具体业务系统中的数据处理过程和数据流。
DFD 方法由4 种基本元素(模型对象〉组成:数据流、处理/加工、数据存储和外部项。
(1) 数据流( Data Flow ) 。
(2) 处理( Process) 。
(3) 数据存储。
(4) 外部项。

建立DFD 图的目的是描述系统的功能需求。

具体的建模过程及步骤如下。
(1) 明确目标,确定系统范围。
(2) 建立顶层DFD图。
(3) 构建第一层DFD分解阁。
(4) 开发DFD层次结构罔.
(5) 检查确认DFD图.

数据字典
数据字典( Data Dictionary) 是一种用户可以访问的记录数据库和应用程序元数据的目录。

数据字典政重要的作用是作为分析阶段的工具。

数据字典各部分的描述如下
(1) 数据项: 数据流图中数据块的数据结构中的数据项说明。数据项是不可再分的数据单位。对数据项的描述通常包括以下内容:
数据项到描述数据项名,数据项含义说明, 别名,数据类剿,氏度,取值范围,取值含义,与其他数据项的逻辑关系
其中"取值范围" 与其他数据琐的逻辑关系"定义了数据的完接性约束条件,是设计数据检验功能的依据。若干个数据项可以组成一个数据结构。
(2) 数据结构:数据流闺中数据块的数据结构说明。
(3) 数据流:数据流图中流线的说明。数据流是数据结构在系统内传输的路径。对数据流的描述通常包括以下内容:
数据流描述={数据流名,说明,数据流来源,数据流去向, 组成: {数据结构} ,平均流量,高峰期流量}
其中"数据流来源"是说明该数据流来自哪个过程,即数据的来源。"数据流去向"是说明该数据流将到哪个过程去,即数据的去向。"平均流量"是指在单位时间(每天、每周、每月等)里的传输次数。"高峰期流量"则是指在高峰时期的数据流量。
(4) 数据存储:数据流图中数据块的存储特性现明。数据存储是数据结构停留或保存的地方,也是数据流的来源和去向之一。对数据存储的描述通常包括以下内容:
数据存储描述={数据存储名, 说明,编号, 流入的数据流, 流出的数据流, 组成: {数据
结构} ,数据囊,存取方式)
其中"数据量"是指每次存取多少数据,每天(或每小时、每周等)存取几次等信息。"存取方式"包括是批处理,还是联机处理;是检索还是更新;是顺序检索还是随机检索等。另外"流入的数据流"要指出其来源,"流出的数据流"要指山其去向。
(5) 处理过程: 数据流图中功能块的说明。

  1. 结构化设计

结构化设计(Structured Design, SD) 是一种面向数据流的设计方法

1 )模块结构
系统是一个整体,它具有整体性的目标和功能,但这些日标和功能的实现又是由相互联系的各个组成部分共同工作的结果。

(1) 信息隐藏与抽象。
        信息隐藏原则要求采用封装技术,将程序模块的实现细节( 过程或数据) 隐藏起来,对于不需要这些信息的其他模块来说是不能访问的,使模块接口尽量简单. 
        抽象层次包括过程抽象、数据抽象和控制抽象。
        (2) 模块化。
        在SD方法中,模块是实现功能的基本单位,它一般具有功能、逻辑和状态3个基本属性,其中功能是指该模块"做什么",逻辑是描述模块内部"怎么做",状态是应按块使用时的环境和条件。
        (3) 耦合。耦合表示模块之间联系的程度。
        模块的耦合类型通常分为7 种,非直接耦合、数据耦合、标记耦合、控制耦合、通信耦合、公共耦合、内容耦合
        (4) 内聚
        模块的内聚类型通常也可以分为7 种,功能内聚、顺序内聚、通信内聚、过程内聚、时间内聚、时间内聚、逻辑内聚、偶然内聚

在模块的分解中应尽量减少模块的稿合,力求增加模块的内聚,遵循"高内聚、低搞合"的设计原则。

2 )系统结构图

系统结构图CStructure Chart, SC) 又称为模块结构图,它是软件概要设计阶段的工具,反映系统的功能实现和模块之间的联系与通信,包括各模块之间的层次结构,即反映了系统的总体结构。

设计的基本步骤如下。
(1) 分析并确定输入/输出数据的逻辑结构。
(2) 找出输入数据结构和输出数据结构中有对应关系的数据单元。
(3) 按一定的规则由输入、输出的数据结构导出程序结构。
(4) 列出基本操作与条件,并把它们分配到程序结构图的适当位置。
(5) 引用伪码写出程序。
详细设计的表示工具有图形工具、表格工具和语言工具。
(1) 图形工具。
利用图形工具可以把过程的细节用图形描述出来。具体的图形有业务流图、程序流程图、PAD ( Problem Analysìs Dìagram ) 阁、NS 流程图(由Nass i 和S hneiderman 卅发, 简称NS) 等。

PAD 的特点如下:
· 使川PAD符号设计山的程序代码是结构化程序代码:
· PAD所描绘的程序结构十分洁晰:
· 用PAÐ图表现周序的逻辑易读、易懂和易记;
· 容易将PAD图转换成高级语言源程序自动完成;
· 既可以表示逻辑,也可用来描绘数据结构;
· 支持自顶向下方法的使用。
(2) 表格工具。
可以用一张表来描述过程的细节,在这张表中列出了各种可能的操作和相同的条件。
(3) 语言工具.

• PDL的优点: 可以作为注释直接插在源程序中;可以使用普通的文本编辑L具或文字处理工具产生和管理; 已经有自动处理程序存在,而且可以山动由PDL生成程序代码。
• PDL的不足:不如图形工具形象直观, 描述复杂的条件组合与动作间对应关系时,不如判定树清晰简单。

  1. 结构化编程

结构化程序设计(Structured Programing, SP)。"面向结构"的程序设计方法即结构化程序设计方法,是"而向ii程"方法的战进,结构上将软件系统划分为轩平功能模块,各模块按要求单独编程,再组合构成相应的软件系统。

4 . 数据库设计

数据库设计是指根据用户的需求, 在某一具体的数据库管理系统上,设计数据库的结构和建立数据库的过程。

数据库设计的内容包括: 需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库的实施和数据库的运行和维护。

E-R 图提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。

E-R 图中的联系存在3 种一般性约束: 一对一约束(联系)、一对多约束(联系〉和多对多约束(联系)

E-R 图的基本作图步骤如下。
(1) 确定所有的实体集合。
(2) 选择每个实体集应该包含的属性。
(3) 确应实体架之间的联系。
(4) 确定实体架的关键字,用下画线在属性上表明关键字的属性组合.
(5) 确定联系的类型,在用线将表示联系的菱形框联系到实体集时

面向对象方法

面向对象( Object-Oriented. OO) 开发方法将面向对象的思想应用于软件开发过程中,指导开发活动,是建立在"对象"概念基础上的方法学。

面向对象开发方法是以用例驱动的、以体系结构为中心的、迭代的和渐增式的开发过程,主要包括需求分析、系统分析、系统设计和系统实现4 个阶段。

  1. 面向对象分析
    面向对象的分析方法( Object-Oriented Analysis, OOA) ,是在一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题。

OOA 模型由5 个层次(主题层、对象类层、结构层、属性层和服务层)和5 个活动(标识对象类、标识结构、定义主题、定义属性和定义服务〉组成。

  1. OOA 原则
            OOA 的基本原则包括如下内容。
            (1) 抽象。抽象是从许多事物中舍弃个别的、非本质的特征,抽取共同的、本质性的特征。
            (2) 封装。封装就是把对象的属性和服务结合为一个不可分的系统单位,井尽可能隐蔽对
    象的内部细节。
            (3) 继承。特殊类的对象拥有其对应的一般类的全部属性与服务,称作特殊类对一般类的
    继承。
            ( 4) 分类。分类就是把具有相同属性和服务的对象划分为一类,用类作为这些对象的抽象
    描述。
            (5) 聚合。聚合又称组装,其原则是:把一个复杂的事物看成若干比较简单的事物的组装
    体,从而简化对复杂事物的描述。
            (6) 关联。
            (7) 消息通信。
            (8) 粒度控制。
            (9) 行为分析。

  2. 基本步骤
            OOA 大致上遵循如下5 个基本步骤。
            (1) 确定对象和类。
            (2) 确定结构。结构娃指问题域的复杂性和连接关系。
            (3) 确定主题。主题是指事物的总体概貌和总体分析模型。
            (4) 确定剧性。
            (5) 确定方法。

2 . 面向对象设计
面向对象设计右法(Object-Oriented Oesign, 000 ) 是OOA 方法的延续,其基本思想包括抽象、封装和可扩展性,其中可扩展性主要通过继承和多态米实现.

OOD中, 类可以分为3 种类型: 实体类、控制类和边界类。

  1. 面向对象编程

面|句对象程序设计( Object Oriented Programming, OOP ) 是一种计算机编程架构。

OOP 的一条基本原则是计算机程序由单个能够起到子程序作用的单元或对象组合而成。

OOP 达到了软件工程的3 个主要目标: 重用性、灵活性和扩展性。

OOP 的基本特点有封装、继承和多态。

封装是指将一个计算机系统中的数据以及与这个数据相关的一切操作语言(即描述每一个对象的属性以及其行为的程序代码)组装到一起,一并封装在一个有机的实体中,把它们封装在一个"模块"中,也就是一个类中,为软件结构的相关部件所具有的模块性提供良好的基础。

继承是面向对象技术巾的另外一个重要特点,其主要指的是两种或省两种以上的类之间的联系与区别.

从宏观的角度来讲,多态是指在面向对象技术中,当不同的多个对象同时接收到同一个完全相同的消息之后,所表现出来的动作是各不相同的,具有多种形态:

从微观的角度来讲,多态是指在一组对象的一个类中,面向对象技术可以使用相同的调用方式米对相同的函数名进行调用,即使这若干个具有相同函数名的函数所执行的动作是不同的.

4 . 数据持久化与数据库

软件测试

软件测试是使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。

软件测试的目的就是确保软件的质量、确认软件以正确的方式做了用户所期望的事情

测试方法

软件测试方法的分类有很多种,以测试过程中程序执行状态为依据可分为静态测试( StaticTesting, ST) 和动态测试(Dynamic Testing, DT);

以具体实现算法细节和系统内部结构的相关情况为根据可分黑盒测试、白盒测试和灰盒测试3 类;

从程序执行的方式来分类,可分为人工测试( Manual Testing, MT) 和自动化测试( Automatic Testing, AT) 。

测试阶段

从阶段上划分,软件测试可以分为单元测试、集成测试和系统测试

系统测试中又包含如功能测试、性能测试、验收测试、压力测试等。

净室软件工程

净室软件工程(Cleanroom Software Engineeri吨, CSE) 是一种在软件开发过程中强调在软件中建立正确性的需要的方法。

净室是一种以合理的成本开发高质量软件的基于理论、面向工作组的方法。

理论基础

净室软件工程的理论基础主要是函数理论和抽样理论。

技术手段

1 . 统计过程控制下的增量式开发( Incremental Development )
2 . 基于函数的规范与设计
3. 正确性验证
4. 统计测试( Statistically ßased Testing )和软件认证

应用与缺点

净直软件工程任使用的过程中,也显示出一些缺点。

  1. CSE 太理论化,需要要更多的数学知识。
  2. CSE 开发小姐不进行传统的模块测试,这是不现实的。
    3 ) CSE 毕竟脱胎子传统软件工程,不可避免地带有传统软件t程的一些弊端。

基于构件的软件工程

基于构件的软件工程(Component-Based So食ware Engineering, CBSE ) 是一种基于分布对象技术、强调通过可复用构件设计与构造软件系统的软件复用途径。

构件和构件模型

用于CBSE 的构件应该具备以下特征。
(1)可组装型: 对于可组装的构件,所有外部交互必须通过公开定义的接口进行。同时它还必须对自身信息的外部访问。
(2) 可部署性: 软件必须是自包含的,必须能作为一个独立实体在提供其构件模型实现的构件平台上运行。构件总是二进制形式,无须在部署前编译。
(3)文档化: 构件必须是完全文档化的, 用户根据文挡来判断构件是否满足需求。
( 4) 独立性:构件应该是独立的,应该可以在无其他特殊构件的情况下进行组装和部署,如确实需要其他构件提供服务,则应显示声明。
(5) 标准化:构件标准化意味着在CBSE 过程中使用的构件必须符合某种标准化的构件模型。

构件模型包含模型要素

(1)接口。构件通过构件接口来定义,构件模型规定应如何定义构件接口以及在接口店义中应该包含的要素,如操作名、参数以及异常等。
( 2) 使用信息。为使构件远程分布和访问,必须给构件一个特定的、全局唯一的名字或句柄。构件元数据是构件本身相关的数据,比如构件的接口和属性信息。用户可以通过元数据找到构件提供的服务。构件模型的实现通常包括访问构件的元数据的特定方法。构件是通用实体,在部署的时候,必须对构件进行配置来适应应用系统。
(3) 部署。构件模型包括一个规格说明,指出应该如何打包构件使其部署成为一个独方.的百j 执行实体。部署信息中包含有关包中内容的信息和它的二进制构成的信息。

构件模型提供了一组被构件使用的边用服务,这种服务包括以下两种。
•平台服务,允许构件在分布式环境下通信和互操作。
·支持服务,这是很多构件需要的共性服务。

CBSE过程

CBSE 过程是支持基于构件组装的软件开发过程,简要考虑构件复用的可能性,以及在开发和使用可复用的构件中所涉及的不同过程活动。

CBSE 过程中的主要活动包括:
(1) 系统需求概览;
(2) 识别候选构件:
(3) 根据发现的构件修改需求:
(4) 体系结构设计:
(5) 构件定制与适配:
(6) 组装构件,创建系统。

种CBSE 过程与传统的软件开发过程存在几点不同。
( 1) CBSE 早期需要完整的荷求,以便尽可能多地识别出可复用的构件.而增量式开发中,早期并不需要完整的需求。
( 2) 在过程早期阶段根据可利用的构件来细化和修改前求。如果可利用的构件不能满足用户需求,就应该考虑由复用构件支持的相关需求。通过劝说用户修改刮求,以便能节省开支且快速开发系统。
(3)在系统体系结构设计完成后,会有一个进一步的对构件搜索及设计精化的活动。可能需要为某些构件叶找备用构件,或者修改构件以适合功能和架构的要求。
( 4 ) 开发就是将已经找到的构件集成在一起的组装过程。其中包扣将构件与构件模型基础设施集成在一起,有时还需要开发适配器来协调不医配的构件接口, nJ能连日;要开发额外的功能。

构件组装

构件组装是指构件相五直接集戚或是用专门编写的"胶水代码"将它们整合在一起来创造一个系统或另·个构件的过程.

常见的组装构件有以下3 种组装方式。

  1. 顺序组装
    通过按顺序调用已经存在的构件,可以用两个已经存在的构件米创造一个新的构件。
  2. 层次组装
  3. 叠加组装

构建一般会出现3 种不兼容恼’况。
(1) 参数不兼容。接口每一侧的操作有相同的名字,但参数类型或参数个数不相同。
(2) 操作不兼容。提供接口和请求接口的操作名不同。
(3)操作不完备。一个构件的提供接口是另一个构件请求接口的一个子集,或者相反。

针对上述不兼容情况,必须通过编写适自己器构件来解决不兼容的问题, 适配器构件使两个可复用构件的接口相一致; 适配器构件将一个接口转换为另外一个接口。
当用户选择组装方式时,必须考虑系统所需要的功能性面求、非功能性需求,以及当系统发生改变时, 一个构件能被另一个构件替代的难易程度。

软件项目管理

项目管理概述

软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成, 而对人员(People) 、产品( Product) 、过程( Process) 和项目( Pr句ect ) 进行分析和管理的活动。

软件进度管理

进度管理指的是为了确保项目按期完成所需要的管理过程。

在软件进度管理过程中, 一般包括: 活动定义、活动排序、活动资源估计、活动历时估计、制定进度计划和进度控制。

工作分解结构(Work Breakdown Structure, WB S)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值