Your SlideShare is downloading. ×
0
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
The software management and engineering in the AI-oriented projects tutorial
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

842

Published on

SDART Ltd presents a tutorial about Software Management Engineering in AI-based projects. The tutorial's aim is to familiarise participants with the problems concerning AI-based software project …

SDART Ltd presents a tutorial about Software Management Engineering in AI-based projects. The tutorial's aim is to familiarise participants with the problems concerning AI-based software project management.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
842
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
60
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. The software management and engineering in the AI-oriented projects Dr W Pietruszkiewicz SDART Ltd
  • 2. Plan of presentation <ul><li>Introduction </li></ul><ul><li>Software project management </li></ul><ul><li>Software design </li></ul><ul><li>AI implementation </li></ul><ul><li>Examples of AI software </li></ul>
  • 3. Introduction
  • 4. Artificial Intelligence
  • 5. Project success
  • 6. Research oriented software <ul><li>Time and budget aren ’ t usually fixed – it is possible to extend the research </li></ul><ul><li>Resources are flexible </li></ul><ul><li>People mainly have the personal interests (fame, dissertations, publications …) </li></ul><ul><li>Quality (functionality) is the main concern </li></ul>
  • 7. Product oriented software <ul><li>Time and budget are usually fixed </li></ul><ul><li>Quality is adjusted to the available budget and schedule </li></ul><ul><li>People mainly have the business interests </li></ul><ul><li>Resources aren ’ t flexible </li></ul>
  • 8. AI & software in projects   Proper management Struggle
  • 9. This tutorial <ul><li>Reasons to propose this tutorial: </li></ul><ul><li>There exist the software projects without AI but I ’ m not sure if there exist AI projects without the software (embedded count too!) … </li></ul><ul><li>The knowledge about the software management is unpopular among AI researchers </li></ul><ul><li>At SDART we deal with the AI-oriented software projects </li></ul>
  • 10. This tutorial <ul><li>Will: </li></ul><ul><ul><li>present a selection of the popular techniques and methods for software development </li></ul></ul><ul><ul><li>evaluate them from AI perspective </li></ul></ul><ul><ul><li>propose what could be used </li></ul></ul><ul><li>Will not: </li></ul><ul><ul><li>say what have to be used </li></ul></ul><ul><ul><li>be a guide ready to be applied step-by-step </li></ul></ul>
  • 11. Software project management
  • 12. AI & soft – PM nightmare <ul><li>In the project management two types of projects are the symbols of unpredictability: </li></ul><ul><ul><li>Research projects </li></ul></ul><ul><ul><li>… . software projects </li></ul></ul><ul><li>What could we do dealing with an AI-oriented software projects? Professionally manage them! </li></ul>
  • 13. Software development schema
  • 14. DM management <ul><li>Data mining management seems to be more organised than AI </li></ul><ul><li>There are different models of DM organisation: </li></ul><ul><li>CRISP-DM </li></ul><ul><li>SEMMA </li></ul><ul><li>DMAIC/DMADV </li></ul>
  • 15. CRISP-DM
  • 16. SEMMA
  • 17. DMAIC&DMADV
  • 18. Management model <ul><li>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 … </li></ul><ul><li>AI projects require software to research </li></ul><ul><li>These projects require software to use AI </li></ul>
  • 19. Common risk sources
  • 20. Risk strategies <ul><li>Avoidance </li></ul><ul><li>Retention </li></ul><ul><li>Sharing </li></ul><ul><li>Reduction </li></ul>
  • 21. Software quality <ul><li>There are many software quality factors, among them: </li></ul>
  • 22. Software quality
  • 23. Software quality <ul><li>If an application is a product users perceive only its „front ” parts: </li></ul><ul><li>GUI </li></ul><ul><li>Errors </li></ul><ul><li>Documentation </li></ul>
  • 24. Software metrics <ul><li>Tom DeMarco said „You can ’ t control what you can ’ t measure ” </li></ul><ul><li>Software metrics measure some properties of a software or its specification e.g. complexity, quality, efficiency or size </li></ul>
  • 25. Software estimation <ul><li>Estimation problem </li></ul>I think I ’ ve forgotten something, but what was it???
  • 26. Methodology & Life cycle <ul><li>Software methodology defines the structure, plan and management of developed software </li></ul><ul><li>Methodology contains development philosophy and tools, methods and models supporting the process </li></ul><ul><li>Life cycle model defines the phases and activities </li></ul>
  • 27. M&LC– staged delivery Requirements Design Implementation Verification Maintenance
  • 28. M&LC - spiral <ul><li>Spiral model – Boehm 1988 </li></ul>
  • 29. M&LC – staged delivery Conception Analysis Desing Stage 1 Stage 2 Stage n
  • 30. M&LC – design to schedule Conception Analysis Desing Stage 1 Stage 2 Stage n Software release Time? Costs?
  • 31. M&LC - Agile <ul><li>The Agile development is based on the iterative model </li></ul>Initial planning Planning Requirements Analysis and design Implementation Deployment Testing Evaluation
  • 32. M&LC - XP <ul><li>Extreme programming is an Agile implementation: </li></ul><ul><li>Programming in pairs </li></ul><ul><li>Extensive code review </li></ul><ul><li>Avoids the programming required in the future </li></ul><ul><li>Automated tasks </li></ul><ul><li>Nothing is fixed i.e. everything could be redone </li></ul>
  • 33. M&LC - SCRUM <ul><li>Project is being developed by Pigs & Chickens </li></ul><ul><li>Pig is committed to the project i.e. ScrumMaster, Team, ProductOwner </li></ul><ul><li>Chicken is involved i.e.: Stakeholder, Manager </li></ul>
  • 34. M&LC - SCRUM
  • 35. M&LC – Unified Process <ul><li>Is an iterative software development framework </li></ul>
  • 36. M&LC – UP versions <ul><li>Rational Unifed Process </li></ul><ul><li>Agile Unified Process </li></ul><ul><li>Open Unified Process </li></ul><ul><li>Enterprise Unified Process </li></ul>
  • 37. M&LC – selection <ul><li>The factors that influences life cycle selection are: </li></ul><ul><li>Size of project </li></ul><ul><li>Understood requirements </li></ul><ul><li>Desired reliability </li></ul><ul><li>Allowed overheads </li></ul><ul><li>Progress visibility </li></ul><ul><li>Sophisticated management </li></ul><ul><li>Allowed corrections </li></ul>
  • 38. M&LC - summary <ul><li>Waterfall is still the most frequently used model by the biggest software companies </li></ul><ul><li>But they do it preparing „yet another version of X ” </li></ul><ul><li>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 </li></ul>
  • 39. Collaboration Homogeneous research team Heterogeneous software team
  • 40. Project controlling
  • 41. Software design
  • 42. Architecture <ul><li>Architecture is a high level planning for the software that does not involve any functional decisions </li></ul>
  • 43. Views <ul><li>The views are perspectives that are used to represent different aspect of the system: </li></ul><ul><li>Code/module view </li></ul><ul><li>Concurrency/process/thread view </li></ul><ul><li>Data view </li></ul><ul><li>Development/structural view </li></ul><ul><li>Functional/logic view </li></ul><ul><li>Physical/deployment view </li></ul><ul><li>User action/feedback view </li></ul>
  • 44. Frameworks <ul><li>Software architecture is defined by various frameworks defining its necessary elements: </li></ul><ul><li>4+1 </li></ul><ul><li>RM-ODP </li></ul><ul><li>DODAF </li></ul><ul><li>SOMF </li></ul><ul><li>… </li></ul>
  • 45. Frameworks - 4+1
  • 46. Design concepts <ul><li>Abstraction & refinement – generalisation </li></ul><ul><li>Modularity </li></ul><ul><li>Hierarchy </li></ul><ul><li>Information & functionality enclosure </li></ul><ul><li>Structural partitioning – vertical & horizontal </li></ul>
  • 47. UML <ul><li>Unified Modeling Language: </li></ul><ul><li>Object oriented </li></ul><ul><li>Unified Booch, OOSE, OMT modelling methods </li></ul><ul><li>Currently in 2.2 version – the most of software supports 2.0 </li></ul>
  • 48. UML Diagrams
  • 49. UML Advantages <ul><li>UML became an industry standard due to: </li></ul><ul><li>Visualisation </li></ul><ul><li>Documenting </li></ul><ul><li>Specifying </li></ul><ul><li>Constructing </li></ul>
  • 50. UML Tools <ul><li>Papyrus – http://www.papyrusuml.org </li></ul><ul><li>Poseidon for UML - http://www.gentleware.com </li></ul><ul><li>Visual Paradigm for UML - http://www.visual-paradigm.com </li></ul><ul><li>Umbrello UML Modeller – http://uml.sourceforge.net </li></ul><ul><li>StarUML – http://staruml.sourceforge.net </li></ul>
  • 51. Supporting tools <ul><li>Let ’ s take a look at the supporting tools </li></ul><ul><li>If something could be done simpler and at least with the same quality </li></ul><ul><li>Use them and forget the time-consuming repetive tasks and focus on the difficult ones </li></ul>
  • 52. Version controlling <ul><li>How to avoid the mess dealing with the different versions of files in projects? </li></ul><ul><li>The source code is constantly changing … </li></ul><ul><li>The AI files too … </li></ul>
  • 53. Version controlling <ul><li>Version 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. </li></ul><ul><li>There are 3 kinds of version controlling systems: </li></ul><ul><li>Local </li></ul><ul><li>Distributed </li></ul><ul><li>Client-server </li></ul>
  • 54. Version controlling – local systems <ul><li>Revision Control System </li></ul><ul><li>Source Conde Control System </li></ul><ul><li>MKS Implementer </li></ul><ul><li>History Explorer </li></ul>
  • 55. Version controlling - distributed <ul><li>DCVS (Distributed CVS) </li></ul><ul><li>Monotone </li></ul><ul><li>GNU arch </li></ul><ul><li>Plastic SCM </li></ul><ul><li>BitKeeper </li></ul><ul><li>TeamWare </li></ul>PC Rep PC Rep PC Rep
  • 56. Version controlling – client/server <ul><li>CVS </li></ul><ul><li>SVN </li></ul><ul><li>Codendi </li></ul><ul><li>ClearCase </li></ul><ul><li>Visual SourceSafe </li></ul><ul><li>Autodesk Valut </li></ul>Client Client Client Server Rep
  • 57. Supporting tools & technologies
  • 58. Automated builds - advantages <ul><li>Efficiency increase </li></ul><ul><li>Development process simplification </li></ul><ul><li>Increased software quality </li></ul><ul><li>Reduced costs </li></ul><ul><li>False version removal </li></ul><ul><li>Reduction of the development team or task relocation </li></ul><ul><li>Project archiving </li></ul>
  • 59. Automated builds <ul><li>The automated build tools include: </li></ul><ul><li>make </li></ul><ul><li>Maven </li></ul><ul><li>Ant </li></ul><ul><li>MSBuild </li></ul><ul><li>Cmake </li></ul><ul><li>and many others </li></ul>
  • 60. Automated testing - make An example of makefile taken from QT library. PNGMAK=scripts/makefile.linux all: cd zlib; ./configure; make cd libpng; make -f $(PNGMAK) clean: -cd zlib; make clean -cd libpng; make -f $(PNGMAK) clean
  • 61. Automated testing - Ant <project name=&quot;MyProject&quot; default=&quot;dist&quot; basedir=&quot;.&quot;> <description>simple example build file</description> <!-- set global properties for this build --> <property name=&quot;src&quot; location=&quot;src&quot;/> <property name=&quot;build&quot; location=&quot;build&quot;/> <property name=&quot;dist&quot; location=&quot;dist&quot;/> <target name=&quot;init&quot;> <!-- Create the time stamp --> <tstamp/> <!-- Create the build directory structure used by compile --> <mkdir dir=&quot;${build}&quot;/> </target> <target name=&quot;compile&quot; depends=&quot;init ” description=&quot;compile the source &quot; > <!-- Compile the java code from ${src} into ${build} --> <javac srcdir=&quot;${src}&quot; destdir=&quot;${build}&quot;/> </target> <target name=&quot;dist&quot; depends=&quot;compile ” description=&quot;generate the distribution&quot; > <!-- Create the distribution directory --> <mkdir dir=&quot;${dist}/lib&quot;/> <!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file --> <jar jarfile=&quot;${dist}/lib/MyProject-${DSTAMP}.jar&quot; basedir=&quot;${build}&quot;/> </target> <target name=&quot;clean ” description=&quot;clean up&quot; > <!-- Delete the ${build} and ${dist} directory trees --> <delete dir=&quot;${build}&quot;/> <delete dir=&quot;${dist}&quot;/> </target> </project>
  • 62. Automated testing - Maven <project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; mlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&quot;> <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>
  • 63. Automated testing - unit The most popular unit testing tool is xUnit available in many versions for all popular languages Test A Test ABCD vs Test B Test C Test D Data Data Data Data Data
  • 64. Automated testing - system <ul><li>Automated GUI tests perceive the application as a black-box and test it from the user ’ s perspective. </li></ul>
  • 65. Code documenting <ul><li>Automatic API documentation tools: </li></ul><ul><li>JavaDoc </li></ul><ul><li>DoxyGen </li></ul><ul><li>RoboDoc </li></ul><ul><li>… </li></ul>Manual documentation Automatic documentation Code Doc Code Doc
  • 66. Bug tracking <ul><li>Issue/Bug Tracking Systems usage leads to: </li></ul><ul><li>Better quality control </li></ul><ul><li>Gaining users ’ feedback </li></ul><ul><li>Better resource allocation </li></ul><ul><li>Increased users ’ comfort </li></ul><ul><li>Better information flow </li></ul><ul><li>Feature request available </li></ul>
  • 67. Bug tracking – bug categories
  • 68. Bug tracking <ul><li>Bugzilla </li></ul><ul><li>Flyspray </li></ul><ul><li>Mantis </li></ul><ul><li>Trac </li></ul><ul><li>Redmine </li></ul>
  • 69. Bug tracking
  • 70. AI implementation
  • 71. Implementation <ul><li>Transforms the design (plan) into the code </li></ul><ul><li>Problems: </li></ul><ul><ul><li>Technology </li></ul></ul><ul><ul><li>Programming language </li></ul></ul>
  • 72. Levels of programming languages
  • 73. 1st generation <ul><li>The code lines are equal to the processor instructions – one to one </li></ul><ul><li>Machine code </li></ul>
  • 74. 2nd generation <ul><li>Symbolic representation of processor ’ s instructions </li></ul><ul><li>Assembler language </li></ul>
  • 75. 3rd generation <ul><li>Instructions represent the basic operations </li></ul><ul><li>Oriented on programmer </li></ul><ul><li>Most popular generation </li></ul>
  • 76. 4th generation <ul><li>Specialised languages oriented on advanced operations </li></ul><ul><li>RAD tools are 4GL build over 3GL </li></ul>Matlab disp('Hello, world!') SAS data _null_; put 'Hello, world!'; run; Postscript (Hello, world!n) print
  • 77. 5th generation <ul><li>Represent not algorithms but desired outcome </li></ul><ul><li>Logical programming </li></ul><ul><li>Programming for non-programmers </li></ul>Common Lisp (write-line &quot;Hello, world!&quot;) Prolog :- write('Hello, world!'),nl.
  • 78. Hybrid programming – embedding <ul><li>Hybrid programming (embedding languages) could be synergic but: </li></ul><ul><li>Increases the technological risk </li></ul><ul><li>Increases the demand on skilled developers </li></ul><ul><li>Blurs the project </li></ul>
  • 79. Programming paradigms <ul><li>Paradigm is a fundamental style of computer programming and defines the concept of programming language </li></ul><ul><li>The most of programming languages support various paradigms (different approaches to problem) </li></ul>
  • 80. Programming paradigms <ul><li>The most popular paradigms are: </li></ul><ul><li>Agent-oriented </li></ul><ul><li>Declarative </li></ul><ul><li>Event-driven </li></ul><ul><li>Imperative </li></ul><ul><li>Metaprogramming </li></ul>
  • 81. Desktop applications <ul><li>C/C++ </li></ul><ul><li>Java </li></ul><ul><li>C# </li></ul><ul><li>Python </li></ul>
  • 82. Web services – server side <ul><li>Java EE </li></ul><ul><li>PHP </li></ul><ul><li>Python </li></ul><ul><li>Ruby </li></ul><ul><li>Perl </li></ul><ul><li>.NET </li></ul><ul><li>CGI (every language that could be run by server) </li></ul>
  • 83. Web services - RIAs <ul><li>Flash </li></ul><ul><li>AJAX </li></ul><ul><li>Java SE </li></ul><ul><li>JavaFX </li></ul><ul><li>FLEX </li></ul><ul><li>OpenLaszlo </li></ul><ul><li>Silverlight </li></ul>
  • 84. Mobile applications <ul><li>Java ME </li></ul><ul><li>C++ </li></ul><ul><li>Objective-C </li></ul>
  • 85. Languages popularity http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
  • 86. Characteristics - domain <ul><li>Specialised – good at something but below average on other things </li></ul><ul><li>General purpose – no specific domain and a compromise on all tasks </li></ul>
  • 87. Characteristics - speed <ul><li>Compiled faster </li></ul><ul><li>Interpreted slower </li></ul><ul><li>But: </li></ul><ul><li>Compiled start-up slower </li></ul><ul><li>Interpreted start-up faster (write-run-test cycle) </li></ul><ul><li>JIT compilers for interpreted languages </li></ul>
  • 88. Characteristics - portability <ul><li>Software could be portable on two levels: </li></ul><ul><li>Source code </li></ul><ul><li>Binary code </li></ul><ul><li>Portability does not relate only to the programming language but also to used libraries </li></ul>
  • 89. Characteristics - prototyping <ul><li>Ability to verify the assumption: </li></ul><ul><li>Dynamic language </li></ul><ul><li>Simple syntax </li></ul><ul><li>Efficiency isn ’ t a main concern </li></ul><ul><li>Checks if the idea works </li></ul>
  • 90. Characteristics – target platform <ul><li>Target platform: </li></ul><ul><li>PC </li></ul><ul><li>Mobile </li></ul><ul><li>Web </li></ul>
  • 91. Computer languages Scientific perspective Programming perspective
  • 92. Why use a specialised languages <ul><li>Popular in the research community </li></ul><ul><li>Specialized languages </li></ul><ul><li>Many libraries/toolkits and examples are available </li></ul>
  • 93. Why not use them <ul><li>Specialised not universal </li></ul><ul><li>High price </li></ul><ul><li>Simple or no GUI </li></ul><ul><li>No networking </li></ul><ul><li>Research not production languges </li></ul>
  • 94. Important programming features <ul><li>Dynamic languages: </li></ul><ul><li>Do not care about types of data </li></ul><ul><li>Focus on the algorithms </li></ul><ul><li>But reject a full data control </li></ul>
  • 95. Important programming features <ul><li>Prototyping: </li></ul><ul><li>Checks algorithms </li></ul><ul><li>Easily visualise data or make GUI </li></ul><ul><li>Speed is measured as the time of coding not running </li></ul>
  • 96. Important programming features <ul><li>Scientific libraries: </li></ul><ul><li>How often do we construct new algorithms (Charlie Eppes Syndrome – NUMB3RS)? </li></ul><ul><li>The application is more like a large panel building than brick building – applies to the AI problems as well as to the „ordinary ” soft </li></ul>
  • 97. Important programming features <ul><li>Visual design (graphical programming): </li></ul><ul><li>GUI could be constructed using components </li></ul><ul><li>Link the components visually </li></ul><ul><li>Evaluate application faster </li></ul>
  • 98. More important part of AI software Knowledge Models Rules Graphs
  • 99. Hybrid software development Research Development Idea Product Replanning & redesign Technology X Technology X Technology Y ?? ??? ??
  • 100. Programming libraries – C/C++ <ul><li>MLC++ http://www.sgi.com/tech/mlc/ </li></ul><ul><li>FANN http://leenissen.dk/fann/ </li></ul><ul><li>Waffles http://waffles.sourceforge.net/ </li></ul><ul><li>OpenCV ML http://opencv.willowgarage.com/documentation/cpp/ml._machine_learning.html </li></ul><ul><li>dlib C++ http://dlib.net/ </li></ul><ul><li>VFML http://www.cs.washington.edu/dm/vfml/ </li></ul>
  • 101. Programming libraries – Java <ul><li>Java-ML http://java-ml.sourceforge.net/ </li></ul><ul><li>Weka Engine http://www.cs.waikato.ac.nz/ml/weka/ </li></ul><ul><li>MLJ http://sourceforge.net/projects/mldev/ </li></ul><ul><li>MALLET http://mallet.cs.umass.edu/ </li></ul><ul><li>LIBSVM http://www.csie.ntu.edu.tw/~cjlin/libsvm/ </li></ul>
  • 102. Programming libraries – C# <ul><li>Infer.NET http://research.microsoft.com/en-us/um/cambridge/projects/infernet/ </li></ul><ul><li>AForge.NET http://code.google.com/p/aforge/ </li></ul><ul><li>C# Neural Network Library http://franck.fleurey.free.fr/NeuralNetwork/ </li></ul><ul><li>NeuronDotNet http://neurondotnet.freehostia.com/ </li></ul><ul><li>NeuroBox Neural Network Library http://www.cdrnet.net/projects/neuro/ </li></ul>
  • 103. Programming libraries – Python <ul><li>Orange engine http://www.ailab.si/orange/ </li></ul><ul><li>PyML http://pyml.sourceforge.net/ </li></ul><ul><li>MDP http://mdp-toolkit.sourceforge.net/ </li></ul><ul><li>PyBrain http://www.pybrain.org/ </li></ul><ul><li>LIBSVM http://www.csie.ntu.edu.tw/~cjlin/libsvm/ </li></ul>
  • 104. Programming libraries – PHP <ul><li>FANN PHP Extension http://fann.sourceforge.net/fann.html </li></ul><ul><li>Tremani Neural Network http://www.tremani.nl/open-source/neural-network/ </li></ul><ul><li>ANN http://ann.thwien.de/index.php/Main_Page </li></ul>
  • 105. Example I – Java <ul><li>A simple data mining task </li></ul><ul><li>Uses Java-ML library </li></ul>
  • 106. Example II – Python <ul><li>Adaptive filtering algorithm </li></ul><ul><li>Use as a web service (server part) </li></ul><ul><li>Use mod_python on Apache </li></ul>
  • 107. Example III – Flex <ul><li>Particle Swarm Optimisation example </li></ul><ul><li>RIA application </li></ul><ul><li>Uses a standard Flex without any additional libraries </li></ul>
  • 108. Thank you. Any questions? Get in touch: www.sdart.co.uk

×