Despite decades of engineering and scientific research efforts, separation of concerns in software development remains not fully achieved. The ultimate goal is to truly allow code reuse without large maintenance and evolution costs. The challenge has been to avoid the crosscutting of concerns phenomenon, which has no apparent complete solution. In this paper, we show that business-domain code inscriptions play an even larger role in this challenge than the crosscutting of concerns. We then introduce a new methodology, called Metadata Interpretation Driven Development (MIDD) that suggests a possible path to realize separation of concerns by removing functional software concerns from the coding phase. We propose a change in the perspective for building software, from being based on object representation at the coding level to being based on object interpretation, whose definitions are put into layers of representation other than coding. The metadata of the domain data is not implemented at the level of the code. Instead, they are interpreted at run time. As an important consequence, such constructs can be applied across functional requirements, across business domains, with no concerns regarding the need to rewrite or refactor code. We show how this can increase the (re)use of the constructs. Furthermore, the execution of a single interpreter, due to its semantic disconnection from the domain, suggests that it can simultaneously serve different business domains. Although high-reuse software construction is considered a relatively mature field, changes in the software services scenario demand relevant solutions. The emergence of new software architectures, such as serverless computing, reinforces the need to rethink software construction. This approach is presented as a response to this need.
翻译:尽管进行了数十年的工程和科学研究努力,但软件开发的关切仍未完全实现。最终目标是真正允许代码再利用,而无需大量维护和演化成本。挑战在于避免关注的交叉现象,这没有明显的完整解决方案。在本文件中,我们表明,商业域代码的输入在这一挑战中比关注的交叉层面发挥更大的作用。然后我们引入了一种新的方法,称为元数据解释驱动器开发(MIDDD),它提出了通过从编码阶段删除功能软件关切而实现关注分离的可能途径。我们建议改变构建软件的视角,从基于编码层面的物体代表制到基于对象解释,其定义被置于代号之外的层次上。我们发现,商业域数据的元数据没有在代码层面得到实施,而是在运行过程中被解读。作为重要后果,这种构建可以跨越功能需求,在商业领域中应用功能性解释,而无需重新解读或重构码代码。我们指出,这可以增加软件的(在编码层面)使用这种构建结构的视角,但相对而言,使用一个不同的解释系统是使用一个不同的构建模型,因此,需要使用一种不同的构建模型。