Hej (igen*200) folkens !
Lige nu sidder jeg og programmerer på et større system i .NET til at styre mit værelse. Og lad mig begynde med at sige det ikke længere bare er en lampe der kan tændes med en knap, men at det inkluderer alt fra RFID scanner til en nyeligt opsat computer med touchskærm.
Jeg har egentlig meget godt styr på det tekniske, jeg sørger for at fange exceptions, jeg sætter mig altid ind i stoffet før jeg tilføjer noget nyt, og jeg bruger selvfølgelig objektorienteret programmering og satser på sikkerhed og best practice.
Men projektet er begyndt at nå til en grænse hvor det kan være ret svært at overskue det hele på en gang. Jeg har lige siddet og brainstormet 5 sider A4 hvor jeg har trukket streger mellem "blokke" af funktioner, for hver enkelt computer der deltager i systemet. Det skal siges at jeg har programmeret i 3½ år efterhånden og har en bred vifte af sprog under vingerne og også er godt på vej ind i c++. Så det tekniske er altså ingen begrænsning.
Nu vil jeg så bare spørge jer. Hvad er jeres foretrukne måde at overskue sådanne projekter? Når i ikke længere kan have tingene i hovedet på en gang, hvad bruger i så af hjælpemidler?
- Og nogle der har erfaring med subversion? For det er tydeligt at jeg meget snart får brug for en Subversion server (har en Windows Server 2008 R2 stående parat til det. Og ja
den er faktisk lovlig.)
EDIT:
Slog lige mig selv at jeg nok var lidt af en torsk og ikke give mere info ud. Måske selvom det tekniske ikke er det vigtigste aspekt her, så kan det være det kan hjælpe med at få fisket nogle gode råd hjem.
Den primære kerne af systemet (som er den mest uoverskuelige og komplekse), kører på en Windows 7 Professional maskine som er koblet til en række hjemmelavet elektronik til at interagere med omverdenen. Den har en (mere eller mindre) avanceret form for logistik / A.I. som hjælper med at håndtere regelsæt for temperatur og lys, fx basseret på min nuværende GPS position, men også om min bærbare fx er i brug. (Ja, jeg er så stor en nørd at det er den letteste måde at se om jeg er i lokalet ;p).
Den har også en multitrådet TCP server som håndtere (og validerer / authoriserer) indkomne forespørgsler fra andre computere.
Og så har den en "service" jeg selv har fundet på, som jeg kalder HSP Network Discovery. Det fungerer lidt ligesom Apples Bonjour og er basseret på UDP til at lade en computer tilbyde en service. Så kan andre computere finde frem til den service helt automatisk via UDP broadcasts. Denne computer hoster en enkelt service som kun er brugt til at finde computerens ip og sende den tilbage til spørgeren. (For brug ved TCP.)
Den har også en alarmservice som kører op mod en database og holder styr på mine notifikationer og vækkeure (som selvfølgelig kan indstilles efter dage og tidspunkter.)
Og jeg fortsætter (gaaaab...)
Der er også en tråd som starter af sig selv, dedikeret til at håndtere objekter i "arbejdskøen" som venter på at blive eksekveret. (Pga vi kommunikerer via Serial kommunikation med de eksterne interfaces til omverdenen. For at undgå at ting bliver tabt bliver de eksekveret sekvensielt, hvilket er ligegyldigt fordi det sker så hurtigt.)
Og jeg kunne blive ved og ved omkring hvordan der er funktioner til at administrere RFID tags / brugere, logning af kommandoer og logning af forsøg på misbrug og tale syntese og..... Ja jeg stopper bare her...
Og det var kun den ene computer! De andre computere (min mors, min bærbare og så touch pc'en - Alle Windows 7 Professional) har også hvert deres klientprogram. Min egen bærbare til at udføre fjernkontrol af værelset og fx slukke / gå i dvale / standby / slukke skærmen / justere lyden, efter kommando fra den primære computer.
Touch pc'en har et lækkert GUI og fungerer som fjernkontrol med lidt ekstra blær.
Min mors computer sender info om systemstatus ind og tillader mig at lave fjernlukning (nej, ikke til at drille de gamle. Mere fordi det kan være smart af og til.)
Så er der selvfølgelig også serveren som hoster en webfrontend og anvender TCP til at vidersende kommandoer / trække info ud af systemet.
Alt i alt blev denne her uddybelse nok alt alt for lang til at nogle gider at læse den, men så kan i vel så pointen
Indlæg senest redigeret d. 07.01.2011 20:05 af Bruger #14381