面向对象技术与Java程序课件_第1页
面向对象技术与Java程序课件_第2页
面向对象技术与Java程序课件_第3页
面向对象技术与Java程序课件_第4页
面向对象技术与Java程序课件_第5页
已阅读5页,还剩100页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向对象技术与Java程序课件面向对象技术与Java程序课件软件设计概述设计模式介绍体系结构设计数据库设计模块设计用户界面设计第五讲 软件系统设计东北大学信息科学与工程学院系统工程研究所 胡清河 软件设计概述设计模式介绍体系结构设计数据库设计模块设计用户界1.1 软件设计的任务软件设计是一个把软件需求变换成软件表示的过程。采用“分而治之”的方法进行系统设计,最初要描绘出软件的总体框架,然后进一步细化,在此框架上填入细节,加工成在程序细节上非常接近于源程序的软件表示。设计的系统能够被开发方顺利地实现,并且恰如其分地满足用户的需求,使开发方和用户的利益极大化。开发人员万万不能为了追求技术的先进性,

2、却偏离需求开展系统设计工作。1. 软件设计概述 东北大学信息科学与工程学院系统工程研究所 胡清河 1.1 软件设计的任务1. 软件设计概述 东北大学信息科学与1.2 软件设计的过程 软件设计过程就是将软件需求转化为数据结构和软件系统结构的过程。1. 软件设计概述 东北大学信息科学与工程学院系统工程研究所 胡清河 1.2 软件设计的过程 1. 软件设计概述 东北大学信息科学2.1 何为“模式”所谓模式,就是得到很好研究的范例。模式理论的基本思想其实起源于中国,是中国文化的固有思想。在孙子兵法中,充斥着各种模式。孙子说,“至于死地而后生”,就是战争模式。三十六计,条条都是模式。这些模式中的每一个都

3、具有典型意义,具有学习价值。通过研究这些模式,学习者可以相互交流,可以在自己的实践中举一反三,推陈出新,加以应用。建筑设计大师 Christopher Alixander,1977:“模式描述了在我们周围不断重复发生的问题,以及该问题解决方案的核心,这样你就能一次又一次地使用该解决方案而不必重复劳动”。 2. 设计模式 东北大学信息科学与工程学院系统工程研究所 胡清河 2.1 何为“模式”2. 设计模式 东北大学信息科学与工程学2.1 何为“模式”台湾作家蔡学庸先生对“设计模式好还是不好”作了通俗而精辟的解释:模式就是一种公式化的表现,究竟公式化是不是好事?以艺术来说,公式化的结果会造成僵化,

4、所以负面效果居多。电影号称“第八艺术”,拍电影是一种艺术创作,所以电影里最好不要出现太多的公式,否则肯定被影评人痛批为“毫无新意”。对工程而言,公式化是好事。公式都是千锤百炼的成果,运用这些公式可以确保工程具备一定的质量,并且能加快工程的进展。软件开发也是一项工程,所以需要尽量地运用公式。尽管软件技术发展非常快,但是仍然有非常多的设计模式可以让我们套用。2. 设计模式 东北大学信息科学与工程学院系统工程研究所 胡清河 2.1 何为“模式”2. 设计模式 东北大学信息科学与工程学2.2 何为设计模式” 设计模式(Design pattern)是对应用域问题及其解决方案进行抽象和分析,发现本质,并

5、按照一定的格式记录下来,能被反复使用的设计范例。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。内行的设计者知道,解决任何问题并不一定都要从零开始做起,他们更愿意复用以前使用过的解决方案。当找到一个好的解决方案时,他们会一遍又一遍地使用。这些模式能解决对应的设计问题,使设计更加灵活和优雅。熟悉这些模式的人们不必重新发明它们,能够立即将它们应用于设计之中。一旦懂得了设计模式,许多设计方案自然而然就产生了。2. 设计模式 东北大学信息科学与工程学院系统工程研究所 胡清河 2.2 何为设计模式” 2. 设计模式 东北大学信息科学与工2.2 何为 “设计模式”利用成熟的方案提高设

6、计和建造效率,以确保建筑质量,这是从事建筑行业的人千百年来的梦想,许多有识之士很早就开始在建筑实践中探索这一思路的可行性和有效性了。从中世纪欧洲的建筑师对教堂建筑风格的总结、模仿和复制,到20世纪上半叶中国建筑大师梁思成对中国古建筑“营造法式”的寻访和归纳,古往今来的建筑师们一直都在勉力追求着建筑学中的“永恒之道”。但直到亚历山大耗费14年心血写就建筑的永恒之道一书之后,有关模式的理论和方法才真正上升到了科学的层面,建筑学的“永恒之道”才第一次离建筑师如此之近。 2. 设计模式 东北大学信息科学与工程学院系统工程研究所 胡清河 2.2 何为 “设计模式”2. 设计模式 东北大学信息科学与2.2

7、 何为 “设计模式”1995年,Erich Gamma,Richard Helm,Ralph Johnson,John Vlissides出版了Design Patterns:Elements of Reusable ObjectOriented Software,该书的中译本已于2000年出版。Design Patterns这本书的主要贡献是:确立了设计模式这个术语,创导了一种新的面向对象设计思潮。该书出版后,全世界参与设计模式研究的人数呈爆炸性地增长。该书的负面效应是:这本书深奥无比,读者被分成两类;即看得懂设计模式的和看不懂设计模式的,后者居多。很多人刚入门时就被吓住了,知难而退。2.

8、设计模式 东北大学信息科学与工程学院系统工程研究所 胡清河 2.2 何为 “设计模式”2. 设计模式 东北大学信息科学与2.3 常见的体系结构模式 pipes and Filters(管道与过滤器)Data Abstraction and objectOriented organizationEvent-Based/Implicit InvocationLayered Systems(层次结构系统)Repositories(仓库)Interpreters(解释器)Process Control(过程控制)Distributed Systems(分布式系统)。Client/server(客户机/

9、服务器)Main/sub Programs(主程序/子程序)State Transition(状态转换)Domain Specific Styles(领域专用模式)2. 设计模式 东北大学信息科学与工程学院系统工程研究所 胡清河 2.3 常见的体系结构模式 2. 设计模式 东北大学信息科学2.4 常见的界面模式 主窗口/子窗口/对话框下拉菜单弹出菜单工具条图标按钮基本控件如命令按钮、输入框、选择框、列表框等2. 设计模式 东北大学信息科学与工程学院系统工程研究所 胡清河 2.4 常见的界面模式 2. 设计模式 东北大学信息科学与工2.5 常见的接口设计模式 构造型模式:Abstract Fac

10、tory(抽象工厂)、Builder(建造器)、Factory Method(工厂方法)、Prototype(原型)、Singleton(单例)。结构性模式:Adapter(适配器)、Bridge(桥梁)、Composite(合成)、Decorator(装饰)、Facade(外观)、Flyweight(享元)、Proxy(代理)行为型模式:Chain of Responsibility(责任链)、Command(命令)、Interpreter(解释器)、Iterator(迭代器)、Mediator(协调器)、Memento(备忘录)、Observer(观察者)、State(状态)、Strate

11、gy(策略)、Template Method(模板方法)、Visitor(访问者)2. 设计模式 东北大学信息科学与工程学院系统工程研究所 胡清河 2.5 常见的接口设计模式 2. 设计模式 东北大学信息科学2.6 核心设计法则(1)开放-封闭法则 应该试图去设计出永远也不需要改变的模块,可以添加新代码来扩展系统的行为,不能对已有的代码进行修改。符合该法则的模块需满足两个标准:可扩展,即“对扩展是开放的” 模块的行为可以被扩展,以需要满足新的需求。不可更改,即“对更改是封闭的” 模块的源代码是不允许进行改动的。一个软件系统的所有模块不可能都满足该法则 ,但是应努力最小化这些不满足法则的模块数量

12、。开放封闭法则是OO设计的真正核心。符合该法则便意味着最高等级的复用性和可维护性。2. 设计模式 东北大学信息科学与工程学院系统工程研究所 胡清河 2.6 核心设计法则2. 设计模式 东北大学信息科学与工程学2.6 核心设计法则(2)适应需要法则设计模式最根本的意图是适应需求变化,我们应只对变化或可能变化的部分使用设计模式。使用设计模式的关键是预测未来可能发生的需求变化,并在设计过程中选用合适的设计模式。易变性就是软件的一个内在特征。比如,当某个业主想在外墙增加几个窗户时,建筑公司只要对业主说“这个位置一旦开出窗户,房子的承重结构就会被破坏,随时都有坍塌的危险”,业主就会知难而退了;但当一个行

13、业软件的客户请求软件公司在软件中增加新功能时,如果程序员对客户说“一旦增加这些功能,原来的软件结构就会被破坏”,客户就会立即提高嗓门说:“破坏就破坏呗,大不了你们重新开发一套。我买的是软件,图的就是这玩意儿可以随时修改,要不然我干脆买硬件得了!2. 设计模式 东北大学信息科学与工程学院系统工程研究所 胡清河 2.6 核心设计法则2. 设计模式 东北大学信息科学与工程学2.6 核心设计法则(2)适应需要法则“需求分析”中一个重要的法则是“只实现你真正需要的东西”,该法则和这里所说的预测需求变化似乎是完全对立的两个极端。其实,这两个说法并不矛盾。在实践中,我们应首先考虑“只实现你真正需要的东西”这

14、一法则,并在该法则的指导下适度使用设计模式。由于设计模式最根本的意图是适应需求变化,需要将设计模式的应用范围限制在系统中那些明显不稳定、极可能发生变化的部分,而不应只为了体验创造的乐趣,把设计模式用在那些永远也不会发生变化的组件中。使用设计模式并不是没有代价的,毫无根据地预测需求变化、滥用设计模式的结果只能是“过度设计”以及由此得到的过于复杂而难于维护的系统实现。因此,设计者在使用一个设计模式之前,最好问自己一句:“为什么使用这个设计模式?是为了适应哪一种需求变化?”2. 设计模式 东北大学信息科学与工程学院系统工程研究所 胡清河 2.6 核心设计法则2. 设计模式 东北大学信息科学与工程学2

15、.6 核心设计法则(3)针对接口编程法则尽量针对接口编程,而不要针对实现编程。针对接口编程的组件不需要知道对象的具体类型和实现,只需要知道抽象类定义了哪些接口,这减少了实现上的依赖关系。Client不必知道其使用对象的具体所属类;一个对象可以很容易地被实现了相同接口的另一个对象所替换;对象间的连接不必硬绑定到一个具体类的对象上,因此增加了灵活性;松散藕合;增加了重用的可能性;提高了(对象)组合的机率,因为被包含对象可以是任何实现了一个指定接口的类;2. 设计模式 东北大学信息科学与工程学院系统工程研究所 胡清河 2.6 核心设计法则2. 设计模式 东北大学信息科学与工程学2.6 核心设计法则(

16、4)组合优先法则 在不违反继承和组合的基本结构前提下,应该优先使用组合而不是继承。继承破坏了封装性,因为这会将父类的实现细节暴露给子类;“白盒”复用,因为父类的内部细节对于子类而言通常是可见的;当父类的实现更改时,子类也不得不会随之更改;从父类继承来的实现将不能在运行期间进行改变;仅当下列的所有标准被满足时方可使用继承:子类表达了“是一个的特殊类型”,而非“是一个由所扮演的角色”;子类的一个实例永远不需要转化为其它类的一个对象;子类是对其父类的职责进行扩展,而非重写或废除;子类没有对那些仅作为一个工具类的功能进行扩展;2. 设计模式 东北大学信息科学与工程学院系统工程研究所 胡清河 2.6 核

17、心设计法则2. 设计模式 东北大学信息科学与工程学2.7 设计法则应用实例例子是一个建造现代化养猪场的故事:一个机器人研发小组研制了一种能自动喂猪的机器人,于是就有人投资兴建了一座由机器人管理的养猪场。为了提高效率和节省成本,投资者要求技术人员将该养猪场建造成一个“面向对象”的养猪场。养猪场要饲养的猪的品种可能有三种:大白猪长白猪波中猪。2. 设计模式 东北大学信息科学与工程学院系统工程研究所 胡清河 2.7 设计法则应用实例2. 设计模式 东北大学信息科学与工2.7 设计法则应用实例最初设计的养猪场并没有预测变化和适应变化,只考虑了饲养大白猪的情况。一个喂猪机器人管理了若干头大白猪。由于猪天

18、性懒惰,机器人必须把饲料放到猪的嘴边,然后吆喝一句,猪才会进食。所以,喂猪机器人的工作就是把饲料准备好,拿到每一头猪的面前,大叫一声:“大白猪,吃!”2. 设计模式 东北大学信息科学与工程学院系统工程研究所 胡清河 2.7 设计法则应用实例2. 设计模式 东北大学信息科学与工2.7 设计法则应用实例这座养猪场建好后,运行状况相当不错,每一头大白猪都膘肥体壮,如果不是该企业要不断地追求剩余价值,我们的故事也许就到此结束了。随着养猪场的蓬勃发展,养猪场老板决定要进军国际市场。可是,不同地方的人喜欢吃不同品种的猪。为了适应这一需求变化,养猪场新引进了几头长白猪,希望进一步扩大养猪场的规模。问题出现了

19、:喂猪机器人照例是把饲料准备好,拿到每一头猪的面前,大叫一声:“大白猪,吃!”大白猪像往常一样愉快地进食。但轮到长白猪的时候,长白猪无动于衷。这可急坏了养猪场的老板。为了解决问题,喂猪机器人的研发团队紧急出动,当晚便改好了喂长白猪的代码, 2. 设计模式 东北大学信息科学与工程学院系统工程研究所 胡清河 2.7 设计法则应用实例2. 设计模式 东北大学信息科学与工2.7 设计法则应用实例经过了此次代码修改,喂猪机器人在对待每一头猪时,都会先辨认出这头猪的类型,如果这是一头大白猪,它就会大叫一声:“大白猪,吃!”如果这是一头长白猪,它就会大叫一声:“长白猪,吃!”。经过这一改动,养猪场又恢复了平

20、静。2. 设计模式 东北大学信息科学与工程学院系统工程研究所 胡清河 2.7 设计法则应用实例2. 设计模式 东北大学信息科学与工2.7 设计法则应用实例可刚过了几天,类似的问题又再次出现,养猪场引进了几头波中猪!这下,机器人又不知该如何喂养了。和上一次变化时相仿,研发团队又准备大动干戈、修改代码了。老板对研发团队的做法非常不理解:“你们太不像话了,我是付了钱的,可每次我要扩大再生产的时候,你们都要耽误好几天的时间,重新修改代码,如果下次我又要养鸡、养青蛙了呢?” 2. 设计模式 东北大学信息科学与工程学院系统工程研究所 胡清河 2.7 设计法则应用实例2. 设计模式 东北大学信息科学与工2.

21、7 设计法则应用实例在这个现代化养猪场出现的问题其实就是需求变化的问题。设计模式可以使系统很容易地在某一特定层面适应需求变化。例如,在面向对象的养猪场系统中,当我们没有确定养猪场是否需要适应不同种类的猪时,完全可以只实现对大白猪的管理操作。但设计人员也必须对需求的变化保持足够的敏感,当养猪场需要引进长白猪时,我们就应立即认识到猪的种类是一个易变的因素。这时,必须引入一些设计手段以适应类似的需求变化。 2. 设计模式 东北大学信息科学与工程学院系统工程研究所 胡清河 2.7 设计法则应用实例2. 设计模式 东北大学信息科学与工2.7 设计法则应用实例首先,我们应该添加一个猪的抽象接口,该接口中定

22、义了所有猪共有的行为,而大白猪和长白猪则具体实现这些行为。然后,我们修改喂猪机器人的代码,使其不考虑猪的类型,只应用抽象的猪的接口来操作所有猪的对象实例。2. 设计模式 东北大学信息科学与工程学院系统工程研究所 胡清河 2.7 设计法则应用实例2. 设计模式 东北大学信息科学与工2.7 设计法则应用实例这个改进的养猪场会为我们带来什么好处呢?假设现在养猪场的老板需要引进波中猪,他只要买来几头波中猪的仔猪,扔进养猪场就可以了。喂猪机器人的代码不需要发生任何变化,它面对每一头猪只要说:“猪,吃!”所有类型的猪都可以愉快地进食。不管养猪场饲养的猪有多少种,喂猪机器人都会把猪喂得膘肥体壮。2. 设计模

23、式 东北大学信息科学与工程学院系统工程研究所 胡清河 2.7 设计法则应用实例2. 设计模式 东北大学信息科学与工2.7 设计法则应用实例可以看到,喂猪机器人完全是针对接口进行编程的,当系统添加一个新的类型时,只需要添加新类型的代码,而系统中原有的代码不需要做任何的改变就可以适应新的需求这完全符合开闭法则。养猪场的老板还曾经提到过养鸡和养青蛙。对此,我们必须明确该需求是否是合理的需求,系统是否需要适应这一需求变化。一般说来,养猪场是不会养鸡、养青蛙的,我们没必要为此多费心思。但如果老板故意刁难的,我们也不是没有解决方案:适应这一需求变化的方法是提取出一个更一般的“动物接口”,机器人完全使用“动

24、物接口”类来操作所有的对象。2. 设计模式 东北大学信息科学与工程学院系统工程研究所 胡清河 2.7 设计法则应用实例2. 设计模式 东北大学信息科学与工2.7 设计法则应用实例现在,面向对象的现代化养猪场又欣欣向荣地发展起来了。但我们不能放松警惕,变化的需求随时都会出现。例如这一次,养猪场的老板突然觉得,老从外面引进仔猪太亏。他希望能在养猪场内部建造一个繁殖基地,自产自销。于是,我们建造了一个猪工厂。 2. 设计模式 东北大学信息科学与工程学院系统工程研究所 胡清河 2.7 设计法则应用实例2. 设计模式 东北大学信息科学与工2.7 设计法则应用实例不难发现,在实现猪工厂时,我们又陷入了针对

25、实现编程的陷阱。管理员使用猪工厂来选择繁殖哪种类型的仔猪,猪工厂根据管理员的要求执行不同的繁殖过程,繁殖不同类型的仔猪。对于系统中己有的大白猪和长白猪,这没有问题,但是当我们想繁殖波中猪时,问题又产生了,猪工厂的代码必须修改。显然,我们必须想办法来隔离有关对象创建的代码,以适应需求变化。设计模式中的创建型模式恰恰可以满足我们的需要。2. 设计模式 东北大学信息科学与工程学院系统工程研究所 胡清河 2.7 设计法则应用实例2. 设计模式 东北大学信息科学与工2.7 设计法则应用实例为了隔离具体的繁殖过程,我们可以定义一个猪工厂的抽象接口类,其派生类大白猪工厂和长白猪工厂具体地实现接口中的繁殖行为

26、。这样,和具体实现相关的代码被推迟到了具体的派生类工厂中去实现,我们在系统外只要用不同的派生类工厂调用繁殖方法,就可以繁殖出不同的仔猪了。2. 设计模式 东北大学信息科学与工程学院系统工程研究所 胡清河 2.7 设计法则应用实例2. 设计模式 东北大学信息科学与工2.7 设计法则应用实例这一改进为我们带来的好处是,当我们要添加一种猪的类型时,也相应地添加繁殖这仔猪的工厂,修改管理员繁殖仔猪的代码等,系统内原有的代码不需要改变。这时,猪工厂负责繁殖仔猪,然后把仔猪交给喂猪机器人,这些仔猪的生、老、病、死就完全由喂猪机器人来负责了。2. 设计模式 东北大学信息科学与工程学院系统工程研究所 胡清河

27、2.7 设计法则应用实例2. 设计模式 东北大学信息科学与工2.7 设计法则应用实例以前,老板雇用清洁工人来打扫猪舍。但有一天,老板忽然对自己说:“不对啊,既然我有机器人,为什么还要雇人来做这件事情?应该让机器人来打扫猪舍!”。于是,这个需求被提出来。这是一个潜藏了更多变化的需求,未来机器人的功能还可能会不断增加,于是,我们提取出了一个抽象的机器人接口,并实现了两个具体的机器人类喂猪机器人和清洁机器人。2. 设计模式 东北大学信息科学与工程学院系统工程研究所 胡清河 2.7 设计法则应用实例2. 设计模式 东北大学信息科学与工2.7 设计法则应用实例这样一来,老板希望机器人工作时,可以调用机器

28、人接口的“工作”方法。当老板需要新的机器人时,只要添加具体的机器人类即可,其他代码无需变化。但这里还存在另外一个问题:上图中的继承结构是在编译期间就确定了的,在运行不能发生任何变化。因此,如果养猪场需要一个喂猪和清洁机器人,那么必须在养猪场中放进这两个具体的机器人。如果未来养猪场还需要兽医机器、屠宰机器人等等,养猪场中不就挤满了机器人吗?2. 设计模式 东北大学信息科学与工程学院系统工程研究所 胡清河 2.7 设计法则应用实例2. 设计模式 东北大学信息科学与工2.7 设计法则应用实例把机器人接口改成功能接口,而清洁和喂猪功能实现了这个功能接口。机器人类中聚合了一个功能接口的引用,这样,我们只

29、需要在养猪场中放进一个机器人,该机器人中聚合了一个喂猪功能,这时它是一个喂猪机器人。当我们需要打扫养猪场时,老板只需要调用机器人中的“变形”方法,并传递一个“清洁功能”对象给机器人,机器人就变成了一个清洁机器人了。2. 设计模式 东北大学信息科学与工程学院系统工程研究所 胡清河 2.7 设计法则应用实例2. 设计模式 东北大学信息科学与工2.7 设计法则应用实例此后,当我们添加一个新的机器人种类(如兽医机器人)时,只需要添加一个兽医功能的派生类,老板就可以根据自己的需要,在任何时刻命令机器人在三个种类之间随意变形。可以看出,添加一个机器人类型时,需要改动的代码都在系统外部。系统内已有的代码不需

30、要发生变化。这里的组合机制使我们很好地满足了开闭法则。2. 设计模式 东北大学信息科学与工程学院系统工程研究所 胡清河 2.7 设计法则应用实例2. 设计模式 东北大学信息科学与工3.1 什么是体系结构 体系结构(Architecture)一词在英文里就是“建筑”的意思。把软件比作一座楼房,从整体上讲,是因为它有基础、主体和装饰,即操作系统之上的基础设施软件、实现计算逻辑的主体应用程序、方便使用的用户界面程序。从细节上来看每一个程序也是有结构的。结构化程序设计时代是以砖、瓦、灰、沙、石、预制梁、柱、屋面板盖平房和小楼,而面向对象时代以整面墙、整间房、一层楼梯的预制件盖高楼大厦。构件怎样搭配才合

31、理?体系结构怎样构造容易?重要构件有了更改后,如何保证整栋高楼不倒?每种应用领域需要什么构件(医院、工厂、旅馆)?有哪些实用、美观、强度、造价合理的构件骨架使建造出来的建筑更能满足用户的需求?3. 体系结构设计东北大学信息科学与工程学院系统工程研究所 胡清河 3.1 什么是体系结构 3. 体系结构设计东北大学信息科学与3.1 什么是体系结构 如同土木工程进入到现代建筑学一样,软件也从传统的软件工程进入到现代面向对象的软件工程,研究整个软件系统的体系结构,寻求建构最快、成本最低、质量最好的构造过程。体系结构如同人的骨架。如果某个家伙的骨架是猴子,那么无论怎样喂养和美容,这家伙始终都是猴子,不会成

32、为人。人的身材大小取决于骨架大小,天生小个子的人基本上不可能成为威猛的大汉,后天再努力(例如锻炼和吃喝)也白搭。由此可见,体系结构乃是系统设计的重中之重。3. 体系结构设计东北大学信息科学与工程学院系统工程研究所 胡清河 3.1 什么是体系结构 3. 体系结构设计东北大学信息科学与3.1 什么是体系结构软件体系结构是具有一定形式的结构化元素(即构件)的集合,包括处理构件、数据构件和连接构件。处理构件负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的不同部分组组合连接起来。软件体系结构是软件设计过程中的一个层次,这一层次超越计算过程中的算法设计和数据结构设计。包括总体组织和全局控制

33、、通讯协议、同步、数据存取,给设计元素分配特定功能,设计元素的组织,规模和性能,在各设计方案间进行选择等。体系结构是软件系统的基本和主体的形态,也就是软件系统中“最本质”的东西。3. 体系结构设计东北大学信息科学与工程学院系统工程研究所 胡清河 3.1 什么是体系结构3. 体系结构设计东北大学信息科学与工3.2 体系结构设计原则(1)合适性体系结构是否适合于软件需求。需求与体系结构之间并没有明显的对应关系,设计师根据需求的特征,通过推理和归纳的方法设计出合适的体系结构。对于软件系统而言,能够满足需求的设计方案可能有很多种,选择能够为开发方和客户方带来最大利益的设计方案。大部分软件开发人员天生有

34、使用新技术的倾向,而这种倾向对开发商业产品而言可能是不利的!经验不丰富的设计师往往把注意力集中在“功能性需求”而疏忽了“非功能性需求”,殊不知后者恰恰是最能体现设计水平的地方。3. 体系结构设计东北大学信息科学与工程学院系统工程研究所 胡清河 3.2 体系结构设计原则3. 体系结构设计东北大学信息科学与3.2 体系结构设计原则(1) 合适性比方说住宅的最基本的功能性需求是“吃喝拉撒睡”,全世界人民都差不多。非功能性需求主要是让人住得舒服。住宅的种类非常多,如茅草屋、窑洞、别墅等。窑洞的体系结构与别墅的有天壤之别,但两者没有可比性。如果一名建筑师给中国陕北农民设计住宅,他应当设计更好的窑洞而非别

35、墅。因为广大的陕北农民住不起别墅,而那里的条件特别适合于建窑洞。窑洞对于当地的农民而言是非常实用而且成本低廉。窑洞最大的危险是在下大雨和下大雪的时候容易坍塌,如果建筑师能够设计出“安全、舒适、便宜”的窑洞,那么他真是功德无量。3. 体系结构设计东北大学信息科学与工程学院系统工程研究所 胡清河 3.2 体系结构设计原则3. 体系结构设计东北大学信息科学与3.2 体系结构设计原则(2) 结构稳定性体系结构是系统设计的第一要素,详细设计阶段的工作都是在体系结构确定之后开展的,而编程和测试则是更后面的工作。如果体系结构经常变动,那么建筑在体系结构之上的用户界面、数据库、模块、数据结构等也跟着经常变动,

36、用“树倒猢狲散”来比喻很恰当,这将导致项目发生混乱。所以体系结构一旦设计完成,应当在一定的时间内保持稳定不变,只有这样才能使后续工作顺利开展。体系结构是依据需求而设计的。如果需求变更了,很可能导致体系结构也发生变更,高水平的设计师应当能够分析需求文档,判断出哪些需求是稳定不变的,哪些需求是可能变动的。于是根据那些稳定不变的需求设计体系结构,而根据那些可变的需求设计软件的“可扩展性”。3. 体系结构设计东北大学信息科学与工程学院系统工程研究所 胡清河 3.2 体系结构设计原则3. 体系结构设计东北大学信息科学与3.2 体系结构设计原则(3) 可扩展性 可扩展性是指软件扩展新功能的容易程度。可扩展

37、性越好,表示软件适应“变化”的能力越强。由于软件是“软”的,是否它天生就容易扩展新功能?这要视软件的规模和复杂性而定。如果软件规模很小,问题很简单,那么扩展功能的确比较容易。要是软件的代码只有100行,这时就无所谓“可扩展性”了,你想怎么扩展都可以。如果软件规模很大,问题很复杂,倘若软件的可扩展性不好,那么该软件就像用卡片造成的房子,抽出或者塞进去一张卡片都有可能使房子倒塌。是否任何软件在设计的时候都要考虑可扩展性?不见得。如果确信某个软件 在它淘汰之前永远都不会变更(如一次性产品),那么在设计阶段就没有必要考虑可扩展性,这样省事省力。3. 体系结构设计东北大学信息科学与工程学院系统工程研究所

38、 胡清河 3.2 体系结构设计原则3. 体系结构设计东北大学信息科学与3.2 体系结构设计原则(3)可扩展性 可扩展性越来越重要,这是由现代软件的商业模式决定的:社会的商业越发达,需求变化就越快。需求变化必将导致修改(或者扩展)软件的功能,现代软件的规模和复杂性要比十年前的大得多,如果软件的可扩展性比较差的话,那么修改(或者扩展)功能的代价会很高。现代软件产品通常采用“增量开发模式”,开发商不断地推出软件产品的新版本,从而不断地获取增值利润。如果软件的可扩展性比较差的话,每次开发新版本的代价就会很高。虽然开发商抓住了商机,但却由于设计水平差而导致没有赚取多少利润,真是要活活气死。3. 体系结构

39、设计东北大学信息科学与工程学院系统工程研究所 胡清河 3.2 体系结构设计原则3. 体系结构设计东北大学信息科学与3.2 体系结构设计原则(3)可扩展性 体系结构的稳定性是根据那些稳定不变的需求而设计的,体系结构的可扩展性则是依据那些可变的需求而设计的。两者之间存在辨证的关系:如果系统不可扩展的话,那么就没有发展前途,而软件系统“可扩展”的前提条件是“保持结构稳定”,稳定性是使系统能够持续发展的基础,否则软件难以按计划开发出来。所以稳定性和可扩展性都是体系结构设计的要素。人们对于物质有喜新厌旧的天性,你可以经常改变住房的装璜和摆设,但不会在每次变动时都去折墙、拆柱、挖地基(否则就是搞破坏了)。

40、在软件开发过程中,变化是司空见惯的事情。如果每次变化都导致体系结构发生大的变动,那简直就是“伤筋动骨”,这样的体系结构无疑是败笔之作。3. 体系结构设计东北大学信息科学与工程学院系统工程研究所 胡清河 3.2 体系结构设计原则3. 体系结构设计东北大学信息科学与3.2 体系结构设计原则(4)可复用性 复用就是指“重复利用已经存在的东西”。被复用的对象可以是有形的物体,也可以是无形的知识财富。复用不是人类懒惰的表现而是智慧的表现。因为人类总是在继承了前人的成果,不断加以利用、改进或创新后才会进步。复用有利于提高产品的质量、提高生产效率和降低成本。由经验可知,通常在一个新系统中,大部分的内容是成熟

41、的,只有小部分内容是创新的。一般地,可以相信成熟的东西总是比较可靠的(即具有高质量),而大量成熟的工作可以通过复用来快速实现(即具有高生产效率)。勤劳并且聪明的人们应该把大部分的时间用在小比例的创新工作上,而把小部分的时间用在大比例的成熟工作中,这样才能把工作做得又快又好。3. 体系结构设计东北大学信息科学与工程学院系统工程研究所 胡清河 3.2 体系结构设计原则3. 体系结构设计东北大学信息科学3.2 体系结构设计原则(4)可复用性 把复用的思想应用于软件开发,称为软件复用。技术开发活动与管理活动中的任何成果都可以被复用,如思想方法、经验、程序、文档,等等。据统计,世界上已经有一千多亿行程序

42、,无数功能被重写了成千上万次,真是浪费哪!面向对象学者们的口头禅就是“请不要再发明相同的车轮子了”。复用的意义很容易理解,人们也乐意复用以前的成果,但是前提条件是该成果具有比较好的可复用性。可复用性是指成果被复用的容易程度。可复用性是设计出来的,而不是偶然碰到的。要使体系结构具有良好的可复用性,设计师应当分析应用域的共性问题,然后设计出一种通用的体系结构模式,这样的体系结构才可以被复用。3. 体系结构设计东北大学信息科学与工程学院系统工程研究所 胡清河 3.2 体系结构设计原则3. 体系结构设计东北大学信息科学3.3 体系结构设计的规程3. 体系结构设计东北大学信息科学与工程学院系统工程研究所

43、 胡清河 3.3 体系结构设计的规程3. 体系结构设计东北大学信息科学3. 体系结构设计3.4 体系结构设计的步骤东北大学信息科学与工程学院系统工程研究所 胡清河 3. 体系结构设计3.4 体系结构设计的步骤东北大学信息科学3.4 体系结构设计的步骤(1)设计准备项目经理分配系统设计任务,包括体系结构设计、模块设计、用户界面设计、数据库设计等。如果系统设计的工作量比较大,人员比较多的话,可能产生一份阶段性的开发计划,如系统设计计划。体系结构设计人员阅读需求文档,明确设计任务,并准备相关的设计和资料。3. 体系结构设计东北大学信息科学与工程学院系统工程研究所 胡清河 3.4 体系结构设计的步骤3

44、. 体系结构设计东北大学信息科学3.4 体系结构设计的步骤(1)确定影响系统设计的约束因素设计人员从需求文档中提取需求约束,例如:本系统应当遵循的标准或规范软件、硬件环境(包括运行环境和开发环境)的约束接口/协议的约束用户界面的约束软件质量的约束,如正确性、健壮性、可靠性、性能、易用性、清晰性、安全性、可扩展性、兼容性、可移植性,等等有一些假设或依赖并没有在需求文档中明确指出,但可能会对系统设计产生影响,设计人员应当尽可能地在此处说明。例如对用户教育程度、计算机技能的一些假设或依赖,对支撑本系统的软件硬件的假设或依赖等。3. 体系结构设计东北大学信息科学与工程学院系统工程研究所 胡清河 3.4

45、 体系结构设计的步骤3. 体系结构设计东北大学信息科学3.4 体系结构设计的步骤(3)确定设计策略 设计人员根据产品的需求,以及本产品的发展战略,确定设计策略。例如:设计模式。根据本产品的功能性需求和非功能性需求,确定体系结构设计模式。扩展策略。说明为了方便本系统在将来扩展功能,现在有什么措施。复用策略。说明本系统在当前“复用什么”,以及将来“如何被复用”。折衷策略。说明当两个目标难以同时被优化时如何折衷,例如“时一空”效率折衷,复杂性与实用性之间的折衷。3. 体系结构设计东北大学信息科学与工程学院系统工程研究所 胡清河 3.4 体系结构设计的步骤3. 体系结构设计东北大学信息科学3.4 体系

46、结构设计的步骤(4)系统分解与设计 按照体系结构设计模式,将系统分解为若干子系统,确定每个子系统的功能及子系统之间的关系,绘制系统的总体结构图(包括物理图和逻辑图);将子系统分解为若干模块,确定每个模块的功能及模块之间的关系,绘制子系统的结构图;确定系统开发、测试、运行所需的软硬件环境。3. 体系结构设计东北大学信息科学与工程学院系统工程研究所 胡清河 3.4 体系结构设计的步骤3. 体系结构设计东北大学信息科学3.4 体系结构设计的步骤(5)撰写体系结构设计文档设计人员根据指定的模板撰写体系结构设计报告。(6)设计评审设计人员邀请同行专家、开发人员对体系结构进行技术评审。体系结构评审的重点不

47、是“对还是错”,而是要考察系统的综合能力。设计评审的要素视产品的特征而定,例如除了合适性、结构稳定性、可扩展性、可复用性之外,还要考虑性能、容量、安全性,等等。体系结构设计报告的参考模板见附录E。3. 体系结构设计东北大学信息科学与工程学院系统工程研究所 胡清河 3.4 体系结构设计的步骤3. 体系结构设计东北大学信息科学3.5 层次结构 层次结构是最常见的体系结构模式,它体现了“分而治之”的思想:当我们没法一口气解决复杂的原始问题时,就把该问题切割成许多个小的相对简单的问题,然后逐个解决。水平方向切割产生的层称为Layer,而竖直方向切割产生的层称为Tier, 3. 体系结构设计东北大学信息

48、科学与工程学院系统工程研究所 胡清河 3.5 层次结构 3. 体系结构设计东北大学信息科学与工程学3.5 层次结构 古代中国文人的学历大体分为两层:秀才和举人,这种划分太粗了(即Layer数目太少),对发展教育是很不利的。很多老百姓读不起几年书,拿不到秀才毕业证书的人就被归类为文盲,不幸成为社会下层人物。虽然社会上的秀才人数也不少,但是从秀才到举人的跨度太大、门槛太高,很多秀才考举人考了一辈子也考不上。后人吸取了经验教训,于是逐步建立了现代的学历层次结构,将学历划分为5个层次:小学、中学、学士、硕士、博士,这样人们读书的选择面广了,工作面也广了。3. 体系结构设计东北大学信息科学与工程学院系统

49、工程研究所 胡清河 3.5 层次结构 3. 体系结构设计东北大学信息科学与工程学3.5 层次结构 3. 体系结构设计东北大学信息科学与工程学院系统工程研究所 胡清河 3.5 层次结构 3. 体系结构设计东北大学信息科学与工程学3.5 层次结构 在计算机领域,采用层次模型的体系结构设计的经典之作是计算机网络OSI参考模型。OSI模型分为7层,每一层的目的都是向它的上一层提供一定的服务,而把如何实现这一服务的细节对上一层加以屏蔽。3. 体系结构设计东北大学信息科学与工程学院系统工程研究所 胡清河 3.5 层次结构 3. 体系结构设计东北大学信息科学与工程学3.6 MVC结构 MVC(model-v

50、iew-controller)结构是为同样的数据提供多个视图的应用程序而设计的,对于界面可变的需求,把系统组成分解成模型、视图、控制器三种部件,很好地实现了数据层、控制层、表示层的分离。使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其他依赖于这些数据的视图都应反映这些变化。是一种模型变化传播机制。3. 体系结构设计东北大学信息科学与工程学院系统工程研究所 胡清河 3.6 MVC结构 3. 体系结构设计东北大学信息科学与工程3.6 MVC结构 模型类包含应用问题的核心数据、逻辑关系和计算功能,封装所需的数据,提供完成问题处理的操作过程。控制器调用这些操作。模

51、型还为视图获取显示数据提供访问操作。注册视图与控制器的关系。3. 体系结构设计模型类数据结构关系视图和控制器的注册关系内部数据逻辑计算内部数据的获取向视图和控制器通知数据变化东北大学信息科学与工程学院系统工程研究所 胡清河 3.6 MVC结构 3. 体系结构设计模型类数据结构关系内部3.6 MVC结构 视图类通过显示的形式,把信息转达给用户。每个视图有一个更新操作,被变化-传播机制激活,获取来自模型的数据值来更新显示。初始化时,根据注册关系建立与模型的关联。控制器可以获得主动激发界面更新的能力。3. 体系结构设计视图类显示形式显示模式控制从模型中获得数据视图更新操作东北大学信息科学与工程学院系

52、统工程研究所 胡清河 3.6 MVC结构 3. 体系结构设计视图类显示形式从模型中3.6 MVC结构 控制类通过时间触发的形式,接受用户的输入。控制器通过事件处理过程对输入事件进行处理,并为每个输入事件提供相应的操作服务,把事件转化为对模型或相关视图的激发操作。3. 体系结构设计控制类状态事件控制控制视图更新东北大学信息科学与工程学院系统工程研究所 胡清河 3.6 MVC结构 3. 体系结构设计控制类状态事件控制东北4.1用户界面概述现今的软件系统大多采用图形方式的人机界面,它以形象、直观、易学、易用拉近了人和计算机的距离。用户界面如同人的外表,最容易让人一见钟情或一见恶心。像人类追求心灵美和

53、外表美那样,软件系统也追求(内在的)功能强大和(外表的)界面友好。现代社会的生活节奏越来越快,人们已少有兴趣去品味深藏不露的内在美。如果把UNIX系统比做是健壮的汉子和妇人,那么Windows系统就像妩媚的小白脸和狐狸精。想不到Windows系统竟然能兴风作浪,占去操作系统的大半市场。有鉴于此,我们在设计软件时不要沉迷于技术,而要多多思考什么样的界面才能让用户更加喜欢。4. 界面设计 东北大学信息科学与工程学院系统工程研究所 胡清河 4.1用户界面概述4. 界面设计 东北大学信息科学与工程学院4. 用户界面设计 4.2 什么是好的用户界面是否容易使用:易用性是指用户使用软件的容易程度。现代人的

54、生活节奏快,干啥事都想图个方便,谁都不乐意掏钱买很难用的东西,所以把易用性作为用户界面的重要属性对待无可厚非。是否美观:美观的界面能消除用户由感觉引起的乏味、紧张和疲劳(情绪低落),大大提高用户的工作效率,从而进一步为发挥用户技能和为用户完成任务做出贡献。人们对美的向往和追求是与生俱有的。显然没有开发人员愿意丑化自己的软件,也没有用户嗜好丑陋的界面。软件开发者要设计美,用户要享受美,所以界面的美是开发者与用户的共同需求。 东北大学信息科学与工程学院系统工程研究所 胡清河 4. 用户界面设计 4.2 什么是好的用户界面东北大学信息科4.2 什么是好的用户界面开发人员在设计用户界面方面不仅存在先天

55、的教育缺陷,更加糟糕的是还常常犯“错位”的毛病,即他以为只要自己感觉用户界面漂亮、使用起来方便,那么用户也一定会满意。当开发人员向用户展示软件时,常会得意地讲:“这个软件非常好用,我操作给你看,是很好用吧!蛮漂亮的吧!”软件是否易用、是否美观要让用户来评价。如果用户对界面很不满意,开发人员不要有逆反心里:到哪里找来的笨蛋?其实不是用户笨,是自己开发的软件太笨了。 当用户真的感到软件很好用时,一股温暖的感觉油然而生,于是就用“界面友好”来表扬这个软件。4. 用户界面设计 东北大学信息科学与工程学院系统工程研究所 胡清河 4.2 什么是好的用户界面4. 用户界面设计 东北大学信息科4.3 用户界面

56、设计原则(1)适合于软件的功能用户界面的合适性是指界面与软件功能相融洽的程度。软件的功能需要通过用户界面来展现。毫无疑问,用户界面一定要适合于软件的功能,这是最基本的要求。否则用户无法通过这个界面来使用软件,如果连用都不能用,“易用性”根本就无从谈起。例如,对于一个三维建模软件而言,如果用户不能使用鼠标对模型进行旋转、移动、缩放等操作,那么这个软件的用户界面就不适合于软件的功能。如果不改进用户界面的话,即使软件的内核功能很强(如算法很先进),这个软件也很难卖得出去。4. 用户界面设计 东北大学信息科学与工程学院系统工程研究所 胡清河 4.3 用户界面设计原则4. 用户界面设计 东北大学信息科学

57、4.3 用户界面设计原则(1)适合于软件的功能合适性差的界面无疑会混淆软件意图,致使用户产生误解。即使它不损害软件功能与性能,也会使用户产生不该有的情绪波动。例如一些软件开发者喜欢为其作品加一段动画演示,以便吸引更多用户的关注。这本是无可非议的,问题在于这演示是否合情合理。如果运行一个程序,它首先表演一套复杂的动画,在后台演奏雄壮的进行曲,电闪雷鸣之后出来的却是一个普通的文本编辑器,整个过程让用户置身于云里雾里,而结果却让用户感到惊愕而不是惊喜。合适性差的界面只会给软件带来厄运。“用户界面适合于软件的功能”是基本的设计原则,它提醒设计者不要片面追求界面外观漂亮而导致华而不实。界面的合适性既提倡

58、秀外慧中,又强调恰如其分。4. 用户界面设计 东北大学信息科学与工程学院系统工程研究所 胡清河 4.3 用户界面设计原则4. 用户界面设计 东北大学信息科学4.3 用户界面设计原则(2)容易理解 如果用户很难理解界面的意图,那么他使用起来肯定很费劲。所以“容易理解”是“容易使用”的前提条件。提高用户界面可理解性的一些规则如下:界面中的所有元素(如菜单、工具条等)没有错误,也不会让人误解。所有的界面元素应当提供充分而必要的提示,例如当鼠标移动到工具条上的某个图标按钮时,应当在该图标旁边出现功能提示。界面结构能够清晰地反映工作流程,以便用户按部就班地操作。对于复杂的用户界面而言,最好提供界面“向导

59、”,及时让用户知道自己在界面结构中所处的位置。否则用户很容易在众多的页面中迷失方向。4. 用户界面设计 东北大学信息科学与工程学院系统工程研究所 胡清河 4.3 用户界面设计原则4. 用户界面设计 东北大学信息科学4.3 用户界面设计原则(3)风格一致风格一致有两方面的含义: 一个软件的用户界面中,同类的界面元素应当有相同的视感和相同的操作方式。例如命令按钮是最常见的界面元素,所有命令按钮的形状、色彩及对鼠标的响应方式都是一致的。 同一类型软件的用户界面应当有一定程度的相似性。例如 Microsoft公司的Office家族里所有软件。对于用户界面而言,风格一致的最大好处就是能够减少用户的记忆量

60、、减少出错几率,并且迅速积累操作经验。 4. 用户界面设计 东北大学信息科学与工程学院系统工程研究所 胡清河 4.3 用户界面设计原则4. 用户界面设计 东北大学信息科学4.3 用户界面设计原则(4)及时反馈信息 用户进行某项操作后,如果过了一会儿(几秒钟)用户界面一点反应都没有,这将使用户感到迷茫和不安,因为他不知道是自己操作错了还是软件死机了。所以及时反馈信息很重要,至少要让用户心里有数,知道该任务处理得怎么样了,有什么样的结果。例如下载一个文件,界面上应当显示“百分比”或相关数字来表示下载的进度,否则人们不知道要等待多少时间。如果某些事务处理不能提供进度等数据,那么至少要给出提示信息如“

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论