软件设计与体系结构-概论

目录

软件过程和工程实践

软件过程(Software Process)

软件过程的目标:

通用的软件工程过程框架(5个活动) 

 软件工程的实践如何融入该过程框架?

10个重要软件工程思想: 

**7条简单的原则(程序员都应遵守的原则) 重点

软件工程关注域 

网络对软件的影响:现代软件生态环境 

网络对软件的影响:传统vs互联网时代的软件工程 

软件设计 

软件从分析到设计 

设计过程和设计质量 

质量指导原则 

质量属性:体现软件的设计目标 

软件设计的基本原则 

软件体系结构 

软件体系结构(定义) 

软件体系结构发展历程 

软件体系结构的内容(3个方面) 

内容1:4个研究领域 

内容2:设计模式和应用框架 

内容3:创建软件体系结构的关注点 

设计阶段的体系结构 

体系结构设计方法 

软件体系结构设计方法分为3类 


 

软件过程和工程实践

软件过程(Software Process

是工作产品构建时所执行的一系列活动、动作、任务的集合。

 

活动主要实现宽泛的目标(如与利益相关者进行沟通),与应用领域、项目大小、结果复杂性、实施软件工程的重要程度,没有直接关系。

动作(如体系结构设计)包含了主要工作产品(如体系结构设计模型)生产过程中的一系列任务。如:需求分析、设计与建模、系统测试等。

任务,则关注小而明确的目标,能够产生实际产品。如:需求收集、收集整理等

软件过程的目标:

通常是及时、高质量地交付软件,以满足软件项目资助方和最终用户的需求。 

 

通用的软件工程过程框架(5个活动 

 

 软件工程的实践如何融入该过程框架?

10个重要软件工程思想: 

 

**7条简单的原则(程序员都应遵守的原则) 重点

 

软件工程关注域 

软件工程关注域转向需求

原因:网络对软件的影响

 软件工程始终没有一个确切的指向,从面向过程、面向对象,到面向构件、面向领域,科学家们对软件工程的关注域,总是与时俱进

 

网络对软件的影响:现代软件生态环境 

现代软件的“生态环境”:是网络为广大用户提供一个均等的、虚拟的、丰富的计算机应用平台、信息服务平台、软件资源下载平台、软件维护平台,无论是软件开发商,还是系统用户,越来越把软件视作网络环境中的软件 

 对于网络环境下工作的用户,端机上的资源量(计算资源、存储资源、软件资源、信息资源,等等)和网络上的资源量相比,都变得微不足道

软件的开发、应用,越来越面向日益丰富的网络资源,软件正从面向图灵计算模式转向面向网络计算模式。

这是一个划时代的转变,人们开始推崇“软件即服务”的思想,定义:

 

网络对软件的影响:传统vs互联网时代的软件工程 

 

软件设计 

设计是一种“图样、模式或规划”,其目标,就是要描述一个产品如何被制造出来。 

软件设计可以被看作是“对软件将如何开发出来的一种描述”

在编码前,先对软件结构进行良好的设计,已成为软件开发中非常重要的环节。

随着软件工程思想的出现,以及结构化软件开发、面向对象软件开发、基于构件的软件开发等方法的发展,软件设计越来越受到重视,并形成各种系统化的设计过程和技术。

软件从分析到设计 

对软件需求进行分析和建模后,软件设计是建模活动的最后一个软件工程活动,分析模型到设计模型的转换为: 

 

设计过程和设计质量 

设计是一个迭代过程,需要将需求转化成软件的“蓝图” 

 

质量指导原则 

 

质量属性:体现软件的设计目标 

 

软件设计的基本原则 

 1)抽象方法抽象(Abstraction)是人类处理复杂问题的基本方法之一

过程抽象:指具有明确和有限功能的指令序列。过程抽象的命名,暗示了功能,但是隐藏了具体细节。如过程“开”门,就隐含了一长串的过程性步骤,如走到门前、伸手抓住门上把手、转把手并拉门、离开打开的门,等等。

数据抽象:是描述数据对象的冠名数据集合。在过程抽象“开”的情形下,可以定义一个叫“门”的数据抽象。同任何数据对象一样,门的数据抽象,将包含一组描述门的属性,如门的类型、转动方向、开门机构、重量、尺寸。

(2)体系结构 体系结构(Architecture是程序构件(模块)的结构或组织。如逻辑架构、物理架构、技术架构、组件设计、接口设计、集成设计、可靠性|可为维护性等。

 更多情况下,构件可被推广,用于代表主要的系统元素及交互。

软件设计的目标之一,是导出系统的体系结构透视图,透视图作为框架,将指导更详细的设计活动。 

一系列的体系结构模式,使得软件工程师能够复用设计级的概念。 

(3)设计模式 

 

(4)模块划分 :模块化(Modularity)是指解决一个复杂问题时,自顶向下逐层把系统划分成若干模块的过程,有多种属性分别反映其内部特性。

模块化是一种处理复杂系统分解为更好的可管理模块的方式。模块化用来分割,组织、打包软件。每个模块完成一个特定的子功能,然后,所有模块按某种方法组装起来,成为一个整体,完成整个系统所要求的功能。 

 

 “分而治之(Divide and Conquer)”策略,将一个复杂问题分解成可以管理的若干块,能够更好地解决问题。

模块化和软件成本 

 

(5)信息隐蔽 :信息隐蔽(Information Hiding)原则表明,模块具备的特征,是对其它所有模块都隐蔽自己的设计策略。 

隐蔽,意味着定义一系列独立的模块,可以得到有效的模块化,独立模块相互之间只交流实现软件功能所必须的那些信息。 

抽象有助于定义构成软件的过程(或信息)实体。隐蔽定义并加强了,模块内的过程细节和模块所使用的任何局部数据结构的访问约束。 

(6)功能独立 

 

(7)逐步求精 

 

(8)重构软件 

 

(9)类的设计 

 

软件体系结构 

 

软件体系结构(定义) 

CMU(卡内基梅隆大学)的软件工程研究所在网站上公开征集软件体系结构的定义,至今已有百余种。其中,较有影响力的定义包括: 

软件系统的结构,包含软件元素、软件元素外部可见的属性,以及这些软件元素之间的关系;

软件系统的基本组织,包含构件、构件之间、构件与环境之间的关系,以及相关的设计与进化原则等。

设计体系结构的关键人:架构师

 

软件体系结构发展历程 

1)早期阶段(1940年代-1960年代):这个阶段主要关注大规模计算机系统的设计和开发,如ENIAC、EDVAC等。这些计算机系统通常采用硬连线方式实现

2)软件危机阶段(1960年代-1970年代):为了解决软件危机,人们开始采用结构化的方法和模块化的设计思想,如结构化编程和模块化设计。

3)面向对象阶段(1980年代-1990年代):面向对象的编程方法引入了类、对象和继承等概念,使得软件设计更加模块化和可复用。常见的面向对象软件体系结构模式有MVC(Model-View-Controller)和分层架构。

4)组件化阶段(1990年代-2000年代):组件化的思想出现后,软件系统可以通过组件和接口的方式进行组装。常见的组件化软件体系结构包括客户端/服务器架构和面向服务的架构(SOA)。

5)分布式阶段(1990年代-2000年代):随着互联网的发展,分布式计算变得日益重要。分布式软件体系结构允许将系统的各个部分分布在不同的计算机上,并通过网络进行通信和协作。

6)服务化阶段(2000年代至今):服务化是将软件系统划分为一系列相互协作的服务,每个服务对外提供标准化的接口。常见的服务化架构是微服务架构,它将系统划分为小型、独立的服务单元。

软件体系结构的内容(3个方面 

内容14个研究领域 

通过提供一种新的体系结构描述语言(Architectural Description Language,ADL)解决体系结构描述问题。

体系结构领域知识的总结性研究。这一领域关心的,是工程师通过软件实践,总结各种体系结构原则和模式的分类和阐释。

针对特定领域的框架的研究。这类研究产生了针对一类特殊软件的体系结构框架,比如,航空电子控制系统、移动机器人、用户界面。

软件体系结构形式化支持的研究。随着新的符号的产生,以及人们对体系结构设计实践的理解逐步深入,需要用一种严格的形式化方法刻画软件体系结构及其相关性质。

内容2:设计模式和应用框架 

 

内容3创建软件体系结构的关注点 

 

设计阶段的体系结构 

 

体系结构设计方法 

 软件体系结构的设计方法,指通过一系列的设计活动,获得满足系统功能性需求Functional RequirementFR),并且符合一定非功能性需求Non-Functional RequirementNFR约束的软件体系结构模型

软件体系结构设计方法分为3 

 

 

 

 

<think>好的,用户想了解HS400模式下200MHz的配置或相关信息。首先,我需要回忆HS400是什么,它属于eMMC规范中的高速接口模式。HS400代表High Speed SDR 400,支持双倍数据率(DDR),最高时钟频率200MHz,每个时钟周期传输两次数据,所以理论速度达到400MB/s。 接下来,配置HS400的步骤可能包括硬件和软件两方面。硬件上,设备必须支持HS400模式,PCB布线要符合信号完整性要求,比如走线长度匹配、阻抗控制。电源稳定性也很重要,因为高速信号对噪声敏感。 软件配置方面,首先需要初始化eMMC设备,设置总线宽度为8位,切换到HS200模式进行校准,再切换到HS400。可能需要调整驱动强度和采样点,确保信号质量。设备树(Device Tree)的配置是否正确,比如是否启用了HS400相关属性,也是关键。 还要考虑用户提到的引用内容,比如引用[4]中的存储测试工具,可能用memtester和fio来验证配置后的性能。此外,调试方法如示波器检查信号质量,以及查看内核日志确认模式切换是否成功,都是必要的步骤。 用户可能遇到的问题包括模式切换失败、数据错误或系统不稳定,需要逐一排查硬件设计、驱动配置和电源问题。最后,确保引用的相关信息正确,比如引用[4]中的测试工具是否适用于HS400的验证,可能需要补充说明。</think>### HS400 200MHz 模式配置信息 HS400(High Speed SDR 400)是eMMC 5.1及更高版本中定义的高速接口模式,通过200MHz时钟频率和双倍数据率(DDR)实现更高的传输速率。以下是相关配置信息: #### 1. **硬件要求** - **设备支持**:存储设备(如eMMC芯片)需支持HS400模式[^4]。 - **信号完整性**:200MHz高频信号对PCB布线要求严格,需确保走线长度匹配、阻抗控制(通常50Ω差分阻抗)及减少串扰。 - **电源稳定性**:需提供稳定的1.8V或3.3V电源,噪声需控制在±5%以内。 #### 2. **软件配置步骤** 1. **初始化模式切换**: - 从默认模式切换至HS200模式,完成信号校准。 - 通过CMD6命令切换至HS400模式,并启用8位总线宽度。 ```c // 示例:eMMC模式切换命令(Linux内核驱动参考) mmc_switch(card, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_HS_TIMING, HS400_TIMING); ``` 2. **驱动强度调整**:通过设备树(Device Tree)配置驱动强度采样点: ```dts &mmc { bus-width = <8>; mmc-hs400-1_8v; hs400-ds = "strength_high"; // 驱动强度 hs400-reduced-tx = <0>; // 采样点调整 }; ``` 3. **时钟配置**:确保主机控制器支持200MHz时钟输出,并配置PLL参数。 #### 3. **调试验证** - **信号质量测试**:使用示波器检查CLKDATA信号的眼图,确保建立/保持时间符合要求。 - **性能测试**:通过`fio`工具验证读写速度(引用[4]中提到的存储测试方法): ```bash fio --name=hs400_test --rw=randrw --bs=128k --direct=1 --ioengine=libaio --runtime=60 --numjobs=4 --group_reporting --filename=/dev/mmcblk0 ``` - **内核日志检查**:通过`dmesg`查看eMMC模式切换是否成功: ``` mmc0: new HS400 MMC card at address 0001 ``` #### 4. **常见问题优化** - **模式切换失败**:检查设备树配置或电压是否匹配。 - **数据错误**:优化PCB走线或调整驱动强度。 - **性能瓶颈**:启用命令队列(CQHCI)或优化DMA配置[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

像污秽一样

谢谢谢谢谢谢谢谢谢谢谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值