Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

40
Evolution or Intelligent Design? an objective view of software development Stephen Jenkins

Transcript of Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Page 1: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Evolution or Intelligent Design?

an objective view of software development

Stephen Jenkins

Page 2: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

In the beginning …

Snap prototyped in 1980 First commercial version in 1981 MS-Basic under CP/M

Rewritten 1986/7 in C under MS-DOSFirst Windows version 1992/3

Now: C/C++ Utilities in VB, online scripting in Python

Page 3: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Snap today … multi-mode, multi-language questionnaires paper, scanning, web, pda, tablet, kiosk tables, charts, weights, filters, scores descriptive stats, factor & cluster analysis online management & real-time analysis

> 20,000 active users > 500,000 web respondents/month active forum with ~600 registered

Page 4: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Snap users …

Snap user profile:- MR function in commercial organisation- Consultation in government / education- Smaller research agencies

Some full-time, many stop/start

Snap is a tool to get the job done

Page 5: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Forces at work …

Users and Prospects

Changing Domain Requirements

Business Constraints

Systems Infrastructure

Page 6: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Forces at work …

Users and Prospects

Changing Domain Requirements

Business Constraints

Systems Infrastructure

Page 7: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Users and Prospects …

Not “programmers”

Snap treated more like a Word Processor than a Database system

Snap used as a guide and assistant

Sales demos are typically to new users

Page 8: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Forces at work …

Users and Prospects

Changing Domain Requirements

Business Constraints

Systems Infrastructure

Changes

Page 9: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Changing Domain Requirements …

Multi-mode questionnaires- more respondent self-completion

More re-use of existing data- database links- other survey systems (Triple-s)

More coarse fragmentation- more “standardisation”- but in disparate areas

Page 10: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Forces at work …

Users and Prospects

Changing Domain Requirements

Business Constraints

Systems Infrastructure

Changes

Page 11: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Systems Infrastructure …

Systems Configuration- Stand-alone desktop- LAN / WAN -connected desktop- Browser model

Memory / media etc.48k - 2Gb RAM (x42,000)80k - 100Gb disk (x1,250,000)

Page 12: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Systems Infrastructure …

Language choice- Snap in C/C++, VB, Python- ?PL-1? / ?Pascal? / ?Ada?- very expensive to rewrite later

Avoid big black-box components- better control of update schedules- better control of licensing models

Page 13: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Forces at work …

Users and Prospects

Changing Domain Requirements

Business Constraints

Systems Infrastructure

Changes

Page 14: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Business Constraints …

Commercial model- Standard package / optional modules- Desktop / server based- Perpetual licence- Free support & updates for 1 year- Optional annual support & updates

Updates every 12-18 months

Page 15: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Developers …

“Ownership” of specific areas- Agreed macro-design- Do their own micro-designs

Systems / language expertise- Language and/or system focus

Dabbled in eXtreme Programming- pair-programming

Page 16: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Architectural Design

Users and Prospects

Domain Requirements

Business Constraints

Systems Infrastructure

Page 17: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Architecture …

Single C/C++ program- optional modules turned on- fewer option incompatibility issues- helps consistent, holistic view

No “special versions” etc.

Build VB apps to get features to market quickly (“SurveyPlus”)

Page 18: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Architecture …

Object-oriented- Questions, Styles, Variables, Tables …- No overall navigable DOM- No user-accessible API

Files / persistence- Metadata file (object streams)- Raw data file (fixed-length records)- Processed data file (response streams)

Page 19: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Abstract for re-use …

Filter expressions- tables, browse data, derive categories routing preconditions

Text substitution- answers from previous question(s)- headers, footers and report titles- dynamic multi-language

Page 20: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Ongoing Development …

Domain-based extensibility

Patterns ...

Page 21: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Patterns … as data cleaner

variable

raw data

processed output

syntax & value checks

Q1. How much did you spend?

4.56

4.56

Page 22: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Patterns … as data cleaner

variable

raw data

processed output

syntax & value checks

Q1. How much did you spend?

£4.56

ERROR

Page 23: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Patterns … as data cleaner

variable

raw data

processed output

pattern

cleaned input

Q1. How much did you spend?

£4.56

4.56

4.56

syntactictransforms

syntax & value checks

Page 24: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Patterns … as data cleaner

variable

raw data

processed output

pattern

cleaned input

Q2. How many children do you have?

three

3

3

syntactictransforms

syntax & value checks

Page 25: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Patterns … as sub-field prompt

variable

raw data

processed output

patternmatched input

Q3. When did you arrive?

2006

25/01/2006

daymonthyear

Q3

0125

Q3

20060125 / /

Page 26: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Patterns … as sub-field selector

variable

raw data

processed output

patternmatched input

Q3. When did you arrive?

2006

daymonthyear

Q3

0125

20060125 / /

01Q3 month

Page 27: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Ongoing Development …

Domain-based extensibility

Patterns ...

Prototype-based object model ...

Page 28: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Class-based Object Model

class

instance

declare & assignproperties& methods

assign properties

axis Rows;axis Cols;

num Accumulate(cell){ cell = cell + 1; return cell}

Rows = Q2;Cols = Q10;...

Page 29: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

User Programmer

Class-based Object Model

class

instance

declare & assignproperties &

methods

assign properties

axis Rows;axis Cols;

num Accumulate(cell){ cell = cell + 1; return cell}

Rows = Q2;Cols = Q10;...

Page 30: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

User Programmer

Class-based Object Model

class

instance

declare & assignproperties &

methods

assign properties

axis Rows;axis Cols;

num Accumulate(cell){ cell = cell + 1; return cell}

Rows = Q2;Cols = Q10;...

Build Table

Q2

Q10

Rows

Cols

Ok

Cancel

Page 31: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

User Programmer

Class-based Object Model

class

instance

declare & assignproperties &

methods

assign properties

axis Rows;axis Cols;

num Accumulate(cell){ cell = cell + 1; return cell}

Build Table

Q2

Q10

Rows

Cols

Ok

Cancel

Page 32: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Prototype-based Object Model

class

instance

prototype

Page 33: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Prototype-based Object Model

axis Rows;axis Cols;

num Accumulate(cell){ cell = cell + 1; return cell}

prototype

prototype / instance

num Weight=1;

num Accumulate(cell){ cell=cell+weight; return cell}

declare & assignproperties &

methods

declare & assignproperties &

methods

Page 34: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Prototype-based Object Model

prototype

declare & assignproperties &

methods

prototype / instance

declare & assignproperties &

methods

User Programmer

axis Rows;axis Cols;

num Accumulate(cell){ cell = cell + 1; return cell}

num Weight=1;

num Accumulate(cell){ cell=cell+weight; return cell}

Page 35: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Prototype-based Model

prototype

declare & assignproperties &

methods

prototype / instance

declare & assignproperties &

methods

User Programmer

axis Rows;axis Cols;

num Accumulate(cell){ cell = cell + 1; return cell}

num Weight=1;

num Accumulate(cell){ cell=cell+weight; return cell}

My Table

Rows

Cols

Ok

Cancel

1Weight

cell=cell+WeightAccumulate

Page 36: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Prototype-based Model

prototype

declare & assignproperties &

methods

prototype / instance

declare & assignproperties &

methods

User-developer Programmer

axis Rows;axis Cols;

num Accumulate(cell){ cell = cell + 1; return cell}

My Table

Rows

Cols

Ok

Cancel

1Weight

cell=cell+WeightAccumulate

Page 37: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

User-developer

Prototype-based Object Model

declare & assignproperties &

methods

prototype / instance

My Table

Rows

Cols

Ok

Cancel

1Weight

cell=cell+WeightAccumulate

Userdeclare & assign

properties & methods

prototype / instance

Build MyTable

Q2

Q10

Rows

Cols

Ok

Cancel

RespWtWeight

Page 38: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Ongoing Development …

Domain-based extensibility

Patterns ...

Prototype-based object model ...

Core wholly driven by metadata

Page 39: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Snap development philosophy …

Know & understand intended users

Allow users to work in their domain

Don’t rely solely on software

Plan for evolution

Page 40: Evolution or Intelligent Design? an objective view of software development Stephen Jenkins.

Stephen [email protected]

Intelligent Design?Evolution orEvolution and Intelligent Design