Projektstatus

Download Report

Transcript Projektstatus

Hovedprojekt MII Aalborg Universitet
Rørende Intelligent
Udarbejdet i perioden:
5. marts til 3. juni 2004
1 Fremlæggelse af projekt
 Indledning, teori (Model, Servlets mm.)
– Peter
 UML gennemgang
– Preben
 Together-oplæg
– Anders
 Sammenligning med eksisterende løsning
– – Hans Peter
 Konklusion, perspektivering, alternative
løsningsforslag
– Noah
Cirka 12 minutter per indlæg
2 Indledning, teori (Model, Servlets mm.)
 Indledning
– væsentlige teorier og metoder fra PE-kurser
– OOP, (OOAD) samt Client-/Server programmering.
– I forhold til materiale (OOP/Client/server) mangler i
projektet to primære områder:
• Kommunikation via streams
• Brug af interfaces
3 Teori
 Java 2 Standard Edition (J2SE)
 Java 2 Platform Enterprise Edition (J2EE)
– Java Servlets
– Java Server Pages (JSP)
– Java DataBase Connectivity (JDBC)
 Java 2 Micro Edition (J2ME)
4 Teori Arkitektur
 3-lags arkitektur
3
2
Access Database
4
1
MVC, Servlet, JSP
med JDBC/ODBC
INTERNET
1..m klienter
5 Teori Servlet
import
import
import
import
javax.servlet.*;
javax.servlet.http.*;
java.io.*;
java.util.*;
public class ClientConsume extends HttpServlet {
private static final int NO_POF_PIPES = 17;
private static final String CONTENT_TYPE = "text/html";
//Initialize global variables
private MainWindow lnkMainWindow;
private DBBoundary lnkDBBoundary;
private Login lnkLogin;
private HttpSession session;
public void init() throws ServletException {
lnkDBBoundary = new DBBoundary();
lnkMainWindow = new MainWindow(lnkDBBoundary);
lnkLogin = new Login(lnkDBBoundary, lnkMainWindow);
}
//Process the HTTP Get request showing parametres
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
//Process the HTTP Put request
public void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
doGet(request, response);
}
6 Teori Servlet (fortsat)
switch (select) {
case 1: //Login
….
….
response.sendRedirect("ClientProduce.jsp");
break;
case 2: // Sprog
….
….
response.sendRedirect("ClientProduce.jsp");
break;
case 3: // Beregn
….
….
response.sendRedirect("ClientProduce.jsp");
break;
7 Teori JSP
 JSP
<%@ page import = "java.text.DecimalFormat " %>
<html>
<head>
<title>ClientProduce</title>
….
<form name="Pipe" action="/ClientConsume"
method="post">
<table name="mainTable1" align="center"
width="600" border="0">
<tr><td><input type=text
value="<%=a[0]%>" size="8" name="temp1"></td>
….
<%%>
….
</form>
</body>
8 Teori MVC
 Model-View-Controller (MVC)
UML anvendt til applikationen
(Unified Modeling Language)
Rørende Intelligent
Preben Melgaard
1 Præsentation af de anvendte
diagramtyper





Deployment diagram
Use case diagram
Aktivitetsdiagram
Klassediagram
Sekvensdiagram
2 Deployment diagram
 Viser den fysiske arkitektur af hardware og software i
systemet
3 Use case diagram
 Viser et antal
aktører og deres
forbindelse til use
cases som
systemet tilbyder
 Beskrivelse af
funktionalitet
 Tekst eller
aktivitetsdiagram
 Definerer
funktionelle krav
til systemet
4 Aktivitetsdiagram
 Viser sekventiel flow af aktiviteter
 Bruges typisk til at beskrive de aktiviteter der
skal til for at udføre en operation
5 Klassediagram
 Viser den statiske
struktur af klasser
 Associeret
 Afhængige
 Pakket
6 Sekvensdiagram
 Viser dynamisk
samarbejde mellem
objekter
 Speciel god til at vise
timing i sekvenser
 Viser beskeder sendt
mellem objekter
 Viser tiden lodret
nedad
7 Andre mulige diagramtyper
 State diagram
– Viser et objekts tilstande og de hændelser, som giver et
tilstandsskift
– Kan laves både for klasser og hele systemet
 Collaboration diagram
– Viser det dynamiske samarbejde mellem objekter
– Ikke så gode til at vise timing
 Componet diagram
– Viser fysiske komponent associationer
– F.eks. Kildetekstfiler, binære filer og exe-filer.
– Anvendes i programmeringen
Together-oplæg
Rørende Intelligent
Anders Rieck Sørensen
1 Teknologivalg

Kontrolleren
–
–
–

Java (SDK/JDK)
MS-Access
SQL (JDBC/ODBC)
Præsentationen
–
–
–
–
JSP
HTML/DHTML
JavaScript
CSS
2 Udviklingsværktøjer
 Together
–
–
–
–
UML
Java-klasser
JSP
Aftestning/debugning
 FrontPage
– HTML / DHTML / CSS / JavaScript
3 Implementeringsforløb
 Første version
– Java-klasserne fordelt til de enkelte gruppemedlemmer og
aftestet før de blev frigivet.
 Anden version
– Javaklasserne blev samlet i et projekt
– Konstruktørerne blev fastlagt
– Login.htm og clientProcedure.jsp
4 Demonstration
 Gennemgang
– Diagrammerne
– Editor
– Kørsel
5 Opsummering
 Together
– UML diagrammer og implementering god sammenhæng
– Fint udviklingsværktøj
– God i implementering og aftestning fasen
– Reducer tidsforbrug
 FrontPage
– God i udvikling skærmbilleder
– Reducer tidsforbug
 Generelt
– Kun to udviklingsværktøjer
Sammenligning af .NET- og Javaapplikation
Rørende Intelligent
Hans Peter Lybæk
1 Om applikationerne
 .NET-applikationen
– Programmeret i Visual Basic.Net
– Findes via adressen http://www.vbdotnet.dk/
 Java-applikationen
– Programmeret i Java
– Findes via adressen http://www.pbdesign.dk/mii
2 Test af performance (hastighed)
 Test af hastighed
– Visuel test
– Konkret hastighedsmåling
 Demo
.NET-applikation
Java-applikation
3 .NET vs Java
 Forskelle
– .NET-applikation
• Opdaterer med direkte adgang til databasen (hele siden
opdateres)
• 100% adskillelse af HTML og programkode (se eksempel)
– Java-applikation
• Rullevinduernes værdier er lagret via arrays i JavaScript,
hvorved kun de aktuelle menuer loades og dermed ikke hele
siden
4 Konkret hastighedsmåling
 Indførelse af timestamps, når beregning starter og slutter
 .NET-kode:
Private Sub Calculate_heat()
Dim dTime1, dTime2 As DateTime
Dim tCount1, tCount2 As Integer
dTime1 = Now
//Here goes the calculation
GetPipeDimensions()
GetPipeSpecs()
…
dTime2 = Now
tCount2 = dTime2.Subtract(dTime1).Seconds()
tCount1 = dTime2.Subtract(dTime1).Milliseconds()
Response.Write("Tid: " & tCount2 & " sek., " & tCount1
& " millisek.")
End Sub
5 Java-applikation
 Java-kode:
long[] laT = new long[2];
Date timestamp = new Date();
laT[0] = timestamp.getTime();
switch (select) {
// Start tid
case 3: // Beregn
daRes = lnkMainWindow.beregn(daT[0], daT[1], daT[2], iaD[0],
daLength);
session.setAttribute("result", daRes);
session.setAttribute("navn", valg);
Date timestamp3 = new Date();
laT[1] = timestamp3.getTime(); // Slut tid
session.setAttribute("time", laT);
response.sendRedirect("ClientProduce.jsp");
break;
6 Vurdering af resultater
 Visuel test
– Java-applikation er hurtigst til at eksekvere på klientsiden
(eksempelvis skift af rullevinduer)
– Java-applikation vurderes til at være lidt hurtigere til at skifte sprog
(der er ikke målt tid på dette)
– De to applikationer er cirka lige hurtige til at udføre en beregning
 Konkret hastighedsmåling
– Beregninger:
• .NET: 0sek, 430 millisekunder
• Java: 0sek, 140 millisekunder
– Sprog
• .NET: 0sek, 15 millisekunder
• Java: 0sek, 32 millisekunder
7 Eksempel på databaseopslag i .NET
 Klasse clsDimensions
Imports System.Data
Imports System.Data.OleDb
Public Class clsDimensions
Inherits System.Web.UI.Page
Dim i As Integer
Dim pDim(16) As Integer
Dim strCn As String
Public Function GetDimensions() As Integer()
strCn = "Provider=Microsoft.jet.oledb.4.0;Data Source=" & Server.MapPath("fluids.MDB") &
";"
Dim strSql As String = "Select dimension FROM material_spec ORDER BY id ASC"
Dim objConnection As New OleDbConnection(strCn)
Dim objCommand As New OleDbCommand(strSql, objConnection)
Dim objDataReader As OleDbDataReader
objConnection.Open()
objDataReader = objCommand.ExecuteReader()
i = 0
Do While objDataReader.Read() = True
pDim(i) = objDataReader("dimension")
i += 1
Loop
objDataReader.Close()
objConnection.Close()
Return pDim
End Function
End Class
8 Eksempel på databaseopslag i Java
 Java:
public double[] GetDimensions(){
double[] dimension=new double[18];
int taeller = 0;
String strSql = "SELECT Dimension FROM material_spec
ORDER BY id ASC";
try{
Statement statement1 =
connectionfluids.createStatement();
ResultSet res1 = statement1.executeQuery(strSql);
while (res1.next()){
dimension[taeller] = res1.getInt("Dimension");
taeller++;
}
}catch (Exception fagex){System.out.println("kunne ikke
finde dimensionen "+fagex);}
return dimension;
}
9 .NET-kode
 Eksempel
– Man indtaster en tekst og det indtastede returneres i en label
<%@ Page Language="vb" AutoEventWireup="false"
Codebehind="WebForm1.aspx.vb" Inherits="GeorgFischer.WebForm1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
<meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
<meta name=vs_defaultClientScript content="JavaScript">
<meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<asp:Label id=Label1 runat="server">Enter some text:</asp:Label>
<asp:TextBox id=TextBox1 runat="server"></asp:TextBox>
<asp:Button id=Button1 runat="server" Text="Click me"></asp:Button>
<br>
<asp:Label id=Label2 runat="server">You entered:</asp:Label>
<asp:Label id=Label3 runat="server">Label</asp:Label>
</form>
</body>
</HTML>
10 Kodefil (Webform1.aspx.vb)
 Dette er kodefilen, der anvendes af aspx-filen
Public Class WebForm1
Inherits System.Web.UI.Page
Protected WithEvents Label1 As System.Web.UI.WebControls.Label
Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox
Protected WithEvents Button1 As System.Web.UI.WebControls.Button
Protected WithEvents Label2 As System.Web.UI.WebControls.Label
Protected WithEvents Label3 As System.Web.UI.WebControls.Label
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button1.Click
Label3.Text = TextBox1.text
End Sub
End Class