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

Evolution or Intelligent Design?

  • Upload
    zarola

  • View
    34

  • Download
    3

Embed Size (px)

DESCRIPTION

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-DOS First Windows version 1992/3 Now: C/C++ - PowerPoint PPT Presentation

Citation preview

Page 1: Evolution or Intelligent Design?

Evolution or Intelligent Design?

an objective view of software development

Stephen Jenkins

Page 2: Evolution or Intelligent Design?

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?

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?

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?

Forces at work …

Users and Prospects

Changing Domain Requirements

Business Constraints

Systems Infrastructure

Page 6: Evolution or Intelligent Design?

Forces at work …

Users and Prospects

Changing Domain Requirements

Business Constraints

Systems Infrastructure

Page 7: Evolution or Intelligent Design?

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?

Forces at work …

Users and Prospects

Changing Domain Requirements

Business Constraints

Systems Infrastructure

Changes

Page 9: Evolution or Intelligent Design?

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?

Forces at work …

Users and Prospects

Changing Domain Requirements

Business Constraints

Systems Infrastructure

Changes

Page 11: Evolution or Intelligent Design?

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?

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?

Forces at work …

Users and Prospects

Changing Domain Requirements

Business Constraints

Systems Infrastructure

Changes

Page 14: Evolution or Intelligent Design?

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?

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?

Architectural Design

Users and Prospects

Domain Requirements

Business Constraints

Systems Infrastructure

Page 17: Evolution or Intelligent Design?

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?

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?

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?

Ongoing Development …

Domain-based extensibility

Patterns ...

Page 21: Evolution or Intelligent Design?

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?

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?

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?

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?

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?

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?

Ongoing Development …

Domain-based extensibility

Patterns ...

Prototype-based object model ...

Page 28: Evolution or Intelligent Design?

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?

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?

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?

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?

Prototype-based Object Model

class

instance

prototype

Page 33: Evolution or Intelligent Design?

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?

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?

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?

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?

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?

Ongoing Development …

Domain-based extensibility

Patterns ...

Prototype-based object model ...

Core wholly driven by metadata

Page 39: Evolution or Intelligent Design?

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?

Stephen [email protected]

Intelligent Design?Evolution orEvolution and Intelligent Design