background image

Egzamin z Inżynierii Oprogramowania, rok II

grupa A

EGZAMIN Z INŻYNIERII OPROGRAMOWANIA, GRUPA  A

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

3

4

5

3

5

8

1

2

3

Zadanie 2. (1 punkt)

Znajdź błąd w poniższym programie i napisz, na czym on polega.

/*

------------------------plik ListaSortuj ca.cs

----------------*/

using

 System;

namespace

 zadanie_2

{

public

 

class

 ListaSortująca

{

public

 

double

 Wartość;

public

 ListaSortująca Następny;

public

 ListaSortująca (

double

 Liczba, ListaSortująca Następnik)

{

Wartość = Liczba;

Następny = Następnik;

}

//

Koniec konstruktora

public

 

void

 DopiszDoListy(

double

 Liczba) 

//

Dopisywanie do listy

{

ListaSortująca Pomocniczy;

Pomocniczy = 

null

;

if

(Liczba >= Wartość) 

//

Wtedy dopisujemy do końca listy

{

if

(Następny == 

null

)

{

-1/5-

A

B

C

background image

Egzamin z Inżynierii Oprogramowania, rok II

grupa A

Następny = 

new

 ListaSortująca(Liczba,

null

);

}

else

{

Następny.DopiszDoListy(Liczba);

}

}

else

 

//

W innym przypadku na początku listy.

{

Pomocniczy = 

new

 ListaSortująca(Wartość,Następny);

Wartość = Liczba;

Następny = 

new

 ListaSortująca(Pomocniczy.Wartość,Pomocniczy.Następny);

Pomocniczy = 

null

;

}

//

Na początek listy

}

//

Koniec dopisywania

public

 

void

 PrzepiszDoTablicy(

double

[] Tablica, 

int

 Indeks) 

//

Przepisywanie do 

tablicy

{

if

(Indeks < Tablica.Length)

{

Tablica[Indeks] = Wartość;

}
Indeks++;

if

(Następny != 

null

) Następny.PrzepiszDoTablicy(Tablica,Indeks);

}

//

Koniec przepisywania

}

//

Koniec klasy

}

/*

------------------------plik Main.cs

--------------------------*/

using

 System;

namespace

 zadanie_2

{

class

 MainClass

{

public

 

static

 

void

 Main (

string

[] args)

{

Random Generator;

ListaSortująca Lista;

double

[] Tablica;

double

[] TablicaS;

int

 i;

int

 N;

i = 

0

;

N = 

20

;

Generator = 

new

 Random();

Tablica = 

new

 

double

[N];

TablicaS = 

new

 

double

[N];

Lista = 

null

;

for

(i=

0

;i<N;i++)

{

Tablica[i] = 

100

 * Generator.NextDouble();

Console.WriteLine(

"Tablica["

 + i.ToString() + 

"] = "

 + 

Tablica[i].ToString());

}

Lista = 

new

 ListaSortująca(Tablica[

0

],

null

);

for

(i=

1

;i<N;i++) Lista.DopiszDoListy(Tablica[i]);

Lista.PrzepiszDoTablicy(TablicaS,

0

);

Console.WriteLine(

"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"

);

for

(i=

0

;i<N;i++)

{

Console.WriteLine(

"TablicaS["

 + i.ToString() + 

"] = "

 + 

TablicaS[i].ToString());

}

-2/5-

background image

Egzamin z Inżynierii Oprogramowania, rok II

grupa A

Lista = 

null

//

Usunięcie listy po użyciu!

}

//

Koniec Main

}

//

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   powierzchnię   prostokąta   metodą   Monte   Carlo.   Napisz   test 
jednostkowy dla tego fragmentu kodu.

using

 System;

namespace

 zadanie_4

{

public

 

class

 prostokątMC

{

public

 

double

 ObliczPowierzchnię(

double

 a, 

double

 b)

{

double

 PomocniczeA;

double

 PomocniczeB;

Random Generator;

double

 x;

double

 y;

int

 LiczbaRzutów;

int

 LiczbaTrafień;

int

 i;

double

 wynik;

-3/5-

background image

Egzamin z Inżynierii Oprogramowania, rok II

grupa A

PomocniczeA = 

2

 * a;

PomocniczeB = 

2

 * b;

Generator = 

new

 Random();

x = 

0

;

y = 

0

;

wynik = 

0

;

LiczbaRzutów = 

100000

;

LiczbaTrafień = 

0

;

i = 

0

;

for

(i=

0

;i<LiczbaRzutów;i++)

{

x = PomocniczeA * Generator.NextDouble();
y = PomocniczeB * Generator.NextDouble();

if

((x < a) && (y < b)) LiczbaTrafień++;

}

//

Koniec rzucania

wynik = ((

double

)LiczbaTrafień/(

double

)LiczbaRzutów) * PomocniczeA * 

PomocniczeB;

return

 wynik;

}

//

Koniec obliczania powierzchni

}

}

Zadanie 5. (1 punkt)

Na podstawie kodu zamieszczonego poniżej, narysuj diagram klas UML.

using

 System;

namespace

 zadanie_5

{

public

 

class

 Noga{

public

 

float

 Długość;

public

 

string

 Styl;

private

 

string

 Materiał;

}

}

using

 System;

namespace

 zadanie_5

{

public

 

class

 siedzisko{

public

 

float

 szerokość;

public

 

float

 długość;

}

}

using

 System;

namespace

 zadanie_5

{

public

 

class

 Oparcie{

public

 

float

 Wysokość;

public

 

float

 szerokość;

public

 

string

 Styl;

}

}

using

 System;

namespace

 zadanie_5

{

public

 

class

 Krzesło{

public

 Oparcie OparcieKrzesła;

public

 siedzisko SiedziskoKrzesła;

public

 Noga[] NogiKrzesła;

}

}

-4/5-

background image

Egzamin z Inżynierii Oprogramowania, rok II

grupa A

Zadanie 6. (1 punkt)

Oszacuj   czas   pisania   kodu   złożonego   z   5000   linii,   gdy   programista   pisze   ze   średnią 
szybkością 8 linii na minutę z prawdopodobieństwem popełnienia błędu wynoszącym 0,1. 
Czas podaj w dniach roboczych.

CZĘŚĆ DRUGA – TEORIA

Zadanie 1. (2 punkty)

Jakie jest przeznaczenie grafów PERT? Podaj krótki opis wierzchołka grafu i jego parametrów.

Zadanie 2. (2 punkty)

Co to jest diagram przypadków użycia? Podaj dwa główne symbole związane z tym diagramem
i krótko je opisz.

Zadanie 3. (2 punkty)

Na   czym   polega   test   akceptacyjny?   Krótko   opisz   dwa   z   najczęściej   stosowanych   typów   testu 
akceptacyjnego, stosowanych dla dużych aplikacji.

Zadanie 4. (2 punkty)

Na czym polega metryka pokrycia bloków instrukcji? Napisz krótko, jakie wady i zalety posiada ta 
metryka.

Zadanie 5. (2 punkty)

Co oznacza pojęcie niejednoznacznej specyfikacji? Podaj conajmniej jeden przykład.

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

0 – 4,9

2.0

5 – 5,9

3,0

6 – 6,9

3,5

7 – 7,9

4,0

8 – 8,9

4,5

9 – 10

5,0

-5/5-