INKS105 ( INK9117 ) Podstawy inżynierii oprogramowania



Podobne dokumenty
SVN. 10 października Instalacja. Wchodzimy na stronę i pobieramy aplikację. Rysunek 1: Instalacja - krok 1

Zasady organizacji projektów informatycznych

Egzamin / zaliczenie na ocenę*

Cykle życia systemu informatycznego

Etapy życia oprogramowania

Etapy życia oprogramowania. Modele cyklu życia projektu. Etapy życia oprogramowania. Etapy życia oprogramowania

Przedsięwzięcia Informatyczne w Zarządzaniu

Wykład 1 Inżynieria Oprogramowania

Projektowanie oprogramowania cd. Projektowanie oprogramowania cd. 1/34

Inżynieria oprogramowania

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK PO PRZEDMIOCIE

TENDENCJE ROZWOJU GIS

INŻYNIERIA OPROGRAMOWANIA

Co to jest jest oprogramowanie? 8. Co to jest inżynieria oprogramowania? 9. Jaka jest różnica pomiędzy inżynierią oprogramowania a informatyką?

Uniwersytet w Białymstoku Wydział Ekonomiczno-Informatyczny w Wilnie SYLLABUS na rok akademicki 2012/2013

MODELE CYKLU ŻYCIA OPROGRAMOWANIA (1) Model kaskadowy (często stosowany w praktyce do projektów o niewielkiej złożonoś

Tematy seminariów wg Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, Zofia Kruczkiewicz

Nazwa przedmiotu: MODELOWANIE I ANALIZA SYSTEMÓW INFORMATYCZNYCH. Modeling and analysis of computer systems Forma studiów: Stacjonarne

Wytwórstwo oprogramowania. michał możdżonek

Zakres wykładu. Podstawy InŜynierii Oprogramowania

KARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Inżynieria oprogramowania, C12

Ogólne określenie wymagań. Ogólny projekt. Budowa systemu. Ocena systemu. Nie. Tak. System poprawny. Wdrożenie. Określenie.

Inżynieria oprogramowania I

Błędy procesu tworzenia oprogramowania (Badania firmy Rational Software Corporation)

Grupa treści kształcenia, w ramach której przedmiot jest realizowany Przedmiot kierunkowy

KARTA MODUŁU KSZTAŁCENIA

Inżynieria Oprogramowania. Inżynieria Oprogramowania 1/36

Zakład Języków Programowania Instytut Informatyki Uniwersytet Wrocławski

Narzędzia CASE dla.net. Łukasz Popiel

In ż ynieria oprogramowania wykład II Modele i fazy cyklu życia oprogramowania

Praktyka testowania dla początkujących testerów

Tematy seminariów wg Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, Zofia Kruczkiewicz

Jarosław Żeliński analityk biznesowy, projektant systemów

INFORMATYKA. PLAN STUDIÓW NIESTACJONARNYCH 1-go STOPNIA STUDIA ROZPOCZYNAJĄCE SIĘ W ROKU AKADEMICKIM 2015/16. zajęć w grupach A K L S P

Wykład 7. Projektowanie kodu oprogramowania

Inżynieria oprogramowania (Software Engineering) Wykład 1

Podsumowanie wyników ankiety

Wprowadzenie do metodologii modelowania systemów informacyjnych. Strategia (1) Strategia (2) Etapy Ŝycia systemu informacyjnego

Spis treści. Analiza i modelowanie_nowicki, Chomiak_Księga1.indb :03:08

Opis metodyki i procesu produkcji oprogramowania

Inzynieria Oprogramowania 2... nazwa przedmiotu SYLABUS A. Informacje ogólne. Wydział Ekonomiczno-Informatyczny w Wilnie

INFORMATYKA PLAN STUDIÓW NIESTACJONARNYCH. Podstawy programowania Systemy operacyjne

Projektowanie systemów informatycznych. wykład 6

INŻYNIERIA OPROGRAMOWANIA

Modelowanie i analiza systemów informatycznych

INFORMATYKA. PLAN STUDIÓW NIESTACJONARNYCH INŻYNIERSKICH 1-go STOPNIA STUDIA ROZPOCZYNAJĄCE SIĘ W ROKU AKADEMICKIM 2018/19.

INFORMATYKA PLAN STUDIÓW NIESTACJONARNYCH (W UKŁADZIE ROCZNYM) STUDIA ROZPOCZYNAJĄCE SIĘ W ROKU AKADEMICKIM

Informatyka II stopień (I stopień / II stopień) ogólnoakademicki (ogólno akademicki / praktyczny) kierunkowy (podstawowy / kierunkowy / inny HES)

tel. (+48 81) /22 fax (+48 81) Wykład Ćwiczenia Laboratorium Projekt

Maciej Oleksy Zenon Matuszyk

Główne składowe przedsiębiorstwa: procesy,technologia, ludzie, organizacja.

INFORMATYKA. PLAN STUDIÓW NIESTACJONARNYCH 1-go STOPNIA STUDIA ROZPOCZYNAJĄCE SIĘ W ROKU AKADEMICKIM 2016/17. zajęć w grupach A K L S P

KARTA PRZEDMIOTU. 1) Nazwa przedmiotu: INŻYNIERIA SYSTEMÓW I ANALIZA SYSTEMOWA. 2) Kod przedmiotu: ROZ-L3-20

PRZEWODNIK PO PRZEDMIOCIE

INFORMATYKA. PLAN STUDIÓW STACJONARNYCH INŻYNIERSKICH 1-go STOPNIA STUDIA ROZPOCZYNAJĄCE SIĘ W ROKU AKADEMICKIM 2018/19.

Projektowanie oprogramowania. Wykład Weryfikacja i Zatwierdzanie Inżynieria Oprogramowania Kazimierz Michalik

Zaawansowane programowanie w języku C++

Waterfall model. (iteracyjny model kaskadowy) Marcin Wilk

Wstęp do zarządzania projektami

Projekt systemu informatycznego

KIERUNKOWE EFEKTY KSZTAŁCENIA

E-1IZ s2. Informatyka II stopień (I stopień / II stopień) ogólnoakademicki (ogólno akademicki / praktyczny)

Wstęp do zarządzania projektami

MODELE CYKLU śycia OPROGRAMOWANIA

Oceny z prezentacji INKU011S. Zofia Kruczkiewicz

Efekt kształcenia. Ma uporządkowaną, podbudowaną teoretycznie wiedzę ogólną w zakresie algorytmów i ich złożoności obliczeniowej.

Model referencyjny doboru narzędzi Open Source dla zarządzania wymaganiami

Procesy wytwarzania oprogramowania Specyfikacja i projektowanie oprogramowania

Wprowadzenie, podstawowe pojęcia, projekt a produkt Wykład1

DLA SEKTORA INFORMATYCZNEGO W POLSCE

KARTA PRZEDMIOTU. 1. NAZWA PRZEDMIOTU: Zespołowy projekt informatyczny. 2. KIERUNEK: Matematyka. 3. POZIOM STUDIÓW: I stopnia

Inżynieria Oprogramowania w Praktyce

KARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Projekt zespołowy D1_10

WPROWADZENIE DO UML-a

Tematy seminariów wg Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, Zofia Kruczkiewicz

PRZEWODNIK PO PRZEDMIOCIE

Feature Driven Development

Wprowadzenie do systemów informacyjnych

Architektura oprogramowania w praktyce. Wydanie II.

Zagadnienia egzaminacyjne INFORMATYKA. stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

KARTA PRZEDMIOTU. Projekt zespołowy D1_10

Inżynieria oprogramowania - opis przedmiotu

EFEKTY KSZTAŁCENIA DLA KIERUNKU STUDIÓW

INFORMATYKA. PLAN STUDIÓW STACJONARNYCH 1-go STOPNIA (W UKŁADZIE SEMESTRALNYM) STUDIA ROZPOCZYNAJĄCE SIĘ W ROKU AKADEMICKIM A K L S P

INFORMATYKA. PLAN STUDIÓW STACJONARNYCH INŻYNIERSKICH 1-go STOPNIA STUDIA ROZPOCZYNAJĄCE SIĘ W ROKU AKADEMICKIM 2019/2020.

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK PO PRZEDMIOCIE

Inżynieria oprogramowania (Software Engineering)

KIERUNKOWE EFEKTY KSZTAŁCENIA KIERUNEK STUDIÓW INFORMATYCZNE TECHNIKI ZARZĄDZANIA

Kurs programowania. Wykład 12. Wojciech Macyna. 7 czerwca 2017

Podstawy modelowania programów Kod przedmiotu

E-I2SG-2010-s1. Informatyka II stopień (I stopień / II stopień) ogólnoakademicki (ogólno akademicki / praktyczny)

Kod doskonały : jak tworzyć oprogramowanie pozbawione błędów / Steve McConnell. Gliwice, cop Spis treści. Wstęp 15.

KIERUNKOWE EFEKTY KSZTAŁCENIA

Faza strategiczna. Synteza. Analiza. Instalacja. Faza strategiczna. Dokumentacja. kodowanie implementacja. produkt konserwacja

KARTA PRZEDMIOTU. 2. Kod przedmiotu: ZSI. 1. Nazwa przedmiotu: ZARZĄDZANIE SYSTEMAMI INFORMATYCZNYMI

Jarosław Kuchta Dokumentacja i Jakość Oprogramowania. Wymagania jakości w Agile Programming

Podstawy Inżynierii Oprogramowania

Transkrypt:

INKS105 ( INK9117 ) Podstawy inżynierii oprogramowania dr Marek Piasecki Marek.Piasecki@pwr.wroc.pl http://marek.piasecki.staff.iiar.pwr.wroc.pl/dydaktyka/io Celem kursu jest zaprezentowanie aktualnych technik projektowania i modelowania dużych systemów informatycznych oraz problematyki kierowania projektem programistycznym. W ramach kolejnych wykładów omawiane są fazy cyklu życia systemu, metody i narzędzia ich realizacji Zalecana literatura: A. Jaszkiewicz Inżynieria oprogramowania, Helion 1997, 2000. R. Pressman Inżynieria oprogramowania, WNT 2004. I. Somerville Inżynieria oprogramowania, WNT 2003. J. Górski Inżynieria oprogramowania w projekcie informatycznym, MIKOM 1999

PROGRAM WYKŁADU 1. Wstęp. Proces tworzenia Systemów Informatycznych - podstawowe definicje. Źródła i rola inżynierii oprogramowania (kryzys oprogramowania, zakres inżynierii oprogramowania, narzędzia CASE) 2. Pojęcie procesu i projektu (budowy) oprogramowania. Modele cyklu życia oprogramowania (model kaskadowy, realizacja kierowana dokumentami, prototypowanie, model spiralny) 3. Określanie wymagań i analiza. Rodzaje i role notacji wykorzystywanych w fazie analizy, obiektowe i strukturalne metody analizy. 4. Metody projektowania architektonicznego. Projektowanie komunikacji z użytkownikiem. Optymalizacja projektu. 5. Implementacja. Typowe środowiska (języki proceduralne, relacyjne bazy danych, środowiska programistyczne, narzędzia szybkiego wytwarzania aplikacji) 6. Tworzenie dokumentacji. Cele istnienia dokumentacji. Części składowe. Jakość dokumentacji. 7. Weryfikacja i testowanie. Rodzaje testów. Koncepcje testowania względem specyfikacji i względem kodu. Ocena liczby błędów. Bezpieczeństwo oprogramowania. 8. Zarządzanie projektami. Planowanie, analiza ryzyka, standardy, estymacja kosztów, metryki oprogramowania, metody zapewnienia jakości. 9. Zarządzanie konfiguracjami i kontrola wersji. Wybrane narzędzia wspomagające. 10. Podsumowanie wykładu. Kolokwium zaliczeniowe.

WSTĘP Oprogramowanie - zbiór programów komputerowych, procedur, zasad działania i danych. Typowe pytania: Dlaczego tak długo trwa opracowanie oprogramowania? Dlaczego wytworzenie oprogramowania kosztuje tak dużo? Dlaczego nie da się znaleźć wszystkich błędów przed oddaniem oprogramowania klientowi? Dlaczego ciągle mamy trudności w mierzeniu postępu w produkcji oprogramowania? Przybliżony względny koszt naprawy błędu 200 150 100 50 0 wymagania 1 specyfikacja 2 planowanie 3 projektowanie 4 implementacja 10 integracja 30 konserwacja 200 Mity klienta: Ogólne stwierdzenia dotyczące końcowego produktu są wystarczające, by rozpocząć pisanie programu, szczegóły można sprecyzować później. Wprawdzie wymagania ciągle się zmieniają, ale to nie szkodzi, bo oprogramowanie jest elastyczne.

REALIA: 27% projektów powstaje w założonym czasie, budżecie i funkcjonalności 33% projektów przekracza czas, budżet i ma mniejszą funkcjonalność 40% projektów jest przerywanych 53% projektów przekracza koszty o 51% 68% projektów przekracza czas o 51% Produkcja oprogramowania jest procesem składającym się z wielu faz. Kodowanie (pisanie programów) jest tylko jedną z nich, niekoniecznie najważniejszą. Faza strategiczna Faza specyfikacji i analizy wymagań Faza projektowania Faza konstrukcji (implementacji - kodowania) Faza testowania Faza konserwacji

INŻYNIERIA OPROGRAMOWANIA jest działem informatyki zajmującym się wiedzą techniczną dotycząca wszystkich faz cyklu życia oprogramowania. Traktuje oprogramowanie jako produkt, który ma spełniać potrzeby techniczne, ekonomiczne lub społeczne. to zastosowanie systematycznego, zdyscypli-nowanego, ilościowego podejścia do wykonywania, wykorzystywania i konserwowania oprogramowania [IEEE 93] to zastosowanie metod naukowych i matematycznych, dzięki czemu możliwości sprzętu komputerowego stają się użyteczne dla ludzi dzięki programom, procedurom i odpowiedniej dokumentacji [Boehm-S.E. Economics 1981] to wiedza techniczna dotycząca wszystkich faz cyklu życia oprogramowania, której celem jest uzyskanie wysokiej jakości produktu - oprogramowania [Jaszkiewicz-I.O. 1997] dyscyplina, której celem jest przyczynienie się do produkowania oprogramowania o dobrej jakości, oddawanego na czas, mieszczącego się w budżecie i spełniającego potrzeby użytkowników. To konsekwentne stosowanie ustalonych przez naukę i zweryfikowanych w praktyce zasad, metod i środków w pracach nad wytwarzaniem i konserwacją oprogramowania oraz ich organizowanie ze względu na cele ekonomiczno-techniczne.

Dwa kierunki rozwoju Inżynierii Oprogramowania formalny postulujący jak najszersze stosowanie metod formalnych: języków specyfikacji, transformacji, dowodów poprawności. Różne metody dowodzenia, że program spełnia specyfikację: indukcja matematyczna we wszystkich możliwych odmianach; formalna transformacja specyfikacji w spełniający ją program; metody uproszczone - np. logika Hoare'a oparta na niezmiennikach pętli. praktyczny stosujący notacje nie w pełni sformalizowane, graficzne; proponujący metody, w których dużą rolę odgrywa wiedza i doświadczenie ludzkie. Podejście praktyczne w inżynierii oprogramowania jest słabo zintegrowaną stertą dobrych rad na różne okazje. Te rady wynikają: ze starannej obserwacji problemów powstających w trakcie cyklu życiowego oprogramowania, z wielu lat drobiazgowo dokumentowanych doświadczeń, ze zdrowo rozsądkowej refleksji trochę podpartej wiedzą teoretyczną. Cele inżynierii oprogramowania: zorganizowanie prac nad oprogramowaniem, żeby zapanować nad całą tą złożoności i nad wszystkimi etapami życia systemu (nie tylko jego tworzenia na samym początku); wypracowanie standardów jakości porównywalnych do obowiązujących w innych dziedzinach inżynierii; wypracowanie procedur postępowania sprzyjających wysokiej jakości.

KRYZYS OPROGRAMOWANIA lata programy błędy 1950-1960 programy dla siebie 1960-1970 duże systemy 1970-1990 1990-2003 olbrzymie systemy oraz komputery dla mas nic już nie możemy bez komputerów niewielkie błędy kosztowne błędy początki kryzysu wyniszczające błędy uznanie błędów za rzecz zwykłą kryzys oprogramowania w rozkwicie inżynieria oprogramowania nie istnieje rodzi się w rozkwicie niezbędnie potrzebna Symptomy kryzysu oprogramowania: zarówno wytwarzanie, jak i utrzymywanie oprogramowania kosztuje zbyt dużo, oprogramowanie jest zawodne, współdziałanie pomiędzy produktami programistycznymi stanowi poważny problem

Przyczyny kryzysu oprogramowania: Złożoność systemów informatycznych, syndrom współczesnych produktów, przekleństwo ciążące na większości projektów i produktów informatyki. Szybkie zmiany w przemyśle informatycznym (5-7 miesięcy w porównaniu do 5-7 lat w innych dziedzinach) stanowi to powód do frustracji nie tylko wytwórców oprogramowania, ale także ich klientów. Sprzeczność pomiędzy odpowiedzialnością, jaka spoczywa na współczesnych SI, a ich zawodnością wynikającą ze złożoności i ciągle niedojrzałych metod tworzenia i weryfikacji oprogramowania. Ogromne koszty utrzymania oprogramowania. Niepowtarzalność poszczególnych przedsięwzięć Nieprzejrzystość procesu budowy oprogramowania (np. trudności w ocenie stopnia zaawansowania prac),. Długi i kosztowny cykl tworzenia oprogramowania, wysokie prawdopodobieństwo niepowodzenia projektu programistycznego Pozorna łatwość wytwarzania i dokonywania poprawek Długi i kosztowny cykl życia SI, wymagający stałych (często globalnych) zmian.

PROBLEM OGRANICZEŃ CZŁOWIEKA (twórcy oprogramowania) Po przekroczeniu pewnego progu złożoności człowiek przestaje panować nad przygotowywanym produktem, ponieważ całościowe zrozumienie funkcjonowania systemu w różnych jego aspektach i na dowolnym poziomie szczegółowości z zasady przekracza jego możliwości. Opinie ekspertów: programista nie może panować na raz nad więcej niż jednym ekranem tekstu programu testowanie może wykazać błędność programu, ale nie moźe wykazać jego bezbłędności nie ma programów bezbłędnych; są tylko takie, w których dotąd nie znaleziono błędu Co można na to poradzić: Mechanizmy abstrakcji (eliminacja, ukrycie lub pominięcie mniej istotnych szczegółów rozważanego przedmiotu lub mniej istotnej informacji; wyodrębnianie cech wspólnych i niezmiennych dla pewnego zbioru bytów i wprowadzaniu pojęć lub symboli oznaczających takie cechy) Mechanizmy kompozycji i dekompozycji (rozdzielenie złożonego problemu na podproblemy, które można rozpatrywać i rozwiązywać niezależnie od siebie i niezależnie od całości) Ponowne użycie (wykorzystanie wcześniej wytworzonych schematów, metod, wzorców, komponentów projektu, komponentów oprogramowania) Zorientowanie technologii komputerowych na ludzi (dopasowanie modeli pojęciowych i modeli realizacyjnych systemów, do wrodzonych ludzkich własności psychologicznych oraz mentalnych mechanizmów percepcji i rozumienia świata)

JAKOŚĆ OPROGRAMOWANIA Poprawność określa, czy oprogramowanie wypełnia postawione przed nim zadania (tzn., czy spełnia wyspecyfikowane wymagania) i czy jest wolne od błędów. Łatwość użycia jest miarą stopnia łatwości korzystania z oprogramowania. Czytelność pozwala na określenie wysiłku niezbędnego do zrozumienia oprogramowania. Ponowne użycie (inne terminy to: wielokrotne użycie lub wieloużycie) charakteryzuje przydatność oprogramowania, całego lub tylko pewnych fragmentów, do wykorzystania w innych produktach programistycznych. Stopień strukturalizacji (modularność) określa, jak łatwo oprogramowanie daje się podzielić na części o dobrze wyrażonej semantyce i dobrze wyspecyfikowanej wzajemnej interakcji. Efektywność opisuje stopień wykorzystania zasobów sprzętowych i programowych stanowiących podstawę działania oprogramowania. Przenaszalność mówi o łatwości przenoszenia oprogramowania na inne platformy sprzętowe czy programowe. Skalowalność opisuje zachowanie się oprogramowania przy rozroście liczby użytkowników, objętości przetwarzanych danych, dołączaniu nowych składników do systemu, itp. Współdziałanie charakteryzuje zdolność oprogramowania do niezawodnej współpracy z innym niezależnie skonstruowanym oprogramowaniem

CYKL ŻYCIOWY OPROGRAMOWANIA Faza strategiczna (określenie strategicznych celów, planowanie i definicja projektu) Określenie wymagań Analiza (dziedziny przedsiębiorczości, wymagań systemowych) Projektowanie (projektowanie pojęciowe, projektowanie logiczne) Implementacja/konstrukcja (rozwijanie, testowanie, dokumentacja) Testowanie Dokumentacja Instalacja Przygotowanie użytkowników, akceptacja, szkolenie Działanie, włączając wspomaganie tworzenia aplikacji Utrzymanie, konserwacja, pielęgnacja