evolution or intelligent design?
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 PresentationTRANSCRIPT
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
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
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
Forces at work …
Users and Prospects
Changing Domain Requirements
Business Constraints
Systems Infrastructure
Forces at work …
Users and Prospects
Changing Domain Requirements
Business Constraints
Systems Infrastructure
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
Forces at work …
Users and Prospects
Changing Domain Requirements
Business Constraints
Systems Infrastructure
Changes
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
Forces at work …
Users and Prospects
Changing Domain Requirements
Business Constraints
Systems Infrastructure
Changes
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)
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
Forces at work …
Users and Prospects
Changing Domain Requirements
Business Constraints
Systems Infrastructure
Changes
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
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
Architectural Design
Users and Prospects
Domain Requirements
Business Constraints
Systems Infrastructure
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”)
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)
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
Ongoing Development …
Domain-based extensibility
Patterns ...
Patterns … as data cleaner
variable
raw data
processed output
syntax & value checks
Q1. How much did you spend?
4.56
4.56
Patterns … as data cleaner
variable
raw data
processed output
syntax & value checks
Q1. How much did you spend?
£4.56
ERROR
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
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
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 / /
Patterns … as sub-field selector
variable
raw data
processed output
patternmatched input
Q3. When did you arrive?
2006
daymonthyear
Q3
0125
20060125 / /
01Q3 month
Ongoing Development …
Domain-based extensibility
Patterns ...
Prototype-based object model ...
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;...
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;...
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
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
Prototype-based Object Model
class
instance
prototype
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
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}
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
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
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
Ongoing Development …
Domain-based extensibility
Patterns ...
Prototype-based object model ...
Core wholly driven by metadata
Snap development philosophy …
Know & understand intended users
Allow users to work in their domain
Don’t rely solely on software
Plan for evolution
Stephen [email protected]
Intelligent Design?Evolution orEvolution and Intelligent Design