`
isiqi
  • 浏览: 16467178 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论
阅读更多

最近开发了蓝诺网店系统,发现里面很多代码相似,但有没有办法简单的分离出来,写共通方法,怎么样让程序代码更简洁。但一直没有头绪,也许水平问题。

所以最近每天都在看这方面的书,如果哪位朋友有好的请推荐下。

模块化的主要目的:

就是提高代码的可用性,可重用性,可读性等

下面有我几个待分清的概念,以及我收集整理的一些资料。

软件架构,组件,模块化设计,体系结构设计,分层

体系结构和软件架构是同一个概念,只是翻译不同。可以描述一个程序是如何工作的?各模块是如何协调工作的,是一个系统的蓝图。

一、软件架构(Architecture)

一般而言,架构有两个要素:

1.它是一个软件系统从整体到部分的最高层次的划分。

一个系统通常是由元件组成的,而这些元件如何形成、相互之间如何发生作用,则是关于这个系统本身结构的重要信息。

  详细地说,就是要包括架构元件(Architecture Component)、联结器(Connector)、任务流(Task-flow)。所谓架构元素,也就是组成系统的核心"砖瓦",而联结器则描述这些元件之间通讯的路径、通讯的机制、通讯的预期结果,任务流则描述系统如何使用这些元件和联结器完成某一项需求。

2.建造一个系统所作出的最高层次的、以后难以更改的,商业的和技术的决定。

架构的目标:

·可靠性(Reliable)。软件系统对于用户的商业经营和管理来说极为重要,因此软件系统必须非常可靠。
·安全行(Secure)。软件系统所承担的交易的商业价值极高,系统的安全性非常重要。
·可扩展性(Scalable)。软件必须能够在用户的使用率、用户的数目增加很快的情况下,保持合理的性能。只有这样,才能适应用户的市场扩展得可能性。
·可定制化(Customizable)。同样的一套软件,可以根据客户群的不同和市场需求的变化进行调整。
·可扩展性(Extensible)。在新技术出现的时候,一个软件系统应当允许导入新技术,从而对现有系统进行功能和性能的扩展
·可维护性(Maintainable)。软件系统的维护包括两方面,一是排除现有的错误,二是将新的软件需求反映到现有系统中去。一个易于维护的系统可以有效地降低技术支持的花费
·客户体验(Customer Experience)。软件系统必须易于使用。
·市场时机(Time to Market)。软件用户要面临同业竞争,软件提供商也要面临同业竞争。以最快的速度争夺市场先机非常重要。

架构的种类:

根据我们关注的角度不同,可以将架构分成三种:

·逻辑架构、软件系统中元件之间的关系,比如用户界面,数据库,外部系统接口,商业逻辑元件,等等。

  比如


图2、一个逻辑架构的例子


  从上面这张图中可以看出,此系统被划分成三个逻辑层次,即表象层次,商业层次和数据持久层次。每一个层次都含有多个逻辑元件。比如WEB服务器层次中有HTML服务元件、Session服务元件、安全服务元件、系统管理元件等。

  ·物理架构、软件元件是怎样放到硬件上的。
  比如下面这张物理架构图描述了一个分布于北京和上海的分布式系统的物理架构,图中所有的元件都是物理设备,包括网络分流器、代理服务器、WEB服务器、应用服务器、报表服务器、整合服务器、存储服务器、主机等等。


图3、一个物理架构的例子

二、组件(Component)概念
组件Component)是对数据和方法的简单封装。C++ Builder中,一个组件就是一个从TComponent派生出来的特定对象。组件可以有自己的属性和方法。属性是组件数据的简单访问者。方法则是组件的一些简单而可见的功能。
组件的定义有多种,但最常见有几种。组件是可互换的软件部分,它既是工业化系统的产物,也是工业第系统的动力。在.NET平台的组件层中,组件是以Assemblies的形式创建的。
.NET平台创建了组件,并将组件作为其基本的元素。从本质上看,.NET平台组件是一个用任何.NET语言以插件形式开发的可互换的软件部件,它可以与其他应用程序实现互操作。使用COM+服务的.NET组件被称作服务化组件,以示与.NET中标准的可管理组件的区别。
三、模块化设计
基本概念
1. 模块:模块是一个具有独立功能的程序,可以单独设计、调试与管理。
2.
模块的种类:
1)功能模块
2)控制模块
3.
模块化:按适当的原则把一个情况复杂、规模较大的程序系统划分为一个个较小的、功能相关而又相对独立的模块。
4.
模块化设计的策略(原则):
1)用自顶向下的方法进行系统设计:整体->局部。
2)按功能划分法把模块组成树状结构,层次清楚。
3)模块的大小要适中, <100行。
4)各模块间的接口要简单。尽可能使每个模块只有一个入口,一个出口。
5.
模块化设计的优点:
1)复杂系统化大为小,化繁为简
2)便于维护
3)提高系统设计效率(多人并行开发)
注:
模块化在不同的程序设计方法中是不同的,在结构化的程序设计中,模块化就是一个功能分解,逐步求精的过程。而在面向对象的程序设计中,主要是关于如何控制对象的粒度的问题。我说的模块化是软件工程中的模块化的意思,不知道你是不是这个意思。
分享到:
评论

相关推荐

    十四、模块化程序设计2.pdf

    在模块化设计中,需要思考如何将复杂问题划分成小问题,并将它们转换为模块化结构。 2. 编写串口通信的模块化程序 串口通信是一种常见的设备通信方式,适用于微控制器和其他外部设备之间的数据传输。在编写串口通信...

    微信Android模块化架构重构实践.pdf

    1. Android模块化架构概念:模块化架构是指将应用程序拆分为独立的模块,每个模块负责一块特定的功能。这种方式有助于提高代码的复用性,降低复杂度,提高系统的可维护性和可扩展性。模块化架构是目前大型Android...

    “C语言程序设计基础”模块化教学的探索.pdf

    在探究“C语言程序设计基础”的模块化教学过程中,本文作者袁园提出了一系列创新的教学思路和方法,旨在改善传统C语言的教学现状,提升教学质量,使得学生不仅掌握基础知识,还能培养解决实际问题的能力。...

    C语言,第3章模块化程序设计.pdf

    在学习这部分内容时,学生应该通过思考、讨论和练习来深入理解变量的存储属性,以及如何在模块化程序设计中有效地使用局部变量、全局变量、内部函数和外部函数。这不仅有助于提高编程技能,也为编写更大规模的软件...

    模块化案例教学在“C语言程序设计”课程中的应用.pdf

    【模块化案例教学在“C语言程序设计”课程中的应用】 C语言作为计算机科学的基础,是许多开发技术和编程技术的基石。它具有高级语言的易读性和低级语言的高效性,是学习其他高级语言(如C++、Java、Python等)的...

    机器人模块化编程教学的探索与实践.pdf

    在这样的背景下,毛敏、雷欢、雷黎智、何飞雄、何康和沈忱共同撰写的《机器人模块化编程教学的探索与实践》一文,提出通过模块化编程教学来改善机器人教育的现状,并以此推进教育解决方案的实施。该文详细分析了模块...

    基于模块化程序设计思想的Scratch教学实践——以《花朵缤纷》一课为例.pdf

    基于模块化程序设计思想的Scratch教学实践,是一种创新的教学方式,旨在通过趣味性的编程环境激发学生的学习兴趣,培养计算思维和相关技能。Scratch是一款由麻省理工学院(MIT)媒体实验室终身幼儿园团队开发的图形化...

    11程序设计实践6w-线程、模块化、时间函数和设计问题.pptx

    【模块化设计】模块化设计是将大型复杂系统分解成独立、可管理的小模块,每个模块专注于特定的功能。这样做的好处包括提高代码的可读性、可维护性和可重用性。模块之间通过接口通信,降低模块间的耦合度,提高系统的...

    jedis-ui:重新思考模块化 Web 应用程序

    标题“jedis-ui:重新思考模块化 Web 应用程序”揭示了一个关于Web应用程序模块化的创新项目。在当前的Web开发环境中,模块化是构建可维护、可扩展和高效代码的关键策略。Jedis-ui,从名字推测,可能是一个以...

    高职单片机原理及应用课程中模块化教学的应用.pdf

    本文探讨了模块化教学在该课程中的应用,旨在通过模块化教学方法提高学生的学习参与度、动手能力和思考能力。 首先,模块化教学的宏观教学思路需要合理选择模块,确立大方向。单片机原理及应用课程内容繁杂,可以将...

    模块化案例教学在C语言教学中的应用.pdf

    标题和描述中提到的“模块化案例教学在C语言教学中的应用”涉及的教学方法和理念是非常重要的,尤其对于提升编程学习者的兴趣和能力有着显著的作用。知识点包括以下几个方面: 首先,C语言是计算机程序设计领域的...

    单片机实验课模块化教学实验内容设置探索.pdf

    单片机实验课的模块化教学是一种新型的教学方法,它通过将教学内容分解为若干个模块,再结合专业的特点,从基础到创新分为多个层次,由简到难地进行教学。这种教学方式不仅可以提高学生的学习兴趣,还能帮助学生更好...

    毕业设计——模块化多功能实训箱实验指导书pdf资料.zip

    《模块化多功能实训箱实验指导书》是一份针对电气信息和电子信息专业学生进行毕业设计的重要参考资料,它旨在帮助学生深入理解和掌握单片机技术及其在实际应用中的运用。本指导书详细介绍了如何利用模块化实训箱进行...

    C语言程序设计课程教学思考与探索.pdf

    函数的使用可以提高程序的模块化和代码的重用率,这也是教学过程中需要强调的一个重要知识点。 在教学方法上,教师需要重视实践环节的重要性。通过上机实践,学生能够亲身体验程序的编写、运行和调试过程,理解抽象...

    模块化方法写扫雷小游戏

    主要是利用模块化方法将扫雷各个部分实现,game.c包含初始化数组rearray,数组的打印displaybroad,布置雷setmine,以及模拟寻找雷finemine 现有实现手法有待提高,有一下缺陷及改进措施 1.无法实现现有完整版扫雷的...

    Java程序设计立体化教材建设的思考.zip

    总的来说,"Java程序设计立体化教材建设的思考"旨在通过多元化的教学方式,激发学生的学习兴趣,提高教学质量,确保学生能够全面掌握Java编程技能,并具备适应技术发展的能力。这样的教材不仅适用于课堂教学,也是...

    浅谈对《MATLAB程序设计》课程基础教学内容的思考.pdf

    本模块重视程序设计的逻辑思维和实现技巧,帮助学生掌握程序结构的设计、调试和优化。 在教学实践中,李豪讲师提出提高学生程序设计能力的途径,其中包括对基础概念的准确理解、对重难点内容的深入讲解以及鼓励学生...

    回归初心,从容器化到组件化

    根据提供的文件内容,以下是对知识点的详细阐述: ### 容器化与组件化的概念 ...文档强调了软件工程在模块化过程中的重要性,并对可能遇到的问题提出了多种解决方案,为开发者提供了多维度的思考与实践方向。

Global site tag (gtag.js) - Google Analytics