软件设计之关于抽象的理解篇
建立时间:
2009
年
6
月
18
日
17:30:57
作者:黄奕鹏
摘要:
介绍抽象这个概念,以及和软件设计的关系
抽象是软件设计过程中最常用的方法,可以说是任何时候都要用。做软件开发已经好多年了,今天我要好好的剖析一下抽象的本质,以及如何抽象。因为水平有限,只能说到这个程度,有什么错误希望大家不吝指出。
概念部分
首先,抽象是什么?
大家都对抽象这个词有一定的理解,但要正真了解全面的含义还要查查字典。
抽象有好多总定义:
1
.从许多事物中,舍弃个别的、非本质的属性,抽出共同的、本质的属性的过程,是形成概念的必要手段。
(
摘自
http://baike.baidu.com)
2.
不能或没有具体经验到的,只是理论上的;空洞不易捉摸的。与“具体”相对。
(
摘自
http://baike.baidu.com)
3.
抽象化是指以缩减一个概念或是一个现象的资讯含量来将其广义化的过程,主要是为了只保存和一特定目的有关的资讯。例如,将一个皮制的足球抽象化成一个球,只保留一般球的属性和行为等资讯。
(
摘自
http://zh.wikipedia.org)
我是这样理解的:抽象是为了某一个或多个目的在一定得经验和知识的基础上,将事物的非本质属性舍弃,保留本质重要的属性。
理论部分
下面我画了一张说明抽象的视图:
软件需求、架构设计、模型等都是思维活动的结果,其主要的思维活动就是抽象。
抽象结果有如下性质:
1.
抽象结果是有一定目的,是重要的信息,是指导未来行为的主要依靠。
如架构设计,如果抽象的有问题,他会导致一系列依赖与他的软件开发活动错误。所以在软件开发架构设计过程中要谨慎、要反复验证。
2.
抽象结果是依赖于经验和知识的,抽象过程可能是花了很多时间的。
不同的人对同一件事物的抽象结果是不同的,应该理解这种不同。如软件架构设计就是一个典型的这种问题,不同的人会有不同的设计结果。我们自己的结果不一定就比别人的好。
交流构架设计也是比较困难的。假如我们是一位倾听者,就应该努力的使自己的思路跟的上讲述者的思路。假如我们要把自己的架构讲给别人听,也应该考虑倾听者的接受程度。
3.
抽象结果比原始信息更加精炼,有助于对原始信息的本质把握。
要多学习多锻炼抽象思维方法,这样有助于指导其他的一切行为。
实践部分
下面讲讲关于软件设计这个抽象行为的一些想法
首先软件设计(抽象结果)的高水平地错误,可以使软件开发过程更加简单有序,可以使软件做的稳定可靠。如果抽象的不准确,有逻辑问题,这样的软件设计将起到反作用,甚至使整个软件开发失败。软件设计是应该多投入时间和脑力的,反复验证的,投入的时间不会白费。借用某本书上的一句话,软件设计应该做到不能再设计为止。其次,关于软件设计的交流问题,软件设计是一种抽象结果,大家对他的理解水平依赖于经验和知识以及投入的时间。所以软件设计中需要交流的部分,尽量要考虑到大家的接受程度。如果在默契的团队中交流软件设计会相对简单一些,如果在陌生的团队中交流软件会复杂一些。最后,软件开发过程中如果能够遇到默契的伙伴请大家珍惜。
其他部分
抽象程度的高低
这里讲的抽象程度高低是指对一个事物,我们想的深入了把各种关系都梳理简化了,就定义为抽象程度高,不太深入的抽象定义为抽象程度低。基于不同的目的应该控制好抽象程度。
抽象结果的交流
需要充分考虑的我们和交流对象的差异(经验、知识、能力)。抽象程度高的结果很容易使对方不能理解的,要理解也会花很多时间的。要理解,抽象是建立在一个人的经验的基础之上的。如果自己抽象的基础知识经验和别人非常不一样,应该理解别人很难接受(学习)这种抽象结果。
谢谢大家,耐心观看。主要是我的一些想法,即然看了就是朋友欢迎留言指教。
如果你想进一步了解抽象这个词,可以阅读如下内容:
http://baike.baidu.com/view/5293.htm
http://zh.wikipedia.org/w/index.php?title=%E6%8A%BD%E8%B1%A1%E5%8C%96&variant=zh-cn
- 大小: 18.1 KB
分享到:
相关推荐
### 关于抽象类和接口的两篇不错文章 #### 一、理解抽象类与接口的基础概念 在面向对象编程中,抽象类与接口是两个重要的概念,它们在Java语言中有着特殊的实现方式。抽象类(Abstract Class)和接口(Interface)...
总之,"走进设计模式之抽象工厂"这篇博客深入探讨了抽象工厂模式的原理、实现方式、应用场景及其优缺点,旨在帮助读者理解并有效地运用这一设计模式。通过阅读博客和分析提供的代码示例,开发者可以更好地掌握抽象...
本篇文章将深入探讨软件设计的基础,特别是数据结构这一核心概念,它对软件设计的影响深远。 数据结构是软件设计的基础之一,它关乎如何有效地组织和管理数据,以便于高效地执行各种操作。数据结构不仅包括数据元素...
《软件设计师教程(第3版)》中的"算法设计与面向对象篇"是软件开发领域的重要篇章,它涵盖了两个核心主题:算法设计和面向对象编程。这两个概念在现代软件工程中占据着至关重要的地位,是每个专业软件设计师必备的...
本篇文章将深入探讨软件设计中的界面设计,旨在帮助读者理解如何创建一个直观、易用且美观的用户界面。 首先,界面设计的核心是用户体验(User Experience, UX)。好的界面设计应以用户为中心,关注用户的感受、...
《计算机软件及应用数据抽象与面向对象的程序设计》是一门深入探讨软件开发核心概念的课程,其中重点讲解了数据抽象和面向对象编程的基本原则。本篇内容主要围绕着封装和同源这两个重要的设计原则进行阐述。 封装是...
Java抽象类是面向对象编程中的一个重要...正确理解和使用抽象类能够帮助我们设计出更加灵活、可扩展的软件系统。在实际项目中,根据业务需求和设计原则,合理地选择抽象类或接口,可以有效提升代码的可维护性和可读性。
在软件设计领域,设计模式是解决常见问题的模板或最佳实践。工厂模式和抽象工厂模式是两种常用的创建型设计模式,它们都与对象的创建有关,但各有侧重。本篇文章将详细阐述这两种模式的核心概念、应用场景以及它们在...
本篇将重点介绍"抽象工厂"这一设计模式,并结合C#语言的代码示例进行详细解析。 抽象工厂模式是一种创建型设计模式,它提供一个接口,用于创建相关或依赖对象的家族,而无需指定具体类。在C#中,我们可以利用接口和...
在软件开发领域,设计模式和体系结构是至...通过这些练习,学习者能够深入理解设计模式和体系结构的概念,提升软件开发的专业技能。同时,这些练习也鼓励学习者思考如何在实际项目中灵活运用这些知识,以解决复杂问题。
根据提供的文件信息,“软件设计师教程(第3版)数据库篇”是专为准备参加软件设计师考试的人员编写的。此书特别关注了数据库这一部分,为读者提供了丰富的理论与实践知识。 ### 数据库基础 #### 数据库的概念 ...
标题“基于模型的设计——MCU篇”指的是关于微控制器单元(MCU)的模型化设计方法。这种设计方法在现代电子系统设计中变得越来越重要,特别是在嵌入式系统领域。模型化设计可以视为一种从抽象的概念模型出发,通过...
这一章将讲解软件设计的原则和方法,包括模块化设计、抽象、信息隐藏、接口设计等。会介绍结构化设计和面向对象设计的区别和联系,以及如何使用类、对象、继承和多态等概念进行设计。此外,还将涉及设计模式,这是...
《2008年上半年软件设计师考试试题答案及试题分析》主要涵盖了软考中软件设计师这一级别的考试内容。这篇资料详细列出了2008年上半年两次考试(上午和下午)的试题答案,并对试题进行了深入的分析。上午试题的答案以...
《软件设计师教程(第3版)系统开发篇》是一部深入探讨软件设计与系统开发的经典教程。该书旨在帮助读者掌握软件工程的核心理念和技术,提升在实际项目中的设计能力。尽管描述中提到仅上传了第五部分,但我们可以从这...
通过本篇报告,我们可以深入理解软件架构设计的关键要素,包括但不限于目的、目标、驱动因素以及质量分析等方面。 #### 二、本次培训的心得 1. **心得概述** 本次培训加深了我对软件架构设计的理解,并为我在...
本篇文章将深入探讨几种经典的设计模式:模板方法模式、外观模式、代理模式、装饰器模式、桥模式、工厂方法模式以及组合模式。 首先,模板方法模式(Template Method Pattern)是行为设计模式的一种,它定义了操作...
本篇将深入探讨基于ARM的软件设计关键知识点。 1. **ARM架构理解** - **指令集体系结构(ISA)**:ARM使用RISC(Reduced Instruction Set Computer)设计哲学,提供高效能和低功耗的指令集。 - **处理器模式**:...
在软件设计领域,创建型模式是面向对象设计中的一种重要模式,主要负责对象的创建过程,使得代码更具可扩展性和灵活性。本篇文章将深入探讨三种常见的创建型模式:简单工厂模式、工厂方法模式以及抽象工厂模式。这三...