~~SLIDESHOW~~ ====== Narzędzia programistyczne - Wstęp ====== Semestr zimowy 2013/2014 ===== Narzędzia programistyczne ===== * Tworzenie aplikacji (edytory, kompilatory, interpretatory) * Wykrywanie błędów: statyczna/dynamiczna analiza kodu/programu * "Odpluskwianie" kodu (Debugging) * Analiza wydajności aplikacji (profilowanie kodu) * Analiza pamięci - wykrywanie "wycieków" * Zarządzanie projektami, np.: systemy kontroli wersji, raportowanie błędów * Tworzenie dokumentacji Źródła: [[wp>Programming_tool|Programming Tool]] /* ===== Kompilatory i interpretatory ===== Kompilacja, optymalizacja, linkowanie (konsolidacja). * gcc (GNU C Compiler) gcc -Wall modul1.c modul2.c ... modulN.c -o program * Visual Studio : cl.exe (C/C++), csc.exe (C#) * inne ... (Java, fpc, f77 ?) */ ===== Zintegrowane środowiska programistyczne (IDE) ===== /* Najważniejsze cechy, dostępne wersje, projekty. */ * MS Visual Studio Express/Professional/Ultimate (C/C%%++%%, C#) * [[http://dlc.sun.com.edgesuite.net/netbeans/7.0/beta/|NetBeans]] vs. [[http://www.eclipse.org/|Eclipse]] (Java, plugin C/C%%++%%, dużo rozszerzeń ) * C%%++%%Builder i Delphi - raczej nie * Visual Web Developer Express (ASP.NET) - ?? * inne : [[http://www.codeblocks.org/|Code::Blocks]], [[http://www.kdevelop.org/|Kdevelop]], [[http://www.anjuta.org/|Anjuta DevStudio]], [[http://netbeans.org/|NetBeans]] Wikipedia: [[wp>Comparison of integrated development environments]] {{:zajecia:npr:visualstudio.png?100}} {{http://netbeans.org/images_www/v5/nb-logo2.gif}}{{:zajecia:npr:wyklad:eclipse.png?100|}} ===== Zarządzanie projektami informatycznymi ===== * Team Foundation Server * Trac * Mylyn - Application Lifecycle Tools * Bugzilla, CodePLex, SourceForge, Team Foundation Service, inne ===== Odpluskwianie (Debuggers) ===== * Debuggowanie w środowiskach IDE (m.in. edit and continue(MS), IntelliTrace/Hotswap Bug Fixing (Java), Multi-Threaded Debugging), * GDB (GNU Debugger) - Linux, Cygwin (MinGW) * [[http://valgrind.org/|Valgrind]] - GPL (Linux, Mac OS) dynamiczna analiza aplikacji (memory error detector, debuuger, profiler) /* inne : WinDbg */ {{http://www.gnu.org/software/gdb/images/archer.jpg}} {{http://valgrind.org/images/st-george-dragon.png?200}} /* Żródła: - [[wppl>Debugger|Odpluskwiacze (Debugger)]] */ ===== Analiza pamięci (Memory debugging tools) ===== * Valgrind, KCacheGrind (KDE, Linux) * Visual Leak Detector (Visual C%%++%%) * Eclipse Memory Analyzer (Java) * inne: IBM Rational Purify, Insure%%++%%, TotalView, Dmalloc, memwatch, YAMD, mpatrol ===== Profilowanie ===== * Visual Studio Profiler (raczej tylko Stand-Alone profiler) * GNU gprof, Valgrind * NetBeans Profiler, Eclipse Profiler Plugin, * grafy wywołań [[wp>Call_graph|Call graph]] * inne : nprof, CLR Profiler, RotateRight Zoom, pin, JProfiler (commercial), TAU Performance System, slimtune (.Net), CMT%%++%% (Complexity Measures Tool), AQtime (.Net, Java, commercial), dotTrace Performance/Memory, /* Żródła: - [[wp>Profiling_%28computer_programming%29|Profilowanie - Profiling (computer programming)]] */ ===== Projektowanie aplikacji okienkowych (GUI builder) ===== * Visual Studio (Forms, WPF), Microsoft Expression Blend * Eclipse (wtyczki) * NetBeans (Java, SWING, project Matisse; C%%++%% wsparcie dla Qt) * biblioteka Qt (Qt Creator, Qt Designer), Glade (GTK), Tk (framework) Wikipedia: [[wp>Graphical_user_interface_builder|GUI Builder]] [[wppl>Rapid_Application_Development|Rapid Application Development]] ===== Tworzenie aplikacji GNU Linux ===== * gcc * make * gettext * Autotools (Autoconf, Automake, Libtool) * inne : ltrace, objdump, strace, nm, ld Wikipedia: [[wp>GNU_Build_Tools|GNU Build Tools]] ===== Systemy kontroli wersji ===== * Subversion (svn) * Toroise (MS Windows) * VisualSVN, AnkhSVN dla VS * Eclipse (Subversive), NetBeans (wbudowane, także CVS, Mercurial) * Git, Mercurial (rozproszony system kontroli wersji) * TFS * inne Żródła: [[wp>/Comparison_of_revision_control_software|Comparison of revision control software]] {{http://better-scm.shlomifish.org/comparison/comparison.html|Version Control System Comparison}} /* Żródła:\\ - [[http://svnbook.red-bean.com/|Version Control with Subversion]]\\ - [[http://wazniak.mimuw.edu.pl/index.php?title=%C5%9Arodowisko_programisty/Zarz%C4%85dzanie_wersjami_-_Subversion|Zarządzanie wersjami - Subversion]] - Krzysztof Ciebiera — Uniwersytet Warszawski \\ - [[wppl>System_kontroli_wersji|Systemy kontroli wersji]] - [[wp>Trac]] - [[wp>Revision_control|Revision control|]] */ ===== Tworzenie dokumentacji ===== Narzędzia wspierające tworzenie dokumentacji: * Dokumentacja kodu w Visual Studio * JavaDoc * inne : doxygen, [[wp>TwinText]] Wikipedia: [[wp>Documentation generator]] [[wp>Comparison of documentation generators]] ===== Testowanie kodu i aplikacji ===== * Unit testing using Visual Studio (VS Professional ), NUnit, XUnit * Eclipse TPTP (Test and Performance Tools Platform), NetBeans wbudowane * inne : JUnit, CPPUnit Emma coverage tool (Java) * Makro Assert (C,PHP) * Narzędzia do automatyzacji testów /* Żródła: - [[wp>Unit_testing|Unit testing]] - [[wp>List_of_unit_testing_frameworks]]\\ - [[wp>Code coverage]] - [[http://www.opensourcetesting.org/|Open Source Software Testing Tools]]\\ - [[http://www.aptest.com/resources.html#app-func|Software QA Testing and Test Tool Resources]]\\ - [[wp>Software testing]] - http://wazniak.mimuw.edu.pl/index.php?title=Io-10-wyk-toc, http://wazniak.mimuw.edu.pl/index.php?title=Io-11-wyk-toc */ ===== UML ===== * diagramy klas, użycia, ... * inżynieria wstecz/wprzód * VS2010 Ultimate, umbrello (wymaga KDE), dia (wymaga GTK), ArgoUML, MS Visio Wikipedia: [[wp>List_of_Unified_Modeling_Language_tools]] ===== Aplikacje Mobilne ===== * Android: Eclipse, [[http://www.jetbrains.com/idea/|IntelliJ IDEA]], [[https://kenai.com/projects/nbandroid|Project Kenai Android plugin for NetBeans]], MS VS (Mono for Android) * Windows Phone, Windows 8: Visual Studio * iOS: Xcode, AppCode * wieloplatformowe: RhoMobile, PhoneGap, Appcelerator, MoSync, ... * [[http://developer.nokia.com/Devices/Remote_device_access/|Remote device access - Nokia]] ===== Cloud ===== * Cloud IDEs: Eclipse Orion, Cloud9, Codeanywhere, Cloud IDE, Sourcekit, Kodingen * Cloud computing: Windows Azure, Google App Engine (Eclipse plugin), Apache CloudStack, IBM SmartCloud, Amazon Web Services ===== Inne ===== * Dekomilatory i deasemblatory (!?) * [[wp>Software visualization]]: Eclipse Project Dependencies Viewer, CppDepend, NDepend * Automatic programming and code generation : VS, Eclipse, RISE * Narzędzia wspierające zarządzanie projektami i zespołami programistycznymi (Trac, MS TFS) * CASE tools: ClassBuilder (c++) ===== Inne c.d.===== * Raportowanie błędów (Bugtrackery) [[wp>Bug tracking system]] (klient-serwer: Bugzilla, rozproszeone: Fossil, aplikacja hostowana: SourceForge, Google Code, BerliOS ), Team Foundation Server (MS VSTS), [[wp>Comparison of issue-tracking systems]] * Narzędzia bazodanowe: [[wp>Comparison_of_data_modeling_tools]] * Aplikacje web: [[wp>Category:Web development software]], web testing : [[wp>List_of_web_testing_tools]] * [[wp>Duplicate code]] * [[wp>SWIG]] (Simplified Wrapper and Interface Generator) - łączenie języków * Inne ... * ... jakich narzędzi używacie? Pochwalcie się!