`
庄表伟
  • 浏览: 1160674 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

软件设计中的分解难题

阅读更多

很有意思的分析,我也很想直接加入这个讨论,但是沿着T1的消息分派的思路往下谈,一时也不知从何说起,就扯远一点吧。

通常我们做软件开发,往往是最难的事情,就是分解。

对于将要做出来的那个系统,进行合理的分解。庖丁解牛,是一个不错的“隐喻”。解牛之前,也只能看得到牛的“表象”,对于牛的身体结构并无了解,贸然去做分解切割的工作,就会吃力不讨好。但是庖丁的活毕竟还是容易的,因为不同的牛的身体结构,还是大同小异的。

更加困难的是,我们面对着一个不同的动物,以前可能没有见过,当然,我们希望他不过是牛的一个变种或者近亲,这样过去的经验,还能派上一些用处。

再进一步,这个被我们分解的动物,并不是死的,他还是活的,不但会不断的动来动去,甚至还会长出些新的器官和骨骼来。这就太恐怖了。

通常我们所做的分解的决策,一般会从上自下的进行(分解这个词,就隐含了这个意思)。这样的分解有两层意思:
一是:在本层面看来,几个部分可以相对独立的分工的。
二是:从上一层面看来,这几个部分是为了同一个目的合作的。

麻烦的就是,当这种分解逐渐细化之后,原本就不太了解的细节浮现出来了,这下才发现,原本的那种分解,并不合理,需要在某一层次上,重新分解,最糟糕的,就是需要整个系统设计推倒重来。

一般我们能够用到的分解策略,也无非就是两种,纵向的业务分解,横向的技术分解,然后再把这横向纵向的参合在一起,搞成更加复杂的网状结构。。。

从上自下的分解,可以分为两个重要的阶段,一个是与语言无关的分解,一个是与语言相关的分解。前者,可以称之为设计,后者,可以称之为实现。而T1 探讨的内容,我的理解是:在实现阶段,不同语言,对于各种分解需求的支持。不同的消息分派机制,对于同样的分解、再分解需求的支持能力是不同的。这也就是 各种语言,在实现同样的设计时的难易区别。当然,我们也经常会碰到这样的情况,特定语言的功能限制,会迫使我们去修改原本很自然的,语言无关的设计结构, 这就是无奈但自然的现象了。

再进一步探讨,为什么设计这么困难,因为存在未知的复杂性。灵活方便的语言,有助于开发设计人员,快速、轻松的调整已有的实现、甚至设计方案。而那 些使用死板、僵硬的语言的工程师们,就要为此付出更大的努力。这也正是我为什么要发明一种新的语言的原因。在我看来,语言应该更进一步,对于设计,尤其是 开发过程中的再设计,提供更好的支持。

关于DJ的开发思路
http://zbw25.spaces.live.com/Blog/cns!1pA6-3FOo9yNp_4lmEHxdDqA!344.entry

为什么DJ要将Event提出作为语法概念
http://zbw25.spaces.live.com/Blog/cns!1pA6-3FOo9yNp_4lmEHxdDqA!358.entry

这样的思路,其实是一种实验主义的方法,而再次之前,软件设计,要么就是凭借工程师在丰富经验之后,具有的技术直觉。要么就是试错,再试错,在付出了巨大的成本之后,完成一次系统开发。

先说到这里吧......

原本的讨论帖《失踪的链环》
http://www.iteye.com/topic/25649

分享到:
评论

相关推荐

    软件工程_系统设计_复杂问题分解_软件开发指导_1741868737.zip

    而复杂问题分解则是系统设计过程中不可忽视的一环,它要求软件工程师能够将一个看似庞大无序的问题,通过适当的策略和技术分解为一系列更小、更易管理的问题单元。 在系统设计阶段,软件工程师需要根据问题的性质和...

    软件设计师讲义

    在当今信息高速发展的社会中,软件设计师的角色日益重要,不仅要求他们拥有扎实的理论知识,还要求他们能够紧跟时代潮流,掌握最新技术。《软件设计师讲义》正是为了满足这一需求,为准备参加软件设计师考试的考生...

    软考 软件设计师 复习资料

    - **RSA**: 基于大数分解难题的安全加密算法。 - **报文摘要**: 通过哈希函数生成固定长度的摘要,用于验证数据的完整性。 - **PKI体制**: 公钥基础设施,保证数字证书的有效性和真实性。 - **CA的私钥对数字证书...

    软件项目文档(项目开发计划,需求说明书,设计概要,详细设计,安装计划,软件合同,....)

    需求说明书是软件设计和开发的基础,确保产品满足用户期望。 3. **设计概要**:设计概要(也称为概要设计或系统设计)是将需求转化为技术实现的初步步骤。它涵盖了架构设计、模块划分、接口定义、数据结构和算法...

    软件详细设计说明书

    通过以上内容,软件详细设计说明书成为连接需求分析与实际开发的桥梁,它将复杂的软件系统分解为可操作的部分,为实现高质量的软件产品奠定了坚实基础。在编写和使用过程中,应不断更新和优化,以适应项目的发展和...

    基于JAVA的RSA文件加密软件的设计与实现源码+论文.zip

    RSA加密算法是一种非对称加密算法,它基于数论中的大数分解难题,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年共同提出,是目前广泛使用的公钥加密算法之一。在RSA算法中,每个用户拥有两个密钥:一个公钥和...

    软件架构设计

    软件架构设计是软件开发过程中至关重要的一环,它涉及了软件工程的核心问题,包括如何将一个复杂系统分解为不同部分,各部分间如何交互,以及如何保证软件系统的质量特性。架构师作为负责制定软件架构的角色,其任务...

    软件分析方法与设计

    面向对象设计(Object-Oriented Design, OOD)是一种以对象为中心的软件设计方式,它强调的是如何组织软件系统来满足用户的需求,并且使系统具有良好的可扩展性和可维护性。面向对象设计的核心思想包括封装、继承、...

    08年上半年软件设计师答案

    【软件设计师】这一标签指的是国家软考(全国计算机技术与软件专业技术资格(水平)考试)中的一个级别,这个级别的考试主要面向那些从事软件分析、设计、测试和维护工作的专业人士。"08年上半年软件设计师答案"显然...

    浅谈计算机软件开发设计的难点及解决措施.docx

    软件开发环境的局限性是我国软件设计面临的另一个客观难题。与发达国家相比,我国的软件开发工具和环境仍有待完善。改善这一状况需要投入更多资源,提升开发环境的标准化和专业化,以支持更高效的设计和开发工作。 ...

    论文研究-正交软件体系结构设计和演化方法应用研究.pdf

    2. 正交软件体系结构模型:这是指将正交性原理应用于软件设计,形成的具体结构模型。模型中会详细描述不同维度之间的关系,以及如何通过这些维度组织软件系统的各个组成部分。模型是实现正交体系结构的基础,它通常...

    软件工程课程设计 网上书店

    - **关键问题:** 预估项目中可能出现的关键难题及其解决方案。 **4. 支持条件:** - **硬件资源:** 说明项目所需的硬件设施。 - **软件资源:** 列出项目所需的应用软件和其他工具。 - **人力资源:** 分析项目的...

    "Comsol BIC多级子分解技术:深度解析与高效应用",comsol BIC多级子分解 ,comsol; BIC; 多级子分解; 算法; 数值模拟,COMSOL BIC多级子结构分解法

    例如,在COMSOL软件中,多级子分解技术的实现细节关乎到软件的性能优化和用户接口设计。在探索多级子分解技术实现的过程中,科研人员和工程师需要对软件的内部机制有深入的理解,并在此基础上开发新的算法和功能。 ...

    基于组件的河网水流模拟软件的设计

    本文探讨了河网水流模拟软件的设计问题,特别是在传统面向过程的软件设计方法面临的难题以及基于组件设计的优势。在河网水流模拟领域,传统的面向过程编程方法存在一些问题,如程序结构复杂、数据和函数关系混乱以及...

    基于JAVA的RSA文件加密软件的设计与实

    RSA算法是由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)在1977年共同提出的,基于大数分解难题。RSA算法的安全性在于,虽然将两个大质数相乘得到的结果容易...

    (完整word版)软件详细设计说明书(例).doc

    - 结构:采用某种设计模式(如模块化、面向对象设计等)来组织和分解软件系统,描述各个模块及其相互关系。 - 功能需求与程序的关系:将需求细化为可执行的代码逻辑,说明每个功能模块如何映射到具体的程序单元。 ...

    软件设计师 考试(复习笔记+重点总结)

    - RSA算法:基于大素数分解难题的安全性。 以上是对软件设计师考试中计算机系统部分的基础知识点的详细阐述。这些知识点涵盖了硬件基础、数据表示、存储管理、输入输出技术以及安全加密等多个方面,对于备考软件...

    基于LabVIEW的EMD降噪软件设计与实现

    在这一背景下,我们提出了一种基于虚拟仪器技术的解决方案,即利用LabVIEW软件设计实现经验模态分解(EMD)算法,以达到降噪的目的。 首先,我们来简要了解一下经验模态分解(EMD)算法。EMD算法是一种时频分析方法...

    EBS分解培训提纲(铁路工程管理系统).pdf

    9. 面临的挑战和解决方案:探讨在实施EBS过程中可能遇到的挑战,比如分解过程中的过度或不足、跨专业协作的难题等,以及可能的解决方案和优化措施。 10. 案例研究和经验分享:通过其他行业或铁路工程的成功案例,...

    基于JAVA的RSA文件加密软件的设计与实现.zip

    核心功能部分,“基于JAVA的RSA文件加密软件的设计与实现”这一文件涵盖了软件设计的全部内容。文件首先从需求分析入手,确定了软件需要实现的功能,比如文件加密、解密、密钥管理等。随后,软件架构被设计成符合...

Global site tag (gtag.js) - Google Analytics