BOOKS Published
BOOKS Published
S. D. Kim and M. Kim, Hands-on Software Architecture: Unified Architecture Process. Springer, 2025. ISBN: 978-3-032-01183-1.
This book introduces the Unified Architecture Process (UAP), a rigorous framework for addressing challenges in modern industrial software systems. It is organized into three parts: Part I presents foundational principles and outlines the UAP; Part II details guidelines for each UAP activity, supported by rationales, templates, examples, and checklists; and Part III provides key resources, including a catalog of over 30 representative architecture styles.
Featuring 190 figures and 140 exercises, the book offers practical insights and promotes hands-on learning. It combines academic rigor with practical applicability, equipping students and professionals with structured methodologies. A companion website supplements the text with downloadable templates, case studies, and additional resources.
S. D. Kim and J. Jin, Advanced Object-Oriented Programming: Best Practices with C++, Java, and Python. (Forthcoming, Spring 2026)
This book explores advanced object-oriented programming (OOP) across C++, Java, and Python, moving beyond the basics to cover polymorphism, dynamic binding, abstract classes, interfaces, generics, and reflection. By presenting concepts with language-specific syntax and comparative examples, it highlights both shared foundations and unique features of each language, fostering deeper understanding and stronger design skills.
It also examines advanced topics including (1) Copilot-Assisted OOP, (2) Object-Oriented Development Process, (3) UML, and (4) Design Patterns. With clear explanations, cross-language perspectives, and practical exercises, the book serves as a all-in-one resource for students and developers seeking to master OOP principles and apply them in real-world contexts.
S. D. Kim, “Software reusability,” in Wiley Encyclopedia of Computer Science and Engineering, B. W. Wah, Ed. Hoboken, NJ, USA: Wiley, 2009, pp. 2679–2688.
This chapter in the Encyclopedia provides an in-depth study of software reusability as a fundamental approach to addressing the software crisis of escalating cost and complexity. It examines reuse from multiple perspectives, including technical mechanisms, organizational support, and psychological barriers such as the “not-invented-here” syndrome. By reusing assets ranging from source code to domain models, the chapter argues that software development can achieve higher productivity, maintainability, and reduced time-to-market.
The evolution of reuse technologies is systematically analyzed across programming paradigms—procedural programming, object-oriented programming, component-based development, product-line engineering, model-driven development, and service-oriented computing. In addition, higher-level reuse constructs such as design patterns and architectural styles are discussed as enduring vehicles for transferring proven design expertise. The chapter concludes with key trends in reuse, including the shift toward black-box reuse, higher abstraction levels, coarse-grained assets, and standardized interfaces, establishing reuse as a central strategy for engineering cost-effective, high-quality systems.
S. D. Kim and H. J. La, Advanced Object-Oriented Programming. In Korean. Hongrung Publishing, 2015, 308 p., ISBN: 9791156004073.
This book offers a comprehensive exploration of object-oriented programming (OOP), a paradigm that has matured into a cornerstone of modern software engineering. OOP serves as the foundation for numerous important technologies, including object-oriented analysis and design (OOAD), component-based development, design patterns, software architecture, middleware, integrated development environments, and domain-specific models.
Rich with examples in C++ and Java, this book provides both theoretical depth and direct applicability. Designed for learners at introductory, intermediate, and advanced levels, and supported with lecture slides and exercise solutions, the book serves as a systematic guide and hands-on resource for mastering object-oriented programming and effectively applying it in academic and industrial contexts.
[Original English Version] C. Larman, Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development, 3rd ed. Prentice Hall, 2004
[Korean Translated Version] C. Larman, Applying UML and Patterns, 3rd ed., S. D. Kim, Translator. Seoul, Korea: InsYoung, 2007
This book, Applying UML and Patterns, 3rd Edition, is a widely used guide to OOAD) with the UML and design patterns. It introduces fundamental OO concepts and demonstrates how to systematically transform requirements into effective software models. Emphasizing an iterative, use-case–driven process, the book integrates UML notations with proven object-oriented principles to support practical system development.
The third edition expands coverage of design patterns and agile practices, with updated examples and refined explanations. Through case studies and step-by-step exercises, readers learn to apply UML diagrams with design patterns to build flexible and maintainable systems. Combining clarity and practicality, this edition serves as a valuable resource for students, software engineers, and architects seeking to master object-oriented design.
BOOKS in Progress
AI Systems Architecture: Design Principles, Patterns, and Practices (To be released in Fall 2026)
This book is intended for advanced Computer Science students, AI practitioners, software architects, and technical project managers seeking comprehensive guidance on modern AI system design.It offers an in-depth exploration of
major machine learning algorithms, reference architectures for various AI system categories, system integration principles, and emerging methodologies for developing intelligent systems.
The book contains 6 parts:
Part I. Foundations of AI Systems Architecture
Part II. Architecture of Classical AI Systems
Part III. Architecture of Neural Network Systems
Part IV. Architecture of Reinforcement Learning Systems
Part V. Architecture of Generative AI Systems
Part VI. Architecture of Agentic AI Systems