Top Banner
SETN 2010 - TUTORIAL The software management and engineering in the AI-oriented projects www. .co.uk The software management and engineering in the AI-oriented projects Dr W Pietruszkiewicz SDART Ltd
108

The software management and engineering in the AI-oriented projects tutorial

Jul 14, 2015

Download

Technology

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

The software management and engineering in the AI-oriented projects

Dr W Pietruszkiewicz

SDART Ltd

Page 2: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Plan of presentation

Introduction

Software project management

Software design

AI implementation

Examples of AI software

Page 3: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Introduction

Page 4: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Artificial Intelligence

Page 5: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Project success

Page 6: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Research oriented software

Time and budget aren’t usually fixed – it is

possible to extend the research

Resources are flexible

People mainly have the personal interests (fame,

dissertations, publications …)

Quality (functionality) is the main concern

Page 7: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Product oriented software

Time and budget are usually fixed

Quality is adjusted to the available budget and

schedule

People mainly have the business interests

Resources aren’t flexible

Page 8: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

AI & software in projects

Proper management

Struggle

Page 9: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

This tutorialReasons to propose this tutorial:

•There exist the software projects without AI but I’m not

sure if there exist AI projects without the software

(embedded count too!) …

•The knowledge about the software management is

unpopular among AI researchers

•At SDART we deal with the AI-oriented software projects

Page 10: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

This tutorial

•Will:• present a selection of the popular techniques and methods for software

development

• evaluate them from AI perspective

• propose what could be used

Will not:• say what have to be used

• be a guide ready to be applied step-by-step

Page 11: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Software project management

Page 12: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

AI & soft – PM nightmare

In the project management two types of projects

are the symbols of unpredictability:

Research projects

…. software projects

What could we do dealing with an AI-oriented

software projects? Professionally manage them!

Page 13: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Software development schema

Page 14: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

DM management

Data mining management seems to be more

organised than AI

There are different models of DM organisation:

CRISP-DM

SEMMA

DMAIC/DMADV

Page 15: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

CRISP-DM

Page 16: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

SEMMA

Page 17: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

DMAIC&DMADV

Page 18: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Management model

Can’t we use any DM model to properly manage

the AI&software projects? Yes we could …. only if

the software does not constitute any significant

part of the project. Meanwhile …

AI projects require software to research

These projects require software to use AI

Page 19: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Common risk sources

Page 20: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Risk strategies

Avoidance

Retention

Sharing

Reduction

Page 21: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Software qualityThere are many software quality factors, among

them:

Page 22: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Software quality

Page 23: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Software qualityIf an application is a product users perceive only

its „front” parts:

•GUI

•Errors

•Documentation

Page 24: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Software metrics

Tom DeMarco said „You can’t control what you

can’t measure”

Software metrics measure some properties of a

software or its specification e.g. complexity,

quality, efficiency or size

Page 25: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Software estimation

Estimation problem

I think I’ve

forgotten

something, but

what was it???

Page 26: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Methodology & Life cycle

Software methodology defines the structure,

plan and management of developed software

Methodology contains development philosophy

and tools, methods and models supporting the

process

Life cycle model defines the phases and activities

Page 27: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

M&LC– staged delivery

Requirements

Design

Implementation

Verification

Maintenance

Page 28: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

M&LC - spiral

Spiral model – Boehm 1988

Page 29: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

M&LC – staged deliveryConception

Analysis

Desing

Stage 1

Stage 2

Stage n

Page 30: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

M&LC – design to scheduleConception

Analysis

Desing

Stage 1

Stage 2

Stage n

Software release

Time? Costs?

Page 31: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

M&LC - AgileThe Agile development is based on the iterative model

Initial planning

Planning

Requirements Analysis and design

Implementation

Deployment

TestingEvaluation

Page 32: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

M&LC - XP

Extreme programming is an Agile implementation:

Programming in pairs

Extensive code review

Avoids the programming required in the future

Automated tasks

Nothing is fixed i.e. everything could be redone

Page 33: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

M&LC - SCRUM

Project is being developed by Pigs & Chickens

Pig is committed to the project i.e. ScrumMaster,

Team, ProductOwner

Chicken is involved i.e.: Stakeholder, Manager

Page 34: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

M&LC - SCRUM

Page 35: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

M&LC – Unified Process

Is an iterative software development framework

Page 36: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

M&LC – UP versions

Rational Unifed Process

Agile Unified Process

Open Unified Process

Enterprise Unified Process

Page 37: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

M&LC– selectionThe factors that influences life cycle selection are:

Size of project

Understood requirements

Desired reliability

Allowed overheads

Progress visibility

Sophisticated management

Allowed corrections

Page 38: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

M&LC - summary

Waterfall is still the most frequently used model by

the biggest software companies

But they do it preparing „yet another version of X”

AI projects are usually new for you as well as for

everyone else, so do not expect it to be as easy as

software mentioned above

Page 39: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Collaboration

Homogeneous research team Heterogeneous software team

Page 40: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Project controlling

Page 41: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Software design

Page 42: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Architecture

Architecture is a high level planning for the

software that does not involve any functional

decisions

Page 43: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

ViewsThe views are perspectives that are used to represent different aspect of

the system:

Code/module view

Concurrency/process/thread view

Data view

Development/structural view

Functional/logic view

Physical/deployment view

User action/feedback view

Page 44: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

FrameworksSoftware architecture is defined by various frameworks

defining its necessary elements:

4+1

RM-ODP

DODAF

SOMF

Page 45: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Frameworks - 4+1

Page 46: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Design concepts

Abstraction & refinement – generalisation

Modularity

Hierarchy

Information & functionality enclosure

Structural partitioning – vertical & horizontal

Page 47: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

UML

Unified Modeling Language:

Object oriented

Unified Booch, OOSE, OMT modelling methods

Currently in 2.2 version – the most of software

supports 2.0

Page 48: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

UML Diagrams

Page 49: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

UML Advantages

UML became an industry standard due to:

Visualisation

Documenting

Specifying

Constructing

Page 50: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

UML ToolsPapyrus – http://www.papyrusuml.org

Poseidon for UML - http://www.gentleware.com

Visual Paradigm for UML - http://www.visual-

paradigm.com

Umbrello UML Modeller – http://uml.sourceforge.net

StarUML – http://staruml.sourceforge.net

Page 51: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Supporting tools

Let’s take a look at the supporting tools

If something could be done simpler and at least

with the same quality

Use them and forget the time-consuming

repetive tasks and focus on the difficult ones

Page 52: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Version controlling

How to avoid the mess dealing with the different

versions of files in projects?

The source code is constantly changing …

The AI files too …

Page 53: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Version controllingVersion controlling allows the development team to manage

different versions of software. They keep track of work and

allow the team to look at the project’s past.

There are 3 kinds of version controlling systems:

Local

Distributed

Client-server

Page 54: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Version controlling – local systems

Revision Control System

Source Conde Control System

MKS Implementer

History Explorer

Page 55: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Version controlling - distributed

DCVS (Distributed CVS)

Monotone

GNU arch

Plastic SCM

BitKeeper

TeamWare

PC Rep

PC Rep

PC Rep

Page 56: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Version controlling – client/server

CVS

SVN

Codendi

ClearCase

Visual SourceSafe

Autodesk Valut

Client

Client

Client

Server Rep

Page 57: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Supporting tools & technologies

Page 58: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Automated builds - advantagesEfficiency increase

Development process simplification

Increased software quality

Reduced costs

False version removal

Reduction of the development team or task relocation

Project archiving

Page 59: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Automated buildsThe automated build tools include:

make

Maven

Ant

MSBuild

Cmake

and many others

Page 60: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Automated testing - make

An example of makefile taken from QT library.

PNGMAK=scripts/makefile.linux

all:cd zlib; ./configure; makecd libpng; make -f $(PNGMAK)

clean:-cd zlib; make clean-cd libpng; make -f $(PNGMAK) clean

Page 61: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Automated testing - Ant<project name="MyProject" default="dist" basedir="."> <description>simple example build file</description> <!-- set global properties for this build --> <property name="src" location="src"/> <property name="build" location="build"/> <property name="dist" location="dist"/> <target name="init"> <!-- Create the time stamp --> <tstamp/> <!-- Create the build directory structure used by compile --> <mkdir dir="${build}"/> </target> <target name="compile" depends="init” description="compile the source " > <!-- Compile the java code from ${src} into ${build} --> <javac srcdir="${src}" destdir="${build}"/> </target> <target name="dist" depends="compile” description="generate the distribution" > <!-- Create the distribution directory --> <mkdir dir="${dist}/lib"/> <!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file --> <jar jarfile="${dist}/lib/MyProject-${DSTAMP}.jar" basedir="${build}"/> </target> <target name="clean” description="clean up" > <!-- Delete the ${build} and ${dist} directory trees --> <delete dir="${build}"/> <delete dir="${dist}"/> </target></project>

Page 62: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Automated testing - Maven<project xmlns="http://maven.apache.org/POM/4.0.0" mlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.mycompany.app</groupId> <artifactId>my-app</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>Maven Quick Start Archetype</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies></project>

Page 63: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Automated testing - unit

Test ATest ABCD

vs

Test B Test C Test D

Data

Data Data Data Data

The most popular unit testing tool is xUnit available in many versions for all popular languages

Page 64: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Automated testing - system

Automated GUI tests

perceive the application as

a black-box and test it from

the user’s perspective.

Page 65: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Code documenting

Automatic API documentation tools:

JavaDoc

DoxyGen

RoboDoc

Manual documentation

Automatic documentation

Code Doc CodeDoc

Page 66: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Bug trackingIssue/Bug Tracking Systems usage leads to:

Better quality control

Gaining users’ feedback

Better resource allocation

Increased users’ comfort

Better information flow

Feature request available

Page 67: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Bug tracking – bug categories

Page 68: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Bug tracking

Bugzilla

Flyspray

Mantis

Trac

Redmine

Page 69: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Bug tracking

Page 70: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

AI implementation

Page 71: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Implementation

Transforms the design (plan) into the code

Problems:

Technology

Programming language

Page 72: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Levels of programming languages

Page 73: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

1st generation

The code lines are equal to the processor

instructions – one to one

Machine code

Page 74: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

2nd generation

Symbolic representation

of processor’s

instructions

Assembler language

Page 75: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

3rd generation

Instructions represent the basic operations

Oriented on programmer

Most popular generation

Page 76: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

4th generation

Specialised languages oriented on advanced

operations

RAD tools are 4GL build over 3GL

Matlabdisp('Hello, world!')

SASdata _null_; put 'Hello, world!'; run;

Postscript(Hello, world!\n) print

Page 77: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

5th generation

Represent not algorithms but desired outcome

Logical programming

Programming for non-programmers

Common Lisp(write-line "Hello, world!")

Prolog:- write('Hello, world!'),nl.

Page 78: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Hybrid programming – embedding

Hybrid programming (embedding languages)

could be synergic but:

Increases the technological risk

Increases the demand on skilled developers

Blurs the project

Page 79: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Programming paradigms

Paradigm is a fundamental style of computer

programming and defines the concept of

programming language

The most of programming languages support

various paradigms (different approaches to

problem)

Page 80: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Programming paradigms

The most popular paradigms are:

Agent-oriented

Declarative

Event-driven

Imperative

Metaprogramming

Page 81: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Desktop applications

C/C++

Java

C#

Python

Page 82: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Web services – server sideJava EE

PHP

Python

Ruby

Perl

.NET

CGI (every language that could be run by server)

Page 83: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Web services - RIAsFlash

AJAX

Java SE

JavaFX

FLEX

OpenLaszlo

Silverlight

Page 84: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Mobile applications

Java ME

C++

Objective-C

Page 85: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Languages popularity

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Page 86: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Characteristics - domain

Specialised – good at something but below

average on other things

General purpose – no specific domain and a

compromise on all tasks

Page 87: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Characteristics - speed

Compiled faster

Interpreted slower

But:

Compiled start-up slower

Interpreted start-up faster (write-run-test cycle)

JIT compilers for interpreted languages

Page 88: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Characteristics - portability

Software could be portable on two levels:

Source code

Binary code

Portability does not relate only to the programming

language but also to used libraries

Page 89: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Characteristics - prototyping

Ability to verify the assumption:

Dynamic language

Simple syntax

Efficiency isn’t a main concern

Checks if the idea works

Page 90: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Characteristics – target platform

Target platform:

PC

Mobile

Web

Page 91: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Computer languages

Scientific perspective Programming perspective

Page 92: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Why use a specialised languages

Popular in the research community

Specialized languages

Many libraries/toolkits and examples are

available

Page 93: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Why not use them

Specialised not universal

High price

Simple or no GUI

No networking

Research not production languges

Page 94: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Important programming features

Dynamic languages:

Do not care about types of data

Focus on the algorithms

But reject a full data control

Page 95: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Important programming features

Prototyping:

Checks algorithms

Easily visualise data or make GUI

Speed is measured as the time of coding not

running

Page 96: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Important programming features

Scientific libraries:

How often do we construct new algorithms

(Charlie Eppes Syndrome – NUMB3RS)?

The application is more like a large panel building

than brick building – applies to the AI problems as

well as to the „ordinary” soft

Page 97: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Important programming features

Visual design (graphical programming):

GUI could be constructed using components

Link the components visually

Evaluate application faster

Page 98: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

More important part of AI software

KnowledgeModelsRules

Graphs

Page 99: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Hybrid software development

Research Development

Ide

a

Pro

duc

t

Replanning& redesign

Technology X

Technology X Technology Y??

???

??

Page 100: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Programming libraries – C/C++MLC++ http://www.sgi.com/tech/mlc/

FANN http://leenissen.dk/fann/

Waffles http://waffles.sourceforge.net/

OpenCV ML

http://opencv.willowgarage.com/documentation/cpp/ml._mach

ine_learning.html

dlib C++ http://dlib.net/

VFML http://www.cs.washington.edu/dm/vfml/

Page 101: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Programming libraries – Java

Java-ML http://java-ml.sourceforge.net/

Weka Engine

http://www.cs.waikato.ac.nz/ml/weka/

MLJ http://sourceforge.net/projects/mldev/

MALLET http://mallet.cs.umass.edu/

LIBSVM http://www.csie.ntu.edu.tw/~cjlin/libsvm/

Page 102: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Programming libraries – C#Infer.NET http://research.microsoft.com/en-us/um/cambridge/

projects/infernet/

AForge.NET http://code.google.com/p/aforge/

C# Neural Network Library

http://franck.fleurey.free.fr/NeuralNetwork/

NeuronDotNet http://neurondotnet.freehostia.com/

NeuroBox Neural Network Library

http://www.cdrnet.net/projects/neuro/

Page 103: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Programming libraries – Python

Orange engine http://www.ailab.si/orange/

PyML http://pyml.sourceforge.net/

MDP http://mdp-toolkit.sourceforge.net/

PyBrain http://www.pybrain.org/

LIBSVM http://www.csie.ntu.edu.tw/~cjlin/libsvm/

Page 104: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Programming libraries – PHP

FANN PHP Extension

http://fann.sourceforge.net/fann.html

Tremani Neural Network http://www.tremani.nl/

open-source/neural-network/

ANN http://ann.thwien.de/index.php/Main_Page

Page 105: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Example I – Java

A simple data mining task

Uses Java-ML library

Page 106: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Example II – Python

Adaptive filtering algorithm

Use as a web service (server part)

Use mod_python on Apache

Page 107: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Example III – Flex

Particle Swarm Optimisation example

RIA application

Uses a standard Flex without any additional

libraries

Page 108: The software management and engineering in the AI-oriented projects tutorial

SETN 2010 - TUTORIAL

The software management and engineering in the AI-oriented projects

www. .co.uk

Thank you. Any questions?Get in touch: www.sdart.co.uk