Tackling Complexity in the Heart of Software. Domain-Driven Design 카페서비스개발팀 조영호

Size: px
Start display at page:

Download "Tackling Complexity in the Heart of Software. Domain-Driven Design 카페서비스개발팀 조영호"

Transcription

1 Tackling Complexity in the Heart of Software Domain-Driven Design 카페서비스개발팀 조영호

2 목차 1. Domain & Software 2. What is Domain-Driven Design? 3. Patterns of Domain-Driven Design 4. Conclusion

3 1. Domain & Software

4 Domain-Driven Design - Book By Eric Evans Addison-Wesley, / 문서의제목

5 Domain & Software The subject area to which the user applies a program is the domain of the software. The critical complexity of most software projects is in understanding the domain itself. 5 / 문서의제목

6 Domain & Software Software has to Model the Domain 6 / 문서의제목

7 But... AOP Database Grails RoR Naked Object Ajax ActiveMQ Mockito ORM Coarse Grained Lock Continuous Integration Spring Hibernate J2EE Hadoop Dependency Injection Strategy 7 / 문서의제목

8 Conversation Based on Technology Cargo cargoid originid destination customers clearance(opt) weight Haz Mat Code origin destination customers clearance (opt) Routing Service populate cargo_bookings table Database table : cargo_bookings Cargo_id Transport Load Unload "If we give the Routing Service an origin, destination, and arrival time, it can look up the stops the cargo will have to make and, well... stick them in the database." 8 / 문서의제목

9 2. What is Domain-Driven Design?

10 Representation[Semantic] Gap The gap between our mental model of the domain and its representation in software Name from domain vocabulary Responsibility derived from domain concept Cat Lion Low Representation Gap 10 / 문서의제목

11 Ice Age of EJB <<interface>> EJBHome <<interface>> CatHome <<interface>> EntityBean Cat Domain Concept High Representation Gap <<interface>> EJBObject CatEJB <<interface>> Cat Design 11 / 문서의제목

12 Technology Exodus OO design is more important than any particular implementation technology (such as J2EE, or even Java). And now important than even Spring or Hibernate 12 / 문서의제목

13 DOMAIN MODEL Pattern An object model of the domain that incorporates both behavior and data. Back to the Origin of the OO TRANSACTION SCRIPT & ANEMIC DOMAIN MODEL Sale gettotalprice() : long settotalprice(long) getlineitems() : Collection setlineimtes(collection) LineItem getprice() : long setprice(long) getprioduct() : Product setproduct(product) RICH DOMAIN MODEL Sale calclulateprice() : Money addlineitem(lineitem) * LineItem calculateprice() : long 13 / 문서의제목

14 Continuous Design in Agile Specification Refactoring Test Big Up-front Design Incremental Design Code Design 14 / 문서의제목

15 Analysis = Design = Implementation Showing time seatid Showing time : TimeOfDay seatid 1 ReservationSeat Analysis Model ReservationSeat Design Model Showing showing = showingrepository.getshowingwithlock(showingid); Reservation reservation = showing.reserveseats(seatids, adultseatcount, teenagerseatcount); reservationrepository.savereservation(reservation); Implementation Model 15 / 문서의제목

16 And Finally Focus on Domain Complexity, not Technology Complexity Everything is Driven By Domain 16 / 문서의제목

17 And Finally Tackling Complexity in the Heart of Software 17 / 문서의제목

18 And Finally MODEL-DRIVEN DESIGN UBIQUITOUS LANGUAGE 18 / 문서의제목

19 Model 19 / 문서의제목

20 Model A system of abstractions that describes selected aspects of a domain and can be used to solve problems related to that domain A model is not right or wrong, only more or less useful 20 / 문서의제목

21 Domain Modeling Documentary Film A domain modeler chooses particular model for usability 21 / 문서의제목

22 Model & Diagram A Domain Model is not a particular diagram. It is the knowledge that the diagram is intended to convey. The Diagram is a representation of Model Not a Model 22 / 문서의제목

23 Model-Driven Design 23 / 문서의제목

24 Model-Driven Design The MODEL and the heart of the DESIGN shape each other Showing time seatid Showing time : TimeOfDay seatid 1 ReservationSeat DOMAIN MODEL ReservationSeat DESIGN Showing showing = showingrepository.getshowingwithlock(showingid); Reservation reservation = showing.reserveseats(seatids, adultseatcount, teenagerseatcount); reservationrepository.savereservation(reservation); CODE 24 / 문서의제목

25 Model-Driven Design Find the Model that works for Analysis, Design and Implementation Lower Representation Gap Object-Oriented Paradigm is the most Powerful The Code is an expression of Model 25 / 문서의제목

26 Hands-On Modelers A Programmer is a Modeler. 26 / 문서의제목

27 UBIQUITOUS LANGUAGE 27 / 문서의제목

28 UBIQUITOUS LANGUAGE Discussion between Developers and Domain Experts Conversations among Developers Discussions among Domain Experts Expressions in the Code All based on the same language, derived from a shared Domain Model 28 / 문서의제목

29 UBIQUITOUS LANGUAGE technical terms technical aspects of design technical design patterns domain model terms names of BOUNDED CONTEXT terminology of large-scale structure many patterns from Domain-Driven Design book business terms developers don t understand business terms everyone uses that don t appear in design 29 / 문서의제목

30 UBIQUITOUS LANGUAGE Use the Domain Model as the backbone of a Language Use the UBIQUITOUS LANGES in all communication within team and in the code Use the same language in diagrams, writing, and especially speech One Team, One Language 30 / 문서의제목

31 And Domain-Driven Design Showing Reservation Reservation Seat UBIQUITOUS LANGUAGE Showing time seatid ReservationSeat DOMAIN MODEL Showing showing = showingrepository.getshowingwithlock(showingid); Reservation reservation = showing.reserveseats(seatids, adultseatcount, teenagerseatcount); reservationrepository.savereservation(reservation); CODE 31 / 문서의제목

32 And Domain-Driven Design Showing Reservation Reservation Seat UBIQUITOUS LANGUAGE Showing time seatid ReservationSeat DOMAIN MODEL Showing showing = showingrepository.getshowingwithlock(showingid); Reservation reservation = showing.reserveseats(seatids, adultseatcount, teenagerseatcount); reservationrepository.savereservation(reservation); CODE 32 / 문서의제목

33 And Domain-Driven Design Performance Reservation Reservation Seat UBIQUITOUS LANGUAGE Showing time seatid ReservationSeat DOMAIN MODEL Showing showing = showingrepository.getshowingwithlock(showingid); Reservation reservation = showing.reserveseats(seatids, adultseatcount, teenagerseatcount); reservationrepository.savereservation(reservation); CODE 33 / 문서의제목

34 And Domain-Driven Design Performance Reservation Reservation Seat UBIQUITOUS LANGUAGE Performance time seatid ReservationSeat DOMAIN MODEL Showing showing = showingrepository.getshowingwithlock(showingid); Reservation reservation = showing.reserveseats(seatids, adultseatcount, teenagerseatcount); reservationrepository.savereservation(reservation); CODE 34 / 문서의제목

35 And Domain-Driven Design Performance Reservation Reservation Seat UBIQUITOUS LANGUAGE Performance time seatid ReservationSeat DOMAIN MODEL Performance performance = performancerepository.getperformancewithlock( performanceid); Reservation reservation = showing.reserveseats(seatids, adultseatcount, teenagerseatcount); reservationrepository.savereservation(reservation); CODE 35 / 문서의제목

36 And Domain-Driven Design A Showing is / 문서의제목

37 And Domain-Driven Design A Performance is / 문서의제목

38 Conversation Based on Technology Cargo cargoid originid destination customers clearance(opt) weight Haz Mat Code origin destination customers clearance (opt) Routing Service populate cargo_bookings table Database table : cargo_bookings Cargo_id Transport Load Unload "If we give the Routing Service an origin, destination, and arrival time, it can look up the stops the cargo will have to make and, well... stick them in the database." 38 / 문서의제목

39 Conversation Based on Model Cargo Route Specification cargoid weight Haz Mat Code origin destination customers clearance (opt) a Route Specification Routing Service {Itinerary must satisfy specification} an Itinerary satisfying the Route Specification 0..1 Itinerary Leg "A Routing Service finds an Itinerary that satisfies a Route Specification. 39 / 문서의제목

40 3. Patterns of Domain-Driven Design

41 Domain-Driven Design & Patterns DDD is not about patterns such as ENTITY, VALUE OBJECT, AGGREGATE, REPOSITORY, SERVICE, FACTORY DDD is a better way of thinking about software design Patterns may take your software more stable or more maintainable, but it is the methodology that guides you to deliver something fit for purpose 41 / 문서의제목

42 DOMAIN MODEL is a King 42 / 문서의제목

43 A King, DOMAN MODEL is RICH, Not ANEMIC <<interface>> ScheduleService reserve(showingid, seats,adultseatcount, teenagerseatcount) : Reservation <<interface>> ShowingRepository -showingrepository ScheduleServiceImpl -reservationrepository <<interface>> ReservationRepository getshowingwithlock(showingid) :Showing savereservation(reservation) ShowingFactory Showing create(dayofyear, showingspecification) : Showing time:timeofyear 1 seatid <<interface>> SeatState 1 1 ReservationSeat 0..1 leftseat 0..1 rightseat 0..* 0..1 Reservation amount:money AbstractSeatState 0..1 nextseatstate 0..1 previousseatstate Occupied Reserved Sold 43 / 문서의제목

44 A King, DOMAN MODEL is RICH, Not ANEMIC SERVICE <<interface>> ScheduleService reserve(showingid, seats,adultseatcount, teenagerseatcount) : Reservation REPOSITORY <<interface>> ShowingRepository -showingrepository ScheduleServiceImpl -reservationrepository <<interface>> ReservationRepository getshowingwithlock(showingid) :Showing FACTORY savereservation(reservation) ENTITY Showing ShowingFactory create(dayofyear, showingspecification) : Showing AGGREGATE time:timeofyear seatid 1 <<interface>> SeatState AbstractSeatState 1 1 ReservationSeat 0..1 leftseat 0..1 rightseat 0..* 0..1 Reservation amount:money VALUE OBJECT 0..1 nextseatstate 0..1 previousseatstate Occupied Reserved Sold 44 / 문서의제목

45 A King should be Protected 45 / 문서의제목

46 Layered Architecture User Interface Application Domain Infrastructure 46 / 문서의제목

47 CONTEXT is a King s Domain 47 / 문서의제목

48 BOUNDED CONTEXT 48 / 문서의제목

49 BOUNDED CONTEXT CONTEXT CONTEXT Model Model 49 / 문서의제목

50 Translate two UBIQUATIOUS LABUAGES 50 / 문서의제목

51 CONTEXT MAP CONTEXT CONTEXT Model Model TRNSLATION MAP 51 / 문서의제목

52 CONTINUOUS INTEGRATION CONTEXT CONTEXT Model Model CONTINUOUS INTEGRATION per each CONTEXT 52 / 문서의제목

53 A king should learn continuously 53 / 문서의제목

54 DISTILLATION User Interface Application ABSTRACT CORE Refactoring Domain CORE DOMAIN GENERIC SUBDOMAIIN COHESIVE MECHANISM SEGREGATED CORE Infrastructure 54 / 문서의제목

55 CONTEXT & MODEL Single, Unified Model within Any One Context CONTEXT CONTEXT Model Model No duplication...within a context! Duplication between...aok! 55 / 문서의제목

56 4. Conclusion

57 No Silver Bullet 57 / 문서의제목

58 Essence of Software Complexity Conformity Changeability Invisibility 58 / 문서의제목

59 Essence of Software Complexity Conformity Changeability Invisibility Related to Domain & Domain Model 59 / 문서의제목

60 Domain-Drive Design Back to the Basics Software should model the Domain Software & Project should be based on the Domain Model Software that provides rich functionality based on a fundamental understanding of the core domain Tackling Essence in the Heart of Software 60 / 문서의제목

61 But Remember... No Silver Bullet 61 / 문서의제목

62 Resources - Domain-Driven Design, Eric Evans, Addison-Wesley, Patterns of Enterprise Application Architecture, Martin Fowler, Addison-Wesley, Applying Domain-Driven Design and Patterns, Jimmy Nilson, Addison-Wesley, Domain Driven Design Quickly, - Domain-Driven Design Step-By-Step, filesystemfile.ashx/ key/communityserver.components.sitefiles/domain-driven- Design-_2D00_-Step-by-Step.pdf - Domain-Driven Design Community, - Eternity s Chit-Chat, 62 / 문서의제목

63 Thank you.

64 Question.

Lecture 23: Domain-Driven Design (Part 1)

Lecture 23: Domain-Driven Design (Part 1) 1 Lecture 23: Domain-Driven Design (Part 1) Kenneth M. Anderson Object-Oriented Analysis and Design CSCI 6448 - Spring Semester, 2005 2 Goals for this lecture Introduce the main concepts of Domain-Driven

More information

Enterprise Java Development using JPA, Hibernate and Spring. Srini Penchikala Detroit JUG Developer Day Conference November 14, 2009

Enterprise Java Development using JPA, Hibernate and Spring. Srini Penchikala Detroit JUG Developer Day Conference November 14, 2009 Enterprise Java Development using JPA, Hibernate and Spring Srini Penchikala Detroit JUG Developer Day Conference November 14, 2009 About the Speaker Enterprise Architect Writer, Speaker, Editor (InfoQ)

More information

Architecting and Implementing Domain-driven Design Patterns in.net

Architecting and Implementing Domain-driven Design Patterns in.net Architecting and Implementing Domain-driven Design Patterns in.net Dino Esposito JetBrains dino.esposito@jetbrains.com @despos facebook.com/naa4e WARNING This is NOT simply a shameless plug but a truly

More information

Patterns Of Enterprise Application Architecture (Addison-Wesley Signature Series (Fowler)) PDF

Patterns Of Enterprise Application Architecture (Addison-Wesley Signature Series (Fowler)) PDF Patterns Of Enterprise Application Architecture (Addison-Wesley Signature Series (Fowler)) PDF The practice of enterprise application development has benefited from the emergence of many new enabling technologies.

More information

Designing the M in MVC

Designing the M in MVC Designing the M in MVC Rob Allen @akrabat ~ May 2017 ~ http://akrabat.com (slides at http://akrabat.com/talks) The business logic is the hard part MVC MVC DDD is an approach to help you manage the model

More information

. METHODOLOGY. MVC Based E-commerce Design. Literature Review based On Model View Controller MVC with J2EE. Public Cloud Implementation for E-commerce

. METHODOLOGY. MVC Based E-commerce Design. Literature Review based On Model View Controller MVC with J2EE. Public Cloud Implementation for E-commerce . METHODOLOGY MVC Based E-commerce Design Literature Review based On Model View Controller MVC with J2EE Public Cloud Implementation for E-commerce Cloud Computing Literature Review with E-commerce. Registered

More information

THE DUAL MODEL ARCHITECTURE

THE DUAL MODEL ARCHITECTURE Xalt DATA SHEET THE DUAL MODEL ARCHITECTURE 1. INTRODUCTION Xalt is a revolutionary technology platform for key business operations across all industries. It enables the convergence of the physical world

More information

Application Architectures, Design Patterns

Application Architectures, Design Patterns Application Architectures, Design Patterns Martin Ledvinka martin.ledvinka@fel.cvut.cz Winter Term 2017 Martin Ledvinka (martin.ledvinka@fel.cvut.cz) Application Architectures, Design Patterns Winter Term

More information

J2EE AntiPatterns. Bill Dudney. Object Systems Group Copyright 2003, Object Systems Group

J2EE AntiPatterns. Bill Dudney. Object Systems Group Copyright 2003, Object Systems Group J2EE AntiPatterns Bill Dudney Object Systems Group bill@dudney.net Bill Dudney J2EE AntiPatterns Page 1 Agenda What is an AntiPattern? What is a Refactoring? AntiPatterns & Refactorings Persistence Service

More information

Lecture 2: Software Engineering (a review)

Lecture 2: Software Engineering (a review) Lecture 2: Software Engineering (a review) Kenneth M. Anderson Object-Oriented Analysis and Design CSCI 6448 - Spring Semester, 2003 Credit where Credit is Due Some material presented in this lecture is

More information

Domain Driven Design IS. An architectural methodology for evolving a software system that closely aligns to business requirements

Domain Driven Design IS. An architectural methodology for evolving a software system that closely aligns to business requirements Domain Driven Design IS An architectural methodology for evolving a software system that closely aligns to business requirements Domain Driven Design IS Domain First Focus on the Object Model Focus on

More information

Want Better Software? TEST it! (and thenwrite it) Tame defects before they appear You Rise/Bugs Fall

Want Better Software? TEST it! (and thenwrite it) Tame defects before they appear You Rise/Bugs Fall Want Better Software? TEST it! (and thenwrite it) Tame defects before they appear You Rise/Bugs Fall Introduction TDD had its origins as an integral part of Extreme Programming TDD, BDD, DDD and the coming

More information

1 Software Architecture

1 Software Architecture Some buzzwords and acronyms for today Software architecture Design pattern Separation of concerns Single responsibility principle Keep it simple, stupid (KISS) Don t repeat yourself (DRY) Don t talk to

More information

Extreme programming XP 6

Extreme programming XP 6 Extreme programming XP 6 Planning Game 3 Planning Game Independent: Stories should be as independent as possible. When thinking of independence it is often easier to think of order independent. In other

More information

DDD Where s the value and what s in it for me?

DDD Where s the value and what s in it for me? DDD Where s the value and what s in it for me? Dino Esposito JetBrains dino.esposito@jetbrains.com @despos facebook.com/naa4e What does a software architect do? Design software driven by the requirements

More information

Developing Web-Based Applications Using Model Driven Architecture and Domain Specific Languages

Developing Web-Based Applications Using Model Driven Architecture and Domain Specific Languages Proceedings of the 8 th International Conference on Applied Informatics Eger, Hungary, January 27 30, 2010. Vol. 2. pp. 287 293. Developing Web-Based Applications Using Model Driven Architecture and Domain

More information

DDD and BDD. Dan North ThoughtWorks

DDD and BDD. Dan North ThoughtWorks DDD and BDD Dan North ThoughtWorks BDD and DDD Dan North ThoughtWorks What is Domain Driven Design? It s about focusing on the domain and letting it affect the software very much - Jimmy Nilsson (ADDDP)

More information

Understading Refactorings

Understading Refactorings Understading Refactorings Ricardo Terra terra@dcc.ufmg.br Marco Túlio Valente mtov@dcc.ufmg.br UFMG, 2010 UFMG, 2010 Understanding Refactorings 1 / 36 Agenda 1 Overview 2 Refactoring 3 Final Considerations

More information

Systems software design

Systems software design Systems software design Methods of system analysis and design Who are we? Krzysztof Kąkol Software Developer PGS Software S.A. Jarosław Świniarski Software Developer PGS Software S.A. Presentation based

More information

Understanding. Domain-Driven Design

Understanding. Domain-Driven Design Understanding Domain-Driven Design 1 Domain-Driven Design Is about developers and domain experts working together to create software that is both understandable and maintainable. a way to capture and spread

More information

Agile Architecture. The Why, the What and the How

Agile Architecture. The Why, the What and the How Agile Architecture The Why, the What and the How Copyright Net Objectives, Inc. All Rights Reserved 2 Product Portfolio Management Product Management Lean for Executives SAFe for Executives Scaled Agile

More information

(p t y) lt d. 1995/04149/07. Course List 2018

(p t y) lt d. 1995/04149/07. Course List 2018 JAVA Java Programming Java is one of the most popular programming languages in the world, and is used by thousands of companies. This course will teach you the fundamentals of the Java language, so that

More information

CQRS and Event Sourcing for Java Developers Markus Eisele

CQRS and Event Sourcing for Java Developers Markus Eisele CQRS and Event Sourcing for Java Developers Markus Eisele @myfear Agenda Classical architectures and modernization CRUD vs. CQRS A little example Wrapping it up Classical Architectures Application Server

More information

OBJECT-ORIENTED DOMAIN DRIVEN DESIGN. Robert Bräutigam MATHEMA So ware GmbH.

OBJECT-ORIENTED DOMAIN DRIVEN DESIGN. Robert Bräutigam MATHEMA So ware GmbH. " OBJECT-ORIENTED DOMAIN DRIVEN DESIGN Robert Bräutigam MATHEMA So ware GmbH. GOAL TO INTRODUCE A NEW** DESIGN PARADIGM WHICH INCREASES MAINTAINABILITY* OF SOFTWARE. OO AND DDD? ISN'T THAT REDUNTANT?

More information

Avancier Methods. Very basic design patterns. It is illegal to copy, share or show this document

Avancier Methods. Very basic design patterns. It is illegal to copy, share or show this document Methods Very basic design patterns It is illegal to copy, share or show this document (or other document published at http://avancier.co.uk) without the written permission of the copyright holder Copyright

More information

SOFTWARE ENGINEERING. Lecture 6. By: Latifa ALrashed. Networks and Communication Department

SOFTWARE ENGINEERING. Lecture 6. By: Latifa ALrashed. Networks and Communication Department 1 SOFTWARE ENGINEERING Networks and Communication Department Lecture 6 By: Latifa ALrashed Outline q q q q q q q q Define the concept of the software life cycle in software engineering. Identify the system

More information

.NET Three Examples of Applied Patterns Jimmy Nilsson

.NET Three Examples of Applied Patterns Jimmy Nilsson .NET Three Examples of Applied Patterns Jimmy Nilsson About Jimmy Nilsson Primarily a developer, but also a trainer and author Blogs at www.jnsk.se/weblog/ Author of Applying Domain-Driven Design and Patterns

More information

POJOs in Action DEVELOPING ENTERPRISE APPLICATIONS WITH LIGHTWEIGHT FRAMEWORKS CHRIS RICHARDSON MANNING. Greenwich (74 w. long.)

POJOs in Action DEVELOPING ENTERPRISE APPLICATIONS WITH LIGHTWEIGHT FRAMEWORKS CHRIS RICHARDSON MANNING. Greenwich (74 w. long.) POJOs in Action DEVELOPING ENTERPRISE APPLICATIONS WITH LIGHTWEIGHT FRAMEWORKS CHRIS RICHARDSON MANNING Greenwich (74 w. long.) contents PART 1 1 preface xix acknowledgments xxi about this book xxiii about

More information

Socket attaches to a Ratchet. 2) Bridge Decouple an abstraction from its implementation so that the two can vary independently.

Socket attaches to a Ratchet. 2) Bridge Decouple an abstraction from its implementation so that the two can vary independently. Gang of Four Software Design Patterns with examples STRUCTURAL 1) Adapter Convert the interface of a class into another interface clients expect. It lets the classes work together that couldn't otherwise

More information

Overview of Sentence Order Reference Document Development Process

Overview of Sentence Order Reference Document Development Process Overview of Sentence Order Reference Document Development Process Scott Came Justice Integration Solutions, Inc. September 14, 2004 Purpose The purpose of this document is to outline the process/methodology

More information

BUILDING MICROSERVICES ON AZURE. ~ Vaibhav

BUILDING MICROSERVICES ON AZURE. ~ Vaibhav BUILDING MICROSERVICES ON AZURE ~ Vaibhav Gujral @vabgujral About Me Over 11 years of experience Working with Assurant Inc. Microsoft Certified Azure Architect MCSD, MCP, Microsoft Specialist Aspiring

More information

02291: System Integration

02291: System Integration 02291: System Integration Hubert Baumeister hub@imm.dtu.dk Spring 2011 Contents 1 Recap 1 2 More UML Diagrams 2 2.1 Object Diagrams........................................... 2 2.2 Communication Diagrams......................................

More information

Responsibilities. Using several specific design principles to guide OO design decisions.

Responsibilities. Using several specific design principles to guide OO design decisions. Designing Objects with Responsibilities Using several specific design principles to guide OO design decisions. Challenge Old-school advice on OOD After identifying i your requirements and creating a domain

More information

Design Patterns Thinking and Architecture at Scale

Design Patterns Thinking and Architecture at Scale Design Patterns Thinking and Architecture at Scale This talk is based on Net Objectives design patterns training and Al Shalloway and Jim Trott s book Design Patterns Explained. Please contact Al at alshall@netobjectives.com

More information

Introduction to Software Engineering

Introduction to Software Engineering Introduction to Software Engineering Gérald Monard Ecole GDR CORREL - April 16, 2013 www.monard.info Bibliography Software Engineering, 9th ed. (I. Sommerville, 2010, Pearson) Conduite de projets informatiques,

More information

The Unified Modelling Language. Example Diagrams. Notation vs. Methodology. UML and Meta Modelling

The Unified Modelling Language. Example Diagrams. Notation vs. Methodology. UML and Meta Modelling UML and Meta ling Topics: UML as an example visual notation The UML meta model and the concept of meta modelling Driven Architecture and model engineering The AndroMDA open source project Applying cognitive

More information

Object- Oriented Design with UML and Java Part I: Fundamentals

Object- Oriented Design with UML and Java Part I: Fundamentals Object- Oriented Design with UML and Java Part I: Fundamentals University of Colorado 1999-2002 CSCI-4448 - Object-Oriented Programming and Design These notes as free PDF files: http://www.softwarefederation.com/cs4448.html

More information

Domain Engineering And Variability In The Reuse-Driven Software Engineering Business.

Domain Engineering And Variability In The Reuse-Driven Software Engineering Business. OBM 7 -draft 09/02/00 1 Domain Engineering And Variability In The Reuse-Driven Software Engineering Business. Martin L. Griss, Laboratory Scientist, Hewlett-Packard Laboratories, Palo Alto, CA. Effective

More information

CORE JAVA. Saying Hello to Java: A primer on Java Programming language

CORE JAVA. Saying Hello to Java: A primer on Java Programming language CORE JAVA Saying Hello to Java: A primer on Java Programming language Intro to Java & its features Why Java very famous? Types of applications that can be developed using Java Writing my first Java program

More information

Table of Index Hadoop for Developers Hibernate: Using Hibernate For Java Database Access HP FlexNetwork Fundamentals, Rev. 14.21 HP Navigating the Journey to Cloud, Rev. 15.11 HP OneView 1.20 Rev.15.21

More information

CONFIGURING A SPRING DEVELOPMENT ENVIRONMENT

CONFIGURING A SPRING DEVELOPMENT ENVIRONMENT Module 5 CONFIGURING A SPRING DEVELOPMENT ENVIRONMENT The Spring Framework > The Spring framework (spring.io) is a comprehensive Java SE/Java EE application framework > Spring addresses many aspects of

More information

Agile Engineering. and other stuff I m working on

Agile Engineering. and other stuff I m working on Agile Engineering and other stuff I m working on 2008 Gilb conference on Risk Ryan Shriver > Managing Consultant > rshriver@dominiondigital.com Leader in IT Performance Improvement > www.dominiondigital.com

More information

Introduction to Testing and Maintainable code

Introduction to Testing and Maintainable code Introduction to Testing and Maintainable code Reasons not to write unit tests 1. I don't know how to write tests. 2. Writing tests is too hard. 3. I don't have enough time to write tests. 4. Testing is

More information

Creating Models. Rob Allen, July 2014

Creating Models. Rob Allen, July 2014 Creating Models Rob Allen, July 2014 I make business websites 19ft.com The business logic is the hard part MVC MVC The model is the solution to a problem A problem A customer wants to plan a journey

More information

EJB ENTERPRISE JAVA BEANS INTRODUCTION TO ENTERPRISE JAVA BEANS, JAVA'S SERVER SIDE COMPONENT TECHNOLOGY. EJB Enterprise Java

EJB ENTERPRISE JAVA BEANS INTRODUCTION TO ENTERPRISE JAVA BEANS, JAVA'S SERVER SIDE COMPONENT TECHNOLOGY. EJB Enterprise Java EJB Enterprise Java EJB Beans ENTERPRISE JAVA BEANS INTRODUCTION TO ENTERPRISE JAVA BEANS, JAVA'S SERVER SIDE COMPONENT TECHNOLOGY Peter R. Egli 1/23 Contents 1. What is a bean? 2. Why EJB? 3. Evolution

More information

The Value of Values. Rich Hickey Datomic, Clojure

The Value of Values. Rich Hickey Datomic, Clojure The Value of Values Rich Hickey Datomic, Clojure I.T. Information Inform to convey knowledge via facts give shape to (the mind) Information the facts What is a Fact? Place where specific information is

More information

Data Modeling with Neo4j. Stefan Armbruster, Neo Technology (slides from Michael Hunger)

Data Modeling with Neo4j. Stefan Armbruster, Neo Technology (slides from Michael Hunger) Data Modeling with Neo4j Stefan Armbruster, Neo Technology (slides from Michael Hunger) 1 1 33 is a 44 NOSQL 55 Graph Database 66 A graph database... NO: not for charts & diagrams, or vector artwork YES:

More information

Introduction to User Stories. CSCI 5828: Foundations of Software Engineering Lecture 05 09/09/2014

Introduction to User Stories. CSCI 5828: Foundations of Software Engineering Lecture 05 09/09/2014 Introduction to User Stories CSCI 5828: Foundations of Software Engineering Lecture 05 09/09/2014 1 Goals Present an introduction to the topic of user stories concepts and terminology benefits and limitations

More information

COURSE 11 DESIGN PATTERNS

COURSE 11 DESIGN PATTERNS COURSE 11 DESIGN PATTERNS PREVIOUS COURSE J2EE Design Patterns CURRENT COURSE Refactoring Way refactoring Some refactoring examples SOFTWARE EVOLUTION Problem: You need to modify existing code extend/adapt/correct/

More information

10 - Integrated Development Environments

10 - Integrated Development Environments 10 - Integrated Development Environments Motivation Writing a toy application with a text editor is comparatively easy. Developing a large software system with just a text editor is much more difficult

More information

Sybase. Strategic Developer. Karl Reti & John Graham February 28, 2005

Sybase. Strategic Developer. Karl Reti & John Graham February 28, 2005 Sybase Strategic Developer Karl Reti & John Graham February 28, 2005 Sybase Sybase enables the unwired enterprise by delivering enterprise and mobile infrastructure, development, and integration software

More information

THIS IS ONLY SAMPLE RESUME - DO NOT COPY AND PASTE INTO YOUR RESUME. WE ARE NOT RESPONSIBLE Name: xxxxxx

THIS IS ONLY SAMPLE RESUME - DO NOT COPY AND PASTE INTO YOUR RESUME. WE ARE NOT RESPONSIBLE Name: xxxxxx Name: xxxxxx Email ID: xxxxxx Ph: xxxxxx Summary: Over 7 years of experience in object oriented programming, design and development of Multi-Tier distributed, Enterprise applications using Java and J2EE

More information

A Quick Chat about two of many Service-Oriented Modeling Framework (SOMF) Capabilities: Simplicity and Traceability

A Quick Chat about two of many Service-Oriented Modeling Framework (SOMF) Capabilities: Simplicity and Traceability SERVICE-ORIENTED MODELING FRAMEWORK (SOMF) - SIMPLICITY AND TRACEABILITY www.modelingconcepts.com Do not be afraid to ask! A Quick Chat about two of many Service-Oriented Modeling Framework (SOMF) Capabilities:

More information

Test-Driven Development

Test-Driven Development Test-Driven Development Kenneth M. Anderson University of Colorado, Boulder CSCI 4448/5448 Lecture 28 04/21/11 University of Colorado, 2011 Credit where Credit is Due Some of the material for this lecture

More information

Software Engineering I (02161)

Software Engineering I (02161) Software Engineering I (02161) Week 11 Assoc. Prof. Hubert Baumeister DTU Compute Technical University of Denmark Spring 2017 Recap I Software Development Processes (cont.) I Project Planning I Design

More information

A Data Modeling Process. Determining System Requirements. Planning the Project. Specifying Relationships. Specifying Entities

A Data Modeling Process. Determining System Requirements. Planning the Project. Specifying Relationships. Specifying Entities Chapter 3 Entity-Relationship Data Modeling: Process and Examples Fundamentals, Design, and Implementation, 9/e A Data Modeling Process Steps in the data modeling process Plan project Determine requirements

More information

ADVANCED SOFTWARE DESIGN LECTURE 7 GRASP

ADVANCED SOFTWARE DESIGN LECTURE 7 GRASP ADVANCED SOFTWARE DESIGN LECTURE 7 GRASP Dave Clarke 1 TODAY S LECTURE We will discuss 7 of the GRASP design patterns cohesion and coupling were covered earlier. These provide principles for evaluating

More information

COPYRIGHTED MATERIAL CONTENTS PART I: THE PRINCIPLES AND PRACTICES OF DOMAIN DRIVEN DESIGN

COPYRIGHTED MATERIAL CONTENTS PART I: THE PRINCIPLES AND PRACTICES OF DOMAIN DRIVEN DESIGN INTRODUCTION xxxv PART I: THE PRINCIPLES AND PRACTICES OF DOMAIN DRIVEN DESIGN CHAPTER 1: WHAT IS DOMAIN DRIVEN DESIGN? 3 The Challenges of Creating Software for Complex Problem Domains 4 Code Created

More information

J2EE - Version: 25. Developing Enterprise Applications with J2EE Enterprise Technologies

J2EE - Version: 25. Developing Enterprise Applications with J2EE Enterprise Technologies J2EE - Version: 25 Developing Enterprise Applications with J2EE Enterprise Technologies Developing Enterprise Applications with J2EE Enterprise Technologies J2EE - Version: 25 5 days Course Description:

More information

Building in Quality: The Beauty of Behavior Driven Development (BDD) Larry Apke - Agile Coach

Building in Quality: The Beauty of Behavior Driven Development (BDD) Larry Apke - Agile Coach Building in Quality: The Beauty of Behavior Driven Development (BDD) Larry Apke - Agile Coach Deming on Quality Quality comes not from inspection, but from improvement of the production process. We cannot

More information

Software Development

Software Development Software Development and Professional Practice Object-Oriented Design Part the Third: (in which we revisit several parts of the OOA&D process, culminating in some general design principles) Object Oriented

More information

CS 2340 Objects and Design

CS 2340 Objects and Design CS 2340 Objects and Design Software Design Christopher Simpkins chris.simpkins@gatech.edu Chris Simpkins (Georgia Tech) CS 2340 Objects and Design Software Design 1 / 6 Design Design (noun) A plan or protocol

More information

Not your Grandfather s Architecture

Not your Grandfather s Architecture Not your Grandfather s Architecture Taking Architecture into the Agile World James O. Coplien Gertrud&Cope, Mørdup, Denmark What is architecture? Architecture is the essence of structure: form Structure

More information

Software Architecture

Software Architecture Software Architecture Architectural Design and Patterns. Standard Architectures. Dr. Philipp Leitner @xleitix University of Zurich, Switzerland software evolution & architecture lab Architecting, the planning

More information

Clean Architecture Patterns, Practices, and #sddconf

Clean Architecture Patterns, Practices, and #sddconf Clean Architecture Patterns, Practices, and Principles @matthewrenze #sddconf About Me Independent consultant Education B.S. in Computer Science (ISU) B.A. in Philosophy (ISU) Community Public Speaker

More information

Spring & Hibernate. Knowledge of database. And basic Knowledge of web application development. Module 1: Spring Basics

Spring & Hibernate. Knowledge of database. And basic Knowledge of web application development. Module 1: Spring Basics Spring & Hibernate Overview: The spring framework is an application framework that provides a lightweight container that supports the creation of simple-to-complex components in a non-invasive fashion.

More information

Domain Modeling. CSSE 574: Week 1, Part 3. Steve Chenoweth Phone: Office (812) Cell (937)

Domain Modeling. CSSE 574: Week 1, Part 3. Steve Chenoweth Phone: Office (812) Cell (937) Domain Modeling CSSE 574: Week 1, Part 3 Steve Chenoweth Phone: Office (812) 877-8974 Cell (937) 657-3885 Email: chenowet@rose-hulman.edu s g Where we re going Sample UP Artifact Relationships date...

More information

Clean Architecture Patterns, Practices, and #DevSum17

Clean Architecture Patterns, Practices, and #DevSum17 Clean Architecture Patterns, Practices, and Principles @matthewrenze #DevSum17 About Me Independent consultant Education B.S. in Computer Science (ISU) B.A. in Philosophy (ISU) Community Public Speaker

More information

COMP 6471 Software Design Methodologies

COMP 6471 Software Design Methodologies COMP 647 Software Design Methodologies Fall 20 Dr Greg Butler http://www.cs.concordia.ca/~gregb/home/comp647-fall20.html Course Introduction Course People Course Components What the course is What the

More information

UML Views of a System

UML Views of a System UML Views of a System The architecture of a system is the fundamental organization of the system as a whole. The five UML Views: Use Case View: focuses on scenarios Design View: focuses on the vocabulary

More information

Web Presentation Patterns (controller) SWEN-343 From Fowler, Patterns of Enterprise Application Architecture

Web Presentation Patterns (controller) SWEN-343 From Fowler, Patterns of Enterprise Application Architecture Web Presentation Patterns (controller) SWEN-343 From Fowler, Patterns of Enterprise Application Architecture Objectives Look at common patterns for designing Web-based presentation layer behavior Model-View-Control

More information

Sitesbay.com. A Perfect Place for All Tutorials Resources. Java Projects C C++ DS Interview Questions JavaScript

Sitesbay.com.  A Perfect Place for All Tutorials Resources. Java Projects C C++ DS Interview Questions JavaScript Sitesbay.com A Perfect Place for All Tutorials Resources Java Projects C C++ DS Interview Questions JavaScript Core Java Servlet JSP JDBC Struts Hibernate Spring Java Projects C C++ DS Interview Questions

More information

5. Application Layer. Introduction

5. Application Layer. Introduction Book Preview This is a sample chapter of Professional PHP - Building maintainable and secure applications. The book starts with a few theory chapters and after that it is structured as a tutorial. The

More information

Introduction. Chapter 1. What Is Visual Modeling? The Triangle for Success. The Role of Notation. History of the UML. The Role of Process

Introduction. Chapter 1. What Is Visual Modeling? The Triangle for Success. The Role of Notation. History of the UML. The Role of Process Quatrani_Ch.01.fm Page 1 Friday, October 27, 2000 9:02 AM Chapter 1 Introduction What Is Visual Modeling? The Triangle for Success The Role of Notation History of the UML The Role of Process What Is Iterative

More information

Top of Minds Report series Data Warehouse The six levels of integration

Top of Minds Report series Data Warehouse The six levels of integration Top of Minds Report series Data Warehouse The six levels of integration Recommended reading Before reading this report it is recommended to read ToM Report Series on Data Warehouse Definitions for Integration

More information

Software Engineering I (02161)

Software Engineering I (02161) Software Engineering I (02161) Week 10 Assoc. Prof. Hubert Baumeister DTU Compute Technical University of Denmark Spring 2016 Last Time Project Planning Non-agile Agile Refactoring Contents Basic Principles

More information

Agile Model-Driven Development with UML 2.0 SCOTT W. AM BLER. Foreword by Randy Miller UNIFIED 1420 MODELING LANGUAGE. gile 1.

Agile Model-Driven Development with UML 2.0 SCOTT W. AM BLER. Foreword by Randy Miller UNIFIED 1420 MODELING LANGUAGE. gile 1. THE OBJECT PRIMER THIRD EDITION Agile Model-Driven Development with UML 2.0 SCOTT W. AM BLER Foreword by Randy Miller UNIFIED 1420 MODELING LANGUAGE gile 1 odeling Contents Acknowledgments Foreword Preface

More information

Practical Aspects of Enterprise Application Development

Practical Aspects of Enterprise Application Development Practical Aspects of Enterprise Application Development EAR Winter Term 2017 EAR Practical Aspects of Enterprise Application Development Winter Term 2017 1 / 21 Contents 1 Speakers 2 Topics EAR Practical

More information

Credit where Credit is Due. Lecture 25: Refactoring. Goals for this lecture. Last Lecture

Credit where Credit is Due. Lecture 25: Refactoring. Goals for this lecture. Last Lecture Credit where Credit is Due Lecture 25: Refactoring Kenneth M. Anderson Object-Oriented Analysis and Design CSCI 6448 - Spring Semester, 2002 Some of the material for this lecture and lecture 26 is taken

More information

LESSON PLAN SUB NAME : OBJECT ORIENTED ANALYSIS AND DESIGN UNIT SYLLABUS

LESSON PLAN SUB NAME : OBJECT ORIENTED ANALYSIS AND DESIGN UNIT SYLLABUS LP Rev. : 00 Page 1 of 6 UNIT: I FUNDAMENTALS SEMESTER : 5 FUNDAMENTALS 8 An overview of object oriented systems development Object basics Object oriented systems development life cycle. OBJECTIVE: To

More information

Introduction to Software Engineering (2+1 SWS) Winter Term 2009 / 2010 Dr. Michael Eichberg Vertretungsprofessur Software Engineering Department of

Introduction to Software Engineering (2+1 SWS) Winter Term 2009 / 2010 Dr. Michael Eichberg Vertretungsprofessur Software Engineering Department of Introduction to Software Engineering (2+1 SWS) Winter Term 2009 / 2010 Dr. Michael Eichberg Vertretungsprofessur Software Engineering Department of Computer Science Technische Universität Darmstadt Dr.

More information

Behaviour Driven Development with Java. Nikolay Vasilev 15 July 2011

Behaviour Driven Development with Java. Nikolay Vasilev 15 July 2011 Behaviour Driven Development with Java Nikolay Vasilev 15 July 2011 Content What BDD is? Jbehave JBehave and Selenium Jbehave Pros and Cons Questions and Answers References 2 BDD 3 Test-Driven Development

More information

Domain Events & Event Storming. Michael

Domain Events & Event Storming. Michael Domain Events & Event Storming Michael Plöd @bitboss Credits to Eric Evans Vaughn Vernon Alberto Brandolini Sources: Books by Eric Evans, Alberto Brandolini and Vaughn Vernon If that happens After the

More information

Domain Model and Domain Modeling

Domain Model and Domain Modeling Dr. Michael Eichberg Software Engineering Department of Computer Science Technische Universität Darmstadt Software Engineering Domain Model and Domain Modeling Resources: Craig Larman; Applying UML and

More information

Enabling Team Collaboration

Enabling Team Collaboration Enabling Team Collaboration Jonathan Stern Perry Rosenboom Senior Technical Specialist 2007 IBM Corporation Enterprises need to adapt to a globally connected world Organizations rely on small, agile, multi-disciplinary

More information

Software Design Patterns. Background 1. Background 2. Jonathan I. Maletic, Ph.D.

Software Design Patterns. Background 1. Background 2. Jonathan I. Maletic, Ph.D. Software Design Patterns Jonathan I. Maletic, Ph.D. Department of Computer Science Kent State University J. Maletic 1 Background 1 Search for recurring successful designs emergent designs from practice

More information

Domain Driven Design Kevin van der Vlist

Domain Driven Design Kevin van der Vlist Domain Driven Design Kevin van der Vlist kvdvlist@sogyo.nl Objectives 1. Show the usefullnes of DDD 2/27 Objectives 1. Show the usefullnes of DDD 2. Warn you about a two headed monster 2/27 Objectives

More information

COMP9321 Web Application Engineering

COMP9321 Web Application Engineering COMP9321 Web Application Engineering Semester 2, 2015 Dr. Amin Beheshti Service Oriented Computing Group, CSE, UNSW Australia Week 6 http://webapps.cse.unsw.edu.au/webcms2/course/index.php?cid=2411 1 We

More information

Nonprogrammers Can Build Important Parts of Prototypes

Nonprogrammers Can Build Important Parts of Prototypes Nonprogrammers Can Build Important Parts of Prototypes Abstract: Here is a two-part whole-application model that enables nonprogrammers who understand the client business to participate importantly in

More information

Testing with easyb. Venkat Subramaniam

Testing with easyb. Venkat Subramaniam Testing with easyb Venkat Subramaniam venkats@agiledeveloper.com @venkat_s Testing with easyb Agile Development Sustainability Circle of Expectations and Circle of Relevance Types of Tests Behavior Driven

More information

Achieving Right Automation Balance in Agile Projects

Achieving Right Automation Balance in Agile Projects Achieving Right Automation Balance in Agile Projects Vijayagopal Narayanan Vijayagopal.n@cognizant.com Abstract When is testing complete and How much testing is sufficient is a fundamental questions that

More information

COURSE DESCRIPTION. Time distribution

COURSE DESCRIPTION. Time distribution COURSE DESCRIPTION 1. Information about the programme 1.1 Institution of higher education Alexandru Ioan Cuza University of Iasi 1.2 Faculty Faculty of Economics and Business Administration 1.3 Department

More information

Specialized - Mastering Spring 4.2

Specialized - Mastering Spring 4.2 Specialized - Mastering Spring 4.2 Code: Lengt h: URL: TT3330-S4 5 days View Online The Spring framework is an application framework that provides a lightweight container that supports the creation of

More information

Microservice Splitting the Monolith. Software Engineering II Sharif University of Technology MohammadAmin Fazli

Microservice Splitting the Monolith. Software Engineering II Sharif University of Technology MohammadAmin Fazli Microservice Software Engineering II Sharif University of Technology MohammadAmin Fazli Topics Seams Why to split the monolith Tangled Dependencies Splitting and Refactoring Databases Transactional Boundaries

More information

Test Driven Development (TDD)

Test Driven Development (TDD) Test Driven Development (TDD) Test Driven Development Introduction Good programmers write code, great programmers write tests Never, in the field of programming, have so many owed so much to so few - Martin

More information

CS 575: Software Design

CS 575: Software Design CS 575: Software Design Introduction 1 Software Design A software design is a precise description of a system, using a variety of different perspectives Structural Behavioral Packaging Requirements, Test/Validation

More information

The 1st Java professional open source Convention Israel 2006

The 1st Java professional open source Convention Israel 2006 The 1st Java professional open source Convention Israel 2006 The Next Generation of EJB Development Frederic Simon AlphaCSP Agenda Standards, Open Source & EJB 3.0 Tiger (Java 5) & JEE What is EJB 3.0

More information

Spring and OSGi. Martin Lippert akquinet agile GmbH Bernd Kolb Gerd Wütherich

Spring and OSGi. Martin Lippert akquinet agile GmbH Bernd Kolb Gerd Wütherich Spring and OSGi Martin Lippert akquinet agile GmbH lippert@acm.org Bernd Kolb b.kolb@kolbware.de Gerd Wütherich gerd@gerd-wuetherich.de 2006 by Martin Lippert, Bernd Kolb & Gerd Wütherich, made available

More information

Evaluation of Visual Fabrique (VF)

Evaluation of Visual Fabrique (VF) Evaluation of Visual Fabrique (VF) Dr Peter Lappo www.smr.co.uk Scope and Method This is a review of Visual Fabrique (VF) V1.0.371 EAP Release. In order to conduct this evaluation I followed the tutorial

More information

Java EE Architecture, Part Two. Java EE architecture, part two 1

Java EE Architecture, Part Two. Java EE architecture, part two 1 Java EE Architecture, Part Two Java EE architecture, part two 1 Content Requirements on the Business layer Framework Independent Patterns Transactions Frameworks for the Business layer Java EE architecture,

More information