领域驱动设计模式的收益与挑战:系统综述
作者:
作者简介:

贾子甲(1994-),男,硕士,CCF学生会员,主要研究领域为软件架构,微服务,领域驱动设计.
荣国平(1977-),男,博士,副研究员,CCF专业会员,主要研究领域为软件过程实证软件工程.
钟陈星(1995-),女,学士,CCF学生会员,主要研究领域为微服务,领域驱动设计.
章程(1982-),男,博士,副教授,CCF专业会员,主要研究领域为微服务,软件体系结构,经验软件工程.
周世旗(1998-),女,硕士,主要研究领域为软件架构.

通讯作者:

荣国平,E-mail:ronggp@nju.edu.cn

基金项目:

国家自然科学基金(62072227,61802173);国家重点研发计划(2019YFE0105500);江苏省政府间双边创新项目(BZ2020017);计算机软件新技术国家重点实验室(南京大学)创新项目(ZZKT2019B01)


Benefits and Challenges of Domian Driven Design Patterns: Systematic Review
Author:
Fund Project:

National Natural Science Foundation of China (62072227, 61802173); National Key Research and Development Program of China (2019YFE0105500); Intergovernmental Bilateral Innovation Project of Jiangsu Province (BZ2020017); Innovation Project of State Key Laboratory for Novel Software Technology (Nanjing University) (ZZKT2019B01)

  • 摘要
  • | |
  • 访问统计
  • |
  • 参考文献 [75]
  • |
  • 相似文献 [20]
  • | | |
  • 文章评论
    摘要:

    背景:近年来,领域驱动设计(domain driven design,简称DDD)作为一种软件设计方法在业界中逐渐流行起来,并形成了若干应用的固有范式,即领域驱动设计模式(domain driven design pattern,简称DDDP).然而,目前软件开发社区却仍然对DDDP在软件项目中的作用缺少较为全面的了解.目的:旨在揭示DDDP的应用情况,即哪些DDDP被应用到了软件开发中,以及其所带来的收益、挑战及相应的缓解挑战方法.方法:应用系统化文献综述方法,对2003年~2019年7月之间发表的相关文献进行了识别、筛选、汇总和分析.结果:通过结合手动检索、自动检索和滚雪球等过程,覆盖了1 884篇相关文献,经过筛选,最终得到26篇高质量文献,对应26个独立的研究.总结了基础研究中DDDP的应用概况,即已经被应用到软件开发中的DDDP以及应用DDDP所获得的11项收益、17个挑战以及相应的缓解挑战方法.结论:因为对领域知识非常重视,领域驱动设计能够帮助实践者更好地进行软件设计,但在具体应用领域驱动设计模式时却存在着诸多挑战.虽然目前存在一些缓解方法能够在一定程度上应对挑战,但是仍然存在很多不足.通过系统文献综述,填补了学术界在这一领域的空白.考虑到DDDP的实践价值与当前理论成熟度的不匹配,未来工业界和学术界应该给予该领域更多关注.

    Abstract:

    In recent years, domain driven design (DDD), as a software design method, has gradually become popular in the industry and formed several inherent paradigms of application, namely domain driven design pattern (DDDP). However, the software development community still lacks a comprehensive understanding of the role of DDDP in software projects. Objective:This study aims to reveal the application status of DDDP, including which DDDP is applied to software development, the benefits, challenges, and mitigation methods for challenges. Methods:In our study, a systematic literature review is performed to identify, screen, summarize and analyze the relevant literature published between 2003 and July 2019. Results:Through the combination of manual retrieval, automatic retrieval and snowballing, this paper covered 1 884 relevant literatures, and after screening, 26 high-quality literatures were finally obtained, corresponding to 26 independent studies. This study summarized theoverview of DDDP in the primarystudies, including the 11 benefits, 17 challenges and the mitigation methods of challenges for the DDDP which applied in software development. Conclusion:DDD can help practitioners design software better since its prominent emphasis on domain knowledge, but there are still some challenges when applying DDD patterns. While these mitigation methods may tacklethe challenges to a certain extent, there are also some deficiencies remained. This study fills in the knowledge gaps in this field through SLR. Considering the mismatch between the practical value of DDDP and the current theoretical maturity, the industry and academia should pay more attention to this field in the future.

    参考文献
    [1] Evans E, Wrote; Zhao L, Sheng HY, Liu X et al., Trans. Domain-driven Design:Tackling Complexity in the Heart of Software. Beijing:Posts & Telecom Press, 2003(in Chinese).
    [2] Newman S, Wrote; Cui LQ, Zhang J, Trans. Domain-driven Design Quickly. Beijing:Posts & Telecom Press, 2016. (in Chinese).
    [3] Nilsson J. Applying Domain-driven Design and Patterns:With Examples in C# and. NET. Pearson Education, 2006. 28-44.
    [4] Vernon V. Implementing Domain-driven Design.1st ed. Addison-Wesley, 2013. 28-82.
    [5] Millett S, Tune N. Patterns, Principles, and Practices of Domain-driven Design. John Wiley & Sons, 2015. 17-22.
    [6] Bruhiere X. Use domain-driven design to architect your cloud apps. IBM, 2018. https://developer.ibm.com/tutorials/cl-domain-driven-design-event-sourcing
    [7] Alibaba T. Creating coding excellence with domain-driven design. Medium, 2018. https://medium.com/swlh/creating-coding-excellence-with-domain-driven-design-88f73d2232c3
    [8] Newman S. Building Microservices:Designing Fine-grained Systems. O'Reilly Media, Inc., 2015. 1-8.
    [9] Rademacher F, Sorgalla J, Sachweh S. Challenges of domain-driven microservice design:A model-driven perspective. IEEE Software, 2018,35(3):36-43.
    [10] Zhang H, Li S, Jia Z, Zhong C, Zhang C. Microservice architecture in reality:An industrial inquiry. In:Proc. of the 2019 IEEE Int'l Conf. on Software Architecture (ICSA). IEEE, 2019. 51-60.
    [11] Singh M, Sharma A, Saxena R. Formal transformation of uml diagram:Use case, class, sequence diagram with z notation for representing the static and dynamic perspectives of system. In:Proc. of the Int'l Conf. on ICT for Sustainable Development. Singapore:Springer-Verlag, 2016. 25-38.
    [12] Bogner J, Fritzsch J, Wagner S, Zimmermann A. Microservices in industry:Insights into technologies, characteristics, and software quality. In:Proc. of the 2019 IEEE Int'l Conf. on Software Architecture Companion (ICSA-C). Hamburg:IEEE, 2019. 187-195.
    [13] Jorgensen M, Shepperd M. Asystematic review of software development cost estimation studies. IEEE Trans. on Software Engineering, 2007,33(1):33-53.
    [14] Budgen D, Burn AJ, Brereton OP, Kitchenham BA, Pretorius R. Empirical evidence about the UML:A systematic literature review. Software:Practice and Experience, 2011,41(4):363-392.
    [15] Shahin M, Babar MA, Zhu L. Continuous integration, delivery and deployment:A systematic review on approaches, tools, challenges and practices. IEEE Access, 2017,5:3909-3943.
    [16] Fowler M. Patterns of Enterprise Application Architecture. Boston:Addison-Wesley Longman Publishing Co., Inc., 2002. 22-31.
    [17] Larman C. Agile and Iterative Development:A Manager's Guide. Addison-Wesley Professional, 2004. 128-140.
    [18] Kitchenham BA, Budgen D, Brereton P. Evidence-Based Software Engineering and Systematic Reviews. CRC Press, 2015. 3-9.
    [19] Wohlin C. Guidelines for snowballing in systematic literature studies and a replication in software engineering. In:Proc. of the 18th Int'l Conf. on Evaluation and Assessment in Software Engineering. New York:ACM, 2014. 1-10.
    [20] Evans E. Domain-driven Design Reference:Definitions and Pattern Summaries. Dog Ear Publishing, 2014. 15-30.
    [21] Cohen J. Weightedkappa:Nominalscaleagreementprovision for scaled disagreement or partial credit. Psychological Bulletin, 1968, 70(4):213.
    [22] Dybå T, Dingsøyr T. Empirical studies of agile software development:A systematic review. Information and Software Technology, 2008,50(9-10):833-859.
    [23] Zhang C, Budgen D. What do we know about the effectiveness of software design patterns? IEEE Trans. on Software Engineering, 2011,38(5):1213-1231.
    [24] Cruzes DS, Dyba T. Recommended steps for the matic synthesis in software engineering. In:Proc. of the 2011 Int'l Symp. on Empirical Software Engineering and Measurement. Banff:IEEE, 2011. 275-284.
    [25] Roman D, Keller U, Lausen H, DeBruijn J, Lara R, Stollberg M, Polleres A, Feier C, Bussler C, Fensel D. Web service modeling ontology. Applied Ontology, 2005,1:77-106.
    [26] Charmaz K, Belgrave LL. Grounded Theory. The Blackwell Encyclopedia of Sociology, 2007.
    [27] Osborne JW. Best Practices in Quantitative Methods. Thousand Oaks:SAGE Publications, Inc., 2008. 1-9.
    [28] Braun V, Clarke V. Using thematic analysis in psychology. Qualitative Research in Psychology, 2006,3(2):77-101.
    [29] Haywood D. Domain-driven Design using Naked Objects. Pragmatic Bookshelf, 2009.
    [30] Hippchen B, Giessler P, Steinegger R, Schneider M, Abeck S. Designing microservice-based applications by using a domain-driven design approach. Int'l Journal on Advances in Software, 2017,10(3&4):432-445.
    [31] Bruegge B, Dutoit AH. Object-oriented Software Engineering using UML, patterns, and Java. Learning, 2009,5(6):7.
    [32] Zandin M. Domain-driven design and microservices. InfoQ, 2016. https://www.infoq.com/news/2016/04/ddd-microservices-evans.
    [33] Easterbrook S, Singer J, Storey MA, Damian D. Selecting empirical methods for software engineering research. In:Proc. of the Guide to Advanced Empirical Software Engineering. London:Springer-Verlag, 2008. 285-311.
    [34] Vural H, Koyuncu M, Misra S. A case study on measuring the size of microservices. In:Proc. of the Int'l Conf. on Computational Science and Its Applications. Cham:Springer-Verlag, 2018. 454-463.
    [35] Lotz G, Peters T, Zrenner E, Wilke R. A domain model of a clinical reading center-design and implementation. In:Proc. of the 2010 Annual Int'l Conf. of the IEEE Engineering in Medicine and Biology. Buenos Aires:IEEE, 2010. 4530-4533.
    [36] Santos ECS, Beder DM, Penteado RAD. A Study of test techniques for integration with domain driven design. In:Proc. of the 201512th Int'l Conf. on Information Technology-New Generations. Las Vegas:IEEE, 2015. 373-378.
    [37] Landre E, Wesenberg H, Olmheim J. Agile enterprise software development using domain-driven design and test first. In:Proc. of the Companion to the 22nd ACM SIGPLAN Conf. on Object-oriented Programming Systems and Applications Companion. New York:ACM, 2007. 983-993.
    [38] Salahat M, Wade S. Pedagogical evaluation of a systemic soft domain-driven design framework. In:Proc. of the UKAIS Int'l Conf. on Information Systems. 2012. 48.
    [39] Danenas P, Garsva G. Domain driven development and feature driven development for development of decision support systems. In:Proc. of the Int'l Conf. on Information and Software Technologies. Berlin:Springer-Verlag, 2012. 187-198.
    [40] Schneider M, Hippchen B, Abeck S, Jacoby M, Herzog R. Enabling IoT platform interoperability using a systematic development approach by example. In:Proc. of the 2018 Global Internet of Things Summit. Bilbao:IEEE, 2018. 1-6.
    [41] Munezero IJ, Mukasa DT, Kanagwa B, Kanagwa, Balikuddembe J. Partitioning microservices:A domain engineering approach. In:Proc. of the 2018 IEEE/ACM Symp. on Software Engineering in Africa. Gothenburg:IEEE, 2018. 43-49.
    [42] Uludağ Ö, Hauder M, Kleehaus M, Schimpfle C, Matthes F. Supporting large-scale agile development with domain-driven design. In:Proc. of the Int'l Conf. on Agile Software Development. Cham:Springer-Verlag, 2018. 232-247.
    [43] Bruyn P D, Huysmans P, Mannaert H. Tailoring an Analysis Approach for Developing Evolvable Software Systems:Experiences from Three Case Studies. In:Proc. Of the 18th IEEE Conference on Business Informatics. Paris:IEEE, 2016. 208-217.
    [44] Rademacher F, Sachweh S, Zündorf A. Towards a UML profile for domain-driven design of microservice architectures. In:Proc. of the Int'l Conf. on Software Engineering and Formal Methods. Cham:Springer-Verlag, 2017. 230-245.
    [45] Razavi R. Web pontoon:A method for reflective web applications. In:Proc. of the Int'l Workshop on Smalltalk Technologies. New York:ACM, 2010. 1-10.
    [46] Salahat M, Wade S. Domain driven design vs soft domain driven design frameworks. Int'l Journal of Computer and Systems Engineering, 2016,10(7):1364-1370.
    [47] Diepenbrock A, Rademacher F, Sachweh S. An ontology-based approach for domain-driven design of microservice architectures. In:Proc. of the INFORMATIK 2017. Bonn:Gesellschaft für Informatik, 2017. 1777-1791.
    [48] Rademacher F, Sorgalla J, Sachweh S. Challenges of domain-driven microservice design:A model-driven perspective. IEEE Software, 2018,35(3):36-43.
    [49] Sousa NT, Hasselbring W, Weber T, Kranzlmü D. Designing a generic research data infrastructure architecture with continuous software engineering. In:Combined Proc. of the Workshops of the German Software Engineering Conf. 2018. 85-88.
    [50] Pham M, Hoang DB. SDN applications-The Intent-based northbound interface realisation for extended applications. In:Proc. of the 2016 IEEE NetSoft Conf. and Workshops. Seoul:IEEE, 2016. 372-377.
    [51] Shadija D, Rezai M, Hill R. Towards an understanding of microservices. In:Proc. of the 201723rd Int'l Conf. on Automation and Computing. Huddersfield:IEEE, 2017. 1-6.
    [52] Landre E, Wesenberg H, Rønneberg H. Architectural improvement by use of strategic level domain-driven design. In:Proc. of the Companion to the 21st ACM SIGPLAN Symp. on Object-oriented Programming Systems, Languages, and Applications. New York:ACM, 2006. 809-814.
    [53] Wesenberg H, Landre E, Rønneberg H. Using domain-driven design to evaluate commercial off-the-shelf software. In:Proc. of the Companion to the 21st ACM SIGPLAN Symp. on Object-oriented Programming Systems, Languages, and Applications. New York:ACM, 2006. 824-829.
    [54] Zhang J, Chen Y, Qin S. The application of domain-driven design in NMS. In:Proc. of the 4th Int'l Conf. on Machine Vision. Singapore, 2012.
    [55] Peng S, Hu Y. IAnticorruption:A domain-driven design approach to more robust integration. In:Proc. of the Companion to the 22nd Annual. New York:ACM, 2007. 976-982.
    [56] Soares SA, Cortés MI. Elihu:A project to model-driven development with naked objects and domain-driven design. In:Proc. of the 20th Int'l Conf. on Enterprise Information Systems. 2018. 272-279.
    [57] Koryl M. Active resources concept of computation for enterprise software. Archives of Control Sciences, 2017,27(2):279-291.
    [58] Debski A, Szczepanik B, Malawski M, Spahr S, Muthig D. A scalable, reactive architecture for cloud applications. IEEE Software, 2017,35(2):62-71.
    [59] Soldani J, Tamburri DA, Van Den Heuvel WJ. The pains and gains of microservices:A systematic grey literature review. Journal of Systems and Software, 2018,146:215-232.
    [60] Brandolini A. Introducing Event Storming. Lean Publishing, 2013. 21-24.
    [61] Fairbanks G. Just Enough Software Architecture:A Risk-driven Approach. 3rd ed., Marshall & Brainerd, 2010. 15-32.
    [62] Staab S, Studer R. Handbook on Ontologies. 2nd ed., Springer-Verlag Science & Business Media, 2010. 1-9.
    [63] Selic B. The pragmatics of model-driven development. IEEE Software, 2003,20(5):19-25.
    [64] Rosenfeld L, Morville P, Nielsen J. Information Architecture for the World Wide Web. 2nd ed., O'Reilly Media, Inc., 2002. 3-5.
    [65] Greg Y. CQRS and event sourcing. CodeBetter, 2010. http://codebetter.com/gregyoung/2010/02/13/cqrs-and-event-sourcing.
    [66] Conklin J, Begeman ML. gIBIS:A hypertext tool for exploratory policy discussion. ACM Trans. on Information Systems (TOIS), 1988,6(4):303-331.
    [67] Burge JE. Software engineering using design rationale[Ph.D. Thesis]. Massachusetts:Worcester Polytechnic Institute, 2005.
    [68] Van VH, Tang A. Decision making in software architecture. Journal of Systems and Software, 2016,117:638-644.
    [69] Lemma R, Lanza M, Mocci A. Cel:Touching software modeling in essence. In:Proc. of the 2015 IEEE 22nd Int'l Conf. on Software Analysis, Evolution, and Reengineering (SANER). Montreal:IEEE, 2015. 439-448.
    [70] Kitchenham B, Brereton P. A systematic review of systematic review process research in software engineering. Information and Software Technology, 2013,55(12):2049-2075.
    [71] Kitchenham B, Dyba T, Jorgensen M. Evidence-based software engineering. In:Proc. of the 26th Int'l Conf. on Software Engineering. Edinburgh:IEEE Computer Society, 2004. 273-281.
    [72] Faraj S, Sproull L. Coordinating expertise in software development teams. Management Science, 2000,46(12):1554-1568.
    附中文参考文献:
    [1] Evans E,著;赵俐,盛海艳,刘霞,等译.领域驱动设计——软件核心复杂性应对之道.北京:人民邮电出版社,2003.
    [2] Newman S,著;崔力强,张骏,译.微服务设计.北京:人民邮电出版社,2016.
    引证文献
    网友评论
    网友评论
    分享到微博
    发 布
引用本文

贾子甲,钟陈星,周世旗,荣国平,章程.领域驱动设计模式的收益与挑战:系统综述.软件学报,2021,32(9):2642-2664

复制
分享
文章指标
  • 点击次数:3318
  • 下载次数: 6803
  • HTML阅读次数: 5766
  • 引用次数: 0
历史
  • 收稿日期:2020-09-15
  • 最后修改日期:2020-10-26
  • 在线发布日期: 2021-01-15
  • 出版日期: 2021-09-06
文章二维码
您是第19892371位访问者
版权所有:中国科学院软件研究所 京ICP备05046678号-3
地址:北京市海淀区中关村南四街4号,邮政编码:100190
电话:010-62562563 传真:010-62562533 Email:jos@iscas.ac.cn
技术支持:北京勤云科技发展有限公司

京公网安备 11040202500063号