The F*star Meta-Pattern (English only)

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    The F*star Meta-Pattern (English only) - Presentation Transcript

    1. F* An Anti-Pattern for Sustainable Software Development Thibaud de Souza, London, UK [email_address] http://www.oogtech.org Perl Workshop Beijing 2009
    2. Agile & Architecture
      • Agile is a software development methodology. There are few recognized or proposed ways in which agile interacts with software architecture.
      • Architecture is an emergent property of medium to large scale software. This property is affected by design and process, and in turn affects maintainability and extensibility.
      9/19/2009 [email_address]
    3. Layering & Stories
      • Layering is a well known separation principle in software architecture - e.g. MVC meta-pattern.
      • End users and business stakeholders perceive software as a bunch of features. Agile uses iterations and stories to keep development focused on business needs.
      • Stories and features cut across application layers.
      9/19/2009 [email_address]
    4. Problems with Layering
      • Sooner (development) or later (maintenance), the business perspective hits the development process. At this point, layering mostly gets in the way of ‘making it work’.
      • Typically, pressure manifests itself as growing pains, hacks and patches - ultimately leading to corrupted software and mounting maintenance costs.
      9/19/2009 [email_address]
    5. Problems with Layering
      • Refactoring and slack are agile remedies used to safeguard architectural integrity against business pressure.
      • Unfortunately, many organisations are unwilling to allocate time to fixing stuff that already works.
      • Could business pressure be channelled and used to shape software architecture, rather than working against it?
      9/19/2009 [email_address]
    6. F*
      • Features (‘value increments’) are recognizable elements of functionality that users value and understand.
      • F* is a meta-pattern using ‘strong feature separation’ (not directly related to feature driven development)
      • F* has been tested by using it to create a critically small application (200 files / 350 kb)
      9/19/2009 [email_address]
    7. F* Requirements
      • An application that instantiates F* is such that:
      • 1. Each top level package realises a unique feature.
      • 2. All source code for a given feature can be removed in a single step.
      • 3 . After a feature has been removed, the application must compile and run correctly.
      • Strong separation is achieved by ensuring that features are both logically and physically separated.
      9/19/2009 [email_address]
    8. Instantiating F* - Case Study
      • F* is a separation model or meta-pattern. It can be instantiated in various ways and is open to some interpretation.
      • In this case, I am creating an IDE using a weightless application framework.
      • As framework actors, features communicate using heavyweight, typed notifications: features import events and sometimes interfaces.
      • Features are listed in a text file. Any feature can be removed or replaced.
      9/19/2009 [email_address]
    9. Features, then…
      • Examples of what counts as a feature: open-app, help, open-as-text, undo, undo-text-actions, usage-data, auto-update, new-file-or-directory, command-wizard, outline, coloured-syntax, ee-docs-skin, ... (currently 40)
      • On average, each releasable feature used 4 classes and requires 3 man hours.
      • 1/3 of the code consists in standalone utility classes.
      • Maybe 5 features are ‘support features’ that do not contribute a value increment.
      9/19/2009 [email_address]
    10. Anti-Pattern?
      • Strong separation allows a ‘rough and ready’ implementation style: maximise work not done.
      • Some features create runtime components, other features collaboratively act upon such components.
      • There is no structured application model or view. Some features are MVC, some are not.
      • Features begin as spikes. Many features are plugged ‘as is’ without concern for internal elegance or structure.
      • ‘ Ad-hoc’ notifications.
      9/19/2009 [email_address]
    11. Technical Benefits
      • Fast and fun . Features are easy to write. You can literally hack them away.
      • Maintainable. It’s easy to find bugs and easy to fix them. No fumbling across application layers.
      • Extensible. The pattern of connectivity between actors is scale-free; the number of notifications grows linearly.
      9/19/2009 [email_address]
    12. Business Benefits
      • Mix and match. Features are easy to add, remove and replace. A feature set can be used to generate several applications. >> In this project, there are 3 products released and 2 products pending.
      • Short release cycle. 1 to 2 release per day if desirable (I release weekly) .
      • Transparent, dynamic process . Progress with confidence; spot and seize opportunities.
      9/19/2009 [email_address]
    13. Conclusion & Further Work
      • ee-ide and ee-docs are freely available from oogtech.org . Another application, ee-xml has been released as freeware.
      • The underlying platform, Kippu , supports external plugins. This allows decentralised, collaborative development using F*.
      • Last, but not least, I am planning on using F* in game development and AI research.
      9/19/2009 [email_address]
    SlideShare Zeitgeist 2009

    + eelstorkeelstork Nominate

    custom

    100 views, 0 favs, 0 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 100
      • 100 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 1
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories