文档库 最新最全的文档下载
当前位置:文档库 › 模块化开发

模块化开发

模块化开发
模块化开发

模块化开发

前言

本文我们将讨论一下模块化开发。这里提到了两个关键词:模块化和开发。模块化是本文将要讨论的核心。而对于模块化的对象,在这里我们主要针对的是开发,而不单单只是针对编程、设计或者管理等来阐述的,这样描述的主要目的是希望可以通过本文让处于不同岗位的开发人员在工作中的各个方面都能去进行模块化思考。由于笔者一直从业于游戏软件开发领域,所以本文中对模块化所举的例子、说明等,大多都是针对游戏软件开发的。

何为模块化开发

不知道您之前有没有在网上看过这个视频,视频的内容是一栋15层的宾馆大楼如何在7天的时间里拔地而起的。这段视频引起了国内外网友们的热议。在这段视频中,我们完整的看到这栋大楼如何一层一层的将架构搭起来,又一步一步的把内外填充好,最终完成整栋建筑。我对建筑行业完全外行,但如果跟我以前看到过的盖楼的方式上比较,从表面上我也看到了一点区别:过去我看到的盖楼过程是一点、一点建起来的,比如一块砖、一块砖的砌,一小块楼板、一小块楼板的灌注。在这个视频中我看到这栋大楼则是一块、一块的建起来的,一大块墙、一大块墙的拼,一大块楼板、一大块楼板的拼。也许这个视频就可以作为一个让人们对模块化产生直接认知的很好的说明示例。

(图1. 7天建起了15层的大楼)

总的来说,模块化并不只是软件开发领域独有的概念,这个概念在很多传统行业中有着更深远的历史,比如建筑业、汽车业、计算机硬件业等等。并且,无论我们有没有仔细想过模块化这个概念,人类自古以来做事的方式一直都是按照这种思路来进行的,只是在不同阶段、不同条件下执行的方式、程度等有所不同。

这里是对模块化这个名词的一个基本解释:构建标准化的灵活多用的单元。我想给出这样的解释来说明何为模块化:1. 将大的个体分解成多个小的个体;2. 独立的、闭合的去分析处理这个个体和其与外界的关系;3. 将这些个体组织、集成为一个新的大的个体;4. 持续的、迭代的进行这个过程直至解决问题。

什么可以被视为模块

模块化的对象和处理单元都是模块,那都有什么可以被视为模块呢?也许这是一个既简单又复杂的问题,说它简单是因为它的概念很好理解,但应该去做到什么程度却又是一件有挑战的事情,如果处理的不是恰当好处就会让事情变得十分复杂而低效。

但为了能有个直观的感受,我还是想举几个例子。在软件开发中,一个C++函数、一个C++类或者一个功能库都可以被视作一个模块;一款产品、应用或者工具也可以被视作一个模块;再放大并抽象一点说,一个游戏功能、项目管理中的一个用例也可以被视作一个模块;甚至项目中的一个小组、公司中一个部门也可以被视作一个模块。

总之,理论上来说任何事情、事物都可以模块化的来看待,但我的忠告是不要做的太过、太抽象。

软件开发中的几个示例

下面给出几个更具体的示例来帮助我们更好的来体会模块化。从下面这几个示例中,我们可以感受到一个模块化的系统可能具有的一些特性。

基于组件的游戏对象系统

我们先来看看“基于组建的游戏对象系统” ——一种组织、管理游戏中各种类型对象的技术或者设计。这个设计的大致结构如图2所示。它有什么样的特性呢?

?每个对象内部都具有比较完整的、通用的功能和属性用于它对自身的表述。

?对象大部分的行为都是在其内部进行的。

?对象之间的关系主要是通过消息这个简单的接口建立起来的。

?即便是直接的相互调用,它所提供的也是标准的、通用的接口,也就是说一个对象可以很容易的跟另一个对象解开关联、再和其它对象关联起来。

(图2. 基于组件的游戏对象)

并行计算

再让我们看看并行计算。为了提高处理能力,目前的处理器(CPU或GPU)都将多核作为其主要的解决方案之一。相应的,在(游戏)软件开发中,程序开发人员也都在努力的应用着这个特性来提高系统的处理速度。但同时多核也意味着要系统尽量去做并行的处理,这将大大提高程序逻辑处理和调试的复杂度。因此,对于并行计算来说,它天然的就对模块化有着很高的需求。例如:

?将一大批运算拆解为一个个能独立处理的单位,这样它们就可以被交给不同的核心去处理。

?尽量的减小各个单位之间的依赖或者对资源的共享,使得并行处理的单位之间的执行顺序不影响结果的正确性。

?尽量的减少或简化各个单位之间通信和交互,来降低逻辑上的复杂度或相互等待。

下面两个图示简要的展示了游戏系统在单核处理和多核处理上的不同。

(图 3. 在单核上,资源是被顺序的使用的,逻辑也是顺序的执行的。)

(图 4. 多核时,同一个资源则有可能被不同核上的处理任务同时请求,不同处理任务之间也可能有逻辑上的依赖。)

Visual Studio工程

最后我们看看Visual Studio工程。绝大多数项目中的程序开发人员都会通过IDE去创建工程来管理项目的代码、属性和构建等,或者至少也会去创建make文件来描述项目的构建方式,比如C++游戏开发人员几乎都会使用Visual Studio C++工程来管理游戏的C++代码和库。对于一个大型项目,我们通常会将不同的系统用不同的工程来管理——当然,你也可以通过用不同的文件目录来标识和组织不同的模块,但这样做的话那些IDE所提供的优秀的辅助管理功能就不能为你服务了。现在我们看看这些由Visual St udio工程构成的一个个模块又有哪些特性:

?每个模块对自己有清楚地描述与定义。

?各个模块间的关系被明确的建立起来:谁依赖于谁、相关联的配置、包含路径是什么等等。

?操作(如编译、发布)一个模块的时候,会根据依赖关系先去处理那些被依赖的模块。

?可以独立的处理每个模块或者所有模块。

(图 5. Visual Studio Solution中的项目关系:包含和依赖)

模块化的原则

现在我们对模块化应该已经有了更清晰地感受了,后面我们就尝试着把这个思想融入到我们的开发工作当中去。在此之前,我们先归纳一下模块化的几个原则。因为模块化是人类固有的一个非常基本的思维方式,所以它的内容描述起来比较简要。

先从过程上来说——分解与综合。如果一件事情太大、太复杂,那我们就:

?把它分解成几个小的部分,如果还是太复杂,那就继续分解。

?一个一个的去解决掉这些相对小的部分。

?再把这些已经解决的小的部分组织并集成为大的整体。

再从特性上来说——低耦合、高内聚。把问题拆开后,对于每个部分:

?清楚地给出或者限定模块的功能与职责。

?跟别的模块之间只去建立那些必需的关联。

?只把那些必要的接口暴露出来。

(图6. 一个模块化的系统)

模块化开发的初步实践

前面,我们主要是从概念上在讨论模块化开发,下面我们来把这个概念具体化,看看它可以怎样跟我们的实际工作结合起来。在此之前我想再强调一下,模块化绝不仅仅只是针对编程工作的,它也可以在开发流程、项目管理、团队组织等方面进行有效地实践。但因为大多数的读者对程序开发都比较熟悉,所以这里我们就只借用程序开发工作来初步的讨论一下模块化的实践。下面我们分别从内聚与耦合两个方面来说一下软件开发、设计工作中的模块化。

内聚

一方面,每个模块都应该是尽量的内聚的。那么,一个内聚的模块要有哪些特性?我们如何能生产出这样的一个模块?

代码设计

首先从代码本身来说,一个内聚的C++模块的代码设计要尽量考虑到这些方面:接口、内存、性能、线程、网络、IO等,尽可能在模块的内部处理好它们。下面我们概要的来说一下每个方面。

?接口——在设计和实现过程中,尽量做到只开放或者说只暴露出来那些真正需要开放的接口,如C++头文件、类或函数等等,不要将所有内部实现和接口都暴露出来让用户随便使用。并且,尽量的保证接口的稳定。

?内存——在设计时,或者至少在完成系统后,清楚这个系统大概需要使用多少基本内存或者说最小内存,并最好能够在系统的介绍说明中提出来;对外提供一个接口,让这个系统的用户可以通过这个接口指定这个系统最多要用多少内存,最好也可以让用户能把一整块分配好的内存空间提供给这个系统来使用;尽量避免动态的分配、释放内存,这里的动态是指在程序(比如游戏程序)的主要状态的循环中,每帧或者高频率的发生的;考虑一下这个系统需要什么样的数据结构来管理其内存使用;弄清楚这个系统的内存分布情况是什么样的。

?性能——在设计这个模块的时候,尽量给出在性能上的分析与预算。例如,在每一次循环(帧)中,这个模块大概会用掉多少CPU或GPU时间(毫秒)?这个模块在不同情况下是如何影响性能的?

?线程——这个模块本身是否可以或者需要执行多线程的任务?如果需要就要把这个模块的线程使用规划出来,比如是简单的使用几个就创建出来几个,还是用线程池来管理它们。这个模块是否会在多个线程中被使用?如果会,这个模块的内存、文件等资源就要被设计和实现成线程安全的。

?网络——如果这个模块有网络访问,估计好它自身可能需要使用多少网络负载。如果可能接受多个网络连接,考虑一下是否需要使用连接池来管理连接。

?IO——如果这个模块有对文件的读写,设计时就要考虑一下这些方面:如果有数据读取或者载入,还需要其有较高的读取性能,那么这个模块就应该支持序列化的数据载入。如果这个模块要读取流数据,那它最好能对其自身能同时处理的流数据的最大数量有个限定。

测试

现在我们已经让一个模块在尽量独立的处理自己能处理的事情了,之后我们就需要让它能有效地对内、对外保障其自身的正确性与稳定性。如何保障——测试。对于程序开发人员,其中一个不错的实践方法就是使用单元测试。当各个模块有了单元测试后,任意一个开发人员修改了某一个模块,他可以马上知道这个模块和与其相关模块是不是仍在很好的工作。当然也可以选择人工的进行这个过程,但如果能将单元测试集成到一个模块的内部作为其一部分,将会给这个模块带来更高、更稳定、更有效的保障。

打包

现在假设你已经拥有了一个内聚性很好的模块,它也能很好的进行自我保障,然后呢?然后你的这个系统就应该被模块化的提供出去,我们也可以说将它打个包交给使用者。打成包的产品也可以被看作一个独立模块。提供打包的形式可能有:你的这个包是一个底层库,把源代码,文档和编译出来的静态、动态库文件打成一个压缩包,发布出来,让使用者可以从某个地方下载或者拷贝;这个包也可能是一个C++工程,这样你所提供的就是源代码和工程文件,发布方式就是提交到版本控制系统上,使用你的包的用户会直接把这些代码和工程集成到他的项目中去。

至于这个包具体要提供哪些内容、以什么样的形式发布或交付给其他用户,就取决于你的组织、团队、项目、产品、构建方式等各方面因素了。

耦合

另一方面,各个系统之间的耦合应被尽量的降低。那么,这些耦合是怎么形成的?我们可以怎样降低模块间的耦合呢?

模块间关系

说到耦合首先要说的就是模块间的关系,正是模块间的各种各样的关系造成了模块之间的耦合。那么模块之间都有可能存在哪些关系呢?

?依赖关系——一个模块需要使用另外的一些模块,没有它们这个模块就没办法工作,这就是依赖。

对于依赖,在设计代码时就应该确定好你的系统到底要依赖于哪些库,并搞清楚你的这个系统是不是真的需要或者适合依赖于某一个库,这个分析过程会有助于降低你的模块对其它模块的耦合程度。

?继承(父子)关系——继承关系主要是面向复用的,子模块具备部分或者全部父模块的特性,在此基础上再进行扩展,这就是继承。例如,一个新的项目开始了,我们从一个老的项目里拿出了整套生产线,在这套老的生产线上进行改进,来生产新产品,这就是一种继承关系。

?包含关系——包含关系主要是面向组织和行为的,当一个模块做了什么事情,对应的就需要有些子模块的操作被触发或执行,或者要让一些信息从当前模块传递到包含它的模块,这就构成了包含关系。例如,在一个项目中除了主产品外,还要为数据生产线提供五个独立的工具,这些工具都是要交给内容制作人员使用的,这样就需要有一系列的类似的操作来管理这五个工具子项目,如构建、打包、测试、代码静态分析等等,特别是对于持续集成环境,最好能有一个简单的方法来同时针对这五个工具的工程进行操作。可能的一种实践就是把这五个工具子工程添加到同一个Visual Studi o解决方案中(即使这些工具之间没有任何关系),当需要编译或者测试所有工具代码的时候,执行这个解决方案的对应的命令就可以了。

模块的相互定位

现在假设我们已经明确了一个大的系统中各个模块之间到底是什么样的关系了,但为了将各个模块之间的关系真正的建立起来,我们还需要考虑一件事情,就是定位。如何才能定位到那些有关联的模块并与其建立起关系呢?

首先,需要各个模块对外提供一些基本信息,这个信息可能包括其位置、版本、平台、配置等等。例如,在你的游戏项目中,武器系统是依赖于Bullet库的0.7.1版本的,你们只需要Win32版,并且没有打算调试Bullet,所以只使用了编译出来的Release版本的静态库,所有这些信息共同构成了你们的游戏项目中的武器系统对Bullet库的依赖关系。

然后,再通过人工或工具将这些关系在开发中体现出来。例如,Visual Studio中的项目和其属性、C++代码中的include、甚至口头或者邮件中的一个版本号的通知,都是在建立各个模块之间的关系。

模块间的相互影响

在各个模块之间建立起了某种关系之后,它们还要依靠某种方式来实现相互沟通与影响,才能真正构成一个协同工作的更大的系统。模块间通信的形式是多种多样的,但不同的通信方式也会使模块间的耦合程度不同,思考一下,哪一种更适合你的系统。例如,在一个软件系统的设计、开发中可能会有这些模块间的协作方式:

?在同一个进程中的各个模块要如何相互影响?靠消息、回调、还是直接调用?直接调用实现起来快捷,但它也让两个系统建立起了强耦合关系;靠消息、回调要多做点事情,但却降低了系统间的耦合。

?一个应用程序也可以理解为一个模块,那么在多个应用程序之间如何相互影响?靠文件、消息管道、还是靠数据库?这里使用不同的方式会分别让这个应用程序依赖于其它不同的系统。

?一个系统还有可能是跨网络、跨操作系统的,它的各个子系统也分别可以看作一个个模块,它们之间又是如何相互影响的?靠web服务、网络消息、甚至一些人工操作?它们也同样决定了系统间的耦合程度。

模块化开发的好处

前面我们讨论了这么多模块化的问题,那么它倒地是不是值得被如此费心思的考虑?现在我们就来说说:恰当地进行模块化的开发都有可能会带来哪些收益?

更容易把问题定位或限定到一个较小的范围。当系统出现什么问题时,我们会去调试系统,那调试的过程可能会是什么样的?如果系统内部的逻辑、结构错综复杂,我们的头脑中就要始终存储着好几方面的、相关系统的信息和关系,还会让调试的步骤从各个系统之间跳过来、转过去,很是艰苦。但如果一个系统的各个模块的设计比较内聚,在发生问题的时候,因为各模块之间主要是靠接口进行互相影响的,所以解决问题时我们只需关注接口,看看接口的输入输出是否正确,如果哪个接口的输入输出出现了问题,我们就可以快速的定位到问题是发生在哪个模块中,剩下就可以集中精力去分析、解决这个相对较小的系统内部的问题了。

系统功能、各个系统之间的关系和开发人员的责任更清晰。在一个庞大而复杂的系统开发中,估计很多开发或者管理人员都遇到过这样的问题:发现了一个Bug或者技术问题,却不确定找谁来解决这个Bug最合适,或者谁可能最清楚这个问题。一个模块化良好的系统会清晰地定义自身的功能、特性、接口还有它与其它系统之间的关系,这就能让你更容易的说出一个问题发生在了哪个模块,并且模块本身又是内聚的,这就很容易知道应该去寻求谁的帮助来解决这个模块的相关问题。

功能更容易被复用或替换。在开发中也许你还遇到过这样的问题:现在要开发的某个功能在之前的某款产品中已经有过类似的实现,于是你们打算把那个功能移植过来,但移植的时候发现那个功能有着非常多而复杂的依赖关系,这使得你们不得不花费大量的时间去提取和集成,让这个老功能跟你们的新系统结合起来,然后又要花大把的时间去解决集成后所产生的新的问题,而这个过程有可能已经在你们团队的发展中被重复了多次。但当你的系统的模块化做的更好之后,因为一个模块与其它模块的关系清晰,耦合更小,解开这个模块与其它模块间的关联也会相对容易并省时得多。就像当今的计算机硬件,哪里坏掉了或者需要升级了你会怎么做?拔掉它,换个新的就好了,也许软件开发的复杂性让它还没法做到这个程度,但更好的模块化一定会让工作比之前更容易、更灵活、更可靠、更稳定。

并行的进行项目开发更容易、更高效。当你的组织打算并行的开发两款以上的不同产品,而它们之间有大概50%的相同性,你们可能会怎么做?当有了一个优良的模块化的结构后,因为复杂的系统已经被分解成了一个个功能独立的单元。这样的单元更容易同时被多个项目共同使用,也更容易被多个项目共同维护与改进,这就尽量避免了一部分人力在不同项目中分别做着重复的劳动。

更容易通过增加人力来提高生产速度。如果一个大的系统有太多的耦合,在项目进行的某个时候我们要增加人力资源来促进项目的前进,这将会是一个很有风险的做法,因为这个新人(即使是有经验的)要花不少的时间先去研究并且理清一个系统以及相关联的系统,而这些关联关系都只能靠在成千上万行代码中跳转来跳转去的去阅读、试验来理解。即使他觉得能在这个代码上做事情了,真的开发出来的功能也有可能由于某些模块间复杂的关系和依赖而埋下了Bug的种子,将来再回头解决这些Bug,将会花费整个开发团队更多的时间。如果各个系统的模块化做的很好,增援的人就可以集中注意力关注于某个模块自身和与其相关模块的接口,并只需保证这个模块自身的接口输入输出不出错。这样就大大降低了增加人力所带来的成本和风险。

可持续的、迭代的去解决问题。对于一个大的系统,把它拆分开后我们就可以集中精力去解决每个相对小些的问题,如果觉得问题还是大,那就继续分解。而对于这些小的系统,由于它们都比较内聚,把它们拼装成大的系统也会相对容易些。这样开发人员就可以很容易的将工作分成一个一个的周期去处理,并能够按阶段的去完成一个个看得到结果、评估得了的目标。

总结

本文的主旨并不是要介绍什么问题的解决方法或方案,而只是在与您讨论一个概念,所以在文中没有什么固定的、明确的规则和标准是一定要被遵守的,但我希望能够通过本文来激发读者在软件开发时去对各方面工作都能够进行模块化的思考。至于最佳的方案与实践,还是需要根据实际项目环境和条件来把握。最后,提出一个狡猾的忠告与建议:模块化,不要做得太过,但也不要什么都不做。

Volvo的模块化平台开发

Volvo learns to use Modular Function Deployment Applications for Modular Function Deployment? (MFD?) are found in a wide range of manufacturing companies in widely differing industries. It has been applied in modularization projects for cars, trucks, vacuum cleaners, staplers, grinding machines, servo drives, washing machines and many other products. Volvo’s experience, which began a number of years ago, shows how the MFD method can be applied and what results it may bring. Platform thinking The platform design concept means that a number of predefined models can be built from a common base. The common base, according to Volvo’s definition, is “everything that gives synergy in knowledge and investments.” It might be compared to a Lego? bricks system where it is possible to build many different structures with only a few building blocks. Intensive efforts are required to implement a platform strategy for the first time with considerably more exhaustive analyses than for a normal new car project. The intention is, though, that it will pay off in the development of consecutive models. Only new features, or planned design changes, will be of concern in the coming development projects (maybe 15 instead of 100). Volvo’s strategy aims at commonality between the assembly plants in Gent (Belgium) and Gothenburg (Sweden). Modular vehicle design makes it possible to build several car models from a common platform. Volvo introduced platform thinking as an economical and customer-oriented way of building cars. The purpose was to achieve advantages such as shortened lead times, higher efficiency in production and frequent model changes. This, in turn, enabled increased sales and lower costs. With the new platform concept, it was necessary for the production systems in Gent and Gothenburg to be structured alike. With this commonality, the building of different car models could be moved quickly between the plants, corresponding to customer demand in different geographic areas. The new production system was concurrently developed with product development and design. Staff from the plants worked together with industrial engineers and designers to verify products and processes in the early phases of the project. With a modularized product structure, Volvo can outsource larger parts of the car to a smaller number of primary vendors. The primary vendors actively participate in product development and shorten development lead times by implementing concurrent development of modules once the interfaces have been defined. Modularization of a complete car Modularization of a complex product, such as a car, demands division into modules on several levels. Modularization on lower levels goes on as long as it is meaningful. For manual assembly, the lower limit is about 50 assembly operations per module. Other aspects, such as the wish to create common units or variety, might make it useful to go on with modularization all the way down to single parts. The division of a complete car into modules on the highest level (Level 1) is seen as generic and commonplace in the industry. This originates from the evolution of so-called “functional areas,” grown out of the need to manage work within a large organization. Within Volvo, this division into “natural” modules has been supported by work done on an earlier modularized concept car. Starting out from the functional areas and with the requirement of lead-time reduction, Volvo identified 18 modules on the top level.

汽车开发平台模块化特点及其发展趋势

汽车开发平台模块化特点及其发展趋势 1 引言 平台化开发已经是各大整车企业降低研发成本,缩短开发周期的重要手段之一。 汽车平台是指在开发过程中使用相似的底盘和下车体 的一组公共架构,该架构可以承载不同车型的开发及生产制造,在此基础上可以生产出外形和功能都不尽相同的产品。 组成汽车产品平台公共架构的识别要素主要包括发动 机舱、地板、悬架制动、传动、发动机、电气系统等。目前出现的“模块化”开发,比“平台化”更进了一步。汽车企业可以在全球范围内进行汽车模块的选择和匹配优化,进一步减少了新开发零部件的种类和数量,零部件通用化程度更高,使企业更加灵活、快速地推出新产品。 因此,本文意在通过推导汽车平台演进进程,并结合几家国外车企平台模块化战略深入分析,总结其特点与适用要素,为我国自主品牌汽车企业开展平台模块化研究提供一定的参考建议。

2 汽车平台战略与发展趋势 世界汽车平台战略经历了单车型开发———平台开发———平台精益化———模块化的进程。汽车制造商通过扩张和兼并,拥有了更多的汽车平台,梳理现有汽车产品,对平台进行整合以及精益化,并在精益化的基础上对平台构建进行模块化构建。全新的模块化平台,将进一步降低研发周期和风险,成为未来汽车生产发展的方向。 从20世纪80年代平台概念的诞生,到20世纪90年代平台战略的兴起,至2010年全球九大跨国车企(通用、大众、福特、丰田、雷诺日产、PSA、本田、菲亚特和戴姆勒)已拥有了175个平台。各大跨国车企开始意识到进一步削减平台数量,扩大单个平台的车型覆盖率,提高平台规模效益是未来平台化发展的不二选择。到2020年九大跨国车企计划将平台削减至1/3,并且纷纷将大规模生产的车型集中在关键几个核心平台上。通用汽车宣布到2018年平台将从2010年的30个削减到14个,每年由此可节约成本10亿美元。 以下选取大众、通用、福特、丰田平台,对比分析其平台战略差异性。见下页表1。

产品模块化设计

当今制造业企业一方面必须利用产品的批量化、标准化和通用化来缩短上市周期、降低产品成本、提高产品质量,另一方面还要不断地进行产品创新使产品越来越个性化,满足客户的定制需求。这样,如何平衡产品的标准化、通用化与定制化、柔性化之间的矛盾,成为赢得竞争的关键能力。平台化、模块化的产品设计和生产可以在保持产品较高通用性的同时提供产品的多样化配置,因此平台化、模块化的产品是解决定制化生产和批量化生产这对矛盾的一条出路。 以下总结了推行模块设计过程需要关注的要点: 1 产品模块化设计各个部门远景目标: 1)产品开发:产品开发过程分解为平台开发和产品开发过程,专门的团队进行平台的设计和优化,新产品的开发由平台通过 变量配置实现; 2)产品制造:产品制造部门按照产品平台分配产线和装配资源; 3)供应链管理:实现零库存,根据模块的要求选择能够承接模块设计和开发的供应商; 4)市场部门:实现按订单制定产品开发和制造计划。 2 模块化实施过程: 1)产品系列平台划分,采用“产品型号组方法”则是对整个目标 市场划分所进行的全部变型型号的规划和开发。新产品规划要

定义一组变型型号。配置应当与市场定位关联,其实际定义应 当与产品性能的部分关联,并体现出不同变型型号之间的差异。 2)产品模块划分,可以采用MFD方法进行模块划分,步骤包括: a 定义客户需求,利用卡诺模型区分客户需求与满意度关 系、使用QFD方法定义客户需求与产品性能的对应关系; b 选择技术方法,定义产品功能树,使用波氏方法选择 技术方法;使用DPM矩阵描述技术方法与产品性能的对 应关系; c 产生模块概念,定义模块驱动与技术解决方案的对应关 系,最理想的模块技术解决方法是可以自己组合成一个模 块,至少可以作为一个模块的基础; 不够优化的技术解决 方法应该和其他技术解决方法整合在一起组成模块。 d 评估模块概念,定义模块接口,优化模块接口。 e 模块优化,创建模块规格说明,进行模块优化,进行 经济和技术上的评价。 3)选项变量定义;在一个平台上定义许可的选项/选项集,定义选项之间的关系和约束。 3 模块化设计考核指标 1)部署通用产品结构的型号组/ 全部型号组; 2)通用模块实例/ 全部的模块实例; 3)CAD/PDM系统中零部件族的利用率;

模块化产品设计的一些思考和体会-王志华

模块化产品设计的一些思考和体会 一、产品开发工作的挑战 在剧烈变动的3C时代(客户Customer、竞争Compete和变化Change),要想赢得竞争的胜利,企业必须通过优化整个产品开发来缩短产品上市时间、提高产品质量、降低成本,同时还要不断通过研发创新来满足客户的变化需求。技术的飞速进步,引起产品越来越复杂,随着客户对教学产品个性化需求程度的增加,也导致产品定制化趋势越来越明显,企业必须创建数量庞大的产品系列来满足学校不断变化的需求。随着现代科技的发展,模块化已成为工程产品的主要发展趋势之一,作为标准化的新形式,模块化被视为实现产品多样化的主要途径。 二、模块化产品设计概念 1、模块的历史来源 模块并不是一个新的概念,早在20世纪初期的建筑行业中,将建筑按照功能分成可以自由组合的建筑单元的概念就已经存在,这时的建筑模块强调在几何尺寸上可以实现连接和互换。然后,模块被引入机械制造业,人们进一步将模块与物理产品的功能联系到了一起,模块具有了明确的功能定义特征、几何连接接口,以及功能输入、输出接口特征。 2、现代模块化的诞生 模块的演变过程是从单纯的几何结构单元,发展到集成功能单元,又演变成为非物理实体的载体,如知识和软件等。 1965年之前,计算机都是整机制造的,当时的设计是相互依赖的,之所以这样是因为计算机系统太复杂了。在这种复杂性灾难之下,不可能像现在这样按照某种标准,遵照通用化原则,设计具有兼容性的可以实现工业化大生产的产品,使得计算机在当时非常昂贵。 比如1944年在美国国防部的资助下,由J.Presper Eckert Jr 和W.Mauchly领导的小组在宾夕法尼亚大学建造了一台名为ENIAC(电子数字积分计算机Electronic Numerical Integrator And Calculator)的计算机。生产完全是在试错过程中进行,应用完全是实验性的。 1945年当ENIACt投入使用之后,设计者累积的知识使他们明白了如何建造一台性能更好的机器。他们把想象中的机器命名为ENVAC,并把计算机系统界定为一种“组合式”制品。标明其关键组成部分是基本存储器、控制单元、运算“器官”、输入/输出和辅助存储器(IBM360电脑)。 随着计算机软件技术的发展,模块的概念又被用到了非物理产品领域,在软件行业模块的概念被广泛的实践着,大型的软件系统(比如PTC公司的Windchill系统)的模块化趋势越来越明显。 3、模块设计的案例 平台化、模块化的产品战略已经有很多成功的案例在世界很多的著名公司中应用。日本索尼公司在20世纪80年代仅利用4个基础平台的Walkman产品,生产出250余种录音机随身听。这250种随身听无论在价位、功能和款式上都有很大的区别,可以满足用户的各种不同需求,但是这4个基础平台却存在着大量的重用模块。 “平台”概念最早由大众集团提出并实践,并在PQ34平台上获得了巨大的成功。PQ24,PQ25,PQ34,PQ35,PQ46,PL45,PQ2,PQ3。 P*4等。大众现在基本上已经逐渐放弃平台的概念,而采取更抽象的“模

模块化业务流程管理平台设计

交流 Experience Exchange D I G I T C W 经验 282DIGITCW 2019.08 随着国家经济的不断发展以及科技的不断进步,电网行业也走向了技术更新的快车道,企业改革逐步进入深水区。这就对如何高效、规范地开展企业业务管理工作提出了新的要求。因此,有必要开展先进的业务管理工作流程理念研究,结合信息科技发展优势,建立新型模块化业务流程管理平台。 1 模块化业务流程体系 模块化业务流程体系是将管理工作按类型分为三个部分,即项目业务流程体系、事务性业务流程体系及资料管理流程体系。1.1 项目业务流程体系 建立项目业务流程体系,以企业项目管理要求为基础,以项目“总览—过程—评价”为总架构。“总览”部分为项目年度总信息。 “过程”部分以“计划—执行—检查—处理”为管理闭环,每个环节独立成模块,计划环节即项目计划正式下达环节。执行环节分为“前期—实施—验收”3个子模块,对应项目执行的三大阶段。检查模块则针对项目过程产生的资料和数据定时自查。“评价”部分分为自然年度结果评价和项目年度结果评价,分别产生自然年度项目全流程报告和项目全流程报告,内容包括项目年度情况总结和各项数据统计。1.2 事务性业务流程体系 建立事务性业务流程体系,即将日常事务性管理工作(非项目)纳入体系中,以“总览—过程—评价”为总架构。当年度计划确定后,生成计划分解表,确定工作计划各节点时间和工作内容,并以“总览”的形式展现。 “过程”以“计划—执行—结果—总结”作为闭环管理模块。其中“计划”模块由“总览”部分要素生成;“执行”模块记录根据“计划”模块节点内容及实际完成情况;“结果”模块针对工作执行结果进行评估,并对“计划”和“执行”进行闭环反馈,在必要时对“计划”和“执行”内容进行修改,直到工作结束;“总结”模块是对各项工作完成情况进行总结和统计。“评价”部分作为工作情况年度汇总和统计,并生成相应报告。1.3 资 料管理流程体系 图 模块化业务流程体系图 建立资料管理流程体系,即将工作中具备留存意义的电子及纸质资料进行统一整理归档。分为项目性资料及事务性资料。 项目资料以具体项目为留存单位,电子版以各个节点作为储存文件夹进行材料储存,纸质版以项目资料生成顺序统一存放于档案盒中,档案盒以年度及项目类型分类进行归档。 事务性资料以工作类型为最小留存单位,结合事务性业务年度计划设置各项工作的电子版存储文件夹分类存放资料;纸质材料则根据工作类型及年度设置档案盒分类存放。 2 推进业务流程管理平台建设 按照模块化业务流程管理体系构建的思路及“整体规划、模 块区分、局部闭环、横向独立、纵向到底”的原则,进行模块化流程管理平台设计。 业务流程管理平台依据模块化业务流程体系分为项目、事务性工作、资料三部分,选择可进入相应的界面。 项目部分分为总览显示界面、过程显示界面及评价显示界面。总览显示界面以项目名称为数据条目录入项目基本信息,并能展开生成流程树,对项目流程一目了然。其与过程显示界面联动,当过程界面有数据变化时,总览显示界面相应变化;过程显示界面按体系结构分为计划、执行、检查、处理模块,共享同一界面,模块内容可自定义添加或删除,具备流程录入灵活性;评价显示界面包括各项目数据统计及分析功能,并能生成项目情况报告。 事务性业务流程部分分为总览显示界面、过程显示界面及评价显示界面。总览显示界面以工作类型名称为数据条目录入项目基本信息,并能展开生成流程树,对工作流程一目了然。其与过程显示界面联动,当过程界面有数据变化时,总览显示界面相应变化;过程显示界面按体系结构分为计划、执行、结果、总结模块,共享同一界面,模块内容可自定义添加或删除,具备流程录入灵活性;评价显示界面包括各项目数据统计及分析功能,并能生成项目情况报告。 资料部分为资料留存情况统计显示界面,具备录入及显示资料留存情况功能。 全流程管理平台具备与全流程管理工具联动功能,即将全流程管理工具模板导入平台,即可快速录入平台数据,同时可以随时将平台数据导出为各项全流程管理工具,方便工具生成。 全流程管理平台同时具备说明功能、规划提醒功能、资料归档功能、模板导出功能。说明功能可以提前录入某项工作说明,并在流程录入中某个节点显示该阶段需要做的工作说明及注意事项;规划提醒功能则是根据个节点内容对月度或季度工作内容进行提醒预告,保证工作计划按期执行;资料归档功能是根据节点内容可以导入相对应的资料于桌面终端制定磁盘位置,便于电子版资料集中管理;模板导出功能可将某项工作所需模板提前导入平台,并在工作流程执行到该阶段时可以导出模板,便于录入。 3 结束语 通过该流程平台,可将企业各项工作流程进行优化规范,职责界面清晰,各种业务梳理更为顺畅,工作时效性大幅(转下页) 模块化业务流程管理平台设计 易克难,贾自杭,纪 璐 (国网河北省电力有限公司培训中心,石家庄 050000) 摘要:随着国家经济的不断发展以及科技的不断进步,电网行业也走向了技术更新的快车道,企业改革逐步进入深水区,这就对如何高效、规范地开展企业业务管理工作提出了新的要求。本文提出一种模块化业务流程管理平台设计,即以模块化的业务流程体系为设计思想,通过信息平台开展针对项目、事务性工作、资料的管理工作,大幅提升信息管理工作效率和质量,加强管理工作规范性。 关键词:工作效率;企业管理doi :10.3969/J.ISSN.1672-7274.2019.08.228中图分类号:F272 文献标示码:A 文章编码:1672-7274(2019)08-0282-02

模块化的优点与方法

1 制造业面临的挑战 随着中国加入WTO,中国经济进一步融入世界经济,中国在世界经济中扮演着越来越重要的角色。在这样的大背景下作为中国经济增长引擎的制造行业中蕴藏着巨大的市场机遇,但同时竞争也越来越惨烈,中国的制造业同样面临者巨大的挑战。 要想赢得未来竞争的胜利,中国的制造业企业必须通过优化整个产品生命周期的业务链来缩短产品上市时间、提高产品质量、降低成本,同时还要不断通过研发创新来满足客户的变化需求。技术的飞速进步,引起产品工程越来越复杂,企业必须在不断变化的环境中应付越来越复杂的工程技术,随着客户对产品个性化需求程度的增加,也导致产品定制化趋势越来越明显,企业必须创建数量庞大的产品系列来满足客户不断变化的需求。企业必须同时具备以下的能力才能够应对挑战:持续提高的创新能力,使产品的科技含量越来越高,以满足客户变化需求;不断缩短产品上市时间,取得竞争优势;不断强化成本控制能力,通过优化产品全生命周期内的成本、研发、生产、物流、销售和服务等环节控制产品总成本,取得产品价格优势;持续的质量改进能力。 企业一方面必须利用产品的批量化、标准化和通用化来缩短上市周期、降低产品成本、提高产品质量,另一方面还要不断地进行产品创新使产品越来越个性化,满足客户的定制需求。这样,如何平衡产品的标准化、通用化与定制化、柔性化之间的矛盾,成为赢得竞争的关键能力。 平台化、模块化的产品设计和生产可以在保持产品较高通用性的同时提供产品的多样化配置,因此平台化、模块化的产品是解决定制化生产和批量化生产这对矛盾的一条出路。 但是,企业中庞大的激烈变化的产品数据仅仅依靠手工方式来管理是很难做到准确性、完整性、及时性和可追溯性的要求的。因此,将企业产品平台化、模块化的管理创新成果与信息系统的建设结合起来是很好的解决方案。要解决产品的模块化管理,PDM产品无疑是一种很好的选择。 2模块的概念

基于平台的模块化 定制化

龙源期刊网 https://www.wendangku.net/doc/064602868.html, 基于平台的模块化+定制化 作者:邱燕娜 来源:《中国计算机报》2015年第19期 获取最大利润是每个企业生存发展必然的选择,其前提是企业必须遵从法律、法规。因此,每个企业的领导都非常重视企业经营的合法、合规性,企业法务部门的重要性也日益凸显。 由于每个企业所处的行业不同,不同企业的管理方式也各不相同,使得每个企业的法务部门的职责也不同。通常来说,法务部门的职责包括合同管理、纠纷管理、知识产权管理、工商事务管理、法人治理结构、重大决策管理、规章制度的制定与管理、风险控制、外聘律所管理、法律队伍组织和合规管理等。如此复杂的职责给企业法务信息化建设带来了一个很大的难题:如何找到一个能够涵盖全部功能的成熟的法务系统? 面对纷繁芜杂的法务管理信息化市场,怎样剥茧抽丝,找到适合企业自身的法务管理信息化平台?北京慧点科技有限公司(简称慧点科技)风险管理与控制事业部解决方案及产品中心总监刘爱和给出了一个明确的答案。 “现在,每个企业法务部门的职责定位不尽相同,因此没有一个系统平台可以满足企业全部的法务管理信息化需求。不仅如此,即使管理职责相同,不同企业在具体流程和具体执行细节上也存在很多不同。”刘爱和分析。 那么,有没有解决办法呢?当然有!刘爱和认为,那就是模块化功能设计+个性化定制开发。 刘爱和认为,企业法务管理信息系统不应该,也不可能是大而全的系统,而应该是灵活的可插拔式的模块化系统。也就是说,要将企业的各个法务管理职能模块化,每个模块保持其内部功能的完整和独立性;对于可能涉及不同模块间集成的内容,基于可能的集成关系,采用不同的适配机制,通过配置的形式实现模块间的自由组合。 慧点科技是国内法务信息化领域起步最早的厂商之一,慧点科技在长期的企业法务信息化实践中积累了大量的法务管理模块,如合同管理模块、用印管理模块、法人授权管理模块、纠纷管理模块、知识产权管理模块、工商事务管理模块、规章制度管理模块、外聘律所管理模块、法律队伍和机构管理模块、风险控制管理模块、普法管理模块等。在实际的项目实践中,只需要根据企业用户的管理职能和需要来选择相关模块,通过简单配置即可完成模块间的集成。这样一方面从单体模块来看,如果模块的功能和企业的管理要求有差别,那么可以直接对模块进行定制开发,不影响模块间的集成;另一方面,通过灵活的模块适配机制,可以降低由于用户选择不同模块导致的系统重复开发的工作量,缩短开发周期。

QT C 图形界面编程技术

通识教育课程论文 课程名称: C++图形界面编程技术 _ 学院 _ 专业班级 学号 姓名爱尔兰(KEN 任课教师 LZ 论QT的信号/槽机制 ——WindowCut—一个简单实用的截图软件在图形界面编程技术,我比较喜欢QT这个框架,喜欢它的一次编写,到处编译这种方式,既高效,移植性又强,我试过在window下用Qt creator开发一个软件,然后直接将工程放到linux ubunto 下,再次用Qt creator打开之前的工程,很简单地直接编译一次,一个代码也不用改,就将该软件移植到Linux下了,这一点很不错。。。 更重要的是,Qt为我们带来了全新的思想:将一个工程逻辑分解为多个组件,利用强大的信号/槽机制,竟然可使这个工程分解为相互独立,互不干扰的若干个部分。以下,我将通过介绍我的WindowCut截图软件的编写过程来分析这种思想。 界面: 截图过程: 截图后的效果: 思想:

这个软件由 1:主窗口mainWindow,2:全屏截图器 FullEdit FEdit(就是半透明的全屏的组件)和 3:截图查看器 PicSee PSee 组成,这3部分都是互相独立 的类,在类的定义中,类与类之间无直接的函数调用,这些组件定义了若干个 signal/slot,而这3个类的实例是通过 signal/slot机制偶合在一起的。 mainWindow上的Cut按键被按下后,mainWindow就隐藏,并发出一个StartCut()的信号,表示“开始截图”。。然后FEdit接收到StartCut()信号后,它就初始化, 并记录下此时刻的屏幕背景,最后全屏显示半透明的背景。。。然PSee接收这个信号后,它就隐藏起来。。 当用户在全屏截图器FEdit的全屏半透明背景上选定好区域后,FullEdit就会隐藏窗口并发出FinishCut“截图完成”的信号(信号中包含了截图的地址),然后截图查看器PSee接收到FinishCut信号及其中的截图的地址后,就会显示窗口,并在窗口上面绘制截图显示给用户,而mainWindow收到FinishCut信号后,就会显示主窗口,并使save按钮可见。 此后,用户点击save按钮并成功保存后,mainWindow就会发出PicSaved“图片保 存信号”,然后PSee会收到此信号,然后隐藏。 大概的流程就是这样。 软件的功能是简单的,但是,里面的思想却很有意义的。 对于mainWindow,它只管发射信号,压根儿不用知道有多少个对象收到这些信号(当然也不可能知道),并且当收到特定的信号时,就去执行信号处理器slot就可以了,FullEdit 和 PicSee也一样。。因为具体哪个信号与哪个槽有连接关系,不是在类的定义在确定的,而且信号/槽的连接是面向类的实例的(所以不可能由类的抽象或定义来确定),QObject::connect (sender, SIGNAL,receiver,SLOT)这个函数要传递对象的实例作参数,所以无法对抽象(未实例化)的对象之间建立连接关系。这些信号/槽的连接是在类外定义的(上述3个对象的连接关系是在中面向这3个类的具体实例来定义的,与类的定义无关系)。 互相独立的组件+ 可靠的信号/槽机制=功能完善的软件

VC++图形界面开发与应用

VC 2004 论文题目VC图形界面开发与应用学生姓名指 导教师年级2004级专业计算机科学与技术学院计算机科学与信息工程2008年3月1日课题来源:指导教师与学生自选相结合课题研究的目的和意义:目前,VC 作为一个主流的开发平台一直深受编程爱好者的喜爱,熟练使用VC进行图形界面的开发,是当下图形开发领域的一个比较重要的手段和技能,Windows图形界面就是VC开发的经典展现,通过对经典的分析学习使其熟练使用VC设计极具特色的图形界面。VC是Windows平台上的C编程环境,学习VC要了解很多Windows平台的特性并且还要掌握MFC、ATL、COM等的知识,难度比较大。Windows下编程需要了解Windows的消息机制以及回调(callback)函数的原理;MFC是Win32API的包装类,需要理解文档视图类的结构,窗口类的结构,消息流向等等;COM是代码共享的二进制标准,需要掌握其基本原理等等。使用VC进行图形界面的开发与应用是同样是时下图形界面开发的一种主 流开发手段,工控机、模拟器、以及各种支持Window CE 的消费类电子产品的操作界面各种、软件应用产品等都是使用VC开发的,所以VC的应用领域相当广乏,对于希望进行图形界面开发的同学来说,学好和熟练使用VC是设计图形界面的基础,同时强大的VC开发工具也提供了更多更便捷的开发环境,使开发工作更加的丰富化、技巧化、简便化。

国内外同类课题研究现状及发展趋势:VC图形界面的开发是当今开发的一个热门领域,熟练使用VC设计极具特色的图形界面是立足于开发领域的一样重要的技能和手段。在当今的图形界面领域国外技术一直处于垄断状态,所以在国内开发市场急需相关的技术类人才,所以发展空间极其广大,努力熟练相关工具以及成熟的事例经验丰富自己的开发技 术才是一条发展的捷径,只有设计极具特色的图形界面才能在激烈的图形界面市场具有一定竞争力。课题研究的主要内容和方法,研究过程中的主要问题和解决办法:主要内容:1、绪论2、Windows用户界面制作基础3、按钮控件与编辑控件4、组合框与列表视图控件5、菜单与工具栏6、应用与实例7、总结方法:理论结合实际,大量阅读相关资料主要问题:1、VC的编程思想2、图形界面的开发过程解决方法:1、通过实际操作和查阅相关资料2、在学校机房实验课题研究起止时间和进度安排:起止时间2008年1月——2008年5月进度安排(指导教师可根据实际情况适当安排)2008-1-15——2008-3-1 确定论文题目,查找资料,撰写开题报告2008-3-2 ——2008-3-20 查找资料,进一步分析题目研究内容2008-3-21——2008-4-10 撰写论文并送老师第一次审查2008-4-11——2008-4-30 论文第 二次修改,老师第二次审查2008-5-1 ——2008-5-10 论文第三次审查、修改并作毕业答辩前准备交论文,答辩课题研

产品平台CBB和模块化产品开发

精品培训课程 课程名称 产品平台和模块化设计 Product Platform and Common Building Block Design 客户需求 技术平台搭建,推行标准化、模块化 汽车零部件表面处理及检验规范,因我们是做汽车电子的,所以需加强对汽车的设计、制造、测试等过程的了解,但不是简单的了解汽车的构造,而是了解汽车制造过程相关联的基础技术知识。 参加对象 企业CEO/总经理、研发总监、研发经理/项目经理/技术经理/产品经理、系统工程师、产品规划专家 课程背景 随着产品生命周期越来越短,市场竞争日趋激烈,能否快速地推出客户/市场需要的产品将直接关系到一个企业能否保持持续赢利的能力。 作为企业的领导者及研发管理者,您一定面临着以下问题或挑战: 如何实现基于产品平台去开发产品? 如何规划产品平台? 如何进行技术规划? 如何进行CBB(公共共享模块)设计? 如何保障从组织及绩效方面来保障与牵引企业基于平台进行产品开发? …… 课程基于国际先进成熟的平台化开发管理模式、工具及方法,并结合国内优秀研发管理企业的最佳实践,针对中国企业的实际,帮助您全面掌握平台化研发管理的核心思想、组织模式以及系统的方法与工具,进而实现平台化、模块化开发,提升企业的核心竞争力。

●了解优秀研发企业的平台化产品开发的管理模式; ●分析业界公司在产品平台、技术管理中的误区,分享成功经验; ●理解产品平台的基本概念、平台化开发的价值与意义; ●理解产品平台管理、技术路标规划、技术开发的流程及支撑体系; ●掌握平台规划的过程、工具与方法 ●掌握技术研发的过程与方法; ●掌握组件设计的过程、工具与方法; ●掌握平台化研发的组织与绩效管理体系设计 ● 培训课时 12小时(2天) 讲师介绍 李晋资深顾问 教育背景:上海大学,计算机工程系,硕士学位 专业背景: 近17年的软件从业经验,一直从事通讯业软件开发和研发技术管理工作,先后担任过软件开发工程师、IPD项目流程系统工程师(SE)、项目经理、BPM高级经理、研发质量总监等职位。曾在天津NEC通信任软件开发工程师,负责NEAX61E程控交换机网管软件的开发工作;而后在华为工作近5年,在职期间,作为项目经理,负责开发需求管理工具,以及其他CMMI工具,流程和工具的建设,成为公司CMM 5级流程的重要组成部分,并负责产品和项目级的软件质量管理工作及担任《需求管理》《详细设计》《配置管理》《单元测试》四门课程培训讲师。后进入展讯通信7年,先后担任了质量经理、IPD项目小组系统工程师与研发质量研发质量高级经理,负责公司研发质量相关的各项管理工作,负责IPD集成产品开发流程优化,流程自动化工具的开发和在公司的推广工作;精通C, MS SQL Server, C#, https://www.wendangku.net/doc/064602868.html, 等不同平台的开发语言,7年的CMM经验,其中2年多CMM5级经验,5年CMMI3级经验,对软件流程和质量管理有丰富经验。 13年嵌入式软件、硬件和芯片研发,生产制造经验,在某大型通讯公司,参与了RNC OM子系统研发。开发平台VxWorks。在展讯,参与了手机软件系统的开发。平台:ARM ADS1.2。在展讯,参与了ASIC design,PCB Layout,嵌入式软件硬件芯片等质量管理流程的建立。 7年研发质量管理经验,涉及到软件、硬件和芯片开发。特别是软件开发,有过参与华为CMM

图形用户界面开发技术

第1卷第1期2002年3月 江南大学学报(自然科学版)Journal of Southern Yangtze U niversity(N atural Science Edition) Vol.1 No.1 Mar. 2002  文章编号:1008-8547(2002)01-0038-04 收稿日期:2001-11-21; 修订日期:2001-12-30. 作者简介:朱雪峰(1974-),男,河南雎县人,计算机应用硕士研究生. UN IX 平台基于Motif 环境的 图形用户界面开发技术 朱雪峰, 顾耀林, 曹莹 (江南大学信息工程学院,江苏无锡214036) 摘 要:通过对UN IX 系统图形用户界面开发技术的研究,提出了GU I 的体系结构,并在此基础上进行了开发层次和面向对象技术的分析,最后对UN IX 系统图形用户界面开发中的图形演示技 术给出了详尽的实现方法. 关键词:图形演示;图形上下文;图形用户界面中图分类号:TP 391.41文献标识码:A Study of G raphical User Interface Development T echnique B ased on Motif in UNIX ZHU Xue 2feng , GU Yao 2lin , CAO Y ing (School of Information Technology ,S outhern Y angtze University ,Wuxi 214036,China ) Abstract :Based on the study of graphical user interface development technique on UN IX ,a three 2layer GU I structure is presented ,and development hierarchy and Object 2Orient technique based on this structure is analyzed ,In the end ,further purpose realizing method of graphics rendering technology in the development of graphical user interface in UN IX are showed in this paper.K ey w ords :graphics rendering ;graphics context ;graphical user interface 计算机人机界面HCI 的发展经历了以下几个 阶段:即从原始的操纵板界面过渡到字符界面,再发展到现在的图形用户界面GU I ,最终必然会过渡到三维虚拟现实VR 用户界面.图形用户界面的出现,是计算机发展进程中的一个重要阶段.它使用户界面向方便、友好和一致性的方向迈出了一大步.同时它掩盖了计算机操作的复杂性,使人机交互变得更加直观、简单、易于学习和掌握,从而为计算机的进一步普及开辟了道路. 目前,微机Windows 平台上的GU I 开发工具 已经很多.但是开发GU I 决不仅限于Windows 平台,在小型机、工作站、甚至某些高档微机上,UN IX 仍占明显优势.UN IX 下的GU I 开发工具主要有两种:OSF 的Motif 和U I 的Open Look.这两种不同的开发工具,无论在编程风格还是在界面风格上都有较大的不同.从图形用户界面开发角度进行分析,虽然这两种组件集并没有本质的差别,但就程序开发的灵活性、工具箱的统一性以及国际化支持

c语言开发项目--C语言实现图形界面输出

图形函数 图形函数 Turbo C提供了非常丰富的图形函数, 所有图形函数的原型均在graphics. h 中, 本节主要介绍图形模式的初始化、独立图形程序的建立、基本图形功能、图 形窗口以及图形模式下的文本输出等函数。另外, 使用图形函数时要确保有显示 器图形驱动程序*BGI, 同时将集成开发环境Options/Linker中的Graphics lib选 为on, 只有这样才能保证正确使用图形函数。 1. 图形模式的初始化 不同的显示器适配器有不同的图形分辨率。即是同一显示器适配器, 在不同 模式下也有不同分辨率。因此, 在屏幕作图之前, 必须根据显示器适配器种类将 显示器设置成为某种图形模式, 在未设置图形模式之前, 微机系统默认屏幕为文 本模式(80列, 25行字符模式), 此时所有图形函数均不能工作。设置屏幕为图形 模式, 可用下列图形初始化函数: void far initgraph(int far *gdriver, int far *gmode, char *path); 其中gdriver和gmode分别表示图形驱动器和模式, path是指图形驱动程序所 在的目录路径。有关图形驱动器、图形模式的符号常数及对应的分辨率见表2。 图形驱动程序由Turbo C出版商提供, 文件扩展名为.BGI。根据不同的图形 适配器有不同的图形驱动程序。例如对于EGA、VGA图形适配器就调用驱动程序EGA VGA.BGI。 表2. 图形驱动器、模式的符号常数及数值 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 图形驱动器(gdriver) 图形模式(gmode) ─────────── ─────────── 色调分辨率 符号常数数值符号常数数值 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ CGA 1 CGAC0 0 C0 320*200 CGAC1 1 C1 320*200 CGAC2 2 C2 320*200 CGAC3 3 C3 320*200 CGAHI 4 2色640*200 ─────────────────────────────────── MCGA 2 MCGAC0 0 C0 320*200 MCGAC1 1 C1 320*200 MCGAC2 2 C2 320*200 MCGAC3 3 C3 320*200 MCGAMED 4 2色640*200 MCGAHI 5 2色640*480 ─────────────────────────────────── EGA 3 EGALO 0 16色640*200 EGAHI 1 16色640*350 ─────────────────────────────────── EGA64 4 EGA64LO 0 16色640*200 EGA64HI 1 4色640*350

汽车平台研发新趋势:生产模块化零部件通用化

汽车平台研发新趋势:生产模块化零部件通用化 前言 1.汽车平台概念 其实“汽车平台”并没有一个确切的定义,概念较为笼统,主要体现在汽车的研发阶段。简单而言就是开发过程中用一个平台可以同时承载不同车型的开发与生产制造,产生出外形、功能都不尽相同的产品。在制造方面,同一平台的产品大量采用通用化的零部件和总成,大大降低了制造成本和采购成本;在研发方面,一个平台上实现了技术突破,等于这个平台上搭载的所有产品都实现了技术突破,对研发、对产品的供应链和服务链都产生了革命性的影响,同时为实现世界范围的兼并重组。 2. 发展历史 汽车的大工业生产方式发生过三个转变: 生产流水线方式 20世纪初,福特公司在制造T型车时创造出影响整个世界工业的生产工艺——生产流水线,大幅度降低了生产周期和成本,同时也降低了售价。流水线方式作为汽车生产的主流方式一致延续到80年代。 汽车平台式生产 随着科技进步和市场的变化,一个型号的产品生命周期越来越短,大批量生产方式逐渐变得不能适应竞争。在80年代,产生了一种称为"汽车平台"的概念,“汽车平台”是由汽车制造厂商设计的,几个车型共用的产品平台。汽车平台与车辆的基本结构相关,出自于同一平台的不同车辆具有相同的结构要素,例如车门立柱、翼子板、车顶轮廓等。同一平台的车型的轴距一般情况下是相同的,同时一些配件是通用的。有时候很多种不同品牌的车在一个平台,而同一品牌的不同年度车型反而不在一个平台。 “模块化”生产方式 在"模块化"生产方式下,汽车技术创新的重心在零部件方面,零部件要超前发展,并参与汽车厂商的产品设计。例如德尔福系统公司相继推出了座舱、接口盘制动、车门、前端、集成空气/燃油等模块。而汽车厂商方面则以全球范围作为空间,进行汽车模块的选择和匹配设计,优化汽车设计方案,将汽车装配生产线上的部分装配劳动转移到装配生产线以外的地方去进行。采用"模块化"生产方式有利于提高汽车零部件的品种、质量和自动化水平,提高汽车的装配质量,并缩短汽车的生产周期。 提高零部件共通率模块化平台成跨国车企新宠 日前,以大众、丰田为代表的跨国汽车集团,正在致力于新模块化汽车平台的研发工作,预计到2015年之后,这些新平台将纷纷投入使用,为跨国车企的成本控制做出重要贡献,从而大幅提升其在汽车行业的竞争力。 日系车企

相关文档
相关文档 最新文档