Click here to load reader

Intro to frameworks

Embed Size (px)

Citation preview

2. About Us Boris Farber Technical Leader/Solution Architect at Matrix M.Sc. Computer Science and M.B.A. Marketing SW Design/Android/Java Instructor and Consultant API Designers LinkedIn group manager Reviewing and Ideas Scott Whitmire Enterprise Architect at T-Mobile Vice Chair, Board of Education at International Association of Software Architects (IASA) Author of Object Oriented Design and Measurement book Avner Ben Chief Architect at Alisra Systems Skill Tree designer 3. Plan 1. Introduction 1. Library 2. Framework 2. Defining framework 3. Learning framework 4. Designing framework 4. Library A Library is a collection of resources used to develop software. These may include subroutines, classes, values or type specifications. Libraries contain code and data that provide services to independent programs Java Collections, Java Util and Math 5. Framework A Framework is an integrated set of components that collaborate to provide a reusable architecture for a family of related applications Thus frameworks support reuse of detailed design and code In contrast to library, framework enforces logic and flow on user application 6. Defining Framework 7. Business Context We develop Android/iPhone/ASP/JSP/ Spring/Maven/ . based applications 8. What we understand Unless the speaker happens to work at one the companies developing the frameworks above (better all of them ) They are external framework clients Major long term strategic decision [Text] Major problem expectation versus reality differences [Text] People depend on frameworks to do their thinking for them and they invariably end up being disappointed.zz 9. Business Context We develop Core/Infrastructure/Utilities Applications for various internal groups 10. What we understand Dont need much effort to see They are internal framework clients Many generations come and go till something is ready Major problem bottom up design, know small aspect of problem and think solved the whole problem Under budget and under prioritized [Text] Top Down approach is the best Chose framework that solves the wrong problem 11. Internal Framework Caveat Most components that are developed internally in the company fail to be reused because they are bound conceptually to a specific application domain. To create a reusable component you need to specify its goal and functionality in general terms and to think how users outside of your company can use it. 12. What is framework code perspective A framework is a large body of pre-packaged functionality. Unlike design pattern, framework is the product, rather than the intent. The intent is the "Technology platform ,framework is the result product. The framework user can build onto and out of a framework, but the code in the framework always does some of the work, maybe most of it. 13. What is framework design perspective A framework describes not only how to partition the responsibilities of a system among its components, but also how to think about a problem. Frameworks allow the reuse of analysis and design as well as code. Frameworks are cross platform i.e. build upon OS abstraction layer. 14. Framework Points Frameworks are semi-complete applications Complete applications are developed by inheriting from, and instantiating parameterized framework components Frameworks provide domain-specific functionality e.g., business applications, telecommunication applications, window systems, databases, distributed applications, OS kernels Frameworks exhibit inversion of control at run- time The framework determines which objects and methods(callback registrations) to invoke in 15. Use framework to build application by Modifying working samples Creating new subclasses Configuring objects together Editing or creating scripts that specify classes of components: Creating components Connecting components Parametrizing components 16. Inversion of Control Subroutine library User's program calls reused code. User designs structure of program. Framework Reused code calls user's program Structure of program determined primarily by reused code. 17. Prominent Domain Examples GUI/Application - standard structure of an application for a specific development environment (Android, BREW, Swing, WinForms ) Web -designed to support the development of dynamic websites, web applications and web services (J2EE, ASP, Rails, Django ) 18. History 70s 1979 MVC 1979 dBase 80s PThreads 90s Java (Swing, JEE etc) 2000 and on .net, Android, Ruby on Rails ... 19. Importance They are strategic products for various (both large and small) software vendors. The framework usage provides order of magnitude increases in programmers productivity. 20. Books on framework design 21. Usefull Web References http://st- www.cs.illinois.edu/users/droberts/evolve.html 22. Learning Frameworks are difficult to learn because the user of a framework must adopt the collaborative model of the framework. The framework user has to learn a lot before he gets to any classes. Learning a framework is easier than learning the problem domains the frameworks solves. But calls a mind bug, of not knowing/learning the problem domain Learning a framework is like peeling an onion in that user has to start with the big picture, both the problem being solved and the framework's view of things, so that the user can have context into which to fit the details. 23. How to learn Other programmers/Feedback (the best way) Rest (Reading Code, Writing and experimenting with stand alone applications, Documentations, Google/MSDN/We b/Forums, Books )