软件应用程序设计的现有设计环境

软件应用程序设计的状态目前是主观的。 可以定义一组松散的汇总,例如设计原则,常见问题的设计模式,预定义的体系结构,这些汇总可以汇总到设计应用程序中,但是不存在标准化的设计策略。 通常,软件的弹性和灵活性在很大程度上取决于设计应用程序的架构师。

现有的一些设计策略包括面向对象设计的SOLID,功能设计概念,java结构模式,行为模式,基于流程的设计,基于微服务的设计,MVC设计模式等等。 可以看出,它们中的每一个都应用在应用程序设计的某些部分,并且需要将它们中的多个结合起来以实现完整的应用程序设计。

现有设计景观的缺点

当存在如此高度主观的环境时,很难强制执行可以客观地遵循的标准以防止软件质量随时间流逝。 因此,可以观察到,当应用程序处于起步阶段时,只有少数几个核心架构师在进行设计,因此它可以保持对所制定原则的高度一致性,但是随着应用程序功能和时间的扩展,设计会不断发展。原则被抛弃,添加了快速修复程序,并且很容易违反了模式并将其用于非预期目的,从而快速降低了应用程序的质量。

随着SaaS的引入,当前的软件应用领域正在Swift变化。 该软件的功能需要尽快发生变化,以确保在对该功能进行全面开发之前,可​​以在市场上对其进行测试。 还可以看到,随着产品在市场上的部署,获得了需要快速适应软件以研究功能采用情况并逐步进行修改的知识,以便可以删除较少使用的功能并开发受欢迎的功能。为更容易采用。

仅通过使用WYSWIG工具进行软件开发即可生成如此设计的代码,才能实现这种快速性。 但是,如果设计方法本身不依赖于功能,并且所定义的现有原理和模式是针对面向技术的问题而不是面向功能的,那么开发WYSWIG工具就很遥不可及。

所需要的是在与定义的业务需求相关的各种设计级别上进行软件设计的标准化策略,以便一旦完成这样的设计,就可以自动生成代码,从而缩短上市时间。 因此,对各种功能更改进行试用仅是更改需求的问题,然后生成适当的代码。

使用FSM进行标准化设计

什么是有限状态机? 来自维基百科:“这是一个抽象机器,在任何给定时间都可以处于有限数量的状态之一。” 我们如何在应用程序设计中使用它? 应用程序具有多个可以适应有限状态机的业务数据对象。 例如,运输管理系统具有一个称为“运输”的主要业务对象,该对象基于现实生活中发生的事件在应用程序中经历各种状态。

大多数应用程序都固有地嵌入了状态机。 只是它没有以这种方式明确设计为利用状态机的优点。 例如,“运输”对象通常具有“状态”字段,并设置为各种字符串,例如“已创建”,“正在加载”,“在途”等,直到达到“完成”状态。 开发人员在处理程序中为更改对象状态的请求手动设置此设置。 对代码的高级了解并不能清楚地说明“装运”对象将通过的各种状态以及改变“装运”对象状态的各种事件。

那么,当我们不认识业务对象的状态机时,我们会损失什么呢? 即使在状态机中,我们显然也会添加“状态”列并进行适当的更新? 业务特征和功能根据业务对象的状态进行操作。 通过将重点从此转移出去,我们已经在接近业务功能的设计和编码与接近技术的设计和编码之间交换了优势。 这使我们花费了将需求从面向业务的设计转换为面向技术的设计所需的时间。 技术设计给我们带来什么优势? 为什么我们需要这个中间步骤? 为什么不将业务需求用作编码设计?

PoC It Online基于一个平台,该平台固有地支持基于状态机的设计,这使其易于生成代码。 现在在这里尝试。

翻译自: https://www.javacodegeeks.com/2019/02/software-application-designing.html

标准化软件应用程序设计相关推荐

  1. 开发标准化软件组件能让程序员在大城市过上体面的生活 -- 多系统用户权限管理标准件开发销售心得体会...

    其实很多人都有顾虑,选择程序员这个行业是否有前途?是否可以长久?我是78年出生的,现在算算已经35岁了,虽然在同学里算不上最成功的,但是也足够不是最差的.生活中该有的都有了,虽然身体没往日那么强壮,但 ...

  2. 软件设计师---程序设计语言

    笔记有错误欢迎直接在评论区进行纠正!我将不再维护软件设计师笔记! 程序设计语言上午题n分 低级语言和高级语言 编译程序和解释程序 真题 真题1 真题2 真题3 真题4 程序设计语言的数据成分 真题 真 ...

  3. matlab怎样编程形成软件_MATLAB程序设计语言(1)-入门 – MATLAB中文论坛

    本帖最后由 tangbot 于 2018-9-27 12:53 编辑 640.jpeg (17.39 KB, 下载次数: 2) 2018-9-27 12:48 上传 公众号:理念世界的影子 文不可无观 ...

  4. 软件设计师 程序设计语言

    以下内容来源于哔哩哔哩UP主zst_2001的软件设计师教学视频 程序设计语言 1.编译程序和解释程序 2.程序设计语言基本成分 3.传值调用与传地址调用 3.编译.解释程序翻译阶段 4.符号表 5. ...

  5. 软件设计师——程序设计语言练习

    一.单选题 1.以下关于下图所示有限自动机的叙述中,不正确的是( ) A.该自动机识别的字符串中a不能连续出现 B.该自动机识别的字符串中b不能连续出现 C.该自动机识别的非空字符串必须以a结尾 D. ...

  6. 简单抽奖软件java程序设计

    一.设计任务 摇奖 描述:从候选手机号码里随机选取号码显示在屏幕上作为获奖手机号.此题训练多线程操作. 描述 提示和要求: 提示和要求 ①候选号码可以保存在数组中,也可以保存在数据库中. ②抽奖人点击 ...

  7. java答题软件_Java程序设计:使用软件解题

    你将学到什么 Algorithms Problem Solving String (Computer Science) Java Programming 课程概况 Learn to code in J ...

  8. c语言压力变送器程序设计,智能温度变送器信号处理软件算法与软件设计

    针对热电偶传感器电偶热电势与温度之间的非线性以及热电阻传感器阻值与温度间的非线性特征,设计一种通用智能温度变送器,并对现在广泛应用的线性化算法进行了改进.通过引入牛顿迭代法及Horner算法等对其进行 ...

  9. 《软件开发工具》(第二章)

    第二章:软件开发过程及其组织 做好软件的关键: 关键在于两个转换没有顺利地通过:首先是从用于的理解到程序员的理解,其次是从程序员的理解到程序的实现 大型软件开发中的困难表现在哪些方面: 1) 一致性的 ...

最新文章

  1. php pthread 实例,php 真正的多线程 pthread
  2. [转] fastText
  3. Service Intent must be explicit
  4. 3.8 Anchor Boxes-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
  5. jQuery插件开发
  6. python面试题_17道Python面试题,分享给你以防不测!
  7. 关于虚拟机下linux共享Windows文件的解决方案
  8. 《Dotnet9》系列-Google ProtoBuf在C#中的简单应用
  9. 编译安装android7.0,android7.0 源码编译问题总结
  10. 数据结构实践课程设计【通讯录管理系统】
  11. OracleERP-采购管理
  12. 经典卷积神经网络---VGG16网络
  13. 使用axure9绘制三级导航
  14. 服务器03系统 关wmi,win10系统WMI服务器怎么关闭
  15. oracle应付创建会计科目,求助: EBSR12应付发票取消后创建不成会计科目
  16. 《深入理解Android:Wi-Fi,NFC和GPS》章节连载[节选]--第九章 深入理解GPS
  17. 纯前端导出excel文件(包含设置样式)
  18. Symbolic Graph Reasoning Meets Convolutions 符号图推理与卷积结合的方式
  19. 2021-05-12 MongoDB面试题 什么是MongoDB分片集群
  20. Gowild狗尾草推出HE琥珀,标贝科技为其提供更“温柔”的声音

热门文章

  1. 如何使计算机理解中医药知识,计算机技术在中医药信息学应用概
  2. 计算机属性打开自动关上,如何打开和关闭系统的自动更新
  3. 微型计算机的外存储器 现在普遍采用什么,当前微型计算机上大部分采用的外存储器,不包含下列哪些?1.硬盘 2.光盘 3.软盘 4.磁带。...
  4. CodeGear 发布 3rdRails
  5. 最大公约数gcd函数简介
  6. linux ssh加固
  7. 北京奥运会圆满结束了
  8. HbuilderX 无法运行项目到真机调试。
  9. iscsi技术,磁盘阵列技术介绍
  10. WSL ubuntu xfce4桌面远程连接