SlideShare a Scribd company logo
Introduction to Frameworks
Objective
I want to be a software engineer
My first application
• I don’t know any language 
• Well let’s choose a language for application
  programming and start learning.
… after 2 month
• I have learned programming .. I am good at it
  and I can build any thing …. 
My first application
• As I can build anything I want to build a
  chess… I am a very good chess player.
• I know all the rules and I know how to
  program ... What else do I need…
Week 1
Week 2
Week 3
My first application
• After three weeks 600 lines of code.
• Ok it’s easy.

• After a month it’s 3500 lines of code in one
  file. Certainly I find scroll bar is very useful.
My first application
• But when a bug occurs … lets debug it.

• Now it seems building application is not as fun
  as it ought to be.

• Now after learning a good lesson … well try
  something different.
My first application
• Writing in one file creating problems .. :-?




                                             3686
My first application
Ok I will write small codes in different files…
My first application


OMG now I have 100 files and to change some
thing I have to change 10 files … it is worst
than I imagined.
My first application


I think I have found the problem .. This
application may be very big and I alone can’t
complete it. Let’s ask a friend.
My first application

• Arrrrghhhh….




• Well we code differently so many
  misunderstanding… it complicates things more
My first application
• Let’s stop trying and toiling

• Think, how people writes a code which has
  millions of lines and thousands of developers
• How ?????
• …
My first application

• Let’s see what can be done…
• There is something wrong . What is the
  problem ?
Solutions
• Separability
• Independence
• Readablity
My first application
• Ok I successfully build a chess game
• Now I want to build checker or other board
  games.
My Next Applications
• I am so lazy, but I have to handle some things
  again that I have handled in chess game
  before. Like,
  – Point Table
  – Player Switching
  – Board status
  – Pieces
  – Save, load, undo, redo etc….
DRY
• If I implement them again it will be wastage of
  time.
• Don't Repeat Yourself (DRY)
• Reduce repetition of code of all kinds
DRY
• I want to reuse code that I used before in
  chess game
DRY
• The functions need to customize as it was
  written in chess game i have to change it so
  that it also work for checker.
DRY
• Some times this changes are different because
  there are so many options and varieties of
  board games
DRY


• If I write those functionalities in a sort of
  generalized way such that it can be used in all
  board games.
• Then I can develop this games very fast
  without repeating myself.
DRY
• Now I can separate the similar codes that I can
  reuse for these board games.
• If I need to build checker then I need similar
  structure as chess game.
DRY
• If there is a structure that has similar features
  for these games then I do not need to start
  from the beginning.
• I can straight jump into game logic.




                  logic
Frameworks
• The structure that I built to use for all board
  games can be called framework.
• A reusable set of libraries or classes for a
  software system.
• Used to implement the standard structure of
  an application.
Few Frameworks
• For web application
  –   Symfony
  –   Zend
  –   CodeIgniter
  –   CakePHP
  –   .NET
  –   Django
• For desktop application
  – Qt C++
  – WxWidget
• Here is an idea. I am a human why should I
  repeat another humans work.
• I haven't coded yet but I need not to because
  some one has already coded it for others to
  reuse.
• There is no point to reinvent the wheel
MVC
Model
• "Represent knowledge"
• The data/business functionality
View
• Visual representation of the model
• The screens and widgets of app
• Gets data from model & updates model
Controller
• Link between user and system
• Responsible for intercepting user input
• Passes user input to view via messages
Questions?

More Related Content

PDF
Font-End Hero
PDF
11. Functions II
PPTX
Jonathan Alfonso Project 1 Presentation
PPTX
Arunan Skanthan - Roll Your own Style Guide
PDF
Assignment b
PDF
Using SysML in a RTC-based Robotics Application : a case study with a demo
PDF
Software Architecture for Robotics
PPT
X10ABOT: The Modular, Scalable, Extensible robotics architecture
Font-End Hero
11. Functions II
Jonathan Alfonso Project 1 Presentation
Arunan Skanthan - Roll Your own Style Guide
Assignment b
Using SysML in a RTC-based Robotics Application : a case study with a demo
Software Architecture for Robotics
X10ABOT: The Modular, Scalable, Extensible robotics architecture

Similar to Introduction to frameworks (20)

KEY
Writing Frameworks for Fun and Profit
ODP
Debugging
PDF
PDF
Choose a pattern for a problem
PDF
Evolving Software Patterns
PDF
Clean code
PPT
Object Oriented Analysis and Design
PPTX
Solid OOPS
PPT
Trends in Programming Technology you might want to keep an eye on af Bent Tho...
ODP
Preventing Complexity in Game Programming
PDF
Chapter 4 software project planning
PDF
Sugar Presentation - YULHackers March 2009
PDF
ABSE and AtomWeaver : A Quantum Leap in Software Development
PPT
04 designing architectures
PPT
Programming Paradigms
PPTX
OOP, API Design and MVP
PPT
Rapid software evolution
PPT
The Architect's Two Hats
PPTX
Engaging young minds in cs
PDF
Orthogonality: A Strategy for Reusable Code
Writing Frameworks for Fun and Profit
Debugging
Choose a pattern for a problem
Evolving Software Patterns
Clean code
Object Oriented Analysis and Design
Solid OOPS
Trends in Programming Technology you might want to keep an eye on af Bent Tho...
Preventing Complexity in Game Programming
Chapter 4 software project planning
Sugar Presentation - YULHackers March 2009
ABSE and AtomWeaver : A Quantum Leap in Software Development
04 designing architectures
Programming Paradigms
OOP, API Design and MVP
Rapid software evolution
The Architect's Two Hats
Engaging young minds in cs
Orthogonality: A Strategy for Reusable Code
Ad

Recently uploaded (20)

PPT
EGWHermeneuticsffgggggggggggggggggggggggggggggggg.ppt
PPT
Machine printing techniques and plangi dyeing
PPTX
DOC-20250430-WA0014._20250714_235747_0000.pptx
PPTX
An introduction to AI in research and reference management
PPTX
building Planning Overview for step wise design.pptx
PDF
Chalkpiece Annual Report from 2019 To 2025
PPTX
Special finishes, classification and types, explanation
PDF
Integrated-2D-and-3D-Animation-Bridging-Dimensions-for-Impactful-Storytelling...
PDF
UNIT 1 Introduction fnfbbfhfhfbdhdbdto Java.pptx.pdf
PPTX
Causes of Flooding by Slidesgo sdnl;asnjdl;asj.pptx
PDF
Trusted Executive Protection Services in Ontario — Discreet & Professional.pdf
PPTX
EDP Competencies-types, process, explanation
PPTX
mahatma gandhi bus terminal in india Case Study.pptx
PPTX
ANATOMY OF ANTERIOR CHAMBER ANGLE AND GONIOSCOPY.pptx
PDF
Phone away, tabs closed: No multitasking
PPTX
Media And Information Literacy for Grade 12
DOCX
actividad 20% informatica microsoft project
PPT
pump pump is a mechanism that is used to transfer a liquid from one place to ...
PPTX
6- Architecture design complete (1).pptx
PPTX
CLASSIFICATION OF YARN- process, explanation
EGWHermeneuticsffgggggggggggggggggggggggggggggggg.ppt
Machine printing techniques and plangi dyeing
DOC-20250430-WA0014._20250714_235747_0000.pptx
An introduction to AI in research and reference management
building Planning Overview for step wise design.pptx
Chalkpiece Annual Report from 2019 To 2025
Special finishes, classification and types, explanation
Integrated-2D-and-3D-Animation-Bridging-Dimensions-for-Impactful-Storytelling...
UNIT 1 Introduction fnfbbfhfhfbdhdbdto Java.pptx.pdf
Causes of Flooding by Slidesgo sdnl;asnjdl;asj.pptx
Trusted Executive Protection Services in Ontario — Discreet & Professional.pdf
EDP Competencies-types, process, explanation
mahatma gandhi bus terminal in india Case Study.pptx
ANATOMY OF ANTERIOR CHAMBER ANGLE AND GONIOSCOPY.pptx
Phone away, tabs closed: No multitasking
Media And Information Literacy for Grade 12
actividad 20% informatica microsoft project
pump pump is a mechanism that is used to transfer a liquid from one place to ...
6- Architecture design complete (1).pptx
CLASSIFICATION OF YARN- process, explanation
Ad

Introduction to frameworks

  • 2. Objective I want to be a software engineer
  • 3. My first application • I don’t know any language  • Well let’s choose a language for application programming and start learning.
  • 4. … after 2 month • I have learned programming .. I am good at it and I can build any thing …. 
  • 5. My first application • As I can build anything I want to build a chess… I am a very good chess player. • I know all the rules and I know how to program ... What else do I need…
  • 9. My first application • After three weeks 600 lines of code. • Ok it’s easy. • After a month it’s 3500 lines of code in one file. Certainly I find scroll bar is very useful.
  • 10. My first application • But when a bug occurs … lets debug it. • Now it seems building application is not as fun as it ought to be. • Now after learning a good lesson … well try something different.
  • 11. My first application • Writing in one file creating problems .. :-? 3686
  • 12. My first application Ok I will write small codes in different files…
  • 13. My first application OMG now I have 100 files and to change some thing I have to change 10 files … it is worst than I imagined.
  • 14. My first application I think I have found the problem .. This application may be very big and I alone can’t complete it. Let’s ask a friend.
  • 15. My first application • Arrrrghhhh…. • Well we code differently so many misunderstanding… it complicates things more
  • 16. My first application • Let’s stop trying and toiling • Think, how people writes a code which has millions of lines and thousands of developers • How ????? • …
  • 17. My first application • Let’s see what can be done… • There is something wrong . What is the problem ?
  • 19. My first application • Ok I successfully build a chess game • Now I want to build checker or other board games.
  • 20. My Next Applications • I am so lazy, but I have to handle some things again that I have handled in chess game before. Like, – Point Table – Player Switching – Board status – Pieces – Save, load, undo, redo etc….
  • 21. DRY • If I implement them again it will be wastage of time. • Don't Repeat Yourself (DRY) • Reduce repetition of code of all kinds
  • 22. DRY • I want to reuse code that I used before in chess game
  • 23. DRY • The functions need to customize as it was written in chess game i have to change it so that it also work for checker.
  • 24. DRY • Some times this changes are different because there are so many options and varieties of board games
  • 25. DRY • If I write those functionalities in a sort of generalized way such that it can be used in all board games. • Then I can develop this games very fast without repeating myself.
  • 26. DRY • Now I can separate the similar codes that I can reuse for these board games. • If I need to build checker then I need similar structure as chess game.
  • 27. DRY • If there is a structure that has similar features for these games then I do not need to start from the beginning. • I can straight jump into game logic. logic
  • 28. Frameworks • The structure that I built to use for all board games can be called framework. • A reusable set of libraries or classes for a software system. • Used to implement the standard structure of an application.
  • 29. Few Frameworks • For web application – Symfony – Zend – CodeIgniter – CakePHP – .NET – Django • For desktop application – Qt C++ – WxWidget
  • 30. • Here is an idea. I am a human why should I repeat another humans work. • I haven't coded yet but I need not to because some one has already coded it for others to reuse. • There is no point to reinvent the wheel
  • 31. MVC
  • 32. Model • "Represent knowledge" • The data/business functionality
  • 33. View • Visual representation of the model • The screens and widgets of app • Gets data from model & updates model
  • 34. Controller • Link between user and system • Responsible for intercepting user input • Passes user input to view via messages