Målsättning

Systemet skall tjäna som platform för utveckling av ett intranät för småföretag.

Dokumentationen här skall vara tillräcklig för att efterkommande programmerare skall få en översikt över systemet och lätt kunna sätta sig in i hur det är ihopprogrammerat.

Vi ger också anvisningar över hur lång tid det bör ta att göra tillägg och förändringar i systemet

Teknisk beskrivning

Systemet bygger på följande teknikval:

Opertativsystem: FreeBSD, vers 4.4
Webbserver: Apache, vers 1.39
Databas: MySQL, 3.??.??
Programmeringsspråk: PHP 4.2
FreeBSD

FreeBSD är ett mycket robust och effektivt Unix operativ för Intelbaserde datorer. Sorry Linux gör sig inte besvär ;-).

Apache

Apache är en mycket effektiv och robust webbserver för Unix operativ. Apache är idag den helt dominerande webbservern för Internet.

MySQL

MySQL är en liten, enkel och effektiv relationsdatabas. MySQL saknar några av de mera avancerade funktionerna. Även om dessa funktioner kan vara viktiga i vissa speciella fall, så är det ofta inte så svårt att programmera så att man kan komma runt dessa begränsningar. Istället för att hålla lås i transaktioner kan man göra vad som kallas ”optimistiska” uppdateringar. Det betyder att man sparar postens tidsstämpel innan uppdateringen och kontrollerar tisstämplen efter. Om den inte ändrats så har man lyckats med uppdateringen. Denna teknik visar sig ofta helt kunna ersätta transaktioner.

I den föreliggande applikationen har vi inte anset att transkationer behövs.

PHP

PHP är ett av de programmeringsspråk som används för web-baserad applikationsutveckling

Utmärkande egenskaper för PHP är att det är lätt att skapa applikationer och att dessa är lätta att underhålla.

Vi definierar att alla sidor skall genomgå PHP hantering. Så även filer vars ändelse är html. På så sätt kan vi enkelt baka in PHP funktioner i godtycklig html fil.

Se till att php även tolkar vanliga .html filer. Detta gör man genom att lägga till .html som filändelse för PHP tolken på samma sätt som .php tillägget.

Konfiguration av PHP

PHP konfigureras så att alla *.inc (include filer) finns att hämta under en separat katalog. Detta kräver att php.ini används. Vilket i sin tur kräver en omkompilering av PHP med angivande av i vilken katalog denna fil befinner sig. Notera att php.ini filen läses av php-modulen när Apache startar. Görs ändringar i denna måste Apache startas om.

Programmeringsupplägg

Vi har valt följande strategi.

Ett gemensamt bibliotek har skapats med funktioner som ofta återkommer. Detta bibliotek innehåller funktioner för menyhantering, strängar och funktioner för att skapa html-tabeller.

Varje objekt, med tillhörande tabell, har ett eget bibliotek. Detta innehåller funktioner för att lagra, hämta, och söka i tabeller. Ibland måste funktionalitet som hanterar andra tabeller, av rationella skäl, implementeras i flera bibliotek. Vi har försökt att minimera dessa dubleringar av funktioner.

Det betyder att ett biblotek till ett objekt kan se ut som följande skelett.

Anm: Man bör undersöka PHP:s ”objekt”-orienterade egenskaper för att utröna om detta bör skrivas som ett objekt i stället.

Biblioteksfiler

PHP:s möjlighet till att inkludera filer använder vi för att bygga upp bibliotek. På så vis kan vi rationalisera programmeringen högst vesäntligt.

Vi skriver <? och ?> eftersom vi i denna fil inte vill fyra av PHP funktionerna.

<?
###################################
# common.inc
# Detta bibliotek innehåller en mängd
# gemensamma funktioner och inkulderas
# i alla filer
###################################

function MainMenu( $MenyLevel )
{

}

function SubMenu( $MenuLevel )
{

}

function PageStart( … )
{

}

function PageEnd( … )
{

}

function TableStart( … )
{

}

?>
<?
###################################
# person_func.inc
# Denna fil innehåller alla funktioner
# för att manipulera persontabellen
###################################

function PersonMeny()
{
# Implementering av funktionern
}

function PersonEdit( $PersonId )
{
# Implementering av funktionen
}


?>
Anropsfiler

Utöver biblioteken finns anropsfiler. Detta är mycket enkla filer som bara anropar funktioner för de saker som skall utföras.

Systemet innehåller mängder av dessa anropsfiler. Mängden filer kan först verka som ett problem, men visar sig vara en av basteknologins styrka. Eftersom varje fil motsvarar en ”transaktion” mot systmet så kommer det att finnas just en anropsfil per transaktion. Detta kommer att underlätta programmeringen högst väsentligt.

<?
########################################
# PersonEdit.php
# Denna fil är till för att fyra av
# transaktionen som editerar en
# Person-post
########################################

include ”common.inc”;
include ”person_func.inc”;

# Vi använder ibland detta Id
# för att kunna göra debugging
# Vi kommenterar bort variablen
# när vi inte kör debugging.
# $PersonId = 316;

PersonEdit( $PersonId );
########################################
?>
Vanliga textfiler

Vanliga textfiler använder sig biblioteket på ett mycket enkelt sätt. Det räcker att i början ange vilken menynivå man vill ha presenterad med hjälp av en startfunktion för sidan. Man avslutar sidan med en enkel funktion.
<?
#########################################
# $Id: admsystem.html,v 1.1.1.1 2005/06/14 22:18:31 gh Exp $
#########################################
PageStart( ”Page name”, ”MenuLevel1”, ”MenuLevel2”)
?>

<h1>HTML koden</h1>

<p>Här kommer den vanliga HTML-koden</p>

>h2<Underrubrik</h2>

<?
PageEnd()
?>

Underhåll av relationstabeller

När det gäller relationstabeller som binder samman två helt skilda tabeller, så kallade många till många förhållanden, så väljer vi först objekt från den ena tabellen, därefter objekt från den andra tabellen. När dessa två objekt är valda, så kan deras identiteter sparas i relationstabellen.

Säkerhet

XXX Här skall till en beskrivning av hur säkerheten hanteras.

Tidsuppskattningar

Nytt objekt

Att skapa ett nytt objekt, och tillhörande tabell, samt program för att underhålla just bara denna tabell, bör ta omkring en dag.

Detta förutsätter att de bibliotek som implementerats i detta system används och att arkitekturen följs i sin helhet.

Skall andra förändringar

Många till många relation

Först måste de två tabellerna var för sig skapas och underhålls program till dessa skall skrivas. Detta bör ta omkring två dagar. Många till mångatabellen, kräver ungefär samma arbetsinsats, dvs en dag. In alles blir det då tre dagar.

CVS hantering

Alla filer hanteras av Concurrent Version Systems ( CVS ). Detta system gör det möjligt för flera programmerare att samtidigt arbeta med programmering av systemet.

I CVS använder vi två moduler. En modul innehåller alla *.html filer och en modul innehåller alla *.inc ( bibliotek ).

När man vill installera ett nytt system kan man köra följande lilla script. Vi antar att den gamla versionen finns under www

#!/bin/sh
#
# Hämta ut den nya versionen ur CVS
#
cvs export -D tomorrow html-files new-www
mv www old-www
mv new-www www

# Eventuellt vill man ta bort den gamla katalogen
# rm -rf old-www
#

Utskrifter

Vi satsar på att alla utskrifter görs till en postscript skrivare

Vi måste hitta etikettpapper som stämmer för utskrift. Lika väl som vi måste försöka att lära oss hur man använder pdf-filer.

Kanske kan man använda Latex som utskriftfilter.