A Practical High Volume Software Product Line Peter Bell CEO/CTO SystemsForge ooPLSA ‘07 Peter...

Post on 27-Dec-2015

221 views 4 download

Tags:

transcript

A Practical High Volume Software Product Line

A Practical High Volume Software Product Line

Peter BellCEO/CTO

SystemsForge

ooPLSA ‘07

Peter BellCEO/CTO

SystemsForge

ooPLSA ‘07

Overview

What we do

The problem

Our approach

Lessons learned

What We Do . . .Custom web applications

Small/mid sized businesses

$10,000 - $50,000

Content management

E-commerce

Document management

Workflow

. . .

The Problems

Clients don’t know

Elicit requirements

Clients don’t care

Efficient feature reuse

Clients DO care

Build anything, change everything

Clients Don’t Know . . .Problem:

Marketing managers/CEOs

No software experience

Vague requirements

Fixed bid/scope/timeframe

Need:

Quick, flexible approach

Clients Don’t Care . . .

Problem:

Don’t want to specify everything

Mainly want “good enough”

Need:

Reusable “best practices”

Efficient fabrication

Clients DO Care . . .

Care about some things

Covers all areas

Build anything - change everything

Our Approach

Software product line

Specification process

Feature model

Decision support

Domain Specific Languages

Dynamic framework

Software Product Lines

Lots of similar applications

Framework

Components

Configuration

Extension

Bounded/Unbounded

Layered approach

Specification Process

Business intent

Roles/personas

Essential tasks

Packages

Screens/Actions

IA

Look and feel

Feature ModelingCommercial products

pure:variants

Big Lever

Our approach

Feature tree

Essential/optional metadata

Feature constraints

Decision Support

Associating optional metadata

Decision tree

Non-technical users

Domain Specific Languages

“Efficiently encode executable intent”

Everything is a DSL

Language, API, XML, Data model, etc.

Flexibility in implementation

“When I use a word, it means just what I choose it to mean”

- Humpty Dumpty

Domain Specific LanguagesAbstract grammar vs. Concrete Syntax

Projections (storage/editing)

Edit: cms

Store: db

Publish: XML

Consume: Framework/API

Dynamic FrameworkPowered by parameterization

Where are the classes?

Merging DSLs with code

Inheritance, AOP, mixins (object/class), code blocks

Lessons Learned

Reuse specs - not code

Framework vs. code generation

Evolution is key

Questions?

Read the paper :)

Website: www.systemsforge.com

Blog: www.pbell.com

Email: peter@pbell.com - Yahoo: freshstartsw - AIM: appgeneration