« Implications of Web 2.0 on software architectures | Main | Wood Screws »

March 24, 2007

I like to model things, but... is modelling a thing of the past?

Continuing my thoughts from my previous entry,Implications of Web 2.0 on software architectures,: I like to model things, but is domain-modelling a practice that will become obsolete? I'm worried about how manual my software is -- I mean, it just takes so much love and care and attention to build a decent piece of software -- and I'm wondering which aspects of the software development cycle will be subsumed by a combination of automated ontology-discovery, ontology-generation and social networking.

I mean, the OO-programmers of the world have already modelled and re-modelled the same things over and over and I think that's probably one reason why web-ontologies were born: to try and co-operate and be able re-use the same models from application to application. (Right? Oh, gosh, I feel so lost. And I worry too much. lol )

By "modelling", I'm talking about what you learn in first-year Computer Science. For example, to model a cat, you would define a class "Cat" and list several instance variables of different data types with getters/setters. Your Cat may have a private String name; a private License lic (where License is another object that has also been modeleld), a Breed b, etc. etc.

You would also write functions into the Cat that correspond to the real-world behaviour that you'd like to have happen in your application. For example, Cats may take in a Tree object and perform a hunt() operation on on that Tree. The hunt() method could then return another object of type DeadBird in the process (if your Cat is anything like ma jolie chatton Minou!).

Or, maybe instead of placing the method hunt() inside of the Cat class, you would have a Controller class listen for the state-change that would allow the user to request a hunt() by their Cat and then offload the Cat object and the Tree object into some HuntEnvironment simulation and then wait for the simulation to return both your Cat and your Tree back to you after they have been modified by the happenings in the Environment. Decisions on where to put these methods is the art of software engineering, and is what I spend a good portion of my everyday job doing: Organizing, assigning responsibilities, modelling and making these decisions. It's very abstract work and is hard to explain. A lot of people will tell you that it isn't worthwhile, but I try to keep my head up. I believe in AI, in engineering, in learning, in evolution and in people. It's just hard to keep one's purpose and one's values in good order amongst all the craziness!

This is one reason why I'm sitting here and scratching my head, wondering about the future. When will human-made models be relpaced by computer-made models? And how do I work with that in my software architectures?

I thought: Well, maybe the impact of computers-doing-the-modelling-work (ontology-generation and ontology-discovery) will impact me as a human software developer in phases. The first obvious phase is that the task domain objects will be taken over. Like, "the things a person can learn about": concepts, understanding and just the hard representation of knowledge -- curriculum-type things.

What about business-model things? Will human programmers forever be modelling things like "Person" or "Student" or "Animal" or "Product" or "Employee" or "Department" or "Course"? I'd imagine that after a while some of these things would just be so repetative that you just have to have a standardized model somewhere, that could be adapted and would maybe even evolve, depending on how it needs to be used in a specific application. Maybe there will be a bazillon ways to model the object Employee, but after a certain period of time we'll find that many attributes will last (like FirstName, Nickname) while other attributes may get killed off in an evolutionary manner.

What about the objects running control-procedures, specific database operations and user-interfacting? These are so icky-picky, especially with technology in 2007 we are probably a long ways away from saving human programmers that kind of work. After the automation of domain objects, maybe user-models are next.

In the short-term, I would like to learn more about referencing ontologies in my applications, something I haven't worked on very much since last July.

It is a strange, strange world -- and it is completely different to each person who looks at it. What do other people worry about?

Posted by Frozone Permalink on March 24, 2007 01:46 PM | Comments (0)
categorized under Software Engineering

Comments

Post a comment




Remember Me?

(you may use HTML tags for style)

Index to Steph's Notes

Feb. 24th 2007 - Weee! This new part of my website is not an entry, but rather a permanent fixture whose purpose is to "Look Down on All Those Notes With Some Grand Vision of Organization". Wish me luck. LOL
  1. Representing meta-data (fuel) & the different kinds of "hooks" that intelligent systems can use (how fuel is injected into the motor of the engine)
    1. Motivation: Semantic net / Rationalizable to a machine
      1. Semantic network
      2. Genetic graph
      3. Prerequisite AND/OR graph
      4. Constraint Satisfaction Problems
      5. Bayesian networks / causal graphs
    2. Technology & Philosophy: RDF, modus ponens,
      1. Predicates, Logic & situation calculus
        1. When in doubt, do some math
    3. What kinds of data? - What kinds of meta-data would an AIEd system possibly need, and how is it represented?
      1. task domain knowledge
      2. "is-prerequisite-to"-type knowledge
        1. Jackpot! A pedagogical ontology
      3. interactions with learning objects & other learners - (location, composition is-a/part-of, sequencing by restricting navigation, personalization, ontologies for LO context)
        1. Types of 'Ecological' data
      4. lesson plans, curriculum plans, practicing sessions (What is stored, what is generated on the fly? What is remembered?)
        1. Agent memory
    4. How to organize it - When is it stored in a database? Meta-data? Agent memory banks? Protocols? Repositories? XML files? Home-servers? WSDL services? Frameworks? Portable banks? P2P access?
      1. Database of object-agent interactions
      2. Concept of "Home" on a P2P network -- maybe the bulk of a learning object's usage data is on its home server and can be queried using WSDL or something ? Similar homes for each student's usage history, etc. Baggage problem.
    5. Links to the ontologies
      1. referring to a concept/relationship - ex. AgentOwl?
        1. Using Vocabularies in JENA
        2. Referring to a concept/relationship in an ontology
        3. Improved: Referring to a concept/relationship in an ontology
        4. Using OWL to reference constraints in tutoring systems
    6. Generation of this data
      1. Rationalization: For use by other AIEd systems
      2. What is generated - discuss items under part I.C.
      3. When it's generated - describe procedural model, which parts of the engine generate what (isa-part-of data, XML feeds, web services, meta data bout groups and collaboration, protocols, examples Friend of A Friend FOAF project)
        1. Thinking about the system's RDF output
      4. Technical notes of HOW it's generated: JENA, issues of implementation demo, my Hermione & Ron agent examples, lol
      5. Usage of this generated data - see part IV. A.
  2. Given the engine, who uses it?
    1. Students / Learners / "Me"
      1. instructional planning, student model, pre-requisites, tutoring, coaching, collaboration,constructivism
    2. Teachers / Educators / "Me"
      1. putting together lessons
      2. be able to browse through task domain knowledge in an objective / encyclopaedia format, then be able to pick-and-choose what you need for your students
      3. compose examples, design explanations, pull together diagrams, learning objects, etc. Haystack Relo?
    3. Administration / Governement / Structure / Crowd Control
      1. as restrictions/obstacles/sand pit to the robot in agent environment
      2. can't just have a swarm of students and teachers out there -- need structure of courses, curriculum, objectives, requirements (at least, we do in this day and age!) - Report cards, evaluation, feedback
      3. government, marks, certificates, requirements, funding, curriclum, attendance, delinquent, non-attending, motivation
      4. school''s images, goals, strengths, payroll, HR, security, accounts, permissions, privacy
      5. registration, failed courses
  3. User Environment -- How does this engine work? What does the user see on the screen?
    1. Introduction - Given a background in educational psychology, how does the system present itself -- what does the user see, and were does this data come from? Links to thoughts from part I.)
    2. Task Domain Browsing - Suppose you're you're just idly browsing through the "raw" content. How would it look when it's not wrapped around a learning-context or lesson or tutorial or anything. 'Cross between browsing a raw task domain ontology and browsing a learning object repository.
      1. Cleaning up the data -- Visualizing the data for humans to pick through the task domain and work on it. Suppose the "Subject Expert" discovers an advancement in science and needs to update the "world's" domain knowledge. (I used the "Subject Expert" terminology from Ontologies to Support Learning Design Context - Thanks Chris) How would they make corrections to ontologies and learning objects, or at least point the users of "old" objects towards adopting the newer ones.
      2. "Modes" - Learning & Lessons / Checklist - Homework, Assignments, Courses being taken / Collaborative mode / Teaching mode / Calendar- email -adminisrative mode -- See also the different kinds of scenarios in the ActiveMath system
        1. Educating myself about Education
  4. Evolution of this engine
    1. target some key implementation hooks discussed in part I - design an experiment/demo
      1. scrape a page - (Note, scraping can only give objective data, not in-context dat)
      2. LO repository - related to browsing the task domain?
      3. a learners "To Do" list - where does it come from? Assignments, courses.
      4. sample group scenario
      5. sample teacher lesson planning
      6. sample data "left behind"
      7. sample use of that data
    2. Data mining (for what? lol )
      1. discovery / generation of ontologies - when do you need to hunt for them, and when do you have to have a solidly-known & predictable ontology?
        1. Ontological Engineering: taking a first bite
    3. I/O - where it happens, which languages, protocols, which agents perform i/o and when, precepts, actuators
      1. Role Assignments
        1. Levels of authorization in web applications
      2. My Environment Adapts to me
        1. Displaying feedback from the server on JSP pages (Software engineering considerations)
        2. Sketching out a design (Content planning vs. Delivery planning)
      3. agent negotiations / social structures / ummm... Web 2.0 ?
        1. Towards student modelling
        2. Anatomy of an agent
    4. garbage collection of meta data
      1. Artificial Intelligence & Evolution
        1. Memory Culling: Necessary part of intelligence? (artificial or human)
        2. Applications for the Genetic/Evolutionary algorithm
      2. open learning environments
  5. Agents, pets, grouping, Community modelling
    1. Protocols - finding groups, cyber dollars, state diagrams (?)
    2. "Community Studies" - graphs & communication hubs, types of communities (free-for-all, hierarchy of authority, etc.)
    3. implications of joining a community - what do you share, which parts of your student model are relevant
    4. Walls & sand traps -- deliberate restrictions as problem-solving for learning
    5. Communication channels - individual-to-individual, individual-to-community, chat channels, agent-only "administrative" communications, ex. requests for related learning objects in a particular community, etc.
  6. Educational/Pedagogical focus (this part probably shouldn't be its own section but rather incorporated into the whole picture, but it's separate for me right now because I'm still only just starting to learn about it.)
    1. Semantics - what there is to talk about in Education
      1. ex. Merril's First Principles of Instruction, linking educational terms to AI terms
        1. Educating myself about education
    2. Pedagogical skills for tutors -- supporting human *and* artifical tutors
      1. Modelling teaching strategies
      2. What is teaching?
      3. Decision theory for teaching strategies
      4. My pedagogical issues
      5. Ontological comparisons as spatial relationships
    3. Student modelling - what the machine needs to know about the student, pedagogically-speaking, about learning history/preferences
    4. Roles - Simulated students, Coaches, Tutors, Teachers,