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-