比较企业应用开发中使用手工编程与特定领域建模的工作量


我们与Juha-Pekka Tolvanen一起报告了一项研究,该研究分析了由公司内部创建的特定领域建模解决方案的生产力影响,该解决方案用于开发基于 Web 的企业应用程序。与传统编程的比较表明,特定领域的建模效率提高了 500% 以上。它还通过整合开发步骤改变了开发的方式。
比较了两种不同方式构建基于 Web 的企业应用程序的开发人员生产力:传统编程语言与特定领域建模 (DSM) 语言。

  • 第一种方法是用 SQL 定义数据库模式的熟悉方法,用 C# 和 JavaScript 等编程语言定义逻辑和用户界面。
  • 第二种方法是低代码方法,其中使用 DSM 语言创建规范,该语言可以从模型中生成完整的代码。

两种开发方法的起点和终点是相同的。起点是与公司人员一起创建的要求,终点是审查开发的应用程序以确保它满足所有要求。公司的两个人一开始就参与其中:他们选择了案例应用及其要求,使其与典型情况相匹配。该公司还提供材料来学习所应用的技术以及所需的工具和语言。

该报告的第一作者 (Laura Fadjukoff) 进行了这两个开发案例,在建模方面的经验少于编程和相关语言方面的经验。虽然这种情况并没有平等对待这些方法,但它与当今大多数公司的情况相似。

对于编程方法,选择的实现技术是 C#、JavaScript 和 SQL。执行案例的作者有一些 JavaScript 和 SQL 的经验,但没有 C#。对于建模方法,工作是使用作者新的 DSL 完成的。如果有问题,该公司有经验丰富的开发人员可以联系。建模和编程相关工具都本地安装在同一台 Windows 笔记本电脑上。建模部分和 MetaEdit+ 建模工具也可以在远程云服务器中运行,但在这种情况下决定为开发人员使用单一环境。

要构建的案例应用程序侧重于管理客户项目。它的基本功能与公司开发的其他应用程序一样——尽管更小一些,以减少进行比较所需的开发资源。案例申请的选择得到了公司的确认,申请的要求是与公司的两个人一起创建的。客户项目管理应用程序的要求包括:

  • 管理客户项目、他们的应用程序和使用环境。
  • 管理每个使用环境的测试用户以及相关资源及其描述。
  • 管理每个用户的详细信息,例如帐户、密码、AD 组、角色和其他详细信息。
  • 上面提到的所有项目都可以添加、修改和删除。
  • 用户界面提供两种不同的视图:一种侧重于概述,另一种侧重于选定的使用环境及其详细信息。

在相同的要求和相同的验收审查阶段,比较侧重于方法之间的差异。
第一种编程方法包含以下步骤:

  1. 使用 SQL 使用 SQL Server Management Studio 进行架构定义。
  2. 使用 Visual Studio 在 C# 中实现业务逻辑。
  3. HTML 和 JavaScript 中的用户界面实现。

而DSL的使用包含以下步骤:

  1. 使用MetaEdit+对应用程序(数据、用户数据、用户权限、角色、警报等)进行建模并生成代码。
  2. 使用 SQL 调整用户界面。

这两种方法还包括一些与创建项目和其他工具设置相关的额外步骤,因为这是这两种工具中的第一个项目。在开发过程中,记录了每个步骤所用的时间。定义要求、检查最终应用程序是否满足要求、研究技术或其安装的时间被排除在外。重点仅放在开发任务上。
两种方式的开发都是在一个周期内完成的——没有部分交付或里程碑。

结果
使用公司自己的 DSL 创建应用程序的速度要快得多,需要 6.5 小时,而手动编程需要 36 小时。生产力差异超过 500%

  • 编程的主要工作是实现用户界面(16.5 小时)和业务逻辑(12.5 小时),而不是定义模式。不同步骤之间的这种分工与公司内的其他开发项目相似,尽管没有测量它们的详细数据。
  • 当使用公司自己的 DSL 时,情况就大不相同了:建模需要 1.25 小时,而从模型中生成代码只需几秒钟。运行初始应用程序后,2.25 小时用于调整生成的用户界面。用户界面的视图用 SQL 进行了修改。这种低代码方法意味着不到 1% 的应用程序代码是传统编写的,而不是从模型中生成的。