Successfully reported this slideshow.
Agile Development with Smalltalk           Tomas Kukol      tomas.kukol@gmail.com
AgendaThis presentation brings an overview of Smalltalkprogramming language and Smalltalk object databaseDescribes  Curren...
Current situation (AS-IS)We use object oriented languages (C# .NET, Java)   These languages are very complicated (more tha...
Current situation (AS-IS) – cont.Finally, we must leave object world and dive into database world of tables,views, stored ...
Possible solution?We should use true object programming language andtrue object database that integrates program anddataba...
Smalltalk is …Programming language  Simple and powerful object oriented language  Has only few basic rules  Very stable an...
History of SmalltalkSmalltalk created at Xerox PARC in 1970s   Created as part of Dynabook project in 1972 by team of Alan...
Present of SmalltalkSmalltalk is gaining popularity   Squeak Smalltalk with different projects like Seaside, Open Cobalt, ...
Object persistence in SmalltalkObject persistence is integrated into Smalltalk language   Developer can focus on real busi...
Well designed simple object languageSmalltalk programming language is very stable   No changes in language and framework s...
Development of web and mobile applicationsSeaside web framework  For web and mobile applications development     Support f...
Agile and test driven developmentSupports agile test driven development and refactoring   All kind of tests (even database...
Deployment under controlSmalltalk application is distributed in packages   Package contains Smalltalk code (objects and me...
Upcoming SlideShare
Loading in …5
×

Agile Development with Smalltalk - Long

900 views

Published on

  • Be the first to comment

Agile Development with Smalltalk - Long

  1. 1. Agile Development with Smalltalk Tomas Kukol tomas.kukol@gmail.com
  2. 2. AgendaThis presentation brings an overview of Smalltalkprogramming language and Smalltalk object databaseDescribes Current situation in application development and maintenance Smalltalk as object programming language, object database and productive development platform
  3. 3. Current situation (AS-IS)We use object oriented languages (C# .NET, Java) These languages are very complicated (more than 300 rules) Mastering such language with related frameworks takes 3-4 years They change very often (every 2-3 years in Microsoft .NET) Every 2-3 years every developer must learn new language features, new frameworks and completely change development environment (in .NET) Persistence of data is not part of these programming languagesWe use relational (non-object) databases (Oracle, SQL Server) tostore data Very difficult to be agile and response to business changing needs We talk more about database tables and not about objects, their behaviors and relations Hard to test or even to prepare test dataApplications are more and more complicated – everybody lovesfeature rich web and mobile applications Again new languages, technologies and tools Every developer must know in detail HTML, CSS, JavaScript, AJAX, JQuery, JQuery Mobile, Web Services (these things are also changing)
  4. 4. Current situation (AS-IS) – cont.Finally, we must leave object world and dive into database world of tables,views, stored procedures, indices, constraints, triggers. Why? Only way how to update no more than hundreds of records in timely fashion Positives and negatives of such approach? Mostly negatives Business logic is in more places – stored procedures in database and application There are no objects - only tables and procedures, new languages (T-SQL, PL-SQL), new tools and even new database versions comes (databases change also every 3-4 years) Developers must know different technologies – OOP programming, procedural database programming (and very often also database optimizations – domain of DB Admins) Object database Relational database
  5. 5. Possible solution?We should use true object programming language andtrue object database that integrates program anddatabase, support agile development, easyrefactoring and testing approachIdeal candidate is Smalltalk object programminglanguage and GemStone/S Smalltalk object database
  6. 6. Smalltalk is …Programming language Simple and powerful object oriented language Has only few basic rules Very stable and easy to learnObject database Stores complete objects in object database Everything is written in Smalltalk languageProductive development environment Integrates all tools for rapid application development Ideal for web and mobile applications, web services and service oriented architectures
  7. 7. History of SmalltalkSmalltalk created at Xerox PARC in 1970s Created as part of Dynabook project in 1972 by team of Alan Kay, Dan Ingals, Adele Goldberg and others Dynabook - A Personal Computer For Children Of All Ages Final version of Smalltalk language and framework published in 1980 Used concept of Virtual Machine and Object Memory (which is persisted)Ideas from Dynabook and Smalltalk were used by Apple and others Graphical User Interface (GUI), Objective-C (syntax of Smalltalk with messages), mouse, Virtual Machine (also used in Java and .NET)GemStone/S Smalltalk object database shipped in 1982 Enterprise object database server with ACID transactions support (Atomicity, Consistency, Isolation, Durability) GemStone/S was acquired by VMware in 2010Squeak Smalltalk created by original authors in 1996 New free implementation of original Smalltalk ST-80 Pharo Smalltalk – special version for development of web and mobile applications
  8. 8. Present of SmalltalkSmalltalk is gaining popularity Squeak Smalltalk with different projects like Seaside, Open Cobalt, One Laptop per Child, Etoys, Scratch, Morphic Pharo Smalltalk for rapid web and mobile application development GemStone/S object server Direct connection to/from Java and Oracle GLASS (GemStone/S, Linux, Apache, Seaside, Smalltalk) Support for Ruby on Rails (MagLev)Smalltalk systems are used in different industries Finance JPMorgan, Swiss National Bank, UBS, Merril Lynch, … Government Canadian Revenue Agency, Norwegian Directorate of Immigration, … Transportation / Shipping OOCL, Nippon Yusen Kaisha, …Part of Computer Science studies on many universities Smalltalk is used for teaching object oriented programming and design patterns
  9. 9. Object persistence in SmalltalkObject persistence is integrated into Smalltalk language Developer can focus on real business logic with business objects and business processesPersistence code is written in Smalltalk Up to 5 lines of code in Smalltalk vs. 30-50 in C# .NET No other language is needed No other tools requiredComplete objects are stored into object database Saves 60% – 90% of developer time to handle persistence No need to prepare database, tables, views, stored procedures, insert scripts, database update scripts, configurations for different environments, installation packages etc.Objects can be reused in other applications Allowed by Share Everything architecture Better code with well tested reused objects and components
  10. 10. Well designed simple object languageSmalltalk programming language is very stable No changes in language and framework since 1980 (ST-80) No need to rewrite applications every 2-3 yearsSmalltalk is easy to learn and master Only objects and message sends, 5 keywords and 3 types of messages (unary, binary, keywords) Mastering Smalltalk takes 6 months vs. 3-4 years of C# .NET Source codes of the whole system are available Stable investment to Smalltalk knowledgeSmalltalk is true object language Real inheritance, polymorphism and encapsulation High reuse of existing code (up to 80%) Usage of design patterns without performance impact and limits of other object oriented languages (C# or Java)
  11. 11. Development of web and mobile applicationsSeaside web framework For web and mobile applications development Support for Web 2.0 Support for mobiles and tablets Reusable visual components and work-flows Application code is written in Smalltalk No need to learn different languages and tools (only concepts) Seaside abstracts things like HTML, CSS, JavaScript, JQuery, AJAX Application code is written as easy as desktop application Work-flow components allows to write the whole application in one method Easy to read and maintain There is no equivalent in C# .NET or Java world Handling of “Back” button problem
  12. 12. Agile and test driven developmentSupports agile test driven development and refactoring All kind of tests (even database tests) are integral part of Smalltalk program Tests can be safely run by end user from web application Integrated IDE allows refactoring of codeRapid and cheap application prototyping with Pharo Smalltalk Contains all development tools with web server Complete IDE with class browser, debugger, object inspector, workspace, console, change tracker, version control, test browser, package browser (Monticello and Metacello) Whole suite takes about 40 MB on disk (with source codes)
  13. 13. Deployment under controlSmalltalk application is distributed in packages Package contains Smalltalk code (objects and methods) Persistence and application code, tests, examples, documentation, data migration code (in 99% not needed, but can be useful) Packages are managed by Monticello (similar to DPKG or RPM) Monticello also contains concurrent version system Allows distributed developmentEasy deployment of Smalltalk applications with Metacello Metacello is packaging system (similar to APT or YUM) Resolves dependencies and can automatically update the whole system to new versions of packages Application can be directly published to GemStone/S object server via Metacello Even from web application by authorized user (ISO Admin)

×