Utilitzar al màxim el llenguatge natural i les parts de la semàntica que el formen. Utilitzar noms per identificar objectes i verbs per identificar accions sobre els objectes. adjectius per representar propietats, adverbis per representar estats, situacions, aspectes, etc. També cal identificar dominis d'aplicació. "Enregistrar persona" en un domini mèdic-assistècial suposa enregistrar un pacient, en canvi en un domini de compres online, suposa enregistrar un client.
Mantenir un glossari domini-nom-verb i associar-li una documentació o protocol que utilitzarem per informar on calgui del que s'està fent quan és produeixi l'acció.
La documentació o protocol associat/da a cada relació domini-nom-verb, realment ja la tenim, però no en podem fer res, no la fem servir, perquè no ens hem preocupat d’enregistrar-la. Aquest protocols estan en els professionals que degut a la seva experiència, saben com es fan algunes coses que altres no saben. Això suposa que si no podem absorbir d'alguna manera aquest coneixement, quan aquesta persona marxi pel motiu que sigui, s'emportarà amb ella aquest coneixement tant valuós.
I per tant, l' empresa és la primera interessada en no perdre aquest coneixement. I que pot fer, doncs molt fàcil, incentivar l'aportació de coneixement als sistemes d'informació de l'empresa.
El sistemes d'informació han d'oferir mecanismes per enregistrar aquesta informació de manera que sigui aprofitable pel programari i els usuaris que en facin ús. Per dir-ho de manera senzilla, el sistema ha de se capaç de dri-li a l'usuari que està enregistrant un pacient i no un client.
També podem utilitzar aquests protocols per informar al nous usuaris de com es fa alguna cosa (procés de negoci). El sistema hauria de ser capaç de posar-lo en el punt de partida i ajudar-lo fins al final de tot el procés. El sistema hauria de ser capaç de contestar a "Com es fa un alta hospitalària" o "Com es programa un preoperatori" o ....
Per altre banda el sistema es va informant, l'usuari "x", a l'hora "y" a "enregistrat un pacient". Però en aquest procés d'enregistrament, s'han fet moltes coses, s'han introduït dades per part de l'usuari (que podríem analitzar, imaginem-nos un informe d'alta per un diagnòstic en concret, crec que valdria la pena analitzar el contingut dotant al sistema de coneixement sobre aquest tipus de diagnòstic i reutilitzar-lo si cal, en futurs diagnòstics semblants), s'han procesat i finalment s'han guardat.
Sempre que s'estigui executant un procés, utilitzaria el gerundi del verb que identifica la acció sobre el nom o objecte. Per exemple "guardant" i un cop acabat el participi, "guardat". En ambdós casos dispararia un event que informés al gestor d'events i aquest decidís si s'ha de fer alguna cosa.
Per altre banda dins el sistema, s'han de capturar tots els errors i tractar-los amb cura. Les excepcions haurien d'informar-se ràpidament, per tal de solventar-les. Quan es produeix un error l'usuari ha d'estar informat de manera entenedora i el tècnic de manera explícita. Això es coneixement també.
11/12/09
La capa de coneixement
8/10/09
Dades
- Transparència d’origen de dades: El lloc on estiguin allotjades ha de ser indiferents respecta al seu accés. Això no vol dir que qualsevol lloc és bo.
- Model d'entitats únic, independent de la BD: Això vol dir que sigui quina sigui la BD el model d'entitats (mapejos a objectes, més o menys) ha de seguir el mateix patró.
- Facilitar la lectura de dades relacionades en diferents BD: Cercar dades d'un origen a partir de dades tretes d'un altre.
- Veure les dades com si fossin totes d’un mateix context: Totes les dades han de formar un context de dades únic (Conjunt de contextos).
- Augmentar la productivitat en els desenvolupament de capes de procés (Bussiness Layer)
- Facilita-ne, si cal, l' accés remot (Serveis de dades).
- Evitar cadenes SQL dins el codi de les aplicacions (no es una tonteria).
Recordo que plantajem la solució en .Net.
Si mirem que ens ofereix aquesta tecnologia sobre accésos a dades i models d'entitas ens trobem que els de Microsoft estàn fent feina.
ADO.Net Entity Data Model
- System.Data
- System.Data.Entity
El mateix nom es defineix com a una possible solució al que volem. Un model de dades accessible sense SQL (també si pot accedir amb SQL). I, com si accedeix?, amb LINQ.
LINQ: Increíble, incríble, increíble.
Però, no tot es bonic. Amb SQL Server funciona a la perfecció, amb origens XML també, amb coleccions carregades a memòria també, però amb les altres bases de dades (Intersystems Cache, Oracle, MySQL, etc) dependrà dels seus fabricants, o, de la nostre imaginació. Només cal implementar una llibreria que transformi expressions LINQ a sentancies SQL amb la sintaxi de la BD corresponent.(linQToSQL)
I que aconseguim ?
- Tenir uns contextes de dades accesibles des de LINQ
- Desde LINQ podem tractar diferents contextes de dades com si fossin un de sol.
- Podem interrogar dades d’un contexte a partir de dades d’un altre, de manera fàcil i transparent.
- Projectar les dades a través de serveis de dades (ADO Data Services).
- Definir un cotext de dades (virtual) que actui com a proxy de tots els cotextes existents, al qual li demanarem les dades des de capes superiors (BL).

Una simple aproximació de disseny. Comencem a veure la llum?




