软件设计与体系结构.docx
- 文档编号:27651702
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:9
- 大小:179.16KB
软件设计与体系结构.docx
《软件设计与体系结构.docx》由会员分享,可在线阅读,更多相关《软件设计与体系结构.docx(9页珍藏版)》请在冰豆网上搜索。
软件设计与体系结构
软件设计与体系结构
数据结构
数据结构指的是数据之间的相互关系,即数据的组织形式。
数据结构是计算机存储、组织数据的方式。
数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。
通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。
数据结构往往同高效的检索算法和索引技术有关。
我们把数据结构设计、数据库设计、甚至数据文件设计等统一称为数据模型设计。
在数据模型设计中有一个重要概念:
持久数据操作,它包括写入、查询、更新和删除四类基本操作以及由它们复合而成的业务数据操作。
在很多软件系统中,数据是其核心,因此,对数据元素的格式、结构、访存、表示等机制进行良好建模和优化,是提高软件设计质量和系统性能的基础,对软件系统的应用具有重要意义。
面向组件设计
面向组件思想是在软件规模扩大,复杂度上升的背景下,以面向对象为基础而提出的一种软件设计思想。
可以把它理解为一种更粗粒度的面向对象,其粒度一般大于对象,但具体要到什么程度,又可以根据实际情况来决定。
这种思想以组件为基础,强调“服务”的概念。
在面向组件开发中,应用程序是由一系列可以互相交互的二进制模块组合而成的。
一个具体的二进制组件可能并不能完成什么工作。
有些组件是为了提供一些常规服务而编写的,例如通信的封装或者文件访问组件。
也有一些是为了某些特定应用而专门开发的。
一个应用程序的设计者可以通过把这些不同的组件提供的功能粘合在一起来实现他们需要的商业逻辑。
很多面向组件的技术——例如:
COM、J2EE、CORBA和.NET都为二进制组件提供了的无缝链接的机制。
而唯一的不同就是你需要在组件通信上花费的力气。
一般的多用于对dll,lib的处理上。
简单说,就是QQ、迅雷和IE捆绑起来就叫面向组件。
面向组件具有以下特点:
低耦合性,高重用性,高互操作性,进程的透明性,语言和开发环境的独立性
软件体系结构风格
软件体系结构风格是软件设计人员在长期的软件设计过程中总结出来的一些规律性的东西,经过提炼总结而成。
软件体系结构风格是软件体系结构设计上的模式,因此可以看作是一种广义的软件设计模式,但一般不认为是侠义的软件设计模式。
定义:
在构件和连接子的层次描述的可重复使用的软件设计问题解决方案。
管道/过滤器风格:
一个显著特征是:
系统中构件之间通过数据流松散耦合。
也就是说,构件之间的依赖仅仅是数据流,而不是通常的接口函数调用火消息传递。
编译器采用的也是管道/过滤器风格
层次风格:
这种设计风格便于将复杂的系统进行分解;同时也便于构件替换:
只要保持接口一致,就可以将某一层的软件替换,而不会影响到系统的其它部分。
层次风格的优点是结构清晰、可替换性好、便于控制复杂性;但也有缺点,如效率低。
客户/服务器风格:
从向外提供服务的构件出发,沿着连接关系递次搜索各构件和连接子,如果形成的拓扑结构是一棵倒置的树,那么这个系统的体系结构就是客户/服务器风格的,这种风格使得服务功能的实现很集中,便于系统实现,因而得到广泛使用。
软件开发过程模型
软件生存周期包含了软件从概念形成到最终退役的所有活动,而对于一个具有的软件项目,开发人员更加关注的是开发过程中包含的活动以及其具体安排。
软件开发是一个复杂的过程,尤其是在多数项目开发中,不能一次就全部、精确地生成需求规格说明,因此软件开发各个阶段之间的关系极少是严格线性顺序的,相反应该是带有反馈的迭代过程。
这种对软件开发中对所含活动的安排方式,可以用软件开发过程模型表示。
它给出了软件开发中各个活动之间的关系,它是软件开发过程的概括,是软件工程的重要内容。
它能为软件工程管理提供里程碑和进度表,为软件开发过程提供原则和方法。
经典的软件开发模型大体可分为三种类型:
第一种是以软件需求完全确定为前提的瀑布模型;第二种是在软件开发初始阶段只能提供基本需求时采用的渐进式开发模型,如原型模型、螺旋模型等;第三种是以形式化开发方法为基础的变换模型。
软件体系结构与算法结构区别与联系
软件体系结构是软件系统的结构,包含软件元素、软件元素外部可见的属性以及这些软件元素之间的关系。
软件体系结构是软件系统的基本组织,包含构件、构件之间、构件与环境之间的关系,以及相关的设计与演化原则。
软件体系结构的风格(style)描述某一特定领域中系统组织方式的惯用模式,反映了领域中众多系统所共有的结构和语义特性。
算法结构的三种结构
顺序结构:
按从上到下的顺序进行。
选择结构:
先根据条件作出判断,再决定执行哪一种操作,必须包含判断框。
循环结构:
从某处开始,按照一定条件,反复执行某一处理步骤,有两类:
直到和当型循环结构。
软件开发过程模型与软件文档模型区别与联系
的可理解性
“抽象”是一个心理学概念,它要求人们将注意力集中在某一层次上考虑问题,而忽略那些低层次的细节。
“逐步求精”可视为一种早期的自顶向下设计策略,其主要思想是,针对某个功能的宏观描述用逐步求精的方法不断地分解,逐步确立过程细节,直至该功能用程序语言描述的算法实现为止。
在软件设计过程中,抽象与逐步求精是一般都是结合起来进行应用。
列举抽象实例
假如我们开发一个系统时需要对员工进行建模,员工包含3个属性:
姓名、工号以及工资。
经理也是员工,除了含有员工的属性外,另外还有一个员工的属性。
请使用继承的思想设计出员工类和经理类。
要求类中提供必要的方法进行属性访问。
员工类:
nameidpay
经理类:
继承了员工,并有自己特有的bonus.
abstractclassEmployee
{
privateStringname;
privateStringid;
privatedoublepay;
Employee(Stringname,Stringid,doublepay)
{
this.name=name;
this.id=id;
this.pay=pay;
}
publicabstractvoidwork();
}
classManagerextendsEmployee
{
privatedoublebonus;
Manager(Stringname,Stringid,doublepay,doublebonus)
{
super(name,id,pay);//注意这里调用父类的构造函数;
this.bonus=bonus;
}
publicvoidwork()
{
System.out.println("managerwork");
}
}
classemploextendsEmployee
{
emplo(Stringname,Stringid,doublepay)
{
super(name,id,pay);
}
publicvoidwork()
{
System.out.println("employwork");
}
}
classAbDemo
{
publicstaticvoidmain(String[]args)
{
Managermanager=newManager("zhang","JL01",5000,10000);
manager.work();
}
}
内聚与耦合
内聚是前述信息隐藏和局部化概念的自然扩展,它标志一个模块内部各成分彼此结合的紧密程度。
耦合是对软件结构中模块间关联程度的一种度量。
耦合的强弱取决于模块间接口的复杂性、进入或调用模块的位置以及通过接口传送数据的多少等。
追求高内聚、低耦合。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件设计 体系结构