SlideShare a Scribd company logo
1 of 38
N-Tier Architecture & Object-Oriented Programming: Moving Across Technologies Jon Limjap MVP for C# Senior  Developer for ITRS
Agenda Shanties vs. Mansions : Housing as an analogy to software development N-Tier Software Application Development Object Oriented Programming SOLID Principles Migrating and integrating apps to new technology
Shanties vs. Mansions Housing 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 skill Little or no electrical skill Do whatever it takes to make things work Creates 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, sewage Carefully chosen materials and furniture Highly skilled carpenters, welders, electricians, plumbers Creates 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?
Slums Village of shanties built on unutilized and undeveloped land No water lines; deep wells are constructed or water is carried from outside the slum No sewage; waste is either buried, moved to garbage dumps or thrown into rivers or estuaries No proper electrical wiring; electrical cables are strewn across a slum
Slums Lack of infrastructure means health problems, heightened risk of fire and difficulty in moving things and people Also known as “Big Ball of Mud”
Subdivisions Built on prime real estate Well developed infrastructure means easy access to water, electricity, and sewage Planning includes provisions for recreational facilities such as parks, playgrounds, etc.
Subdivisions Efficient 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 design How should nicely written software look like?
Characteristics of good software design Minimal complexity  designs should be as simple as possible Ease of maintenance  code should be easy to read and understand Loose coupling  code should have as few dependencies as possible
Characteristics of good software design Extensibility  it should be very easy to add new functionality to your design Reusability  pieces of code could be reused across one application and even in other applications High fan-in  system is designed to have good use of utility code at lower levels
Characteristics of good software design Low fan-out  code requires as few external code as possible, as a high number of such indicates complexity Leanness  the application should only contain functionalities that it needs to run properly, no more and no less
Characteristics of good software design Stratification  design systems which you can view at one level without looking too deep into other levels Standardized  code and design should be consistent to increase ease of maintenance
N-Tier Architecture Standard architecture in the software development industry
N-Tier / N-Layer / Multitier Broad term to describe software infrastructure in the software development industry Describes dividing an application solution into "layers" Has a physical and logical components
Physical Layers Describes arrangement of a broad set of tangible and intangible systems May contain one of many components: Application servers Databases Networks (Local/Wide Area/Internet) Services (Web Services, Web APIs)
Logical Layers Describes arrangement of code in a particular software application Typical components: Domain Objects Business Rules Graphical 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 subdivision Logical 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 Programming Letting your code describe the real thing
Object-Oriented Programming Software development paradigm wherein the problem is modelled into "objects" -- pieces of code containing data describing an object and the behaviour of such object Objects are defined by "classes". A class contains the definition of the data that an object contains, and its corresponding behaviour Some examples of OO languages: Visual Basic .NET, C++, C#, Java, PHP (starting with version 5)
Key OOP Concepts Class The description of an object in terms of characteristics (attributes) and behaviors (methods) Object The pattern or exemplar being defined Instance An actual object existing at runtime Method Actions that can be performed by an object
Key OOP Concepts Message Passing Objects can invoke other objects’ methods and get their data Encapsulation Details of an object that aren’t needed by other objects are hidden Inheritance Specific objects can be derived from more general objects, retaining all attributes and/or methods Polymorphism The ability to represent an specific object to its more general object
SOLID Principles
Single Responsibility Principle A class should only have one, and only one reason to change
Open Closed Principle You should be able to extend a class’s behaviour without modifying it
Liskov Substitution Principle Derived classes must be substitutable for their base classes
Interface Segregation Principle Make fine grained interfaces that are client specific
Dependency Inversion Principle Depend on abstractions, not on concretions
Migrating and integrating apps to new technology OOP & N-Tier not only makes this easy, it makes it possible
Tons of new technologies came to play in the last 5 years JSON
OOP and N-Tier makes technology change possible Each layer can easily be replaced Integrity of other layers remain Less rework Easier to test
Conclusion We want mansions, not shanties! Subdivisions, not slums! OOP + N-Tier done properly makes it easier to move across platforms and technologies OOP + N-Tier is just one of many approaches in developing software OOP takes years of practice to get right – start now!
References 2004: McConnell, Steve: Code Complete 2: Microsoft Publishing 1999: 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 speaker jonlimjap@gmail.com http://dotnet.kapenilattex.com http://msforums.ph/forums http://twitter.com/LaTtEX

More Related Content

What's hot

Cookie & Session In ASP.NET
Cookie & Session In ASP.NETCookie & Session In ASP.NET
Cookie & Session In ASP.NETShingalaKrupa
 
Access modifiers
Access modifiersAccess modifiers
Access modifiersJadavsejal
 
Control structures in java
Control structures in javaControl structures in java
Control structures in javaVINOTH R
 
Decision tree induction \ Decision Tree Algorithm with Example| Data science
Decision tree induction \ Decision Tree Algorithm with Example| Data scienceDecision tree induction \ Decision Tree Algorithm with Example| Data science
Decision tree induction \ Decision Tree Algorithm with Example| Data scienceMaryamRehman6
 
Java conditional statements
Java conditional statementsJava conditional statements
Java conditional statementsKuppusamy P
 
Broadcast Receivers in Android
Broadcast Receivers in AndroidBroadcast Receivers in Android
Broadcast Receivers in Androidma-polimi
 
oops concept in java | object oriented programming in java
oops concept in java | object oriented programming in javaoops concept in java | object oriented programming in java
oops concept in java | object oriented programming in javaCPD INDIA
 
Constructor and encapsulation in php
Constructor and encapsulation in phpConstructor and encapsulation in php
Constructor and encapsulation in phpSHIVANI SONI
 
ArrayList in JAVA
ArrayList in JAVAArrayList in JAVA
ArrayList in JAVASAGARDAVE29
 
Anomaly/Novelty detection with scikit-learn
Anomaly/Novelty detection with scikit-learnAnomaly/Novelty detection with scikit-learn
Anomaly/Novelty detection with scikit-learnagramfort
 

What's hot (20)

Cookie & Session In ASP.NET
Cookie & Session In ASP.NETCookie & Session In ASP.NET
Cookie & Session In ASP.NET
 
Decision trees
Decision treesDecision trees
Decision trees
 
Access modifiers
Access modifiersAccess modifiers
Access modifiers
 
Method overriding
Method overridingMethod overriding
Method overriding
 
Control structures in java
Control structures in javaControl structures in java
Control structures in java
 
Java Basic Oops Concept
Java Basic Oops ConceptJava Basic Oops Concept
Java Basic Oops Concept
 
Decision tree induction \ Decision Tree Algorithm with Example| Data science
Decision tree induction \ Decision Tree Algorithm with Example| Data scienceDecision tree induction \ Decision Tree Algorithm with Example| Data science
Decision tree induction \ Decision Tree Algorithm with Example| Data science
 
Encapsulation
EncapsulationEncapsulation
Encapsulation
 
Ooad ch 2
Ooad ch 2Ooad ch 2
Ooad ch 2
 
Id3,c4.5 algorithim
Id3,c4.5 algorithimId3,c4.5 algorithim
Id3,c4.5 algorithim
 
Constructor ppt
Constructor pptConstructor ppt
Constructor ppt
 
Java conditional statements
Java conditional statementsJava conditional statements
Java conditional statements
 
OOP java
OOP javaOOP java
OOP java
 
Java(Polymorphism)
Java(Polymorphism)Java(Polymorphism)
Java(Polymorphism)
 
Java interfaces
Java interfacesJava interfaces
Java interfaces
 
Broadcast Receivers in Android
Broadcast Receivers in AndroidBroadcast Receivers in Android
Broadcast Receivers in Android
 
oops concept in java | object oriented programming in java
oops concept in java | object oriented programming in javaoops concept in java | object oriented programming in java
oops concept in java | object oriented programming in java
 
Constructor and encapsulation in php
Constructor and encapsulation in phpConstructor and encapsulation in php
Constructor and encapsulation in php
 
ArrayList in JAVA
ArrayList in JAVAArrayList in JAVA
ArrayList in JAVA
 
Anomaly/Novelty detection with scikit-learn
Anomaly/Novelty detection with scikit-learnAnomaly/Novelty detection with scikit-learn
Anomaly/Novelty detection with scikit-learn
 

Viewers also liked

Beit 381 se lec 15 - 16 - 12 mar27 - req engg 1 of 3
Beit 381 se lec 15 - 16 -  12 mar27 - req engg 1 of 3Beit 381 se lec 15 - 16 -  12 mar27 - req engg 1 of 3
Beit 381 se lec 15 - 16 - 12 mar27 - req engg 1 of 3babak danyal
 
Object relationship model of software engineering,a subtopic of object orient...
Object relationship model of software engineering,a subtopic of object orient...Object relationship model of software engineering,a subtopic of object orient...
Object relationship model of software engineering,a subtopic of object orient...julia121214
 
Object Oriented Software Engineering
Object Oriented Software EngineeringObject Oriented Software Engineering
Object Oriented Software EngineeringMichelle Azuelo
 
Object Oriented Programming Concepts
Object Oriented Programming ConceptsObject Oriented Programming Concepts
Object Oriented Programming Conceptsthinkphp
 
Bare Basics of UX: Rasika M @ Colombo UX Conference
Bare Basics of UX: Rasika M @ Colombo UX ConferenceBare Basics of UX: Rasika M @ Colombo UX Conference
Bare Basics of UX: Rasika M @ Colombo UX ConferenceColomboCampsCommunity
 
Building N Tier Applications With Entity Framework Services 2010
Building N Tier Applications With Entity Framework Services 2010Building N Tier Applications With Entity Framework Services 2010
Building N Tier Applications With Entity Framework Services 2010David McCarter
 
N tier web applications
N tier web applicationsN tier web applications
N tier web applicationsMike Feltman
 
E business n_tier_arch
E business n_tier_archE business n_tier_arch
E business n_tier_archRadiant Minds
 
Characteristics of OOPS
Characteristics of OOPS Characteristics of OOPS
Characteristics of OOPS abhishek kumar
 
Ekon20 mORMot SOA Delphi Conference
Ekon20 mORMot SOA Delphi Conference Ekon20 mORMot SOA Delphi Conference
Ekon20 mORMot SOA Delphi Conference Arnaud Bouchez
 
Microsoft Dynamics CRM - Customization and Configuration Training Online Cour...
Microsoft Dynamics CRM - Customization and Configuration Training Online Cour...Microsoft Dynamics CRM - Customization and Configuration Training Online Cour...
Microsoft Dynamics CRM - Customization and Configuration Training Online Cour...Little Logic
 
API Management and Integrated SOA Governance
API Management and Integrated SOA GovernanceAPI Management and Integrated SOA Governance
API Management and Integrated SOA GovernanceSumanth Chinthagunta
 
N-tier Application Developement
N-tier Application DevelopementN-tier Application Developement
N-tier Application DevelopementDetectivee Mirza
 
Enterprise Integration Patterns Revisited (again) for the Era of Big Data, In...
Enterprise Integration Patterns Revisited (again) for the Era of Big Data, In...Enterprise Integration Patterns Revisited (again) for the Era of Big Data, In...
Enterprise Integration Patterns Revisited (again) for the Era of Big Data, In...Kai Wähner
 
API and SOA: Two Sides of the Same Coin?
API and SOA: Two Sides of the Same Coin?API and SOA: Two Sides of the Same Coin?
API and SOA: Two Sides of the Same Coin?Akana
 
N-Tier Application Architecture
N-Tier Application ArchitectureN-Tier Application Architecture
N-Tier Application ArchitectureManoj Kumar
 

Viewers also liked (20)

Beit 381 se lec 15 - 16 - 12 mar27 - req engg 1 of 3
Beit 381 se lec 15 - 16 -  12 mar27 - req engg 1 of 3Beit 381 se lec 15 - 16 -  12 mar27 - req engg 1 of 3
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 relationship model of software engineering,a subtopic of object orient...Object relationship model of software engineering,a subtopic of object orient...
Object relationship model of software engineering,a subtopic of object orient...
 
Object Oriented Software Engineering
Object Oriented Software EngineeringObject Oriented Software Engineering
Object Oriented Software Engineering
 
Object Oriented Programming Concepts
Object Oriented Programming ConceptsObject Oriented Programming Concepts
Object Oriented Programming Concepts
 
Bare Basics of UX: Rasika M @ Colombo UX Conference
Bare Basics of UX: Rasika M @ Colombo UX ConferenceBare Basics of UX: Rasika M @ Colombo UX Conference
Bare Basics of UX: Rasika M @ Colombo UX Conference
 
A1 from n tier to soa
A1 from n tier to soaA1 from n tier to soa
A1 from n tier to soa
 
Building N Tier Applications With Entity Framework Services 2010
Building N Tier Applications With Entity Framework Services 2010Building N Tier Applications With Entity Framework Services 2010
Building N Tier Applications With Entity Framework Services 2010
 
N tier web applications
N tier web applicationsN tier web applications
N tier web applications
 
E business n_tier_arch
E business n_tier_archE business n_tier_arch
E business n_tier_arch
 
Characteristics of OOPS
Characteristics of OOPS Characteristics of OOPS
Characteristics of OOPS
 
Ekon20 mORMot SOA Delphi Conference
Ekon20 mORMot SOA Delphi Conference Ekon20 mORMot SOA Delphi Conference
Ekon20 mORMot SOA Delphi Conference
 
Microsoft Dynamics CRM - Customization and Configuration Training Online Cour...
Microsoft Dynamics CRM - Customization and Configuration Training Online Cour...Microsoft Dynamics CRM - Customization and Configuration Training Online Cour...
Microsoft Dynamics CRM - Customization and Configuration Training Online Cour...
 
API Management and Integrated SOA Governance
API Management and Integrated SOA GovernanceAPI Management and Integrated SOA Governance
API Management and Integrated SOA Governance
 
N-tier Application Developement
N-tier Application DevelopementN-tier Application Developement
N-tier Application Developement
 
Enterprise Integration Patterns Revisited (again) for the Era of Big Data, In...
Enterprise Integration Patterns Revisited (again) for the Era of Big Data, In...Enterprise Integration Patterns Revisited (again) for the Era of Big Data, In...
Enterprise Integration Patterns Revisited (again) for the Era of Big Data, In...
 
Domain object model
Domain object modelDomain object model
Domain object model
 
API and SOA: Two Sides of the Same Coin?
API and SOA: Two Sides of the Same Coin?API and SOA: Two Sides of the Same Coin?
API and SOA: Two Sides of the Same Coin?
 
N-Tier Application Architecture
N-Tier Application ArchitectureN-Tier Application Architecture
N-Tier Application Architecture
 
N tier
N tierN tier
N tier
 
OOPS Characteristics
OOPS CharacteristicsOOPS Characteristics
OOPS Characteristics
 

Similar to N-tier and oop - moving across technologies

Evolutionary Design Solid
Evolutionary Design SolidEvolutionary Design Solid
Evolutionary Design SolidSai Venkat
 
Sudipta_Mukherjee_Resume-Nov_2022.pdf
Sudipta_Mukherjee_Resume-Nov_2022.pdfSudipta_Mukherjee_Resume-Nov_2022.pdf
Sudipta_Mukherjee_Resume-Nov_2022.pdfSudipta Mukherjee
 
DEVNET-1125 Partner Case Study - “Project Hybrid Engineer”
DEVNET-1125	Partner Case Study - “Project Hybrid Engineer”DEVNET-1125	Partner Case Study - “Project Hybrid Engineer”
DEVNET-1125 Partner Case Study - “Project Hybrid Engineer”Cisco DevNet
 
How to Decide Technology Stack for Your Next Software Development Project?
How to Decide Technology Stack for Your Next Software Development Project?How to Decide Technology Stack for Your Next Software Development Project?
How to Decide Technology Stack for Your Next Software Development Project?Polyxer Systems
 
Architecting for Change: An Agile Approach
Architecting for Change: An Agile ApproachArchitecting for Change: An Agile Approach
Architecting for Change: An Agile ApproachBen Stopford
 
Importance Of Being Driven
Importance Of Being DrivenImportance Of Being Driven
Importance Of Being DrivenAntonio Terreno
 
[2015/2016] Software systems engineering PRINCIPLES
[2015/2016] Software systems engineering PRINCIPLES[2015/2016] Software systems engineering PRINCIPLES
[2015/2016] Software systems engineering PRINCIPLESIvano Malavolta
 
Ncrafts.io - Refactor your software architecture
Ncrafts.io - Refactor your software architectureNcrafts.io - Refactor your software architecture
Ncrafts.io - Refactor your software architectureJulien Lavigne du Cadet
 
Brownfield Domain Driven Design
Brownfield Domain Driven DesignBrownfield Domain Driven Design
Brownfield Domain Driven DesignNicolò Pignatelli
 
Cs 1023 lec 1 big idea (week 1)
Cs 1023 lec 1   big idea (week 1)Cs 1023 lec 1   big idea (week 1)
Cs 1023 lec 1 big idea (week 1)stanbridge
 
Cs 1023 lec 1 big idea (week 1)
Cs 1023 lec 1   big idea (week 1)Cs 1023 lec 1   big idea (week 1)
Cs 1023 lec 1 big idea (week 1)stanbridge
 
Sudipta_Mukherjee_Resume_APR_2023.pdf
Sudipta_Mukherjee_Resume_APR_2023.pdfSudipta_Mukherjee_Resume_APR_2023.pdf
Sudipta_Mukherjee_Resume_APR_2023.pdfsudipto801
 

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

DDD
DDDDDD
DDD
 
01 the big_idea
01 the big_idea01 the big_idea
01 the big_idea
 
Evolutionary Design Solid
Evolutionary Design SolidEvolutionary Design Solid
Evolutionary Design Solid
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Sudipta_Mukherjee_Resume-Nov_2022.pdf
Sudipta_Mukherjee_Resume-Nov_2022.pdfSudipta_Mukherjee_Resume-Nov_2022.pdf
Sudipta_Mukherjee_Resume-Nov_2022.pdf
 
DEVNET-1125 Partner Case Study - “Project Hybrid Engineer”
DEVNET-1125	Partner Case Study - “Project Hybrid Engineer”DEVNET-1125	Partner Case Study - “Project Hybrid Engineer”
DEVNET-1125 Partner Case Study - “Project Hybrid Engineer”
 
How to Decide Technology Stack for Your Next Software Development Project?
How to Decide Technology Stack for Your Next Software Development Project?How to Decide Technology Stack for Your Next Software Development Project?
How to Decide Technology Stack for Your Next Software Development Project?
 
Architecting for Change: An Agile Approach
Architecting for Change: An Agile ApproachArchitecting for Change: An Agile Approach
Architecting for Change: An Agile Approach
 
Importance Of Being Driven
Importance Of Being DrivenImportance Of Being Driven
Importance Of Being Driven
 
[2015/2016] Software systems engineering PRINCIPLES
[2015/2016] Software systems engineering PRINCIPLES[2015/2016] Software systems engineering PRINCIPLES
[2015/2016] Software systems engineering PRINCIPLES
 
What Is A Technology Stack?
What Is A Technology Stack?What Is A Technology Stack?
What Is A Technology Stack?
 
L02 Architecture
L02 ArchitectureL02 Architecture
L02 Architecture
 
Ncrafts.io - Refactor your software architecture
Ncrafts.io - Refactor your software architectureNcrafts.io - Refactor your software architecture
Ncrafts.io - Refactor your software architecture
 
Internet of things : Beginners view
Internet of things : Beginners viewInternet of things : Beginners view
Internet of things : Beginners view
 
1 puc programming using c++
1 puc programming using c++1 puc programming using c++
1 puc programming using c++
 
Brownfield Domain Driven Design
Brownfield Domain Driven DesignBrownfield Domain Driven Design
Brownfield Domain Driven Design
 
SrinivasaVithal_CV
SrinivasaVithal_CVSrinivasaVithal_CV
SrinivasaVithal_CV
 
Cs 1023 lec 1 big idea (week 1)
Cs 1023 lec 1   big idea (week 1)Cs 1023 lec 1   big idea (week 1)
Cs 1023 lec 1 big idea (week 1)
 
Cs 1023 lec 1 big idea (week 1)
Cs 1023 lec 1   big idea (week 1)Cs 1023 lec 1   big idea (week 1)
Cs 1023 lec 1 big idea (week 1)
 
Sudipta_Mukherjee_Resume_APR_2023.pdf
Sudipta_Mukherjee_Resume_APR_2023.pdfSudipta_Mukherjee_Resume_APR_2023.pdf
Sudipta_Mukherjee_Resume_APR_2023.pdf
 

More from Jacinto Limjap

Maintainable UI Tests with Selenium and C#
Maintainable UI Tests with Selenium and C#Maintainable UI Tests with Selenium and C#
Maintainable UI Tests with Selenium and C#Jacinto Limjap
 
Refactoring to Microservices
Refactoring to MicroservicesRefactoring to Microservices
Refactoring to MicroservicesJacinto Limjap
 
Donetconf2016: The Future of C#
Donetconf2016: The Future of C#Donetconf2016: The Future of C#
Donetconf2016: The Future of C#Jacinto Limjap
 
C# and the Evolution of a Programming Language
C# and the Evolution of a Programming LanguageC# and the Evolution of a Programming Language
C# and the Evolution of a Programming LanguageJacinto Limjap
 
Unit testing, UI testing and Test Driven Development in Visual Studio 2012
Unit testing, UI testing and Test Driven Development in Visual Studio 2012Unit testing, UI testing and Test Driven Development in Visual Studio 2012
Unit testing, UI testing and Test Driven Development in Visual Studio 2012Jacinto Limjap
 
MSDN Ramp-Up Part 3: Business logic
MSDN Ramp-Up Part 3: Business logicMSDN Ramp-Up Part 3: Business logic
MSDN Ramp-Up Part 3: Business logicJacinto Limjap
 
Developing windows phone 7 applications
Developing windows phone 7 applicationsDeveloping windows phone 7 applications
Developing windows phone 7 applicationsJacinto Limjap
 
Automated Unit Testing in Silverlight for Windows Phone 7
Automated Unit Testing in Silverlight for Windows Phone 7Automated Unit Testing in Silverlight for Windows Phone 7
Automated Unit Testing in Silverlight for Windows Phone 7Jacinto Limjap
 
Dynamics & Object Runtime Composition with C# 4.0
Dynamics & Object Runtime Composition with C# 4.0Dynamics & Object Runtime Composition with C# 4.0
Dynamics & Object Runtime Composition with C# 4.0Jacinto Limjap
 
Three Developer Abilities They Dont Teach In College
Three Developer  Abilities They Dont Teach In CollegeThree Developer  Abilities They Dont Teach In College
Three Developer Abilities They Dont Teach In CollegeJacinto Limjap
 

More from Jacinto Limjap (11)

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

Recently uploaded

My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 

Recently uploaded (20)

My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 

N-tier and oop - moving across technologies

  • 1. N-Tier Architecture & Object-Oriented Programming: Moving Across Technologies Jon Limjap MVP for C# Senior Developer for ITRS
  • 2. Agenda Shanties vs. Mansions : Housing as an analogy to software development N-Tier Software Application Development Object Oriented Programming SOLID Principles Migrating and integrating apps to new technology
  • 3. Shanties vs. Mansions Housing 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 skill Little or no electrical skill Do whatever it takes to make things work Creates 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, sewage Carefully chosen materials and furniture Highly skilled carpenters, welders, electricians, plumbers Creates 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. Slums Village of shanties built on unutilized and undeveloped land No water lines; deep wells are constructed or water is carried from outside the slum No sewage; waste is either buried, moved to garbage dumps or thrown into rivers or estuaries No proper electrical wiring; electrical cables are strewn across a slum
  • 8. Slums Lack of infrastructure means health problems, heightened risk of fire and difficulty in moving things and people Also known as “Big Ball of Mud”
  • 9. Subdivisions Built on prime real estate Well developed infrastructure means easy access to water, electricity, and sewage Planning includes provisions for recreational facilities such as parks, playgrounds, etc.
  • 10. Subdivisions Efficient 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 design How should nicely written software look like?
  • 14. Characteristics of good software design Minimal complexity designs should be as simple as possible Ease of maintenance code should be easy to read and understand Loose coupling code should have as few dependencies as possible
  • 15. Characteristics of good software design Extensibility it should be very easy to add new functionality to your design Reusability pieces of code could be reused across one application and even in other applications High fan-in system is designed to have good use of utility code at lower levels
  • 16. Characteristics of good software design Low fan-out code requires as few external code as possible, as a high number of such indicates complexity Leanness the application should only contain functionalities that it needs to run properly, no more and no less
  • 17. Characteristics of good software design Stratification design systems which you can view at one level without looking too deep into other levels Standardized code and design should be consistent to increase ease of maintenance
  • 18. N-Tier Architecture Standard architecture in the software development industry
  • 19. N-Tier / N-Layer / Multitier Broad term to describe software infrastructure in the software development industry Describes dividing an application solution into "layers" Has a physical and logical components
  • 20. Physical Layers Describes arrangement of a broad set of tangible and intangible systems May contain one of many components: Application servers Databases Networks (Local/Wide Area/Internet) Services (Web Services, Web APIs)
  • 21. Logical Layers Describes arrangement of code in a particular software application Typical components: Domain Objects Business Rules Graphical 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 subdivision Logical 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 Programming Letting your code describe the real thing
  • 24. Object-Oriented Programming Software development paradigm wherein the problem is modelled into "objects" -- pieces of code containing data describing an object and the behaviour of such object Objects are defined by "classes". A class contains the definition of the data that an object contains, and its corresponding behaviour Some examples of OO languages: Visual Basic .NET, C++, C#, Java, PHP (starting with version 5)
  • 25. Key OOP Concepts Class The description of an object in terms of characteristics (attributes) and behaviors (methods) Object The pattern or exemplar being defined Instance An actual object existing at runtime Method Actions that can be performed by an object
  • 26. Key OOP Concepts Message Passing Objects can invoke other objects’ methods and get their data Encapsulation Details of an object that aren’t needed by other objects are hidden Inheritance Specific objects can be derived from more general objects, retaining all attributes and/or methods Polymorphism The ability to represent an specific object to its more general object
  • 28. Single Responsibility Principle A class should only have one, and only one reason to change
  • 29. Open Closed Principle You should be able to extend a class’s behaviour without modifying it
  • 30. Liskov Substitution Principle Derived classes must be substitutable for their base classes
  • 31. Interface Segregation Principle Make fine grained interfaces that are client specific
  • 32. Dependency Inversion Principle Depend on abstractions, not on concretions
  • 33. Migrating and integrating apps to new technology OOP & N-Tier not only makes this easy, it makes it possible
  • 34. Tons of new technologies came to play in the last 5 years JSON
  • 35. OOP and N-Tier makes technology change possible Each layer can easily be replaced Integrity of other layers remain Less rework Easier to test
  • 36. Conclusion We want mansions, not shanties! Subdivisions, not slums! OOP + N-Tier done properly makes it easier to move across platforms and technologies OOP + N-Tier is just one of many approaches in developing software OOP takes years of practice to get right – start now!
  • 37. References 2004: McConnell, Steve: Code Complete 2: Microsoft Publishing 1999: 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
  • 38. Your speaker jonlimjap@gmail.com http://dotnet.kapenilattex.com http://msforums.ph/forums http://twitter.com/LaTtEX