1 / 40

Evolution or Intelligent Design?

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++

kleonard
Télécharger la présentation

Evolution or Intelligent Design?

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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

  3. 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

  4. 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

  5. Forces at work … Users and Prospects Changing Domain Requirements Systems Infrastructure Business Constraints

  6. Forces at work … Users and Prospects Changing Domain Requirements Systems Infrastructure Business Constraints

  7. 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

  8. Forces at work … Changing Domain Requirements Users and Prospects Systems Infrastructure Changes Business Constraints

  9. 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

  10. Forces at work … Users and Prospects Changing Domain Requirements Systems Infrastructure Changes Business Constraints

  11. 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)

  12. 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

  13. Forces at work … Users and Prospects Changing Domain Requirements Business Constraints Systems Infrastructure Changes

  14. 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

  15. 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

  16. Architectural Design Users and Prospects Domain Requirements Systems Infrastructure Business Constraints

  17. 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”)

  18. 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)

  19. 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

  20. Ongoing Development … • Domain-based extensibility • Patterns ...

  21. Patterns … as data cleaner Q1. How much did you spend? 4.56 raw data syntax & value checks variable 4.56 processed output

  22. Patterns … as data cleaner Q1. How much did you spend? £4.56 raw data syntax & value checks variable ERROR processed output

  23. Patterns … as data cleaner Q1. How much did you spend? £4.56 raw data syntactictransforms pattern 4.56 cleaned input syntax & value checks variable 4.56 processed output

  24. Patterns … as data cleaner Q2. How many children do you have? three raw data syntactictransforms pattern 3 cleaned input syntax & value checks variable 3 processed output

  25. Patterns … as sub-field prompt Q3. When did you arrive? raw data 25 / 01 / 2006 pattern day 25 matched input month 01 year 2006 variable Q3 Q3 25/01/2006 processed output

  26. Patterns … as sub-field selector Q3. When did you arrive? raw data 25 / 01 / 2006 pattern day 25 matched input month 01 year 2006 variable Q3 Q3 month 01 processed output

  27. Ongoing Development … • Domain-based extensibility • Patterns ... • Prototype-based object model ...

  28. Class-based Object Model declare & assignproperties& methods axis Rows; axis Cols; num Accumulate(cell) { cell = cell + 1; return cell } class Rows = Q2; Cols = Q10; ... instance assign properties

  29. Class-based Object Model Programmer declare & assignproperties & methods axis Rows; axis Cols; num Accumulate(cell) { cell = cell + 1; return cell } class User Rows = Q2; Cols = Q10; ... instance assign properties

  30. Class-based Object Model Programmer declare & assignproperties & methods axis Rows; axis Cols; num Accumulate(cell) { cell = cell + 1; return cell } class User Rows = Q2; Cols = Q10; ... instance assign properties

  31. Class-based Object Model Programmer declare & assignproperties & methods axis Rows; axis Cols; num Accumulate(cell) { cell = cell + 1; return cell } class User instance assign properties

  32. Prototype-based Object Model class prototype instance

  33. Prototype-based Object Model axis Rows; axis Cols; num Accumulate(cell) { cell = cell + 1; return cell } declare & assignproperties & methods prototype num Weight=1; num Accumulate(cell) { cell=cell+weight; return cell } declare & assignproperties & methods prototype / instance

  34. Prototype-based Object Model Programmer axis Rows; axis Cols; num Accumulate(cell) { cell = cell + 1; return cell } declare & assignproperties & methods prototype User num Weight=1; num Accumulate(cell) { cell=cell+weight; return cell } declare & assignproperties & methods prototype / instance

  35. Prototype-based Model Programmer axis Rows; axis Cols; num Accumulate(cell) { cell = cell + 1; return cell } declare & assignproperties & methods prototype User num Weight=1; num Accumulate(cell) { cell=cell+weight; return cell } declare & assignproperties & methods prototype / instance

  36. Prototype-based Model Programmer axis Rows; axis Cols; num Accumulate(cell) { cell = cell + 1; return cell } declare & assignproperties & methods prototype User-developer declare & assignproperties & methods prototype / instance

  37. User prototype / instance declare & assignproperties & methods Prototype-based Object Model User-developer declare & assignproperties & methods prototype / instance

  38. Ongoing Development … • Domain-based extensibility • Patterns ... • Prototype-based object model ... • Core wholly driven by metadata

  39. Snap development philosophy … • Know & understand intended users • Allow users to work in their domain • Don’t rely solely on software • Plan for evolution

  40. Evolution Intelligent Design and Evolution or Intelligent Design? Stephen Jenkins sjenkins@snapsurveys.com

More Related