SlideShare a Scribd company logo
Agile Development with Smalltalk


           Tomas Kukol
      tomas.kukol@gmail.com
Agenda

This presentation brings an overview of Smalltalk
programming language and Smalltalk object database



Describes
  Current situation in application development and
  maintenance
  Smalltalk as object programming language, object
  database and productive development platform
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 languages
We use relational (non-object) databases (Oracle, SQL Server) to
store 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 data
Applications are more and more complicated – everybody loves
feature 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)
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
Possible solution?

We should use true object programming language and
true object database that integrates program and
database, support agile development, easy
refactoring and testing approach

Ideal candidate is Smalltalk object programming
language and GemStone/S Smalltalk object database
Smalltalk is …

Programming language
  Simple and powerful object oriented language
  Has only few basic rules
  Very stable and easy to learn


Object database
  Stores complete objects in object database
  Everything is written in Smalltalk language


Productive development environment
  Integrates all tools for rapid application development
  Ideal for web and mobile applications, web services and
  service oriented architectures
History of Smalltalk

Smalltalk created at Xerox PARC in 1970's
   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 2010
Squeak 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
Present of Smalltalk

Smalltalk 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
Object persistence in Smalltalk

Object persistence is integrated into Smalltalk language
   Developer can focus on real business logic with business objects
   and business processes
Persistence 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 required
Complete 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
Well designed simple object language

Smalltalk programming language is very stable
   No changes in language and framework since 1980 (ST-80)
   No need to rewrite applications every 2-3 years

Smalltalk 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 knowledge

Smalltalk 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)
Development of web and mobile applications

Seaside 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
Agile and test driven development

Supports 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 code




Rapid 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)
Deployment under control

Smalltalk 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 development




Easy 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)

More Related Content

PDF
Agile Development with Smalltalk - Short
PPT
Introduction To Dotnet
PPTX
Introduction of .net framework
PPT
Introduction to .NET Framework
PPT
Nakov - .NET Framework Overview - English
PPT
ASP.NET 01 - Introduction
PPT
Introduction to .Net
PPTX
Vb6 vs vb.net....(visual basic) presentation
Agile Development with Smalltalk - Short
Introduction To Dotnet
Introduction of .net framework
Introduction to .NET Framework
Nakov - .NET Framework Overview - English
ASP.NET 01 - Introduction
Introduction to .Net
Vb6 vs vb.net....(visual basic) presentation

What's hot (19)

PPT
Programming in c#
PPTX
Introduction to .NET Framework and C# (English)
PPTX
Dotnet Basics Presentation
PPTX
4. features of .net
PDF
Rcs project Training Bangalore
PPT
.net framework
PDF
DOT NET TRaining
PPTX
What is dotnet (.NET) ?
PPSX
Introduction to .net framework
PPT
dot net final year project in jalandhar
PDF
Professional JavaScript Development (An Introduction for Java Developers)
PPTX
.Net language support
PPTX
Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...
PPTX
Java Introduction
PPTX
Overview of microsoft dot net platforms
PPTX
Microsoft .Net Framework
PPTX
Asp.net and .Net Framework ppt presentation
PPT
.Net overview|Introduction Of .net
Programming in c#
Introduction to .NET Framework and C# (English)
Dotnet Basics Presentation
4. features of .net
Rcs project Training Bangalore
.net framework
DOT NET TRaining
What is dotnet (.NET) ?
Introduction to .net framework
dot net final year project in jalandhar
Professional JavaScript Development (An Introduction for Java Developers)
.Net language support
Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...
Java Introduction
Overview of microsoft dot net platforms
Microsoft .Net Framework
Asp.net and .Net Framework ppt presentation
.Net overview|Introduction Of .net
Ad

Similar to Agile Development with Smalltalk - Long (20)

PPT
MyMobileWeb Certification Part II
PDF
PDF
Smalltalk and Business
PPTX
.NET presentation
PDF
Sudhir srivastava profile
PPTX
IT TRENDS AND PERSPECTIVES 2016
PPTX
ANDROID DEVELOPER introduction PPT.pptx
DOC
PDF
Shripal Doshi CV
DOC
Robin_Informatica
PDF
Curriculum Vitae - Dimitrios Panagiotou - Senior Software Engineer
DOC
Logesh Kumaran M
DOCX
Resume_Manish
PPT
DOCX
Mukhtar_Resume_ETL_Developer
PDF
Meetup. Technologies Intro for Non-Tech People
PPTX
Stream SQL eventflow visual programming for real programmers presentation
DOCX
Mukhtar resume etl_developer
DOCX
Simon Barker CV 20160926
MyMobileWeb Certification Part II
Smalltalk and Business
.NET presentation
Sudhir srivastava profile
IT TRENDS AND PERSPECTIVES 2016
ANDROID DEVELOPER introduction PPT.pptx
Shripal Doshi CV
Robin_Informatica
Curriculum Vitae - Dimitrios Panagiotou - Senior Software Engineer
Logesh Kumaran M
Resume_Manish
Mukhtar_Resume_ETL_Developer
Meetup. Technologies Intro for Non-Tech People
Stream SQL eventflow visual programming for real programmers presentation
Mukhtar resume etl_developer
Simon Barker CV 20160926
Ad

Agile Development with Smalltalk - Long

  • 1. Agile Development with Smalltalk Tomas Kukol tomas.kukol@gmail.com
  • 2. Agenda This presentation brings an overview of Smalltalk programming language and Smalltalk object database Describes Current situation in application development and maintenance Smalltalk as object programming language, object database and productive development platform
  • 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 languages We use relational (non-object) databases (Oracle, SQL Server) to store 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 data Applications are more and more complicated – everybody loves feature 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. 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. Possible solution? We should use true object programming language and true object database that integrates program and database, support agile development, easy refactoring and testing approach Ideal candidate is Smalltalk object programming language and GemStone/S Smalltalk object database
  • 6. Smalltalk is … Programming language Simple and powerful object oriented language Has only few basic rules Very stable and easy to learn Object database Stores complete objects in object database Everything is written in Smalltalk language Productive development environment Integrates all tools for rapid application development Ideal for web and mobile applications, web services and service oriented architectures
  • 7. History of Smalltalk Smalltalk created at Xerox PARC in 1970's 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 2010 Squeak 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. Present of Smalltalk Smalltalk 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. Object persistence in Smalltalk Object persistence is integrated into Smalltalk language Developer can focus on real business logic with business objects and business processes Persistence 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 required Complete 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. Well designed simple object language Smalltalk programming language is very stable No changes in language and framework since 1980 (ST-80) No need to rewrite applications every 2-3 years Smalltalk 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 knowledge Smalltalk 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. Development of web and mobile applications Seaside 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. Agile and test driven development Supports 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 code Rapid 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. Deployment under control Smalltalk 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 development Easy 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)