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.
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-
A
B
C
春
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-
春