Informatyka II
Inżynieria oprogramowania
Inżynieria oprogramowania
dr inż Jacek Reiner
dr inż Jacek Reiner
na podstawie
„Industrielle Software Entwicklung fur Ingenieure”
itm - Lehrstuhl für Informationstechnik im Maschinenwesen
prof. Klaus Bender; prof. Frank Schiller
itm & MVLab (C) 2007-08
2
Wykład 1 – part a: Motywacja
Motywacja – po co inżynierowi mechanikowi
oprogramowanie?
Cele i zakres wykładu
Organizacja
Zespół
Dlaczego obiektowość?
Dlaczego C++
Inżynieria oprogramowania
Kompozycja wykładu
itm & MVLab (C) 2007-08
3
Znaczenie oprogramowania
w przemyśle
Nowoczesne narzędzia inżynierskie – to
oprogramowanie
Narzędzia projektowania: CAx (CAD, CAM, CAQ, CAPP, ...)
Obliczenia i analizy: FEM, MES, ...
Narzędzia symulacyjne: logistyka, montaż
Testery
Wspomaganie produkcji: PPS, PDM, ...
Wizualizacja: digital mockup, VR
Przetwarzanie danych: Office, SQL
Sieci komputerowe: www
Środowiska rozwoju oprogramowania
itm & MVLab (C) 2007-08
4
Automatyzacja, integracja,
rozszerzalność
Automatyzacja
Dla czynności powtarzających się
Dla wyliczeń (np. umieszczanie elementów po okręgu)
Integracja
Z użytkownikiem – GUI
Z innymi programami lub bazami danych
Rozszerzalność
Nowe funkcje, algorytmy
itm & MVLab (C) 2007-08
5
SolidWorks
API Fundamentals 3days Training
itm & MVLab (C) 2007-08
6
AutCAD
Interfejs użytkownika
itm & MVLab (C) 2007-08
7
ANSYS
Programowe zadawanie warunków symulacji w AnSYS
!AnSYS -model
[…]
VDELE,all
NUMMRG,all
ASBA,11,8,,delete,delete
ASBA,24,7,,delete,delete
ASBA,23,32,,delete,delete
ADELE,29,31,2
ADELE,3,4,1
ADELE,15,25,10
AL,10,11,110
AL,4,109,5
LCOMB,103,104,1 AL,94,5,11,96
AL,95,109,110,26
AADD,16,20
LSTR,31,39 !(L17)
LSTR,27,39 !(L80)
LSTR,35,39 !(111)
LSTR,43,39 !(112)
[…]
itm & MVLab (C) 2007-08
8
SIMUL8
symulacja procesów dyskretnych
itm & MVLab (C) 2007-08
9
AnyLogic
multi-paradigm simulation software
Java Basics for AnyLogic Modelers – presentation
• What you do and do not need to learn about Java to be
successful with AnyLogic
• Java syntax basics
• Primitive data types
• Arithmetic and Boolean operations
• Classes, methods and fields
• Writing algorithms, Java statements
• Most frequently used functions built into AnyLogic
• Java collections
• Using standard and specific Java packages
itm & MVLab (C) 2007-08
10
Zemax
Inżynieria optyczna
Automatyzacja
Język sktyptów
Import modeli CAD
Integracja
VB, Excel, Matlab
Rozszerzalność
Nowa, specyficzna
refleksyjność powierzchni (dll)
itm & MVLab (C) 2007-08
11
Vision Assistent vs. LabView
Klikanie czy programowanie?
itm & MVLab (C) 2007-08
12
Zakres kursu Informatyka II
Rozwój SW dla PC
Kategorie oprogramowania
Zawężenie do OO
Procedury postępowania
Implementacja C++
Potrzeby inżynierów
budowy maszyn
Przykłady praktyczne
Umiejętność
wykorzystywania metod,
technik i narzędzi
informatycznych
itm & MVLab (C) 2007-08
13
Cel kursu
Przekazanie wiedzy
Umiejętność dołączenia do
dyskusji
Znajomość pojęć fachowych
Uporządkowanie tematów i
pojęć
Rozszerzenie horyzontów
Przekazanie
umiejętności
Samodzielne rozwiązywanie
problemów
programistycznych
Podejście systemowe
UML
C++
itm & MVLab (C) 2007-08
14
Organizacja kursu
7 wykładów dwugodzinnych
Zaliczenie pisemne
15 Laboratoriów
Informatyka I (dr. inż W.Myszka) – to już wiemy !!!
http://www.immt.pwr.wroc.pl/~myszka/InformatykaI/
Obecności (patrz Regulamin studiów)
Przygotowanie – kartkówki
Większy programik na zaliczenie:
weryfikacja umiejętności „proszę zmień ... coś ...”
itm & MVLab (C) 2007-08
15
Zespół
Piotr Szeplik dr inż.
Piotr.Szeplik@pwr.wroc.pl
Mariusz Mrzygłód mgr inż.
Mariusz.Mrzyglod@pwr.wroc.pl
Jacek Reiner dr inż.
B4/3.12
Jacek.Reiner@pwr.wroc.pl
Maciej Stankiewicz mgr inż.
Maciej.Stankiewicz@pwr.wroc.pl
Dariusz Tryba mgr inż.
Dariusz.Tryba@pwr..wroc.pl
itm & MVLab (C) 2007-08
16
Strona Internetowa
http://student.mvlab.pl
Pracownia Mechatroniki
i Systemów Wizyjnych
Oprogramowanie do inspekcji
wałeczków łożysk: ok. 10KLC C++
Laserowy pomiar płaskości i bicia
dysków pił: LabView
Wybrane narzędzia:
- VC++ 6.0/2005 + OpenCV
- Halcon
- LabView
- Matlab+16 Toolboxów
- MathCAD
itm & MVLab (C) 2007-08
17
Zawartość tematyczna
wykładu
Podstawy
obszary zastosowań,
metody programowania,
języki programowania,
Metody i procedury
z naciskiem na obiektowość i UML,
Programowanie obiektowe w C++
itm & MVLab (C) 2007-08
18
Paradygmaty programowania
Paradygmat
to nadrzędna zasada lub sposób myślenia.
Paradygmat programowania
To nadrzędna zasada lub sposób opracowywania
oprogramowania dla osiągnięcia określonego
celu.
Problem
Paradygmat
Rozwiązanie
itm & MVLab (C) 2007-08
19
Programowanie
proceduralne/imperatywne
Programowanie proceduralne to paradygmat programowania
zalecający dzielenie kodu na procedury, czyli fragmenty
wykonujące ściśle określone operacje. Procedury nie powinny
korzystać ze zmiennych globalnych (w miarę możliwości), lecz
pobierać i przekazywać wszystkie dane (czy też wskaźniki do nich)
jako parametry wywołania.
Programowanie imperatywne to paradygmat programowania, który
opisuje proces wykonywania jako sekwencję instrukcji
zmieniających stan programu. Programy imperatywne składają się
z ciągu komend do wykonania przez komputer. Powszechnie
programowanie imperatywne uważane jest za synonim
programowania proceduralnego.
Przykład programu: funkcja silnia – C
unsigned long int silnia(int x) {
if (x==0) return 1; else return x*silnia(x-1); }
Kod źródłowy: formułowany jako sekwencja poleceń
Przykłady: Pascal, C, Fortran
itm & MVLab (C) 2007-08
20
Programowanie obiektowe
Programowanie obiektowe (ang. object-oriented programming) -
paradygmat tworzenia programów komputerowych, który
definiuje programy za pomocą "obiektów" - elementów
łączących stan (czyli dane) i zachowanie (czyli procedury, tu:
metody). Obiektowy program komputerowy wyrażony jest jako
zbiór takich obiektów, komunikujących się pomiędzy sobą w
celu wykonywania zadań.
Przykład programu: wyświetlanie modułu liczby zesp. – C++
double mod;
Zesp lz1(3,20);
mod=lz1.modul();
cout<<mod;
Kod źródłowy: definicje budowy obiektów i ich działania oraz
współpracy między sobą.
Przykłady: Java, C++, VB.net, C#, Smalltalk, Delphi
itm & MVLab (C) 2007-08
21
Dlaczego obiektowość?
Najczęstszy paradygmat projektowania i programowania PC
Mechanizmy dla efektywnej obsługi i wyłapywania błędów
Wsparcie dla
pracy grupowej
Przejrzysta organizacja interfejsu
Łatwa rozbudowa i personalizacji rozwiązań
Możliwość wielokrotnego wykorzystania komponentów
Opanowanie złożoności
itm & MVLab (C) 2007-08
22
Dlaczego C++?
(a nie Java, C#, Smaltalk, VB, ...)
Bazuje na C
Możliwość
ponownego
użycia
Potężny
Efektywny i
wydajny
czasowo
Szeroko
rozpowszechn.
w przemyśle
C++
Sterowniki i biblioteki do kart
I/O, Motion, Framegrabber, etc
tzw. programowanie przy sprzęcie
Bazy wiedzy
Listy dyskusyjne
Literatura przykłady
itm & MVLab (C) 2007-08
23
Ograniczenia zakresu kursu
Czyli czym nie będziemy się zajmować
Informatyka:
Systemy bazodanowe
Efektywne/wydajne algorytmy
Grafika i wizualizacja (multimedia)
Informatyka teoretyczna
Języki formalne
Sieci komputerowe i web
Automatyzacja
Sterowniki PLC, OSN, roboty
Systemy czasu rzeczywistego
Systemy wbudowane i mikroprocesory
Sterowanie i regulacja, identyfikacja
itm & MVLab (C) 2007-08
24
Rola inżynierów mechaników
w rozwoju oprogramowania
Zleceniodawca
Określanie wymagań
systemu
Systemy CA-x
Narzędzia
symulacyjne
Duże systemy
software’owe
Zwykle kierownik
projektu
Wiedza o procesie
technologicznym
Systemy
produkcyjne
Systemy
transportowe
Programy dla
systemów
technicznych
Zleceniodawca
Wykonawca
Przeprowadzanie
pomiarów,
Małe aplikacje do
obsługi urządzeń
Małe aplikacje
Rola inżyniera
Przykład
Kategoria
itm & MVLab (C) 2007-08
25
Badania: Koszty rozwoju
Systemy wbudowane i oprogramowanie przemysłowe
Wynik ankiety w niemieckich
przedsiębiorstwach
przemysłowych, 2003
Q: Jak wysokie są Wasze
koszty rozwoju oprogramowania
w porównaniu z całkowitymi
kosztami rozwoju?
- dla około połowy to 30-60%
itm & MVLab (C) 2007-08
26
Zapotrzebowanie na procedury
postępowania
(Standish Group 1995)
Tylko 9% dużych, 16%-28% małych i średnich
projektów jest realizowanych zgodnie z
czasem i kosztorysem
53% wszystkich projektów po zakończeniu
przekracza budżet o ok. 50%
31% wszystkich projektów jest przerywanych
Amerykańskie przedsiębiorstwa w roku 1995
zainwestowały ponad 81 miliardy dolarów w
niezakończone projekty
itm & MVLab (C) 2007-08
27
Badania: Royal Academy of Engineering
i British Computer Society (2004)
Straty szacowane na poziomie 130 miliardów
EURO (USA) i 120 miliardów EURO (EU)
Przyczyny:
Brak profesjonalizmu w branży IT-Industrial
Niedostateczne umiejętności odpowiedzialnych
Niedostateczna wiedza i umiejętności programistów
Brak lub kiepska specyfikacja
Uczenie na własnych błędach
Konieczność prowadzenia projektów IT jak
innych projektów inżynierskich
Odpowiedzialność Uczelni Technicznych
itm & MVLab (C) 2007-08
28
Podejście metodyczne
Systemowość
Powód:
Niejasne wymagania
Kiepska komunikacja
Zbyt późna integracja
Niepełny model procesu
Braki w zapewnieniu jakości
Wniosek:
Projektowanie oprogramowania nie jest zadaniem trywialnym
Inżynierskie, systematyczne podejście do problemu zwiększa
prawdopodobieństwo sukcesu (Inżynieria oprogramowania)
Metody ugruntowane w mechanice mogą okazać się przydatne w
rozwiązywaniu problemów typowo mechanicznych.
itm & MVLab (C) 2007-08
29
Szacowanie nakładów
Umiar w nakładach metodycznego postępowania
znajdować dla każdego projektu!!!
Więcej nie znaczy lepiej -> Over engineering
Rozmia
r projekt
u
Prioryt
et
Złożoność
Zasob
y
Procedury
Metody
itm & MVLab (C) 2007-08
30
Wydajność a jakość
Usuwanie błędów prowadzi do zwiększenia nakładów.
Spełnienie rozległych wymagań jakościowych również podnosi
pracochłonność i koszty
Nakłady
na lep
sze jako
ściowo
oprogramo
wanie
Oszczę
dności
osiągn
ięte
dzięki
lepszemu
oprog
ramow
aniu
(mniejsze
straty)
itm & MVLab (C) 2007-08
31
Struktura wykładu
Motywacja
Podstawy
Metody i sposoby
postępowania
C++
itm & MVLab (C) 2007-08
32
itm & MVLab (C) 2007-08
33
Wykład 1 – part b
Obszary zastosowań
oprogramowania
Komunikacja zewnętrzna
Paradygmaty programowania
itm & MVLab (C) 2007-08
34
Obszary zastosowań
oprogramowania
Systemy wbudowane
(embedded)
Bazy danych i servery
komputery PC
Automatyzacja
WEB
itm & MVLab (C) 2007-08
35
Oprogramowanie bazujące na
PC
Do tej grupy zaliczmy aplikacje dla zwykłych komputerów (PC,
Mac) i systemów operacyjnych (Windows, Linux, …). Chodzi tu
także o pojedyncze zastosowania, korzystające z dużej ilości
dostępnych w OS funkcji i interfejsów
Przykłady:
Office, Gry, Programy multimedialne, Programy inżynierskie
Cechy i wymagania:
Kompatybilność
Windows: VISTA, XP, 2000, NT, ME, ...;
LINUX: Ubuntu, Mandriva, OpenSUSE, Debian, Fedora,
Slackware, Gentoo, MEPIS, Aurox, PLD, Knoppix, ...;
BSD: DesktopBSD, FreeBSD, NetBSD, OpenBSD, ...
Szeroki zakres dostępnych funkcji: okna, multimedia, sterowniki.
itm & MVLab (C) 2007-08
36
Bazy danych
Baza danych to trwały, systematycznie ustrukturyzowany
zbiór informacji, powiązanych zależnościami.
System zarządzania BD służy do:
zapisywania,
pozyskiwania,
ustalania relacji i połączeń między zasobami bazy,
wyodrębniania podzbiorów.
Przykłady:
katalog części samochodowych, katalog książek w
bibliotece
baza pacjentów, baza studentów
konto bankowe
Cechy i wymagania:
łatwe pozyskiwanie wymaganych podzbiorów danych.
Konsystencja, redundancja, wielodostęp,
Ochrona dostępu (security) i bezpieczeństwo (safety).
itm & MVLab (C) 2007-08
37
Ogólnoświatowa sieć komputerowa –największy zbiór
połączonych ze sobą komputerów umożliwiający swobodną
wymianę danych i ich prezentację, między nimi, za pomocą
następujących usług:
WWW,
Poczta elektroniczna (e-mail),
Transfer plików (FTP).
Cechy i wymagania:
ogromna ilość dostępnych technologii (i języków
programowania),
szybki rozwój i poszerzenie obszaru zastosowań,
kompatybilność dzięki standaryzacji usług
(W3C).
Web / Internet
itm & MVLab (C) 2007-08
38
Systemy wbudowane
(embedded)
Definicja:
System mikrokomputerowy zintegrowany z urządzeniem
Z zewnątrz nie widać że jest ono sterowane syst. komputerowym,
Komputer połączony z resztą urządzenia za pomocą sensorów i
układów wykonawczych
Komputer jest w urządzeniu jednostką sterującą i/lub nadzorującą
Przykłady:
Telefony komórkowe,
Pralki,
Samochody
Cechy:
Bezpieczeństwo i niezawodność (Fail-Safe),
Ograniczone wymagania na zasoby (pamięć, CPU, etc),
Zdolność do pracy w czasie rzeczywistym,
Brak typowego interfejsu człowiek-maszyna (klawiatura,
monitor, ...)
Rozbudowane moduł wejść/wyjść (I/O).
itm & MVLab (C) 2007-08
39
Automatyzacja
Definicja:
Automatyzacja oznacza stosowanie urządzeń technicznych,
zapewniających:
samodzielny przebieg procesów technicznych (wytwórczych),
samodzielne działanie urządzeń, maszyn (oraz ich zespołów) i
innych układów technicznych.
Przykłady:
Procesy dyskretne (obróbkowe, montażowe)
Procesy ciągłe (chemiczne, spożywcze, )
Cechy i wymagania:
Bezpieczeństwo i niezawodność (Fail-Safe),
Zdolność do pracy w czasie rzeczywistym,
Brak typowego interfejsu człowiek-maszyna (klawiatura, monitor)
Rozbudowane moduły wejść/wyjść (I/O – cyfrowe, analogowe).
itm & MVLab (C) 2007-08
40
Komunikacja -
Systemy wbudowane (ES)
Połączenie w sieć ES i urządzeń sterujących dla systemów
mechatronicznych.
Przykład:
W nowoczesnych samochodach jest ok. 50-100 systemów sterowania
spiętych w sieć za pomocą różnych interfejsów (CAN, LIN, MOST).
CAN (Controler Area Network)
Stosunkowo tani Fieldbus dla zastosowań o wysokich wymaganiach
czasowych,
Łączenie w sieć sterowników, sensorów i urządzeń wykonawczych
CAN został opracowany przez BOSCH m. in. dla zastosowań w
branży samochodowej.
Komunikacja rozgłoszeniowa
Otwarta struktura magistrali
(odłączenie jednego urządzenia od sieci
nie powoduje przerwania komunikacji
pomiędzy pozostałymi)
itm & MVLab (C) 2007-08
41
AS Interface
Najprostszy z przemysłowych protokołów
komunikacyjnych sprawdzający się w maszynach o dużej
ilości czujników i elementów wykonawczych.4 Byte
danych/ 32(64) węzły i zasilanie
PROFIBUS
Szybki i najbardziej popularny typ sieci przemysłowych
który umożliwia łączenie sterowników z elementami
wykonawczymi w architekturze master-slave. Umożliwia
przesyłanie telegramów o długości do 235Byte.
Przemysłowy Ethernet (np. ProfiNet)
Zastosowanie standardu Ethernet w przemyśle, dzięki
czemu można korzystać z tanich i szeroko dostępnych
urządzeń i zwiększyć przepustowość sieci, korzystając
jednocześnie z architektury peer-to-peer.
Komunikacja - Automatyzacja
itm & MVLab (C) 2007-08
42
Przegląd komunikacji
heterogenicznej
Wbudowane
Bazy danych
Automatyzacja
WEB
komputery PC
itm & MVLab (C) 2007-08
43
Embedded i automatyzacja
Systemy embedded są bardzo często wykorzystywane w
układach automatyki przemysłowej, tj. układ automatyki składa
się z urządzeń z sterownikami wbudowanymi.
Komponent układu automatyki może być programowany jeśli
urządzenie i software embedded dysponuje odpowiednimi
łączami.
Sterowanie napędu
(komponent układu automatyki)
Program sterujący
System oper.
Programowalny system embedded zabudowany w serwonapędzie.
itm & MVLab (C) 2007-08
44
Automatyzacja i PC
z bazami
danych
Klasyczne rozwiązanie stanowisk kontrolnych i centrów sterowania
Interfejs człowiek-maszyna do obsługi linii produkcyjnych z
przyjaznym i wygodnym w obsłudze środowiskiem realizowanym
przez komputer PC
Dodatkowo rozwiązanie umożliwia zapisywanie w bazach danych
stanu maszyn, archiwizację przebiegu procesów itd.
Stanowisko kontrolne
Widok wizualizacji procesu
itm & MVLab (C) 2007-08
45
Baza Danych – PC / WEB
Dla komfortowego odpytywania informacji
przechowywanych w bazach danych
Przykłady
Bazy adresowe, systemy produkcyjne SAP
Dla zdalnego dostępu do informacji
bazodanowych
Przykłady
Konto eBankowe,
zapisy na kursy, artykuły elektroniczne
itm & MVLab (C) 2007-08
46
WEB i Automatyzacja/ES
W coraz większej liczbie układów automatyki przemysłowej i
systemów embedded stosowane są web serwery. Popularne
zastosowania obejmują także automatykę użytkową, np. w tzw.
„inteligentnych” budynkach mieszkalnych.
Możliwości:
Zdalne (przez Internet lub intranet – WWW)
nadzorowanie procesów,
sterowanie urządzeń i procesów,
diagnozowanie problemów,
usuwanie błędów oprogramowania,
wizualizację pracy urządzeń.
Problemy:
Bezpieczeństwo procesu
(dostęp do sterowania),
Bezpieczeństwo danych produkcyjnych
(wgląd w linię produkc.)
itm & MVLab (C) 2007-08
47
Podsumowanie
Informatyka (technologie informacyjne – IT) są
nieodłącznym elementem dzisiejszego codziennego
życia
Ilość zastosowań IT ciągle wzrasta
Oprogramowanie i jego rozwój mają istotne
znaczenie w dzisiejszym świecie
Wzrastająca ilość zadań dla inżynierów
Mnogość różnych zadań do zaimplementowania
powoduje zapotrzebowanie na różne, optymalne dla
nich paradygmaty i języki programowania.