Egzamin poprawkowy z Inżynierii Oprogramowania, rok II grupa B
EGZAMIN POPRAWKOWY
Z INŻYNIERII OPROGRAMOWANIA, GRUPA B
春
Rok II, kierunek Informatyka, studia dzienne inżynierskie CZĘŚĆ PIERWSZA – ZADANIA
Imię i nazwisko …..............................................................................
Nr albumu …..................
Zadanie 1. (3 punkty)
Poniżej podano graf PERT dla pewnego projektu. Wylicz czas oczekiwany realizacji całości.
Pod rysunkiem, w tabeli, podano czasy realizacji poszczególnych etapów.
A
C
B
Etap A
Etap B
Etap C
O
M
P
O
M
P
O
M
P
4
8
11
3
8
9
1
3
5
Zadanie 2. (1 punkt)
Znajdź błąd w poniższym programie i napisz, na czym on polega.
using System;
namespace zadanie2grupaB
{
public class wyszukiwanie
{
public bool CzyZnaleziono;
public int IleRazyWartośćWystąpiła; public wyszukiwanie() //Konstruktor
{
CzyZnaleziono = false;
IleRazyWartośćWystąpiła = 0;
}//Koniec konstruktora
public void Wyszukaj(int[] Tablica, int SzukanaWartość) //Metoda wyszukująca
{
int i;
i = 0;
CzyZnaleziono = false;
IleRazyWartośćWystąpiła = 0;
for(i=0;i<Tablica.Length;i++)
{
-1/5-
Egzamin poprawkowy z Inżynierii Oprogramowania, rok II grupa B
if(Tablica[i] == SzukanaWartość)
{
if(CzyZnaleziono == false) CzyZnaleziono = true; IleRazyWartośćWystąpiła++;
春
}
}//next i
}//Koniec funkcji wyszukującej
}//Koniec klasy
}
Zadanie 3. (1 punkt)
Na podstawie podanego diagramu UML napisz kod szkieletowy w języku C#.
Zadanie 4. (3 punkty)
Dana jest metoda obliczająca częstość losowania liczb w dużym lotku. Napisz test jednostkowy dla tego fragmentu kodu.
using System;
namespace zadanie4grupaB
{
public class WynikLosowania
{
public int[] LiczbyWylosowane; public WynikLosowania() //Konstruktor
{
int i;
-2/5-
Egzamin poprawkowy z Inżynierii Oprogramowania, rok II grupa B
LiczbyWylosowane = null;
i = 0;
春
LiczbyWylosowane = new int[6]; for(i=0;i<6;i++) LiczbyWylosowane[i] = 0;
}//Koniec konstruktora
}
}//Koniec klasy WynikLosowania
using System;
namespace zadanie4grupaB
{
public class ZliczanieNumerków
{
public int[] IleRazyWylosowanoLiczbę; private WynikLosowania[] TablicaWynikówLosowańTOTKA; public ZliczanieNumerków()//Początek konstruktora
{
IleRazyWylosowanoLiczbę = null;
TablicaWynikówLosowańTOTKA = null;
IleRazyWylosowanoLiczbę = new int[50]; ZerujLiczniki();
}//Koniec konstruktora
private void ZerujLiczniki()//Metoda zerująca liczniki
{
int i;
i = 0;
for(i=0;i<50;i++)IleRazyWylosowanoLiczbę[i] = 0;
}//Koniec zerowania liczników
public void Inicjalizacja(WynikLosowania[] WynikiLosowań) //Inicjalizacja obiektu
{
ZerujLiczniki();
if(WynikiLosowań != null)
{
TablicaWynikówLosowańTOTKA = WynikiLosowań;
}else
{
TablicaWynikówLosowańTOTKA = null;
}
}//Koniec inicjalizacji - przygotowań do liczenia public void WykonajStatystykę() //Właściwe zliczanie liczb
{
int i;
int j;
int liczba;
i = 0;
j = 0;
liczba = 0;
if(TablicaWynikówLosowańTOTKA != null) //Tylko wtedy się zlicza, gdy są dane!
{
for(i=0;i<TablicaWynikówLosowańTOTKA.Length;i++)
{
for(j=0;j<6;j++)
{
liczba =
TablicaWynikówLosowańTOTKA[i].LiczbyWylosowane[j];
-3/5-
Egzamin poprawkowy z Inżynierii Oprogramowania, rok II grupa B
IleRazyWylosowanoLiczbę[liczba]++;
}//next j
}//next i
春
}else
{
ZerujLiczniki();
}
}//Koniec zliczania
}//Koniec klasy ZliczanieNumerków
}
Zadanie 5. (1 punkt)
Na podstawie kodu zamieszczonego poniżej, narysuj diagram klas UML.
using System;
namespace zadanie5grupaB
{
public class TwardyDysk
{
public int Pojemność;
public string Producent;
public int RodzajDysku;
public int RodzajZłącza;
public int RozmiarDysku;
public static int DYSK_FLASH = 1; public static int DYSK_MAGNETIC = 2; public static int SATA = 1; public static int ATA = 2; public static int DYSK_2_5_CALA = 1; public static int DYSK_3_5_CALA = 1;
}
}
using System;
namespace zadanie5grupaB
{
public class sterownik
{
public int RodzajWejścia;
public int RodzajWyjścia;
public static int WEJŚCIE_USB = 1; public static int WEJŚCIE_ETHERNET = 2; public static int WYJŚCIE_SATA = 1; public static int WYJŚCIE_ATA = 2; public static int WYJŚCIE_SATA_I_ATA = 3;
}
}
using System;
namespace zadanie5grupaB
{
public class obudowa
{
public double Szerokość;
public double Długość;
public double Głębokość;
public bool CzyJestDiodaLED;
public static bool JEST_DIODA = true; public static bool NIE_MA_DIODY = false;
}
}
-4/5-
Egzamin poprawkowy z Inżynierii Oprogramowania, rok II grupa B
using System;
namespace zadanie5grupaB
{
public class DyskPrzenośny
春
{
public TwardyDysk Dysk;
public sterownik Sterowanie;
public obudowa ObudowaDysku;
}
}
Zadanie 6. (1 punkt)
Oszacuj czas pisania kodu złożonego z 10000 linii, gdy programista pisze ze średnią szybkością 4
linii na minutę z prawdopodobieństwem popełnienia błędu wynoszącym 0,2. Czas podaj w dniach roboczych.
CZĘŚĆ DRUGA – TEORIA
Zadanie 1. (2 punkty)
Co oznacza skrót CASE? Wymień narzędzia wspomagające tworzenie oprogramowania wschodzące w skład tej grupy.
Zadanie 2. (2 punkty)
Co to jest diagram sekwencji? Podaj trzy symbole linii życia związane z tym diagramem i krótko je opisz.
Zadanie 3. (2 punkty)
Na czym polega raportowanie błędów? Krótko opisz reguły służące do tworzenia użytecznych raportów o błędach.
Zadanie 4. (2 punkty)
Czym jest test jednostkowy? Napisz krótko, jakie narzędzia stosuje się podczas tego rodzaju testów.
Zadanie 5. (2 punkty)
Na czym polega zarządzanie wiedzą? Wymień i opisz zwięźle rodzaje wiedzy.
Punktacja i ocena (część zadaniowa i teoretyczna jest oceniana oddzielnie). Ocena końcowa jest średnią arytmetyczną z obydwu części, przy czym konieczne jest uzyskanie pozytywnej oceny z części zadaniowej do zaliczenia egzaminu.
Punkty
Ocena
Punkty
Ocena
0 – 4,9
2.0
7 – 7,9
4,0
5 – 5,9
3,0
8 – 8,9
4,5
6 – 6,9
3,5
9 – 10
5,0
-5/5-