5. Előadás 1. rész Műszaki informatika
Előző órán Rendszerszintű és segédszoftverek Vírusölők, kémelhárító szoftverek Tűzfalak Titkosítók és e-szignók Tömörítők Irodai alkalmazások PDF
Óravázlat Szoftverfejlesztés általában Objektum-orientáltság Programozási nyelvek Mesterséges intelligencia CAD-rendszerek Számítógépes grafika Digitális képfeldolgozás
Miért beszélünk a programozásról? Steve Jobs szerint: “Learning to program teaches you how to think. Computer science is a liberal art.”
Szoftverfejlesztés (software engineering) Definíció: tudományos eredmények és módszerek alkalmazása a valós problémák számítógéppel támogatott megoldásában Ágai: Rendszerfejlesztés (system engineering) Információfeldolgozás (information engineering) Tudásalapú információfeldolgozás (knowledge engineering)
Vízesés-modell
V-modell
Szoftverfejlesztési eszközök Módszer/módszertan: Számos, pl. SSADM, OOSD Gyors fejlesztés: Rapid Application Development (RAD), Rapid Prototyping (RP) Fejlesztői környezet: Sokféle, általános elnevezés: IDE (Integrated Development Environment) Fejlesztőkészletek: SDK (Software Development Kit) API (Application Programming Interface)
Microsoft IDE
Eclipse IDE
Arduino IDE
SSADM Structured System Analysis and Design Method Szabvány vagy ajánlás Jellemzői: Termékorientált Elvárásnak megfelelés igénye (együttműködés a felhasználóval) Erőforrás-kihasználás Elkülönülő logikai és fizikai tervezés Dokumentálás
OOSD Object Oriented Software Design (Object Oriented Programming – OOP) Alapelvek: Egységbezárás (encapsulation) Öröklés (inheritance) Polimorfizmus (polymorphism) Elemek: Osztály (class) – Példány (instance) www.gamemaker.nl
Game Maker
Objektum-osztályok Szuperosztály – osztály Elemei: Név Adatok, állapotok (argumentumok) Tagfüggvények (metódusok) Konstruktor-destruktor
CASE Computer Aided Software Engineering (Számítógéppel segített szoftverfejlesztés) Elemei: Probléma-definiálás, - elemzés Tervezés, modellezés Tesztelés, követés,karbantartás Dokumentálás, ellenőrzés, összehasonlítás UML
UML Unified Modeling Language Vizuális modellezés szimbólumrendszerrel Fontosabb diagramok (pl.): Osztálydiagram (class diagram) Komponensdiagram (component diagram) Állapotdiagram (state space) Használati eset diagram (use case)
Újrafelhasználhatóság Megtervezett vagy kidolgozott modellelemek ismételt felhasználásra Repository Programozás „mintázattal” (program patterns)
Programozási példák Nem algoritmus áttekintés! Makró programozás A Windows alatti programozás Programozás a web számára
Makró programozás (MS Word) A példa: kijelölés megvastagítása
Még hasznos makrók Példa kiadványszerkesztés: Springer LNCS sablon
Fordító? Értelmező? Fordító (compiler): a forráskód közvetlen gépi végrehajtásra alkalmassá tétele Szerkesztő (linker): objektumkód, könyvtárak, erőforrások összeszerkesztése Értelmező (interpreter): fordítás+szerkesztés+végrehajtás
„Fordítós” fejlesztés
Egyszerű programfutás Indítás Utasítások szekvenciális (!) végrehajtása Befejezés
Futtatás Windows alatt Eseményvezérelt (!) program MFC-elemek a GUI-hoz
Microsoft Foundation Classes Előre elkészített OO elemkönyvtár Cél: főként a grafikus felület elkészítése
Android rendszer-architektúra
Programozás Wizard-dal Megjegyzések (pl. TODO) elhelyezése Alapértelmezések beállítása Minimális funkcionalitás biztosítása Paraméter-állítás GUI-n keresztül Változó és függvénykezelés
Hatékony fejlesztői eszközök Debugger - Hibakereső Profiler – Teljesítmény-mérő SourceSafe – Verziózó és kódarchiváló InstallShield – Telepítőkészlet varázsló Visual Modeler – objektum-modellező (UML)
Programozási nyelvek története Plankalkül (1944) Fortran (1954): FORmula TRANslator Algol (1958) Basic (1964): Beginners All-purpose Standard Instruction Code Lisp (1969): LIst Processing C (1972) Pascal (1973) C++ (1980) Java (1990) Visual Basic (1994)
Programozási nyelvek csoportjai Imperatív, procedurális nyelvek: C, C++, Fortran, Algol, Pascal, Cobol… Applikatív, funkcionális nyelvek: Lisp… Objektumorientált nyelvek: Ada, Modula, Simula, Smalltalk, Java… Szabály alapú, logikai nyelvek: Prolog… Vizuális programozás: LabView, Simulink, VPL, NXT…
Vizuális programozási példák
Top 10 programozási nyelv
Nyelvi elemek Vezérlési szerkezetek: Típusok Alprogramok Ciklusok, elágazások, vezérlésátadás Típusok Elemi: skalár, mutató Összetett Alprogramok
Egy példa: for-ciklus Pascal: for i:=0 to n do (lépés=1!) Basic: for i=0 to n step m C: for(i=0;i<n;i+=m) Matlab: for i=0:m:n
Operátortípusok Infix: Prefix: Postfix: b * b – 4 * a * c Sub(Mul(b,b), Mul(4,Mul(a,c))) Postfix: b b * 4 a c * * -
Web-programozás Cél: a weben elérhető (megnövelt) funkcionalitás (pl. dinamikus oldal) Eszköz: HTML + programnyelv Programnyelv: Általános célú: pl. C++ Script: pl. VBScript Speciális: pl. PHP
Web-es programnyelvek Java – Applet, Script… Perl (Practical Extraction Report Language) CGI (Common Gateway Interface) PHP (PHP Hypertext Preprocessor) VBScript HTML - VRML
PHP példa
Web-program
Algoritmus Definíció: előírás, amely adott feladattípus megoldásához szükséges műveletek megfelelő sorrendű összessége Jellemzői: Hatásosság (feladatkörök bővítése) Hatékonyság (idő-tár használat) Komplexitás (méretnövekedés hatása)
Mesterséges intelligencia (Artificial Intelligence – AI) Fejezetei: Neurális hálózatok (ANN) Fuzzy logika Genetikus algoritmusok (GA), programozás (GP) Következtető rendszerek: Szemantikus hálók, tételbizonyítók, logikai programnyelvek,valószínűségi hálók, szakértői rendszerek (ES) Hibrid megoldások
Wumpus-játék Objektumok: „Érzékelés”: Cél: Gödör, Wumpus, arany Fény, bűz, szél Cél: Megtalálni az aranyat rövid úton
Stratégiai játék
A CAD feladata Alapvetően: (Computer Aided Design) számítógéppel segített tervezés (!):2D-3D Szolgáltatások: Drótvázas geometria képzés 3D parametrikus alaksajátosságon alapuló modellezés, szilárdtest modellezés Szabad formájú felületmodellezés Műszaki rajz készítés a szilárdtest modellből Tervrészletek újbóli felhasználása Szabványos alkatrészek automatikus generálása Műhelyrajzok és darabjegyzékek készítése Alkatrészek és összeállítások könyvtárának kezelése Ábrázolási segítségek biztosítása (sraffozás, elfordítás, takart vonalak eltávolítása stb.) …
CAD-kapcsolatok CAM (Computer Aided Manufacturing): Gyártás, pl. NC-programozás, CNC-vezérlés CAE (Computer Aided Engineering): Elemzés, pl. végeselem-módszerek (FEM), áramlástani szimulációk (CFD), kinematika, optimalizálás CIM (Computer Integrated Manufacturing): Mindenféle gyártási fázisban alkalmazott számítógépek, pl. raktározás, erőforrás-tervezés stb.
Top 10 AEC (világszerte) Autodesk Bentley Systems Intergraph Nemetschek AVEVA Group Fukui Computer Fujitsu Tekla Tririga Graphisoft Group Architecture Engineering Construction Forrás: Gartner Group, Nemetschek
Néhány gyakori CAD-rendszer Általános célú: Autodesk AutoCAD Bentley MicroStation Speciális: Graphisoft ArchiCAD Siemens SiCAD Intergraph SolidEdge SewCAD Pro/ENGINEER
2D-s CAD rendszer BME K épület II. emelet Északi szárny
3D-s CAD rendszer