Download presentation
Presentation is loading. Please wait.
Published bySebastian Baron Modified over 9 years ago
1
Advanced Programming Giuseppe Attardi Dipartimento di Informatica Università di Pisa
2
Language is an instrument of human reason, not merely a medium for the expression of thought. G. Boole, An Investigation of the Laws of Thought, 1854
3
Instructor Giuseppe Attardi Office: 292 Mail: attardi@di.unipi.it Giuseppe Attardi Office: 292 Mail: attardi@di.unipi.it
4
Introduction Programming in the 21 century Programming in the 21 century Software as complex as ever Software as complex as ever Command line interface not enough Command line interface not enough Data comes from multiple sources: structured (DB) and unstructured Data comes from multiple sources: structured (DB) and unstructured Single computer not enough Single computer not enough Software development is a group activity Software development is a group activity Deployment on Web or mobile devices Deployment on Web or mobile devices
5
Requirements Cannot start from scratch Cannot start from scratch Reusable components are needed Reusable components are needed OS + libraries not enough OS + libraries not enough
6
Elements of a Solution Software Framework Software Framework Component Model Component Model Execution Environment Execution Environment
7
More Complex Software Object-Oriented Programming allows ever larger applications to be built Object-Oriented Programming allows ever larger applications to be built Require increased high-level application and system oversight Require increased high-level application and system oversight Multi-tier applications development increases the choices on how to build applications Multi-tier applications development increases the choices on how to build applications A new Software Architect Role is needed A new Software Architect Role is needed
8
Software Architect Duties Creating, defining or choosing an application framework Creating, defining or choosing an application framework Creating the component design Creating the component design Structure a complex application into pieces Structure a complex application into pieces Understand the interactions and dependencies among components Understand the interactions and dependencies among components Select the platform based on cost/performance criteria Select the platform based on cost/performance criteria Organize and supervise the “construction site” Organize and supervise the “construction site”
9
Application Framework A software framework used to implement the standard structure of an application for a specific development environment A software framework used to implement the standard structure of an application for a specific development environment
10
Software Framework A collection of common code providing generic functionality that can be selectively overridden or specialized by user code providing specific functionality A collection of common code providing generic functionality that can be selectively overridden or specialized by user code providing specific functionality Frameworks, like software libraries, provide reusable abstractions of code wrapped in a well-defined API Frameworks, like software libraries, provide reusable abstractions of code wrapped in a well-defined API
11
Framework Features Inversion of control Inversion of control –unlike in libraries, the overall program's flow of control is not dictated by the caller, but by the framework –Hollywood Principle: Don’t call us, we’ll call you Default behavior Default behavior Extensibility: usually by selective overriding Extensibility: usually by selective overriding Non-modifiable framework code Non-modifiable framework code
12
OO Software Framework Object-oriented programming frameworks consists in a set of abstract classes Object-oriented programming frameworks consists in a set of abstract classes An application can be built simply inheriting from pre-existing classes in the framework An application can be built simply inheriting from pre-existing classes in the framework Instantiation of a framework consists of composing and subclassing the existing classes Instantiation of a framework consists of composing and subclassing the existing classes
13
Examples of Frameworks GUI GUI –MFC –Gnome –Qt General General –Android –Spring –Cocoa Web Web –ASP.Net –GWT –Rails Concurrence Concurrence –Hadoop Map/Reduce
14
Class Hierarchy (NextSTEP 1988)
15
Cocoa (2013)
16
Benefits of Frameworks Drives solution Drives solution –Dictates how to fill-in-the-blanks Helps solving recurring problems Helps solving recurring problems –Designed for reuse –High value, since reduces cost of development
17
Framework Design Intellectual Challenging Task Intellectual Challenging Task Requires a deep understanding of the problem domain Requires a deep understanding of the problem domain Requires mastering of software patterns, OO methods and polymorphism in particular Requires mastering of software patterns, OO methods and polymorphism in particular
18
Design Pattern More abstract than frameworks More abstract than frameworks –Frameworks can be embodied in code, but only examples of patterns can be embodied in code –Design patterns explain the intent, trade-offs, and consequences of a design Smaller architectural elements than frameworks Smaller architectural elements than frameworks –A typical framework contains several design patterns but the reverse is never true. Less specialized than frameworks Less specialized than frameworks –Frameworks always have a particular application domain –Design patterns can be used in nearly any kind of application
19
Examples Visitor Visitor Publish/Subscribe Publish/Subscribe Factory Factory Dependency Injection Dependency Injection Chain of Responsibility Chain of Responsibility Observer Observer Iterator Iterator Decorator Decorator
20
Dependency Injection Allows avoiding hard-coded dependencies and changing them Allows avoiding hard-coded dependencies and changing them dependencies Allows selection among multiple implementations of a given dependency interface at run time Allows selection among multiple implementations of a given dependency interface at run time Examples: Examples: –load plugins dynamicallyplugins –replace mock objects in test environments vs. real objects in production environmentsmock objects
21
Course Objectives Understand programming language technology: Understand programming language technology: –Execution Models –Run-time Analyze programming metaphors: Analyze programming metaphors: –Objects –Components –Patterns Learn advanced programming techniques Learn advanced programming techniques Understand their limits ad how to overcome them Understand their limits ad how to overcome them
22
Course Objectives Explain how high level programming concepts and metaphors map into executable systems and which are their costs and limitations Explain how high level programming concepts and metaphors map into executable systems and which are their costs and limitations Acquaint with modern principles, techniques, and best practices of advanced software construction Acquaint with modern principles, techniques, and best practices of advanced software construction Introduce techniques of programming at higher abstraction levels, in particular generative programming, component programming and web computing Introduce techniques of programming at higher abstraction levels, in particular generative programming, component programming and web computing Present state-of-the-art frameworks incorporating these techniques Present state-of-the-art frameworks incorporating these techniques
23
Syllabus
24
Programming Language Foundations Syntax, Parsing, Abstract Syntax Tree, Parser Generators Syntax, Parsing, Abstract Syntax Tree, Parser Generators Names, Scope, Binding Names, Scope, Binding Parameter Passing Parameter Passing Static and Dynamic Allocaltion: Stack, Heap Static and Dynamic Allocaltion: Stack, Heap Types, Inheritance, Polymorphism, Overloading Types, Inheritance, Polymorphism, Overloading Delegates, Closures Delegates, Closures Exception Handling Exception Handling
25
Run-time Systems Virtual Execution Environment Virtual Execution Environment –Memory Management –Thread Management –Exception Handling –Security –Debugging Support –AOT and JIT Compilation –Dynamic Link/Load –Reflection –Verification Language Interoperability Language Interoperability
26
Advanced Techniques Generic Programming Generic Programming –C++ templates –C# Generics –Java Generics Generative Programming Generative Programming –Metaprogramming –Reflection –Template –Aspect Oriented Programming –Generators
27
Interoperability Process level: interprocess communication Process level: interprocess communication Language level: CORBA/IDL Language level: CORBA/IDL Object level: DCOM Object level: DCOM
28
Component Based Programming COM COM JavaBeans JavaBeans.NET (Assembly, Reflection, Interfaces, Attributes).NET (Assembly, Reflection, Interfaces, Attributes) OSGi OSGi
29
Web Programming Web Services, SOA Web Services, SOA Web Frameworks Web Frameworks Web 2.0 Web 2.0
30
Web Services XML, XML-Schema XML, XML-Schema SOAP, RPC, Rest SOAP, RPC, Rest WSDL WSDL UDDI UDDI
31
Web Frameworks and Applications Asp.Net Asp.Net ADO.Net ADO.Net J2EE J2EE Java Server Faces Java Server Faces JQuery JQuery AJAX: XHR, jQuery, YUI, GWT AJAX: XHR, jQuery, YUI, GWT Mashup and Service Oriented Architecture Mashup and Service Oriented Architecture
32
Scripting Languages Perl Perl Python Python JavaScript JavaScript PHP PHP
33
Text Books Programming Language Pragmatics, third ed., Michael L. Scott, Morgan-Kaufmann, 2009. Generative Programming: Methods, Tools, and Applications, Krzysztof Czarnecki, Ulrich Eisenecker, Addison-Wesley, 2000. Object Thinking, David West, Microsoft Press, 2004.
34
Text Books jQuery in ActionjQuery in Action, B. Bibeault, Y. Katz, Manning, 2010. jQuery in Action
35
Assessment Mid Term Paper: early November, one week homework Mid Term Paper: early November, one week homework Term Paper: at the end of the course, 20 days homework Term Paper: at the end of the course, 20 days homework
36
Final Term Paper Aims at exercising ability to conceive and implement full solutions to a nontrivial problem Aims at exercising ability to conceive and implement full solutions to a nontrivial problem Examples: Examples: –ASP Code generator with regular expression matcher –Implement a DSL for handling persistent object containers –SOAP protocol and SOAP server –Code generator for searching an object DB –Xpath and XSLT Intrepreter –Language for generating network protocols –AJAX Framework –Unit Testing Framework –State Charts
37
Home Work Develop a simple implementation of primitives: Develop a simple implementation of primitives: –void* malloc(size_t size) –void free(void*) Assume to have available a block of memory of size MemSize starting at MemStart Assume to have available a block of memory of size MemSize starting at MemStart Discuss the limits of the solution Discuss the limits of the solution
Similar presentations
© 2024 SlidePlayer.com Inc.
All rights reserved.