Fasil Hayat's blog

...C#, .Net, Sharepoint, BizTalk, JQuery...

Der er masser af eksempler på forretningsbegreber og forretningsbetegnelser, der undergår en anden navngivning under fysisk gengivelse i form af entiteter og deres indbyrdes forhold. De forretningsmæssige navne skal / bør altid bibeholdes ved formidling af viden udenom systemerne og som kommunikationsmiddel mellem forretningen og teknikere for at mindske misforståelser og for at fremme forretningskendskabet. Dog er der intet behov for at manifestere redundante elementer af navne ved gengivelse af begreberne i den fysiske klassificering af objekthierakiet. Taksonomien skal med andre ord udnyttes i entiteternes indbyrdes relationer. Konteksten bliver hermed den styrende del for sammensætningen af objekthierakiet, og man undgår redundant gentagelse af navnet.

Et meget banalt eksempel, der tydeligt illustrerer den semantiske tese (uden nedarvning):

   1:  public class Bord {
   2:      public Plade Plade { get; set; }
   3:      public Ben Ben { get; set; }
   4:  }
   5:   
   6:  public class Plade {
   7:      public int Laengde { get; set; }
   8:      public int Bredde { get; set; }
   9:  }
  10:   
  11:  public class Ben {
  12:      public int Laengde { get; set; }
  13:      public int Antal { get; set; }
  14:  }
  15:   
  16:  public class TestBord {
  17:      public Bord HentBord() {
  18:          var bord = new Bord();
  19:   
  20:          bord.Plade = new Plade();
  21:          bord.Plade.Bredde = 50;
  22:          bord.Plade.Laengde = 100;
  23:   
  24:          bord.Ben = new Ben();
  25:          bord.Ben.Laengde = 30;
  26:          bord.Ben.Antal = 4;
  27:   
  28:          return bord;
  29:      }
  30:  }

Ser man på semantikken i eksemplet, vil man se, at klasserne ikke hedder 'Bordplade' eller 'Bordben', da de implicit bliver tydelige, i den kontekst objekterne bliver brugt i (bord.Plade istedet for det redundante bord.BordPlade).

{bord.{Plade}.Bredde} = 50; //Bordplade og Pladebredde

{bord.{Ben}.Laengde} = 30;
//Bordben og Benlaengde

Desuden bliver disse entiteter åbne og generelle og kan derfor bruges i andre entiteter, men kun hvis egenskaberne tillader genbrugen. Fx. kan 'Ben' entiteten indgå som en del af 'Stol' entiteten, da en stol også har ben.

Det vil dog være forkert at bruge 'Ben' entiteten i person eller dyr entiteter, selvom de overordnede egenskaber tillader det (antal, længde m.m), men her vil domænet dog være forkert, da forretningsdomænet her kunne være møbler og ikke organismer.



Tilbage i Februar 2011 var jeg involveret i mit første Biztalk 2010 projekt. Denne orkestrering viser parallelle aktiviteter, der kalder andre delorkestreringer, decide shapes samt 'try - catch' shapes i orkestreringen.

Til orkesteringen hører der desuden en transform shape, der transformerer beskeder i en anden struktur. Til dette formål blev mapping brugt, som man kan se et udsnit af forneden.

Inden længe kommer der et indlæg om, hvordan man begiver sig rundt indenfor Biztalk 2010. Tips og tricks på hvordan de forskellige shapes, pipelines og mappings kan anvendes.



feb
22

Logik for burhøns?

af Fasil | Tags: ,

Den måde man fortolker verden på, bærer meget præg af vores anskuelse af omgivelserne, og da vi som mennesker er meget forskellige, har vi også vidt forskellige fortolkninger. Dog er der ting som er absolutte, som bør have samme betydning uanset perspektiv eller en anden form for kulturel eller religiøs divergens. Når noget er sandt, er der ingen tvivl; ej heller tale om et fortolknings spørgsmål. Logik vil mange også kalde det (særligt Vulcans). Som udvikler eller programmør har man derfor naturligvis en tendens til at adoptere denne måde at afkode tingene på. Derfor er det yderst vigtigt, man som programmør er eksplicit i måden, man afleverer og udtrykker entiteter og deres tilhørende data på.

<value>100</value>
<value>0</value>
<value />


Disse tre eksempler har alle vidt forskellige betydninger, særligt de to nederste. Med værdien '0' har man angivet en forretningsmæssig betydning eller en forretningsmæssig værdi i feltet. Det nederste eksempel giver derimod en indikation om at værdien ikke findes eller ikke er sat i feltet. I mit tilfælde er jeg fx. blevet fortalt, at jeg skal oversætte det nederste som et '0', da det skulle være betydningen af det. Hvad man desværre ikke forstår eller direkte har misforstået er notationsformen. Desuden har man katastrofalt lagt en fortolkningslogik ovenpå, som ikke manifesterer sig ved aflæsning af de tre eksempler, men noget man mundtligt overleverer. Dette er helt klar vejen til fremtidige misforståelser, og brug af notationsformerne på en helt og aldeles forkert måde. Man kan naturligvis tyde tingene i oversættelsen, men ved aflæsing af xml strukturen er man yderligere pålagt en ekstern viden omkring notationformens betydning fra den leverende part.
Istedet for at aflæse skal man yderligere fortolke det.

<value>100</value>
<value /> == <value>0</value>


Her er en glimrende analogi til problemet.

flaske med vand

 Halvt fyldt flaske.
 
 <
value>100</value>

flaske med vand

 Tom flaske.

 <
value>0</value>

flaske med vand

 <value />

 Fortæl mig ikke man ser en tom flaske her...
 Dog skal det fejlagtigt fortolkes i koden som '0',
 hvilket er forkert.

Som man kan se på eksemplet, så gælder det altså om at være eksplicit i sit udtryk, dvs. send et '0' med over som værdi, hvis værdien er '0', og undgå noget fortolkningslogik, som helt sikkert vil falme væk med tiden.

I mine øjne betyder den nederste illustration, at værdien mangler, og det er ikke et spørgsmål om fortolkning, men en absolut konklusion. Den anden særhed i det jeg modtager som data, er at ingen angivelse af noget som helst også betyder, der er tale om noget lig med '0'. Hvordan kan man vide noget er lig med '0', når man ikke kan se det. Med andre ord, man kan ikke vide, hvad der mangler, når man ikke kan se, det mangler. Det hele kan gå hen og blive ret kryptisk at forklare, men det er fortolkningslogik, der er blevet pålagt strukturen. Jeg skal vide, hvis jeg ikke ser noget som helst på et bord, så er der altså tale om en tom flaske, fordi jeg ved, der kan stå en flaske på bordet. Sagt på en anden måde null er aldrig det samme som 0.



Dette er ligeså meget for min egen skyld, da jeg selv glemmer, hvordan det skal gøres.

Vil man gøre fx. makecert.exe eller stsadm.exe tilgængelig som system variabler, så man kan bruge kommandoen uanset, hvor man står i command promten, skal følgende fremgangsmåde benyttes:
Højreklik på My Computer -> Properties -> Advanced system settings. Under 'Advanced' fanebladet skal man finde 'Environment Variables' og under 'System variables' skal man finde 'Path' og klikke på 'Edit'.
Hvis man fx. vil gøre makecert.exe tilgængelig som en system variabel, kopierer man stien til makecert.exe filen i slutningen af 'Path' strengen. Dvs. man kopierer:

;"C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin"

Start en Cmd prompt og test ved at skrive 'makecert'.



nov
19

principio

af Fasil | Tags: , ,

Dette er min første blog. Her vil jeg gå dybden med det, jeg til dagligt arbejder med.

Emner der vil blive berørt:

Quality Assurance
Automated tests => TestComplete
NUnit => Testdriven.net
Moq
NMock
Rhino Mock

Buildserver
MS Build => Powertools
Nant
Hippo.net
Cruisecontrol.Net
TeamCity

Software Design Patterns
Domain Driven Design
3-tier architecture
Service Oriented Architecture => BizTalk, MSE
Model View Controller (MVC)
Inversion of Control (IoC)
Windsor Castle
Spring.net
Autofac
UML tools
NClass
Enterprise Architect
Star UML
AJAX
JQuery
JSON
Source control
Team Foundation Server
Subversion => Ankh
Continueous Integration
Cruisecontrol
Beyond compare
Logging
Enterprise Library
Log4net
User interface design
Axure
Pencil
Enterprise Architect
Development methodology
SCRUM
Analysis => Design =>
Implementation =>
Test => Release

Management
Projectleaders / SCRUM masters
Teamwork
Micromanagement

Change management
Handling RFC's
ITIL

Database modelling
ERwin
Enterprise Architect
Content management
Sharepoint 2007 / 2010
Umbraco
.Net Nuke
Sitecore

Additional tools
CKEditor
Resharper
Reflector
FXCop
Testdriven.net
Royal TS
U2U CAML Creator
Sharepoint Designer
SPDisposeCheck

Software documentation
NDOC / ImmDoc.NET
GhostDoc
 Misc
VirtualBox
Ubuntu 10.10
Get PublicKey Token plugin
Powershell 2.0



Fasil Malik Hayat

Developer
.Net, WCF, Sharepoint, MOSS, Biztalk, JQuery.

linkedin facebook twitter plaxo google+ grooveshark boxee
fasil

Education

fasil

Bachelor of Science (Honours)
De Montfort University, Leicester.

Fag: Java, MVC, Information Strategy, ITIL

Microsoft Certified Technology Specialist

Skills

.net vs2010 - C# sharepoint sql server jquery ubuntu java netbeans


  

Sign in