sma-examples

Description

Demo examples for the Software Modeling and Analysis course

Details

Source
GitHub
Stars
2
Forks
1
Created
Sept. 18, 2018
Updated
Aug. 20, 2025

Categories

Education / Howto

README excerpt

# sma-examples

This is an Iceberg repo for Pharo 6.1 containing demo examples for the Software Modeling and Analysis course: <http://scg.unibe.ch/teaching/sma>

This repo resides on github: <https://github.com/onierstrasz/sma-examples>

This repo contains several packages of demo code, plus a class `SMA` with several class-side methods that each generates a Playground with code snippets.

## Smalltalk: A Reflective Language and System

In this lecture we introduce Pharo Smalltalk using a CallGraph example.
The folder CallGraphDemo contains a series of fileouts containing 5 successive versions of code to parse a callgraph dump from Javassist, and to model the call graph as Smalltalk objects.

The completed project is in the package `SMA-CallGraph`.

Load:

```
Metacello new
   baseline: 'SMACallGraph';
   repository: 'github://onierstrasz/sma-examples/src';
   load
```

To generate the Playground run:

`SMA callGraphDemo.`

## Understanding Classes and Metaclasses

This lecture illustrates the Smalltalk object model using an example of a Snakes and Ladders game.

Load:

```
Metacello new
   baseline: 'SMASnakesAndLadders';
   repository: 'github://onierstrasz/sma-examples/src';
   load
```

and run `SMA metaclassDemo` to obtain the snippet Playground.

## Reflection and Metaprogramming

This lecture illustrates reflective features of Smalltalk.
The demos are in the package `SMA-Reflection`.
Load:

```
Metacello new
   baseline: 'SMAReflection';
   repository: 'github://onierstrasz/sma-examples/src';
   load
```

Run `SMA reflectionDemo` to obtain the snippets.

# Demo SlideShows for Gt

The examples and demos have also been adapted to the GlamorousToolkit.
[Download the latest Gt image](https://gtoolkit.com/download/) and load the SMA examples as follows:

```
Metacello new
   baseline: 'SMAForGt';
   repository: 'github://onierstrasz/sma-examples/src';
   load.
```

Then run `SMAForGt openSlideshowOverview` to open an overview window with links to the slideshows.
(NB: The first one is the generic Pharo 101 slideshow for newcomers.)
← Back to results