Smalltalk-80: the language and its implementation
Smalltalk-80: the language and its implementation
Program evolution: processes of software change
Program evolution: processes of software change
The early history of Smalltalk
HOPL-II The second ACM SIGPLAN conference on History of programming languages
Extreme programming explained: embrace change
Extreme programming explained: embrace change
Executable UML: A Foundation for Model-Driven Architectures
Executable UML: A Foundation for Model-Driven Architectures
Visual Object-Oriented Programming: Concepts and Environments
Visual Object-Oriented Programming: Concepts and Environments
PICCOLA---a small composition language
Formal methods for distributed processing
Test Driven Development: By Example
Test Driven Development: By Example
Hints on programming language design.
Hints on programming language design.
Debugging with Reverse Watchpoint
QSIC '03 Proceedings of the Third International Conference on Quality Software
Object-Oriented Metrics in Practice
Object-Oriented Metrics in Practice
The story of moose: an agile reengineering environment
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Subtext: uncovering the simplicity of programming
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Traits: A mechanism for fine-grained reuse
ACM Transactions on Programming Languages and Systems (TOPLAS)
Mondrian: an agile information visualization framework
SoftVis '06 Proceedings of the 2006 ACM symposium on Software visualization
Encapsulating and exploiting change with changeboxes
ICDL '07 Proceedings of the 2007 international conference on Dynamic languages: in conjunction with the 15th International Smalltalk Joint Conference 2007
A survey on context-aware systems
International Journal of Ad Hoc and Ubiquitous Computing
Traits at work: The design of a new trait-based stream library
Computer Languages, Systems and Structures
Transactional memory in a dynamic language
Computer Languages, Systems and Structures
Practical Object-Oriented Back-in-Time Debugging
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
Exploiting Runtime Information in the IDE
ICPC '08 Proceedings of the 2008 The 16th IEEE International Conference on Program Comprehension
Change-Enabled Software Systems
Software-Intensive Systems and New Computing Paradigms
Model-Centric, Context-Aware Software Adaptation
Software Engineering for Self-Adaptive Systems
Safe reflection through polymorphism
Proceedings of the first international workshop on Context-aware software technology and applications
A Personal Computer for Children of All Ages
ACM '72 Proceedings of the ACM annual conference - Volume 1
On the revival of dynamic languages
SC'05 Proceedings of the 4th international conference on Software Composition
Magritte: a meta-driven approach to empower developers and end users
MODELS'07 Proceedings of the 10th international conference on Model Driven Engineering Languages and Systems
Agile software assessment with Moose
ACM SIGSOFT Software Engineering Notes
Hi-index | 0.00 |
The biggest challenge facing software developers today is how to gracefully evolve complex software systems in the face of changing requirements. We clearly need software systems to be more dynamic, compositional and model-centric, but instead we continue to build systems that are static, baroque and inflexible. How can we better build change-enabled systems in the future? To answer this question, we propose to look back to one of the most successful systems to support change, namely Smalltalk. We briefly introduce Smalltalk with a few simple examples, and draw some lessons for software evolution. Smalltalk's simplicity, its reflective design, and its highly dynamic nature all go a long way towards enabling change in Smalltalk applications. We then illustrate how these lessons work in practice by reviewing a number of research projects that support software evolution by exploiting Smalltalk's design. We conclude by summarizing open issues and challenges for change-enabled systems of the future.