Csoport neve: TM

Feladat sorszáma: 4

Feladat címe: C++ FORRÁSKÓD ELEMZŐ






ANALÍZIS MODELL





Gyakorlatvezető:


KRIZSÁN ZOLTÁN







Csoport tagok:


Kovács Zsolt

G-3S7I NK.: Y11Z0L

kovacs4@iit.uni-miskolc.hu

Horváth Ábel

G-3S7I NK.: XSTVU5

horvath14@iit.uni-miskolc.hu

Lénárt József

G-4S5 NK.: W5LMPB

lenart3@iit.uni-miskolc.hu

Miklán Orsolya

G-4S5 NK.: AI54B2

miklan@iit.uni-miskolc.hu

Molitorisz János

G-3S7I NK.: CDPMLH

molitorisz@iit.uni-miskolc.hu

Mongyik Dávid

G-3S7I NK.: TWBYP0

mongyik@iit.uni-miskolc.hu



2006-04-21






TÖRTÉNET



Dátum

Verzió

Leírás

Szerző

2006-04-11

0.1a

Kezdeti verzió

TM

2006-04-21

0.1b

Alrendszerek szerinti tagolás, a dokumentáció véglegesítése

TM







Tartalomjegyzék

1. Bevezetés

2. Kezdeti osztálydiagram

2.1 Osztálydiagram

2.2 Osztályok felsorolása

2.3. Alrendszerek

2.3.1 Működés alrendszer

2.3.2 Megjelenítés alrendszer

3. A Menüfunkciók alrendszer modellje

3.1 Statikus modell

3.1.1 Kapcsolatok pontosítása

3.1.2 Attribútumok azonosítása

3.1.3 Bázisosztályok keresése

3.2. Dinamikus modell

3.3. Funkcionális modell

3.4. Operációk azonosítása

3.5 Az analízis modell osztálydiagramja

3.6. Az analízis modell osztályainak listája

3.6.1 OpenFileDialog

3.6.2. SaveFileDialog

3.6.3. Modul_1.

3.6.4. Modul_2.

3.6.5. Modul_3.

3.6.6. Modul_4.

3.6.7. Modul_5.

3.6.8. Modul_6.

3.6.9. HelpProvider

4. A Megjelenítés alrendszer modellje

4.1 Statikus modell

4.1.1 Kapcsolatok pontosítása

4.1.2 Attribútumok azonosítása

4.1.3 Bázisosztályok keresése

4.2.Funkcionális és dinamikus modell

4.3 Operációk azonosítása

4.4 Az analízis modell osztálydiagramja

4.5. Az analízis modell osztályainak listája

4.5.1 Form

4.5.2 MenuItem

4.5.3 Edit

4.5.4 ToolBar

4.5.5 ToolBarButton

4.5.6 ProgressBar

4.5.7 Splitter



1. Bevezetés



Ezen dokumentum az implementálás előtti utolsó lépés. Mely tartalmazza az implementáláshoz szükséges összes információt a lehető legrészletesebben taglalva. Magában foglalja többek között az objektumorientált fejlesztésből kifolyólag az osztályokat, és a közöttük lévő kapcsolatokat. Tehát ezek alapján az egész program belső felépítése, működése átlátható, megérthető.

A működés és a felépítés leírására egyaránt, fokozatosan, egyre részletesebb diagramok és magyarázatok szolgálnak. A logikailag összetartozó osztályok külön részegységeket, úgynevezett alrendszereket képeznek. A TMSA elméleti váza két ilyen alrendszerből tevődik össze, melyek taglalása külön menüpontokban is megtörténik.



2. Kezdeti osztálydiagram

2.1 Osztálydiagram






2.2 Osztályok felsorolása

Container:

Ez tartalmazza az összes többi osztályt

 

Form:

Egy központi osztály, a többi grafikus osztály tárolása

 

Menu:

Menüpontok megvalósítása

 

MenuItem:

Egy-egy menüpont megvalósítása

 

OpenFileDialog:

Dialógus ablak a fájl megnyitásához



SaveFileDialog:

Dialógus ablak a fájl elmentéséhez

 

Modul_1:

Kód komment arányt ellenőrző modul

 

Modul_2:

A függvény illetve fáljkommentek meglétét ellenőrzö modul

 

Modul_3:

A változók elnevezését ellenőrző modul

 

Modul_4:

Globális változókat ellenőrző modul

 

Modul_5:

Header fájlokat ellenőrző modul

 

Modul_6:

Annak ellenőrzésére szolgáló modul, hogy adott típusú változó és ugyanolyan típusú mutató deklarációja ne kerüljön egysorba

 

Edit:

A fájl sorait jeleníti meg

 

Splitter:

A scrollozást biztosítja

 

StatusBar:

Biztosítja az átméretezést

 

ToolBar:

Az eszköztár tárolására alkalmas osztály

 

ToolBarButton:

Az eszköztár funkcióit megvalósító gombok

 

ImageList:

Az eszköztáron megjelenő nyomógombok képeit tároló osztály

 

ProgressBar:

Munkafolyamat kijelző osztály

 

HelpProvider:

A help fájlt megjelenítő és kezelő osztály



2.3. Alrendszerek




 






2.3.1 Működés alrendszer

Feladata a használt fájlok kezelése, a modulonkénti ellenőrzés végrehajtása! Forrás fájl megnyitása, jelentés fájl elkészítése, elmentése, a Help fájl megnyitása.

 

Tartalmazott osztályok:

            - OpenFileDialog

            - SaveFileDialog

            - Modul_1

            - Modul_2

            - Modul_3

            - Modul_4

            - Modul_5

            - Modul_6

            - HelpProvider



2.3.2 Megjelenítés alrendszer

Feladata a grafikus felhasználói felület megjelenítése és kezelése.

 

Tartalmazott osztályok:

            - Container

            - Form

            - Menu

            - Edit

            - StatusBar

            - ToolBar

            - MenuItem

            - Splitter

            - ToolBarButton

            - ImageList

            - ProgressBar



3. A Menüfunkciók alrendszer modellje

3.1 Statikus modell

3.1.1 Kapcsolatok pontosítása






3.1.2 Attribútumok azonosítása

OpenFileDialog:

           Name

           FileName

Filter

FilterIndex

SaveFileDialog:

           FileName        

           Filter

HelpProvider:

           HelpFile

           ShowHelp

Modul_1:

           I_sor

           I_charakter_c[] //kódkarakterek száma a sorban

           I_charakter_k[] //kommentkarakterekszáma a sorban

           B_Error //hibás – e a forrás

           B_Komment //a sorban van-e nyitott „/*” jel

Modul_2:

           I_sor

           B_FajlKomment

B_Komment //a sorban van-e nyitott „/*” jel

I_FgvNo //függvények száma

S_FgvName[]  //függvények nevei

I_Komment     //kommentek száma

I_FgvNameInKomment //mennyi ebből amiben megvan a függvény neve

           I_FgvKommentWhere[] //a függvénykomment helye

           I_FgvWhere[] //a függvény helye

Modul_3:

           I_sor

           S_HibaUzenet[]

           S_KulcsSzavak[] //keresendő kulcsszavak pl.: int, short

           I_MiaKulcs

Modul_4:

           I_Sor

           I_WhereMainFgv //hanyadik sorban van a main

           S_KulcsSzavak[]

           S_HibaUzenetek[]

Modul_5:

           I_HeaderNo

           S_HeaderName[]

           I_HeaderMegvan

Modul_6:

           I_sor

           S_KulcsSzavak[]

           B_error

           I_HanyadikSor

S_Hibauzenet[] //sor db

           S_SoronkentValtozok[]



3.1.3 Bázisosztályok keresése

Nincs bázisosztály.



3.2. Dinamikus modell






3.3. Funkcionális modell










3.4. Operációk azonosítása

-         Megnyitás (Ezen opcióval nyithatunk meg egy forrásfájlt. A program természetesen a forrásfájlhoz tartozó saját header fájlokat is megnyitja.);

-         Mentés (Az előállt jelentés szöveges dokumentumként való mentése.);

-         Nyomtatás (Jelentésünket, illetve a forráskódot nyomtathatjuk attól függően, hogy a munkaterületen melyik látható.)

-         Kilépés (A program futását szakíthatjuk meg.)

-         Modul1 (Kód komment arányt ellenőrző modul)

-         Modul2 (A függvény illetve fáljkommentek meglétét ellenőrzö modul)

-         Modul3 (A változók elnevezését ellenőrző modul)

-         Modul4 (Globális változókat ellenőrző modul)

-         Modul5 (Header fájlokat ellenőrző modul)

-         Modul6 (Annak ellenőrzésére szolgáló modul, hogy adott típusú változó és ugyanolyan típusú mutató deklarációja ne kerüljön egysorba)

-         Forrás (Átváltás a forrásfájl nézetére)

-         Jelentés (Átváltás a jelentésfájl nézetére)

-         Egyéni” (Az ezt követően megjelenő űrlapon választhatjuk ki a modulok tetszőleges kombinációját.);

-         Összes modul” (Minden ellenőrzőmodul szerint vizsgáljuk a forrást.)

-         Nyelv” (A program kommunikációs nyelvének kiválasztása.);

-         Header fájlok helye” (A C++ beépített header fájlok helyének megadása.)

-         Súgó fájl” (A szöveges segítségnyújtó dokumentum elérése.);

-         Névjegy” (A programról és a készítőkről szóló információk.)



3.5 Az analízis modell osztálydiagramja






3.6. Az analízis modell osztályainak listája

A előző pontban szereplő osztálydiagram osztályainak leírása. Minden osztály leírását kiegészítjük az attribútumokkal és az operációkkal.



3.6.1 OpenFileDialog

 

Név

Típus

Leírás

filter

String

A kiválasztható fájlok megszűrése.

fileName

String

A kiválasztott fájl neve.

filterIndex

int

A filterek száma.

Név

Argumentumok

Működése, feladata

setFileName

String

Beállítja a fileName attribútumot.

setFilter

String

Beállítja a filter attribútumot.

setFilterIndex

Int

A filterek számának beállítása

 

3.6.2. SaveFileDialog

 

Név

Típus

Leírás

filter

String

A mentendő fájlok megszűrése.

fileName

String

A mentendő fájl neve.

filterIndex

Int

A filterek száma.

Név

Argumentumok

Működése, feladata

setFileName

String

Beállítja a fileName attribútumot.

setFilter

String

Beállítja a filter attribútumot.

setFilterIndex

Int

A filterek számának beállítása



3.6.3. Modul_1

 

Név

Típus

Leírás

I_sor

Int

Sorok száma

I_charakter_c[]

int

Kódkarakterek száma a sorban

I_charakter_k[]

int

Kommentkarakterek száma a sorban

B_Error

boolean

Hibás – e a forrás

B_Komment

boolean

A sorban van-e nyitott „/*” jel

 

3.6.4. Modul_2

 

Név

Típus

Leírás

I_sor

int

Sorok száma

B_FajlKomment

boolean

Van-e fájlkomment

I_FgvNo

Int

Függvények száma

S_FgvName[]

String

Függvények nevei

B_Komment

boolean

A sorban van-e nyitott „/*” jel

I_Komment   

int

Kommentek száma

I_FgvNameInKomment

int

Mennyi ebből, amiben megvan a függvény neve

I_FgvKommentWhere[]

int

A függvénykomment helye

I_FgvWhere[]

int

A függvény helye

 

3.6.5. Modul_3

 

Név

Típus

Leírás

I_sor

Int

Sorok száma

S_HibaUzenet[]

String

A megjelenítendő hibaüzenetek szövegei

S_KulcsSzavak[]

String

Keresendő kulcsszavak pl.: int, short

I_MiaKulcs

Int

A kulcsszó sorszáma a S_KulcsSzavak[] tömbben

 

3.6.6. Modul_4

 

Név

Típus

Leírás

I_sor

Int

Sorok száma

I_WhereMainFgv

Int

Hányadik sorban van a main függvény

S_KulcsSzavak[]

String

Keresendő kulcsszavak pl.: extern…

S_HibaUzenetek[]

String

A megjelenítendő hibaüzenetek szövegei

 

3.6.7. Modul_5

 

Név

Típus

Leírás

I_HeaderNo

Int

A saját header-fájlok száma

S_HeaderName[]

String

A saját header-fájlok nevei

I_HeaderMegvan

Int

Hány headert talált



3.6.8. Modul_6

 

Név

Típus

Leírás

I_sor

int

Sorok száma

S_KulcsSzavak[]

String

Keresendő kulcsszavak pl.: int, short

B_error

boolean

Van-e hiba

I_HanyadikSor

int

Éppen hányadik az aktuális sor

S_Hibauzenet[]

String

A megjelenítendő hibaüzenetek szövegei

S_SoronkentValtozok[]

String

Az egy sorban deklarált változók



3.6.9. HelpProvider

 

Név

Típus

Leírás

helpFile

String

A súgófájl elérési útja

Név

Argumentumok

Működése, feladata

setHelpFile

String

Beállítja a helpFile attribútumot

setShowHelp

Object, boolean

Beállítja a megjelenítés helyének típusát

 

4. A Megjelenítés alrendszer modellje

4.1 Statikus modell

4.1.1 Kapcsolatok pontosítása

 




4.1.2 Attribútumok azonosítása

       

 

Form :

Enabled

Icon

Size

Text

TopMost

MenuItem :

name

Text

Checked

Enabled

RadioCheck

ShortCut

Edit:

            AutoSize

            Location

            Multiline

            Name

            Text

            Size

            ReadOnly

ToolBar:

            Name

            Text

            Dock

            Enabled

            Visible

            Location

            ImageList

ToolBarButton:

            Name

            Text

            Enabled

            Visible

            ImageIndex

ProgressBar:

            Dock

            Name

            Text

            Value

            Visible

            Enabled

Splitter:

            Name

            Size

            Visible

            Enable



4.1.3 Bázisosztályok keresése

Nincsen bázisosztály.



4.2.Funkcionális és dinamikus modell

A funkcionális és a dinamikus modellek ábrázolása csak a két alrendszer kezelésével lehetséges, mivel a megjelenítési alrendszernek csupán a felhasználói felület kialakításában van szerepe, semmilyen időbeli változást nem von maga után.



4.3 Operációk azonosítása

Mivel a funkcionális és dinamikus modellek a két alrendszer együttes kezelésével voltak értelmezhetőek, így a Megjelenítés alrendszer szempontjából külön nem készül operációazonosítás. Lényegében megegyezik tehát a Működés alrendszer operációazonosítás részével, mivel az a két alrendszer összedolgozásával áll elő.



4.4 Az analízis modell osztálydiagramja

 






4.5. Az analízis modell osztályainak listája

A előző pontban szereplő osztálydiagram osztályainak leírása. Minden osztály leírását kiegészítjük az attribútumokkal és az operációkkal.



4.5.1 Form

 

Név

Típus

Leírás

Enabled

boolean

Engedélyezett?

Icon

String

A formhoz kapcsolódó ikon

Size

int[]

Méret

Text

String

Fejléc szöveg

TopMost

boolean

Mindig előtérben van?

Név

Argumentumok

Működése, feladata

setText

String

Beállítja a Text attribútumot



4.5.2 MenuItem

 

Név

Típus

Leírás

Name

String

Az objektum neve

Text

String

A megjelenített szöveg

Checked

boolean

Ki van-e választva

Enabled

boolean

Engedélyezett?

RadioCheck

boolean

A kiválasztás formája

Név

Argumentumok

Működése, feladata

setText

String

Beállítja a Text attribútumot

setChecked

boolean

Beállítja a Checked attribútumot

 

 

4.5.3 Edit

 

Név

Típus

Leírás

AutoSize

boolean

Automatikus méretezés engedélyezése

Location

int[]

Az objektum helye a képernyőn

Multiline

boolean

Több sor engedélyezése

Name

String

Az objektum neve

Text

String

A megjelenítendő szöveg

Size

int[]

Az objektum mérete

Név

Argumentumok

Működése, feladata

setText

String

Beállítja a Text attribútumot

 

 

4.5.4 ToolBar

 

Név

Típus

Leírás

Name

String

Az objektum neve

Text

String

A megjelenítendő szöveg

Dock

String

Elhelyezés

Enabled

boolean

Engedélyezés

Visible

boolean

Látható-e

Location

int[]

Az objekum helye

ImageList

String[]

A megjelenítendő kép(ek) neve(i)

Név

Argumentumok

Működése, feladata

setText

String

Beállítja a Text attribútumot

 

4.5.5 ToolBarButton

 

Név

Típus

Leírás

Name

String

Az objektum neve

Text

String

A megjelenítendő szöveg

Enabled

boolean

Engedélyezés

Visible

boolean

Látható-e

ImageIndex

int

A megjelenítendő kép indexe az ImageList -ben

Név

Argumentumok

Működése, feladata

setText

String

Beállítja a Text attribútumot

 

 

4.5.6 ProgressBar

           

Név

Típus

Leírás

Dock

String

Elhelyezkedes

Name

String

Az objektum neve

Text

String

Az objektum szövege

Value

int[]

Az objektum értéke

Visible

boolean

Láthatóság

Enabled

boolean

Engedélyezés

Név

Argumentumok

Működése, feladata

setText

String

Beállítja a Text attribútumot

setValue

Int[]

Beállítja a Value attribútumot



4.5.7 Splitter

 

Név

Típus

Leírás

Name

String

Az objektum neve

Size

int[]

Az objektum merete

Visible

boolean

Objektum láthatósága

Enable

boolean

Engedélyezett?