对软件的思考
作为一个软件开发人员, 我, 工作了四年, 入行时间不长, 一直在JAVA领域做项目, 从JSP时代走过, 做过EJB项目, 维护过用procedure写的业务逻辑, 参与了银行系统(比较规范)的开发, 作过系统的售前方案,现在暂作项目管理, 虽然,每个项目都有它特有的行业背景和时代特征, 从一个程序员的角度去看这些项目, 无非让程序员实现起来感觉烦燥或困惑与否, 因为初级程序员的水平来没有这样的感悟能力, 所以, 部分人会选择继续学习, 学习语言的特性, 学习设计(模式), 学习项目架构, 学习操作系统, 学习业务知识等等, 正是这些知识的积累, 程序员开始成长, 变得充实而自信,更多的应对和解决实际问题. 但这些是项目的全部吗? 是否具备了这些知识, 就达到了项目架构师或系统分析师的要求? 现在我的回答: NO.
如何理解设计
那么什么是软件设计, 什么是软件的灵魂, 这是首先要回答的问题. 之前, 我的理解如下, 熟练使用几种设计模式, 软件能够灵活适应业务变更, 软件可以灵活配置, 等等. 虽然能达到这样要求的软件已比较接近答案, 但还没有达到真正设计的高度.
我的回答
基于业务模型(domain model)构建, 采用某种语言实现, 结合具体的框架和容器, 为展示层(view, 不一定有)提供
服务的完整解决方案.
domain model: 是对行业的业务建模, 行业的业务高度抽象和涵盖, 所有业务都可以从些引申, 我称之为项目的core, 这是项目的核心, 行业解决方案的核心, 即神.但, 只有些, 也不能称之为一个项目或框架.
语言/框架/容器(架构层): 这是实现手段,对domain model的实现, 即形. 这里涉及到操作系统, 通讯方式, 持久方案, 服务和流程设计,这里往往被是最容易被人们认为的设计部分,而没有一个完整的domain model作支撑, 这样的设计也不会走太远, 至少, 有一定的限制. 但,如果这个的设计能够被完成, 在业内也是一个不错的软件, 也能做到被人称道.
view: 用户接口, 即外衣.
为什么ror/grails不能被应用到企业开发领域, 很大程序上是由于它不能对domain model的支持, 软件的灵活性是复杂应用条件下, 显得无能为力.现在大部分软件也没有domain model, 更甚将技术架构与view混为一谈, 导致需求的变更引导软件整体变更,不能适应需求的变化.
架构层可以由EJB,SPRING,SOA,等实现,这也只是服务的接出方式,适应技术发展的表现.但架构的核心不应因此改变而改变.
适用范围
以上适用于企业应用和服务性网站的设计.
声明:以人为本人现阶段的认识,有不足和错误之处,请拍砖.在此先谢过各位.
分享到:
相关推荐
阅读设计模式的圣经一一GoF的《设计模式:可复用面向对象软件的基础》时的枯燥、苦闷、茫无头绪,到有一天突然有一种顿悟;自己去实现GoF的23中模式时候的知其然不知其所以然,并目有一天在自己设计的系统种由于设计的...
1. 设计模式的定义与重要性:设计模式是面向对象软件设计中可复用的设计思想的总结。它们在软件设计和开发中扮演着非常重要的角色,有助于提高软件的可维护性、可扩展性和可复用性。 2. C++设计模式精解:这是对GoF...
然而学习设计模式的过程却是痛苦的,从 阅读设计模式的圣经——GoF 的《设计模式:可复用面向对象软件的基础》时的枯燥、苦闷、 茫无头绪,到有一天突然有一种顿悟;自己去实现 GoF 的 23 中模式时候的知其然不知其所 ...
在软件工程领域,设计模式是面向对象分析和设计的核心概念,它提供了一套被广泛认可的解决方案,用于解决软件设计中经常出现的问题。《设计模式精解》一书深入探讨了GoF(Gang of Four,即四人组)提出的23种设计...
这与现代设计有所不同,现代设计更多地依赖计算机工具和各种工程应用软件,提高设计效率,但其基础仍然是常规设计。常规设计是基于公式、图表和技术成熟度,而创新设计则是对这些常规方法的扩展和灵活运用。 对于...
文章提出STEAM教育理念下Python课程的教学方式主要有三种:基于项目的学习方式、设计思维和顿悟学习。基于项目的学习方式强调学生通过设计并实施项目任务,以解决问题为目的,这种学习方式可以减少学生的认知负担,...
设计模式之于面向对象系统的设计和开发的作用就有如...然而学习设计模式的过程却是痛苦的,从阅读设计模式的圣经——GoF的《设计模式:可复用面向对象软件的基础》时的枯燥、苦闷、茫无头绪,到有一天突然有一种顿悟;
该项目是一个嵌入式软件项目,旨在运行在德州仪器MSP430 FRAM开发套件上,以演示通过CC3000 WiFi向云发送和接收数据。 项目功能包括: 1. 从 ADC 输入读取(A0、A1、A2、A4/热敏电阻、A5、A7、A12/X 轴、A13/Y 轴、...
《人工智能导论》是软件工程专业学生学习人工智能基础的重要教材,该书第五版提供了丰富的理论知识和实践案例。本文将围绕书中的关键概念进行详细解释,帮助理解人工智能的基础原理。 1. 逻辑思维、形象思维和顿悟...
"创意灯泡教育主题宣传单"是一个专门针对教育主题设计的宣传材料,它利用了AI格式,这是一种由Adobe Illustrator软件处理的向量图形文件格式,能确保图像在放大时仍保持清晰无损。这个主题选择了"创意灯泡"作为核心...
通过价值链设计、职务体系研究、工作重点设定、战略与目标设计,以及HR行为研究的电子化,如HR终端、大型HR软件和云HR系统,可以提高HR工作效率。 【有效HR政策与制度】 有效的HR政策和制度应注重牵引机制而非单纯...
在软件设计中,我们也可能从最初的只关注功能实现,逐渐认识到架构设计、可维护性、扩展性等重要性。 最后,“见你,是全世界”则象征着顿悟或者融会贯通的阶段。这里的“你”可以代表个人独特的视角或者对IT技术的...