热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

软件开发平台设计思考

一个软件公司要想提高公司的软件开发效率,一定会有自己的软件开发平台。今天就和大家分享下一个软件平台的设计思考。在设计软件开发平台过程中,为了少走弯路&#

      一个软件公司要想提高公司的软件开发效率,一定会有自己的软件开发平台。今天就和大家分享下一个软件平台的设计思考。
       在设计软件开发平台过程中,为了少走弯路,我们要尽量多往外看一看,吸取一下别人成功的经验,结合自己的实际情况进行设计。在我查看了不少的业界软件开发平台,我把它们分为三类。下面介绍如下三类:

第一类
        该类产品是基于业务对象的业务架构平台,业务对象的配置过程是平台的核心,通过配置业务对象基本完成了整个软件开发过程。业务对象的配置包含对象信息的配置、对象的分类、对象的方法、对象的视图、子对象、对象的属性、对象的页面展示形态等;其中属性的配置包含属性的类型、属性值的约束、属性的页面展示控件、属性之间的依赖等。同一个对象的在不同页面的展现形态通过对象的视图去配置。这类平台淡化了页面的交互配置,而是将页面的展示方案交给对象通过对象展示模板的方案进行配置。
      因此有关页面展示的配置过程并不是特别直观,主要是通过内置的展示模板供用户选择且都被包含在对象的配置过程中,在展现交互层的动态能力偏弱。这种方式虽然不直观,但是由于对象的特征和展示的配置都集中在业务对象上,软件的迭代要更加敏捷一些,因为通过更改对象的配置就可以适应需求的变化。

以下是某产品的对象配置和属性配置的部分截图,提供示意查看。

对象配置界面

属性配置界面


第二类

       在这类平台中,业务对象的配置相对简单,业务对象配置主要包含对象基本信息的录入、子对象的添加,属性部分基本特征的录入,例如数据类型。这类平台中,业务对象的职责主要用来生成数据库表结构和绑定表单及列表。在该平台的的表单创建时,需要指定绑定的业务对象。业务对象的属性与表单的控件进行绑定。当然业务对象在初始绑定表单时特征有个转换的过程,主要是属性的类型会和控件的类型的转换。
       在该类平台中,业务对象及属性配置中,只定义了部分基本的特征。部分其他的复杂的特征例如属性的依赖(如:省和市的依赖)、属性在页面上的显示隐藏在业务对象并没有对应的特征转换。因此需要用户在页面的配置过程中进行相关级联的配置,这种属性依赖在页面上体现为控件之间的级联,保存后为作为页面的配置。然而当用户创建新的页面再绑定该对象时,这种级联无法传递,因为对象本身并没有存储这种级联性。不过这类产品提供了通过页面的复制进行传递这种特性。而在第一类平台中是通过属性之间值的约束进行配置的。在属性之间进行约束的话,具有全局性,即使该对象在不同的页面展示无需再次配置。

以下是第二类产品的部分示意截图:

对象属性的配置界面

表单的配置界面

第三类

第三类软件开发平台,它淡化了业务对象的概念,而是直接将数据库和页面的技术特征展示在配置表单上。它是以数据库域为核心。数据库的字段、特征的变化影响着页面属性、特征的变化。但也提供了在不同的技术域下个性的特征配置的过程。

数据库属性配置界面

页面属性配置界面

总结分析和扩展

       上述三类软件平台都为软件开发提供了一定的便捷,但是他们的设计理念却有着一定的差异。第一类平台所有的配置都集中在业务对象,通过对象的配置解决所有的问题。第二类平台在业务对象上有着粗略的配置,更多细节复杂配置体现在页面的配置上。而在第三类中,直接从技术出发,由数据库的配置影响页面的配置,允许部分页面的配置再次更改,理念更加技术化。
       而在设计一个平台时,首先需要定位平台的客户目标,是开发人员?还是业务人员?还是有一定开发能力的业务人员?是一个人完成整个过程?还是多人协同完成整个过程?定位不同必然平台设计的思路也会有差异。很显然,上面我介绍的这三类平台都是由一个人进行完成整个软件配置过程。
       其次我们需要清楚软件只是业务的体现方式,软件是实现业务的一种工具,在没有软件的年代,我们通过文字、图片、口述交流来表达业务,而在有了软件后,使得表达业务更加的方便。因此我们要明白,业务才是软件的本质,业务的特征才是决定软件的核心设计。有了软件后,软件本身也会衍生出一些软件本身的特征,例如软件采用的编程语言、软件的界面形式等。
        软件的生命周期有不同角色的人参与,从调研到开发再到运维。在这里我主要分为业务和技术两种角色。业务人员进行对软件进行业务建模,技术人员对技术建模的产物进行加工和技术特征的补充。
       在一个软件中我们首先要能够区分哪些是业务决定的哪些是技术决定的,换句话说哪些是业务特征哪些是技术特征。业务特征往往可以引导和制约技术特征的值,业务和技术特征的区分可以让不同的人参与进来,业务精通的人参与业务特征的配置中,技术精湛的人参与技术特征的补充。因此区分哪些是由业务决定的,哪些是由技术决定的格外重要。
       下面的列表是对一些常见的特征之间的映射关系。


属性业务特征对应技术特征
数据类型控件类型
属性依赖级联控件
非空必填
密码密码控件
唯一性数据验重
可变性不可修改
多值控件类型
格式规则填写约束
范围规则填写约束

 

 

 

 

 

 

 

 

 

 

        对一个特征的看法不同的人有不同的看法,例如级联有人说是技术的,有人说是业务的。在判断特征域的归属时,我给大家的建议是如果这个特征没有软件、没有技术也能表达的话那么他就是业务的。

 

 


推荐阅读
  • 企业数据应用挑战及元数据管理的重要性
    本文主要介绍了企业在日常经营管理过程中面临的数据应用挑战,包括数据找不到、数据读不懂、数据不可信等问题。针对这些挑战,通过元数据管理可以实现数据的可见、可懂、可用,帮助业务快速获取所需数据。文章提出了“灵魂”三问——元数据是什么、有什么用、又该怎么管,强调了元数据管理在企业数据治理中的基础和前提作用。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • BPM是什么软件?1、BPM是BusinessProcessManagement的简称,译为业务流程管理,它是一种以规范化的构造端到端的卓越业务流程为中心以持续的提高组织业务绩效为 ... [详细]
  • TiDB | TiDB在5A级物流企业核心系统的应用与实践
    TiDB在5A级物流企业核心系统的应用与实践前言一、业务背景科捷物流概况神州金库简介二、现状与挑战神州金库现有技术体系业务挑战应对方案三、TiDB解决方案测试迁移收益问题四、说在最 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • GAMETECH腾讯云游戏行业技术沙龙成都站圆满落幕
    11月13日,由腾讯云主办、游戏茶馆协办的2020年首场GAME-TECH腾讯云游戏行业技术沙龙在成都圆满落幕。本次沙龙邀请了腾讯云游戏行业解决方案总监宋永周、腾讯云游戏行业高级解决方案架构师曾梓恩、腾讯云游戏行业高级产品架构师郑晓曦、腾讯云游戏行业高级解决方案架构师温球良和天美L1(王者荣耀)服务器技术副总监杨光,为参会同行们带来了干货满满的技术建议。本文介绍了腾讯云游戏云的优势和为不同游戏研运场景提供的服务。腾讯云在中国游戏云服务市场领跑,成为众多游戏开发者的合作伙伴。 ... [详细]
  • k8s+springboot+Eureka如何平滑上下线服务
    k8s+springboot+Eureka如何平滑上下线服务目录服务平滑上下线-k8s版本目录“上篇介绍了springboot+Euraka服务平滑上下线的方式,有部分小伙伴反馈k ... [详细]
author-avatar
手机用户2502909581
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有