SlideShare a Scribd company logo
N-Tier Architecture & Object-Oriented Programming: Moving Across TechnologiesJon LimjapMVP for C#Senior  Developer for ITRS
AgendaShanties vs. Mansions : Housing as an analogy to software developmentN-Tier Software Application DevelopmentObject Oriented ProgrammingSOLID PrinciplesMigrating and integrating apps to new technology
Shanties vs. MansionsHousing as an analogy to Software Development
What do you need to make a shanty?Light materials (e.g., lumber, plywood, GI sheets)Little or no construction skillLittle or no electrical skillDo whatever it takes to make things workCreates a shelter you can live in......but not comfortably so
What do you need tomake a mansion?Heavy-duty materials (e.g., steel, concrete, high quality wood)Architecture: structural plan, electrical plan, plumbing, sewageCarefully chosen materials and furnitureHighly skilled carpenters, welders, electricians, plumbersCreates the house of your dreams......and provides provisions for future development
Put them together, what have you got?Where do you find shanties, where do you find mansions?
SlumsVillage of shanties built on unutilized and undeveloped landNo water lines; deep wells are constructed or water is carried from outside the slumNo sewage; waste is either buried, moved to garbage dumps or thrown into rivers or estuariesNo proper electrical wiring; electrical cables are strewn across a slum
SlumsLack of infrastructure means health problems, heightened risk of fire and difficulty in moving things and peopleAlso known as “Big Ball of Mud”
SubdivisionsBuilt on prime real estateWell developed infrastructure means easy access to water, electricity, and sewagePlanning includes provisions for recreational facilities such as parks, playgrounds, etc.
SubdivisionsEfficient structures and services mean happier residents
Are your software applications shanties?Is it composed of a single void Main() with 10,000 lines of code?Does it have one function that does 100 unrelated things? For example: it accesses the database, then manipulates a string, then asks a question from the user?
Are your software applications shanties?When you change one line, do other parts of the program break unpredictably?Do you use copy-paste to add functionality to your code?
Characteristics of good software designHow should nicely written software look like?
Characteristics of good software designMinimal complexity designs should be as simple as possibleEase of maintenance code should be easy to read and understandLoose coupling code should have as few dependencies as possible
Characteristics of good software designExtensibility it should be very easy to add new functionality to your designReusability pieces of code could be reused across one application and even in other applicationsHigh fan-in system is designed to have good use of utility code at lower levels
Characteristics of good software designLow fan-out code requires as few external code as possible, as a high number of such indicates complexityLeanness the application should only contain functionalities that it needs to run properly, no more and no less
Characteristics of good software designStratification design systems which you can view at one level without looking too deep into other levelsStandardized code and design should be consistent to increase ease of maintenance
N-Tier ArchitectureStandard architecture in the software development industry
N-Tier / N-Layer / MultitierBroad term to describe software infrastructure in the software development industryDescribes dividing an application solution into "layers"Has a physical and logical components
Physical LayersDescribes arrangement of a broad set of tangible and intangible systemsMay contain one of many components:Application serversDatabasesNetworks (Local/Wide Area/Internet)Services (Web Services, Web APIs)
Logical LayersDescribes arrangement of code in a particular software applicationTypical components:Domain ObjectsBusiness RulesGraphical User Interface (GUI)Data Access
How does N-Tier fit into the housing analogy?Physical Layers describe the subdivision – each component describes amenities and facilities in your subdivisionLogical Layers describe your mansion – lower layers represent your plumbing and electrical design, while upper layers represent your appliances and furniture and how they all come together to make a great house
Object-Oriented ProgrammingLetting your code describe the real thing
Object-Oriented ProgrammingSoftware development paradigm wherein the problem is modelled into "objects" -- pieces of code containing data describing an object and the behaviour of such objectObjects are defined by "classes". A class contains the definition of the data that an object contains, and its corresponding behaviourSome examples of OO languages: Visual Basic .NET, C++, C#, Java, PHP (starting with version 5)
Key OOP ConceptsClassThe description of an object in terms of characteristics (attributes) and behaviors (methods)ObjectThe pattern or exemplar being definedInstanceAn actual object existing at runtimeMethodActions that can be performed by an object
Key OOP ConceptsMessage PassingObjects can invoke other objects’ methods and get their dataEncapsulationDetails of an object that aren’t needed by other objects are hiddenInheritanceSpecific objects can be derived from more general objects, retaining all attributes and/or methodsPolymorphismThe ability to represent an specific object to its more general object
SOLID Principles
Single Responsibility PrincipleA class should only have one, and only one reason to change
Open Closed PrincipleYou should be able to extend a class’s behaviour without modifying it
Liskov Substitution PrincipleDerived classes must be substitutable for their base classes
Interface Segregation PrincipleMake fine grained interfaces that are client specific
Dependency Inversion PrincipleDepend on abstractions, not on concretions
Migrating and integrating apps to new technologyOOP & N-Tier not only makes this easy, it makes it possible
Tons of new technologies came to play in the last 5 yearsJSON
OOP and N-Tier makes technology change possibleEach layer can easily be replacedIntegrity of other layers remainLess reworkEasier to test
ConclusionWe want mansions, not shanties! Subdivisions, not slums!OOP + N-Tier done properly makes it easier to move across platforms and technologiesOOP + N-Tier is just one of many approaches in developing softwareOOP takes years of practice to get right – start now!
References2004: McConnell, Steve: Code Complete 2: Microsoft Publishing1999: Foote Brian and Yoder, Joseph : Big Ball of Mud: http://www.laputan.org/mud/2009: Bailey, Derick: SOLID Development Principles in Motivational Posters: http://www.lostechies.com/blogs/derickbailey/archive/2009/02/11/solid-development-principles-in-motivational-pictures.aspx
Your speakerjonlimjap@gmail.comhttp://dotnet.kapenilattex.comhttp://msforums.ph/forumshttp://twitter.com/LaTtEX

More Related Content

PPTX
Zerto Virtual Replication 4.5
PPTX
Beit 381 se lec 15 - 16 - 12 mar27 - req engg 1 of 3
PPTX
Object relationship model of software engineering,a subtopic of object orient...
PPTX
Object Oriented Software Engineering
PPT
Object Oriented Programming Concepts
PPTX
Bare Basics of UX: Rasika M @ Colombo UX Conference
PDF
A1 from n tier to soa
PPTX
Building N Tier Applications With Entity Framework Services 2010
Zerto Virtual Replication 4.5
Beit 381 se lec 15 - 16 - 12 mar27 - req engg 1 of 3
Object relationship model of software engineering,a subtopic of object orient...
Object Oriented Software Engineering
Object Oriented Programming Concepts
Bare Basics of UX: Rasika M @ Colombo UX Conference
A1 from n tier to soa
Building N Tier Applications With Entity Framework Services 2010

Viewers also liked (19)

PPT
N tier web applications
PPT
E business n_tier_arch
PPTX
Characteristics of OOPS
PDF
Ekon20 mORMot SOA Delphi Conference
PPTX
Microsoft Dynamics CRM - Customization and Configuration Training Online Cour...
PPTX
API Management and Integrated SOA Governance
PPTX
N-tier Application Developement
PDF
Enterprise Integration Patterns Revisited (again) for the Era of Big Data, In...
PPT
Domain object model
PPTX
API and SOA: Two Sides of the Same Coin?
PPTX
N-Tier Application Architecture
PPTX
N tier
PPT
ESB Concepts
PPT
Enterprise application integration
DOCX
J2EE and layered architecture
PDF
N-Tier, Layered Design, SOA
PDF
Enterprise Application Integration Technologies
PDF
Application Architecture: The Next Wave | MuleSoft
N tier web applications
E business n_tier_arch
Characteristics of OOPS
Ekon20 mORMot SOA Delphi Conference
Microsoft Dynamics CRM - Customization and Configuration Training Online Cour...
API Management and Integrated SOA Governance
N-tier Application Developement
Enterprise Integration Patterns Revisited (again) for the Era of Big Data, In...
Domain object model
API and SOA: Two Sides of the Same Coin?
N-Tier Application Architecture
N tier
ESB Concepts
Enterprise application integration
J2EE and layered architecture
N-Tier, Layered Design, SOA
Enterprise Application Integration Technologies
Application Architecture: The Next Wave | MuleSoft
Ad

Similar to N-tier and oop - moving across technologies (20)

PDF
10 Hinweise für Architekten
PDF
XP-Manchester 2013 Software Architecture for Agile Developers Intro
PPT
02 architectures in_context
PDF
Ten Advices for Architects
PDF
Evolving Software Patterns
PPTX
Architecture Principles CodeStock
PDF
Scott Whitmire - Just What is Architecture Anyway
KEY
Agile Architecture (MAE slides)
PDF
Deep Dive into the Idea of Software Architecture
PDF
Essential Software Architecture - Chapter 1 Understanding Software Architectu...
PDF
Software archiecture lecture03
PPT
Ppt slides 05
PPTX
L02 Architecture
PPT
want to contact me login to www.stqa.org
PPT
OO Development 1 - Introduction to Object-Oriented Development
PDF
Software architecture for developers
PPT
Design engineering
PPT
Design engineering
PPSX
Software engineering
PPTX
Unit_4_Software_Design.pptx
10 Hinweise für Architekten
XP-Manchester 2013 Software Architecture for Agile Developers Intro
02 architectures in_context
Ten Advices for Architects
Evolving Software Patterns
Architecture Principles CodeStock
Scott Whitmire - Just What is Architecture Anyway
Agile Architecture (MAE slides)
Deep Dive into the Idea of Software Architecture
Essential Software Architecture - Chapter 1 Understanding Software Architectu...
Software archiecture lecture03
Ppt slides 05
L02 Architecture
want to contact me login to www.stqa.org
OO Development 1 - Introduction to Object-Oriented Development
Software architecture for developers
Design engineering
Design engineering
Software engineering
Unit_4_Software_Design.pptx
Ad

More from Jacinto Limjap (11)

PPTX
Maintainable UI Tests with Selenium and C#
PPTX
Refactoring to Microservices
PPTX
Donetconf2016: The Future of C#
ODP
C# and the Evolution of a Programming Language
PPTX
SQL vs NoSQL
PPTX
Unit testing, UI testing and Test Driven Development in Visual Studio 2012
PPTX
MSDN Ramp-Up Part 3: Business logic
PPT
Developing windows phone 7 applications
PPT
Automated Unit Testing in Silverlight for Windows Phone 7
PPTX
Dynamics & Object Runtime Composition with C# 4.0
PPTX
Three Developer Abilities They Dont Teach In College
Maintainable UI Tests with Selenium and C#
Refactoring to Microservices
Donetconf2016: The Future of C#
C# and the Evolution of a Programming Language
SQL vs NoSQL
Unit testing, UI testing and Test Driven Development in Visual Studio 2012
MSDN Ramp-Up Part 3: Business logic
Developing windows phone 7 applications
Automated Unit Testing in Silverlight for Windows Phone 7
Dynamics & Object Runtime Composition with C# 4.0
Three Developer Abilities They Dont Teach In College

Recently uploaded (20)

PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPTX
Cloud computing and distributed systems.
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
KodekX | Application Modernization Development
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Machine learning based COVID-19 study performance prediction
PDF
Modernizing your data center with Dell and AMD
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Chapter 3 Spatial Domain Image Processing.pdf
Cloud computing and distributed systems.
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Digital-Transformation-Roadmap-for-Companies.pptx
Agricultural_Statistics_at_a_Glance_2022_0.pdf
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Review of recent advances in non-invasive hemoglobin estimation
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
KodekX | Application Modernization Development
Advanced methodologies resolving dimensionality complications for autism neur...
Network Security Unit 5.pdf for BCA BBA.
Building Integrated photovoltaic BIPV_UPV.pdf
Machine learning based COVID-19 study performance prediction
Modernizing your data center with Dell and AMD
Understanding_Digital_Forensics_Presentation.pptx
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
How UI/UX Design Impacts User Retention in Mobile Apps.pdf

N-tier and oop - moving across technologies

  • 1. N-Tier Architecture & Object-Oriented Programming: Moving Across TechnologiesJon LimjapMVP for C#Senior Developer for ITRS
  • 2. AgendaShanties vs. Mansions : Housing as an analogy to software developmentN-Tier Software Application DevelopmentObject Oriented ProgrammingSOLID PrinciplesMigrating and integrating apps to new technology
  • 3. Shanties vs. MansionsHousing as an analogy to Software Development
  • 4. What do you need to make a shanty?Light materials (e.g., lumber, plywood, GI sheets)Little or no construction skillLittle or no electrical skillDo whatever it takes to make things workCreates a shelter you can live in......but not comfortably so
  • 5. What do you need tomake a mansion?Heavy-duty materials (e.g., steel, concrete, high quality wood)Architecture: structural plan, electrical plan, plumbing, sewageCarefully chosen materials and furnitureHighly skilled carpenters, welders, electricians, plumbersCreates the house of your dreams......and provides provisions for future development
  • 6. Put them together, what have you got?Where do you find shanties, where do you find mansions?
  • 7. SlumsVillage of shanties built on unutilized and undeveloped landNo water lines; deep wells are constructed or water is carried from outside the slumNo sewage; waste is either buried, moved to garbage dumps or thrown into rivers or estuariesNo proper electrical wiring; electrical cables are strewn across a slum
  • 8. SlumsLack of infrastructure means health problems, heightened risk of fire and difficulty in moving things and peopleAlso known as “Big Ball of Mud”
  • 9. SubdivisionsBuilt on prime real estateWell developed infrastructure means easy access to water, electricity, and sewagePlanning includes provisions for recreational facilities such as parks, playgrounds, etc.
  • 10. SubdivisionsEfficient structures and services mean happier residents
  • 11. Are your software applications shanties?Is it composed of a single void Main() with 10,000 lines of code?Does it have one function that does 100 unrelated things? For example: it accesses the database, then manipulates a string, then asks a question from the user?
  • 12. Are your software applications shanties?When you change one line, do other parts of the program break unpredictably?Do you use copy-paste to add functionality to your code?
  • 13. Characteristics of good software designHow should nicely written software look like?
  • 14. Characteristics of good software designMinimal complexity designs should be as simple as possibleEase of maintenance code should be easy to read and understandLoose coupling code should have as few dependencies as possible
  • 15. Characteristics of good software designExtensibility it should be very easy to add new functionality to your designReusability pieces of code could be reused across one application and even in other applicationsHigh fan-in system is designed to have good use of utility code at lower levels
  • 16. Characteristics of good software designLow fan-out code requires as few external code as possible, as a high number of such indicates complexityLeanness the application should only contain functionalities that it needs to run properly, no more and no less
  • 17. Characteristics of good software designStratification design systems which you can view at one level without looking too deep into other levelsStandardized code and design should be consistent to increase ease of maintenance
  • 18. N-Tier ArchitectureStandard architecture in the software development industry
  • 19. N-Tier / N-Layer / MultitierBroad term to describe software infrastructure in the software development industryDescribes dividing an application solution into "layers"Has a physical and logical components
  • 20. Physical LayersDescribes arrangement of a broad set of tangible and intangible systemsMay contain one of many components:Application serversDatabasesNetworks (Local/Wide Area/Internet)Services (Web Services, Web APIs)
  • 21. Logical LayersDescribes arrangement of code in a particular software applicationTypical components:Domain ObjectsBusiness RulesGraphical User Interface (GUI)Data Access
  • 22. How does N-Tier fit into the housing analogy?Physical Layers describe the subdivision – each component describes amenities and facilities in your subdivisionLogical Layers describe your mansion – lower layers represent your plumbing and electrical design, while upper layers represent your appliances and furniture and how they all come together to make a great house
  • 23. Object-Oriented ProgrammingLetting your code describe the real thing
  • 24. Object-Oriented ProgrammingSoftware development paradigm wherein the problem is modelled into "objects" -- pieces of code containing data describing an object and the behaviour of such objectObjects are defined by "classes". A class contains the definition of the data that an object contains, and its corresponding behaviourSome examples of OO languages: Visual Basic .NET, C++, C#, Java, PHP (starting with version 5)
  • 25. Key OOP ConceptsClassThe description of an object in terms of characteristics (attributes) and behaviors (methods)ObjectThe pattern or exemplar being definedInstanceAn actual object existing at runtimeMethodActions that can be performed by an object
  • 26. Key OOP ConceptsMessage PassingObjects can invoke other objects’ methods and get their dataEncapsulationDetails of an object that aren’t needed by other objects are hiddenInheritanceSpecific objects can be derived from more general objects, retaining all attributes and/or methodsPolymorphismThe ability to represent an specific object to its more general object
  • 28. Single Responsibility PrincipleA class should only have one, and only one reason to change
  • 29. Open Closed PrincipleYou should be able to extend a class’s behaviour without modifying it
  • 30. Liskov Substitution PrincipleDerived classes must be substitutable for their base classes
  • 31. Interface Segregation PrincipleMake fine grained interfaces that are client specific
  • 32. Dependency Inversion PrincipleDepend on abstractions, not on concretions
  • 33. Migrating and integrating apps to new technologyOOP & N-Tier not only makes this easy, it makes it possible
  • 34. Tons of new technologies came to play in the last 5 yearsJSON
  • 35. OOP and N-Tier makes technology change possibleEach layer can easily be replacedIntegrity of other layers remainLess reworkEasier to test
  • 36. ConclusionWe want mansions, not shanties! Subdivisions, not slums!OOP + N-Tier done properly makes it easier to move across platforms and technologiesOOP + N-Tier is just one of many approaches in developing softwareOOP takes years of practice to get right – start now!
  • 37. References2004: McConnell, Steve: Code Complete 2: Microsoft Publishing1999: Foote Brian and Yoder, Joseph : Big Ball of Mud: http://www.laputan.org/mud/2009: Bailey, Derick: SOLID Development Principles in Motivational Posters: http://www.lostechies.com/blogs/derickbailey/archive/2009/02/11/solid-development-principles-in-motivational-pictures.aspx