Welcome to
Hands-on Software Engineering Resources

Hands-on Software Engineering provides practical resources for learning and applying modern software engineering principles, methods, and best practices. The site emphasizes systematic processes, clear guidelines, concrete examples, and reusable resources that help students, practitioners, educators, and researchers apply software engineering concepts to real-world systems.

The contents are organized around our published and forthcoming books and currently focus on three major areas:

  • Hands-on Software Architecture: Unified Architecture Process
  • AI-Assisted Object-Oriented Programming: Generation, Review, and Refactoring
  • AI Software Engineering: Principles, Methods, and Practices

These resources are primarily designed to support the development of large-scale conventional and AI-based software systems, where systematic engineering processes, sound design principles, and disciplined practices are particularly important. Each area combines conceptual foundations with hands-on methods, examples, templates, case studies, and supporting materials for practical application.


Hands-on Software Architecture: Unified Architecture Process

Software architecture is a critical design activity in modern software development, forming the foundation for building reliable, scalable, and maintainable systems. Its importance becomes even greater in large-scale, industrial-strength applications, where complexity, performance requirements, and integration demands introduce significant design challenges. Addressing these challenges requires not only technical insight but also a systematic and disciplined architectural process.

A methodological approach to software architecture design provides this needed structure. It defines clear activities, artifacts, and decision workflows that guide architects from requirements understanding to architectural formulation and evaluation. By incorporating principles, quality attribute analysis, architectural patterns, and scenario-based assessment into a cohesive process, such methodologies promote consistency, traceability, and rigor in architectural decisions. This structured foundation supports the development of architectures that are adaptable, robust, and aligned with long-term system objectives.

The Unified Architecture Process (UAP) offers a comprehensive methodology for applying this structured approach in practice. UAP organizes architecture design into well-defined activities, work products, and architecture views that connect requirements to architectural solutions. It integrates quality attributes, architectural patterns, rationale documentation, and scenario-based evaluations into an iterative workflow that guides architects from early analysis to architectural consolidation. By providing a disciplined and repeatable process, UAP supports the creation of architectures that are transparent, justifiable, and aligned with both functional and non-functional system goals.

The Unified Architecture Process (UAP) is presented in detail in the following book:

Soo Dong Kim and Mira Kim, Hands-on Software Architecture: Unified Architecture Process, Springer, Nov. 2025. 517 pp., ISBN 978-3-032-01183-1

This website provides supplementary UAP resources, guidelines, templates, examples, and case studies for learning and applying software architecture design in practice.

View on Springer →


AI-Assisted OOP: Generation, Review, and Refactoring

Why Programming In the AI Era?

As AI copilots increasingly generate code from natural-language prompts, it may seem that traditional programming skills are becoming less important. In reality, programming knowledge is more important than ever. AI can rapidly produce candidate solutions, but it cannot reliably determine whether the resulting code is correct, well designed, secure, maintainable, or appropriate for a particular system context. Developers must still understand the problem, express design intent and constraints, evaluate alternatives, identify weaknesses, and validate that the software satisfies its requirements.

Programming knowledge therefore provides the foundation for using AI effectively. Skilled developers know what to ask for, how to assess generated code, and how to refine it when necessary. Programming also develops disciplined problem-solving skills, including decomposition, abstraction, logical reasoning, and systematic design. In the AI era, the programmer’s role is evolving from writing every line of code manually to guiding, evaluating, and improving AI-generated solutions through effective human–AI collaboration.

Why OOP Constructs Matter

A sound understanding of object-oriented programming constructs is essential because they provide the foundation for designing, analyzing, and implementing object-oriented software. Constructs such as objects, classes, inheritance, polymorphism, dynamic binding, abstract classes, interfaces, generic classes, and reflection enable developers to realize abstraction, encapsulation, reuse, extensibility, and flexible software structures. This understanding is even more important in AI-assisted programming, where developers must be able to judge whether AI-generated code applies OOP mechanisms correctly, assigns responsibilities appropriately, and produces maintainable and extensible designs. Without a solid grasp of these constructs, developers cannot reliably evaluate, refine, or validate AI-generated object-oriented code.

AI-Assisted OOP Practices

AI copilots can significantly enhance object-oriented programming by supporting three major activities: code generation, code review, and code refactoring. However, effective AI assistance requires developers to provide clear programming intent, design constraints, and evaluation criteria rather than relying on unconstrained code generation.

Structured copilot prompt templates help make these interactions more precise, systematic, and repeatable. Through this human–AI collaboration, developers remain responsible for guiding the copilot, evaluating its outputs, refining the generated solutions, and validating that the final code satisfies both functional requirements and sound OOP principles.

The AI-Assisted Object-Oriented Programming approach is presented in detail in the following forthcoming book:

Soo Dong Kim, Jennifer Jin, and Mira Kim, AI-Assisted Object-Oriented Programming: Generation, Review, and Refactoring in C++, Java, and Python. (Forthcoming)

This website provides supplementary resources on essential OOP concepts, AI-assisted OOP practices, structured copilot prompt templates, and practical examples for learning and applying object-oriented programming in the AI era.


AI Software Engineering: Principles, Methods, and Practices

An AI system refers to a system that integrates data acquisition, learning models, reasoning mechanisms, and deployment infrastructure to deliver intelligent functionality in real-world environments. It encompasses not only machine learning or inference components but also the broader engineering processes—such as data management, system architecture, scalability, monitoring, and continuous improvement. Developing complete AI systems is highly demanding due to the complexity of acquiring and managing data, training and configuring models, integrating reasoning mechanisms, and deploying these components within robust and scalable infrastructures.

This forthcoming book presents principles, methods, and practices for systematically engineering AI-based software systems, with emphasis on requirements, data engineering, model engineering, software architecture and design, implementation and integration, validation, deployment, monitoring, and lifecycle management.

Detailed contents and supporting resources will be provided later as the book develops.


Meet Our Team

We are a team of researchers and practitioners with extensive R&D experience. Our team brings together two categories of experts: Computer Science experts and Application Domain experts.
Key members of the team include the following experts:

  • Soo Dong Kim, Ph.D. (Software Architecture, Agentic AI Systems, AI in Healthcare)
    Founder/CEO, PrimeAI Labs LLC, CA, USA
    Emeritus Professor, School of Software, Soongsil University, Seoul, Korea
  • Jennifer Jin, Ph.D. (Software Engineering, Machine Learning)
    Associate Professor, School of Computer Science and Engineering, California State University, San Bernadino, CA, USA
  • Mira Kim, Ph.D. (Software Engineering, AI Systems Design)
    Assistant Professor, Department of Computer Science, California State University, Fullerton, CA, USA
  • Daniel Jin, M.D. (AI Systems for Medical Diagnosis)
    Assistant Professor, Vascular & Interventional Radiology, Loma Linda University Medical Center, CA, USA
  • Myong Ho Song, Ph.D. (Software Engineering, Industrial AI Systems)
    Project Manager, Division of Industrial AI, DeltaX Corporation, Seoul, Korea
  • And other contributors specializing in UX design, software development, quality assurance, and back-end engineering.