Swedish flagChinese (Simplified) flagEnglish flagGerman flagFrench flagSpanish flagHindi flag
Maj
10
2009
2

CBSE – komponentbaserad programvaruutveckling

I programvaruutveckling (eng. Software Engineering) finns det i huvudsak tre olika processmodeller för utveckling:

Vattenfallsmodellen, evolutionär- och komponentbaserad utveckling.

Vattenfallsmodellen identifierar olika faser som gås igenom vid alla utvecklingsprojekt. Dessa består av kravspecifikation, design, implementation och enhetstest, integration och acceptanstest samt utveckling. Samtliga steg gås igenom sekventiellt och leverabler i form av rapporter presenteras när varje steg är avslutat. Det sker alltså ingen iteration mellan faserna och management kan enkelt styra processen. Detta har klara fördelar men också nackdelar i en föränderlig miljö.

Den andra konceptuella utvecklingsmodellen är evolutionär utveckling. Den består av samma faser som vattenfallsmodellen med skillnaden att dessa gås igenom i flera inkrement. Efter varje version är kunden med och tar fram nya krav till nästa version som sedan designas, implementeras och valideras. Modellen kan användas för att utveckla färdiga system samt för prototyper till kravspecifikation. Även varianter på evolutionär utveckling finns. Exempel är iterativ utveckling där kraven är färdiga och faserna därefter gås igenom i flera steg iterationer. Ett annat exempel är spiralmodellen där mycket frihet råder.

Den tredje huvudmodellen för programvaruutveckling är komponentbaserad utveckling (CBSE). Denna utvecklingsgren går ut på att återanvände färdiga så kallade COTS produkter, commercial of the shelf. Processen har går igenom följande steg; kravspecifikation, komponentsökning, kravanpassning till de komponenter som hittas, val av komponenter, integration av komponenter samt validering mot krav. Att använda CBSE minimerar ledtider och kostnader, minskar risker för projekthaveri och ökar pålitligheten eftersom komponenten testats tidigare. Nackdelar är att koden oftast inte kan inspekteras eftersom komponenten ofta kommer i ett kompilerat format. Detta ger sämre kontroll för underhåll och vad som ska ske i framtida versioner. Utöver att komponenter är körbara (kompilerade) är de standardiserade, oberoende av annat, har gränssnitt (requires och provides) och är väl dokumenterade.

Jag arbetar en del med java och skall sommarjobba med matlab. Att använda en vattenfallsmodell är då på grund av arbetets omfattning helt omöjligt. I sommar har jag en månad på mig för att sätta ihop ett matlab program som skall grafiskt skall kunna användas för beräkningar av olika eklektiska system. Att göra detta från ruta ett hade krävt tid för att lära sig hur allt ska fungera, bygga funktioner, krav, arkitektur osv. Jag kommer att utgå från funktioner som redan finns och min uppgift är att göra gränssnittet för att slå in dessa funktioner så att de går att använda på ett bättre sätt. Komponentbaserad utveckling..

GPS klocka

GPS-klocka

Jag har länge funderat på olika privata projekt. Jag började lite på en flash applikation för att kunna presentera häftiga diagram från data ur en databas, men kom snabbt fram till att det inte intresserade mig. Jag har länge funderat på att skapa mitt eget program för gps hantering. Det jag använder nu är fokuserat på träning och har vissa bra funktioner, men jag tror att jag skulle kunna skapa något mycket bättre. Idéen är att skriva programmet i java för att kunna använda det både lokalt och via en applet på nätet. Programmet skall kombinera vanlig gps hantering i skogsmiljö samt träning med gps likt min gps-klocka (←).

Jag tror att jag behärskar de flesta av de tekniker som kommer att behövas för att skapa applikationen. Jag har nylighen hittat en mycket bra öppen komponent för gps kartor som jag kommer att använda. Komponenten omsluter (wrapper) javascript, som används för att programmera till de flesta kartor som till exepel google maps, med java. Claudius Hauptmann är en annan bra resurs som skrivit ett par artiklar om programmering till google maps.

Apr
02
2009
2

Översätt din blog

För att få min wordpressblogg på olika språk har jag använt ett häftigt tillägg. Det är mycket kompakt och består av några hundra rader kod. Tillägget tillämpar dock google-translators mycket kraftfulla algoritm. Nu finns techonomics på alla möjliga språk. Jag utnyttjar bara de allra vanligaste (Kinesiska, Engelska, Spannska och Tyska), om du vill finns det dock möjlighet till 41 olika översättningar! Lite besviken är jag dock att det inte finns Franska?

Jag kan Engelska och en del Spanska och tycker översättningen blir riktigt bra. Prova själva bredvid mina flikar!

Jag är ganska dålig på css så jag lyckas inte få flaggorna att ligga som jag vill i både firefox och IE samtidigt. Till saken hör att flaggorna måste placeras innanför ”divven” till mina flikar. Någon kanske kan hjälpa mig?

Intresserad? Ladda ner tillägget på http://nothing2hide.net

Mar
31
2009
2

JAVA spel: Snake och GOLD

Snake och GOLD

Det här är en gammal laboration jag gjort i en programmeringskurs på Chalmers. Det går att spela GOLD eller Snake. Lyckas du ta alla prickar i GOLD är du riktigt duktig, eller ska jag säga tålmodig?

Jag hade tänkt skapa en highscore i min MySQL-databas för de båda spelen. Highscoren fungerar jättebra lokalt på min dator men inte när jag exporterar JAVA koden till en applet. Av säkerhetsskäl är det tydligen svårt att kommunicera mellan databas och applet. Jag har ännu inte lösningen på problemet men arbetar på den. Om någon har någon idé om hur det kan lösas får ni gärna kommentera!

Skapa koppling mellan java och databas

För att skapa en koppling mellan en databas och java behöver du importera en driver. I mitt fall är org.jdbc.mysql.Driver bäst lämpad. Drivern importeras till ditt bibliotek, i eclipse genom att använda build path och lägga till biblioteket. När detta är gjort fungerar kontakten med databasen lokalt. För att få det att fungera i en applet måste Drivern med i .jar filen som utgör appletens kodbas. Det kan göras genom olika plugin till eclipse varav Build Fat Jar är ett exempel. Här är ett exempel på kod för att koppla mySQL med JAVA:

...
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
try {
conn = DriverManager.getConnection("jdbc:mysql://mysql.din.domän.se/namn.på.din.databas, "User", "password");
Statement s = conn.createStatement();
if(gameModel.getName().equals("Snake"))
s.executeUpdate("INSERT INTO Snake_highscore (name, score) VALUES ('" + name +
"', '" + score + "')");
else
s.executeUpdate("INSERT INTO Gold_highscore (name, score) VALUES ('" + name +
"', '" + score + "')");
} catch(SQLException connectionException) {
... // här får jag ett exception!!
}
} catch (ClassNotFoundException driverException1) {
...
} catch (IllegalAccessException driverException2) {
...
}
...

Problemet som återstår att lösa är att s.executeUpdate(…) skall fungera. I nuläget får jag ett Communications link failure som jag inte vet vad som orsakar.

Författad av David Gustafsson in: Programmering | Etiketter:, , ,
Feb
02
2009
3

Simuleringsstudie: jämförelse mellan parallell och seriell montering

Simulering av seriell montering, två stationer

Simulering av seriell montering, två stationer

I vårt kandidatarbete ska vi jämföra olika typer av produktionssystem. Kategorisering av dessa har gjorts i sieriella löpande band samt i parallella system med självstyrande grupper, samt inom dessa kategorier en något mer detaljerad indelning.

Empiriska resultat har visat att balanserings-, hanterings- och systemförluster är avsevärt mycket större för seriella liner i jämförelse med den parallella organisationsformen. En tumregel är 40 % totala förluster för parallella systemet och 100-200 % för den seriella motsvarigheten. För att undersöka förhållandet utan behov av empirisk data kan simulering utnyttjas.

Simulering är ett sätt att, så långt som möjligt, återskapa en verklighet (Wikipedia, http://sv.wikipedia.org/wiki/Simulering, 2009-02-02)

Genom att bygga en konceptuell modell av verkligheten, överföra den till en simuleringsprogramvara och sedan studera hur den beter sig, kan slutsatser dras om vilka faktorer som påverkar specifika prestationsmål. Prestationsmålen brukar också benämnas resultatvariabler.

Jag har gjort en konceptuell modell på en väldigt enkel fabrik. Fabriken tillverkar två olika typer av produkter som tar olika lång tid. Varje station gör en viss bestämd del av varje produkt (t.ex. monteringsstation A gör framdelen av Bil 1 och 2 och monteringsstation B bakdelen av Bil 1 och 2). Genom att göra >10 observationer för respektive monteringsuppgift vid varje station kan en fördelning tas fram, utefter vilken framtida produktion kan tänkas följa med en viss signifikans α. Fördelningen används sedan av simuleringsprogrammet för att modellera ett verkligt förlopp.

Simulering av parallell montering, två stationer

Simulering av parallell montering, två stationer

Efter att modellen verifierats och validerats med verkligheten kan den, förenklat, antas stämma överens med det verkliga systemet. Förändringar kan då göras med modellen, för att på så sätt enkelt kunna undersöka hur det verkliga systemet skulle betett sig. Samma fördelningar (tempo) används för det parallella systemet. Det som skiljer systemen är därmed de förluster som uppstår mellan alla steg. Det visade sig att det parallella systemet monterar 42 (±1) produkter per halvtimme gentemot 27,3 (±0,8) för det seriella systemet.

Om alla antaganden från den konceptuella modellen stämmer (vilket inte är säkert) samt att en del andra krav också gäller (orkar inte förklara i detalj) är allså det parallella systemet bättre!

Jan
25
2009
--

Redigera Word-press tema

Jag har lagt till en author-tagg i mina inlägg (↑). För att göra det hade jag kunnat använda min bild och mail direkt, men jag valde att göra det mer dynamiskt. På sidan:

http://phpxref.ftwr.co.uk/wordpress/nav.html?_functions/index.html

hittar du alla funktioner som är fördefinierade i Wordpress.  Genom att utnyttja funktionen get_avatar på detta sett får man avatarbilden:

  <?php
   echo get_avatar( $id_or_email, $size = '96', $default = '<path_to_url>' );
   ?>

För att alltid det skall vara författaren av det aktuella inlägget som hamnar i bilden använder jag funktionen

get_the_author_id()

på platsen för $id_or_email.

För att få utskrift av författarens namn och mail finns också funktioner, get_author() och get_author_email(). Funktionsbiblioteket är en guldgruva för att spara tid när du bygger ditt eget tema/modifierar någon annans!

(Formateringen av min author-tagg är därefter uppbyggd med css som läggs i style.css)

Temat är modifierat från Aeros 2.0 - Blogglista.se - Översättning är gjord av N2H