Politechnika Wrocławska, Wydział Elektroniki, Kierunek: Informatyka (1 rok)

Wykład:  INKS 105  ( INK 9117 )
POSTAWY  INŻYNIERII OPROGRAMOWANIA



Przykładowe pytania
na kolokwium zaliczeniowe 22 maja 2011.

Oceny:   - gr. niedziela nieparzysta
               - gr. niedziela parzysta 


UWAGA:  w związku z przewidywaną nieobecnością wykładowcy na zajęciach w niedzielę 8 maja
         ustalone zostały następujące zmiany terminów zajęć:

Materiały do wykładu:  (prow. dr Marek Piasecki)

  1. Wprowadzenie, kierunki rozwoju inżynierii, kryzysy, problem jakości oprogramowania
       
  2. Modele cyklu życia oprogramowania
    Materiały uzupełniające n/t zwinnych metodyk programowania: 
        - Programowanie Ekstremalne   (z zasobów projektu MIMUW / MIMINF)
        - SCRUM   (przygotowane przez studenta Pawła Juszczyka )
           
  3. Faza strategiczna, Faza specyfikacji wymagań
    Materiały uzupełniające:
        - Specyfikacja wymagań, przypadki użycia   (z zasobów MIMINF )
         
  4. Faza analizy/modelowania oraz projektowania
       
  5. Modelowanie systemów z wykorzystaniem notacji UML 
    Język UML - część 1 ,  Język UML - część 2  (z zasobów MIMINF )
           
  6. Faza implementacji/kodowania: przeciążanie funkcji i operatorów, szablony
    Materiały uzupełniające:
       - Programowanie uogólnione, Szablon C++ (Wikipedia)
       - Wzorce projektowe   (z zasobów MIMINF )
       - Dekorator, Adapter   (przygotowane przez studenta Pawła Juszczyka )
       - Object Oriented Design - Design Patterns (strona WWW poświęcona wzorcom projektowym)

  7. Zwiększanie poprawności oprogramowania
    Materiały uzupełniające:
       - Wprowadzenie do testowania ,  Automatyzacja testów  (z zasobów MIMINF )
     
  8. Złożoność strukturalna programów, metryki oprogramowania
  9. Kolokwium zaliczeniowe
  10. Metody formalne, dowodzenie poprawności programów.



Program laboratorium:

  1. Aplikacje konsolowe - konfiguracja środowiska Visual Studio 2008 (C++).
    Debugger - krokowe wykonywanie programu, inspekcja kodu i pamięci.
    Strukturalizacja kodu źródłowego, projekty wieloplikowe.
    Jako materiał do przeprowadzenia w/w ćwiczeń, należy wykonać aplikację konsolową
    pozwalającą przechowywać informacje o zbiorze samochodów w autokomisie.

    Przykładowe dane opisujące pojedynczy samochód:
      - marka                      <  string
      - numerRejestracyjny
     <  string
      - przebieg  [km]          <  liczba całkowita
      - cena      [zl.gr]         <  liczba rzeczywista
      - typSilinka                <  typ wyliczeniowy / słownik / np. benzynowy, diesel, elektryczny, ...
      - jestKlimatyzacja      <  wartość logiczna true/false

    Zbiór można zaimplementować jako zwykłą tablicę obiektów, lub tablicę wskaźników
    na dynamicznie tworzone obiekty, lub jakąś inną kolekcję wskaźników na obiekty, itp.

    Wymagane funkcjonalności:
      1) wprowadzanie/dopisywanie nowych danych
      2) wyświetlanie/przeglądanie zawartości "bazy danych"
      3) wyszukiwanie/filtrowanie wg zadanych kryteriów
          np. wszystkie samochody z silnikiem typu diesel nie droższe niż 12tys. zł
  2. Programowanie aplikacji z graficznym interfejsem użytkownika Windows Forms (część 1)  
    Materiały pomocnicze:
         - dokumentacja MSDN System.Windows.Forms
                                    Form,  Label,  Button,  TextBox
         - przykładowy rozdział 2 z książki "Visual C++ 2005. Tworzenie aplikacji dla Windows"  
         
  3. Ćwiczenia z tworzeniem aplikacji wykorzystujących Windows Forms (część 2)
    Zaprojektuj i wykonaj aplikację pozwalającą gromadzić, przeglądać i wyszukiwać
    informacje o samochodach, klientach i transakcjach "Autokomisu".

    W wersji minimalnej program powinien posiadać interfejs użytkownika wykorzystujący
    jedno okno/formularz główny Windows.Forms.Form
    (z paskiem menu ułatwiającym wybór opcji programu - MenuStrip)
    oraz osobne okna/formularze do obsługi katalogu samochodów i katalogu klientów.
    Podstawowe funkcjonalności to:
       a) dodawanie, edycja, przeglądanie, wyszukiwanie danych samochodów,
       b) dodawanie, edycja, przeglądanie, 
    wyszukiwanie danych klientów,
       c) dodawanie, edycja, przeglądanie danych o zawieranych transakcjach (kupna/sprzedaży) 

    Wersja bardziej zaawansowana może dodatkowo uwzględnić:
       d) archiwizację stanu danych w pamięci zewnętrznej (plikach dyskowych)
       e) automatyczną autoarchiwizację co zadany okres czasu (z wykorzystaniem komponentu Timer)
         
  1. Szablony - programowanie uogólnione w języku C/C++
         a)  zdefiniuj szablon funkcji:    swap( object1, object2, object3 )
              która wykonuje cykliczną zamianę zadanych argumentów:
                    object1  »  object2  »  object3  »  object1
         b)  zdefiniuj szablon klasy:  tablica10elementow
              o funkcjonalności podobnej do szablonu  stack  z biblioteki STL

    Projektowanie i dokumentacja systemów informatycznych z wykorzystaniem UML.
         c)  wykorzystując program ArgoUML (http://argouml.tigris.org/)
               wykonaj zadane przez prowadzącego diagramy przypadków użycia i diagram klas  

         d)  wykonaj dwa diagramy UML dokumentujące wybrane aspekty
               programu "AutoKomis" realizowanego na wcześniejszych laboratoriach.
               
  2. Testy jednostkowe - automatyzacja wykonywania testów w środowisku Visual Studio.
            - MSDN: How to: Create and Run a Unit Test
    Zaliczenia.    


Literatura:


Archiwum:

Materiały do wykładu i laboratorium z roku 2009/10