Csoport neve: TM

Feladat sorszáma: 4

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







KÖVETELMÉNY SPECIFIKÁCIÓ (SRS)




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-03-24




TÖRTÉNET



Dátum

Verzió

Leírás

Szerző

2006-03-24

0.1

Kezdeti verzió

TM








TARTALOMJEGYZÉK

1. Bevezetés

2. Áttekintés

3. A rendszer funkciói

3.1 Use case diagramok

3.1.1 Fájlműveletek

3.1.2 Vizsgálatok

3.1.3 Beállítások

3.1.4 Nézetváltás

3.1.5 Segítség kérése (Súgó)

4. Használhatóság

4.1 A felhasználó tudásszintje

4.2 A sebesség más rendszerekhez viszonyítva

4.3 Kezdő felhasználót segítő lehetőségek

4.4 A program felhasználói felülete

5. Megbízhatóság

6. Teljesítmény

7. Támogatottság

8. Tervezési korlátozások

9. On-line dokumentáció és Help rendszer

10. Felhasznált kész komponensek

11. Interfészek

11.1. Felhasználói interfészek

11.2. Hardware interfészek

11.3. Software interfészek

11.4. Kommunikációs interfészek

12. Alkalmazott szabványok

12.1. Kötelezően alkalmazandó szabványok

12.2. Választás alapján alkalmazott szabványok

13. Mellékletek

1.Bevezetés

A csoport által kiválasztott feladat a C++ forráskód elemző, amely megírt forráskódot elemzi megadott szempontok alapján, és az esetlegesen felmerülő hibák javítására megoldást kínál, mégpedig egy jelentés generálásával, amely választható nyelven közli a felhasználóval, a szükséges módosításokat, melyek elvégzése a kívánt ellenőrzési feltételeknek illetve az Általános Informatikai Tanszék C++ szabványának megfelelően, a forráskód hibamentes működését biztosítja.



2. Áttekintés

A termék környezete:

Ez a szoftver nem platform-független, elsősorban Microsoft Windows környezetre orientálódik, mivel a fejlesztőkörnyezet Microsoft Visual J++. Egyfelhasználós alkalmazás, azaz egy időben egyszerre csak egy felhasználó tud egy példányt használni.

A program ablakos szerkezetű, ami egy egyszerűen és kényelmesen kezelhető, grafikus felhasználói felületet biztosít. A menüsorban elhelyezett gombok segítségével nyithatunk meg állományokat a számítógépünkről, és adhatjuk meg a modulokat attól függően hogy mit is szeretnénk ellenőrizni. Tehát tetszés szerint választhatunk az ellenőrző-modulok közül. A megnyitott fájl, vagyis a forráskódja és az ellenőrzés eredménye is külön-külön, ablakban jelennek meg. Az ellenőrzés elvégzése után, az aktuális eredmény fájlba is kimenthető. Ezáltal később is meg tudjuk nézni. Minden modul a saját kimenetét hozzáfűzi ehhez a fájlhoz.

Legfontosabb funkciói:

A programunk C++ forráskódot ellenőriz, ügyelve olvashatóságára, a forráskód szintaktikájára és annak hibamentességére. Mindezt felhasználóbarát módon, grafikus és ablakozó felülettel teszi minden felhasználó kedvére téve.

A windows-os beállításokhoz igazodik a program ablakának mérete. Ennek legfelső sorában található a főmenü. Ennek első eleme a „Fájl” menü. Ezen belül található a „megnyitás” opció, amely segítségével a számítógépen lévő bármely C++ forrásfájl megnyitható ellenőrzésre. Ez után egy ablakban megjelenik a vizsgálandó állomány tartalma, hogy vizuális képet kapjunk a program tartalmáról. Ezután a „Futtatás” menüből indíthatjuk az ellenőrzést. Itt lehet választani a követelmények közül. Ezeket az adott opciókat különböző modulok biztosítják. Ezek a karbantartást is elősegítik. Ezek az alábbi modulok:

· A globális változókat ellenőrző: Megkeresi a forráskódban lévő globális változókat, mivel ezek használata elkerülendő, ezért letiltja azokat.

· Kód / komment arány ellenőrző: Ellenőzi a forráskódban lévő kód / komment arányt. Vizsgája azok mennyiségét, egymáshoz viszonyított arányát. Azért hasznos, mert egy gyengén kommentált forráskód olvasása nagy erőfeszítést igényel. Viszont a túlkommentált, sallangos forráskódot is elég körülményes feldolgozni.

· A változók elnevezését ellenőrző: A vátozók elnevezésének ellenőrzését végzi a C++ házi szabvány szerint.

- A név mindig utaljon az általa azonosított elem funkciójára.

- A makrók neve mindig csupa nagybetűből álljon.

- A több szóból álló neveket egybe kell írni, és minden szót nagybetűvel kell kezdeni.

- stb.

· A függvény illetve fájlkommentek meglétét ellenőrző: A programozó által definiált saját függvények helyes kommentálását vizsgálja. Ezekhez a függvényekhez megfelelően kell a megjegyzéseket odaírni, hogy ha később újra elővesszük, akkor ne legyen gond a funkciójának és helyes használatának felelevenítésére.

· Header fájolkat ellenörző: Ellenőrzi a header fájlok meglétét, illetve a forráskódban használt függvények meglétének ellenőrzése a header fájlokban a másik feladata.

Az alkalmazás ezeken felül a következő funkciókat biztosítja:

- Területi beállítás: A program többnyelvű, azaz nyelvi fájl kiválasztásával megváltoztathatjuk az alkalmazás nyelvezetét.

- Mentés, nyomtatás: A forráskód ellenőrzésének eredményét kimenthetjük egy fájlba, illetve kinyomtatásra is lehetőségünk van.

- Súgó: A menüből elérhető egy Súgó, mely a program teljes leírását tartalmazza, illetve e menüpont alatt a Névjegy is megtekinthető.

- Header fájlok beállítása: Lehetőség van az ellenőrizendő programhoz szükséges header fájlok kiválasztására,  mert ennek hiányában a header fájlokat ellenőrző modul nem futhat le.

- Nézetváltás: Attól függően hogy melyikre van szükségünk, választhatunk a “Forrás” és “Jelentés” nézetek közül. A “Forrás” nézetre kattintva az ellenőrizendő program forráskódját láthatjuk. A “Jelentés” nézetre kattintva pedig az ellenőrzés után a különböző modulok vizsgálati-eredményeit tekinthetjük meg.

Bármilyen méretű illetve mennyiségű forrásfájl vizsgálatára alkalmas. A forráskód ellenőrző program jelzi a hibákat, és lehetőség szerint ajánlatokat tesz azok javítására. Korrekció útján újra lefuttatható a vizsgálat, illetve ha rendben van, újakat nyithatunk meg ellenőrzésre. Feldolgozás során egy folyamatjelző folyamatosan tájékoztat, hogy hol jár a vizsgálat, illetve jelzi hogy a futás nem szakadt meg, hanem folyamatban van.

Felhasználók jellemzői:

A termék elsődleges célfelhasználói illetve érintettjei azok a Miskolci Egyetemi diákok, akik bizonyosságot szeretnének kapni, az általuk elkészített C++ program (amely programot valamely óra keretében, és/vagy kiadott feladatként készítettek el) annak forráskódja megfelel e az előírt házszabványnak. Természetesen nemcsak a Miskolci Egyetemi hallgatók, hanem a tanárok is felhasználói lehetnek. Azok a Miskolci Egyetemi oktatók (előadók, gyakorlatvezetők) akik ezen órai, vagy éppen kiadott feladatot ellenőrzik, minősítik.

Valamint érintetteknek tekinthetőek mindazok, akik C++ program írnak, és szeretnék, ha programjuk áttekinthető, hosszú idő elteltével saját maguk illetve a kódjaikat felhasználó más személyek számára is könnyen értelmezhetőek, tovább fejleszthetőek legyenek!

A program használata nem konkrét személyek illetve társaságokat céloz meg, hanem bárki használhatja, aki program forráskódját ellenőrizni kívánja.

Korlátozások:

A termék platform-független, de elsősorban Microsoft Windows alatti használata a cél. Hardverigénye:

· 128 MB vagy annál nagyobb RAM memória

· 300 MHz órajelű processzor (Intel Pentium/Celeron, AMD K6/Duron/Athlon) vagy egy ezekkel kompatibilis processzor

· CD-ROM- vagy DVD-meghajtó

· SVGA (800 x 600 képpont) vagy egy ennél nagyobb felbontású videokártya és monitor

· Billentyűzet és egér



Egyfelhasználós alkalmazás! (Egy példányt, egy időben csak egy felhasználó használhat!)

Java futtató környezet szükséges (JRE)!

Viszont nem igényel egyedi hardvert!

A Java futtató környezet hardverigénye:

· Platformok: JDS, Windows 98, Windows ME, Windows 2000 (SP4+), Windows XP, Windows 2003, Solaris SPARC, Solaris x86, Red Hat Linux, SUSE Linux



Feltételezések, függőségek:

Feltételezzük, hogy a vizsgálandó fájl valódi C++ fájl, mivel ez egy C++ forráskód ellenőrző.

· Feltételezünk egyfajta minimális számítógépes előismeretet.

· Feltételezzük a gyári header fájlok helyességét, így azokat nem ellenőrzi a program.

· Valamint feltételezzük azt is, hogy a vizsgált fájl valódi C++ fájl, azaz az implementációs fájlok kiterjesztése lehet .cpp , .cc vagy lehet .c++ is, a header-fájloké pedig .hpp, .hh vagy .h++!


A követelmények csoportosításának szempontjai:

1. A megrendelő által felállított követelmények:

§ a programcsomag olcsó előállítási költsége

§ a project adott határidőre való befejezése



2. A program-fejlesztők által felállított követelmények:

§ a felhasználók minimális számítógépes ismerete

§ a felhasználók C++ nyelv ismerete

§ a felhasználók által a program célszerű és értelemszerű használata



3. A felhasználók által felállított követelmények:

§ a program kinézete átlátható legyen

§ a felhasználói felület egyszerű és kezelhető legyen

§ minden funkció könnyen és egyszerűen elérhető legyen

§ a program feldolgozásának folyamatáról folyamatos tájékoztatás (folyamatjelző)

§ rövid válaszidő

§ az elvárt funkció tökéletes megvalósítása



3. A rendszer funkciói

Ebben a fejezetben bemutatásra kerülnek a rendszer funkciói. Ezen funkciók bemutatását use case diagrammok segítségével tesszük meg. A use case-k tartalmazási kapcsolatban állnak egymással. Ez a tartalmazási kapcsolat minden esetben fennáll, ugyanis a programunk (TMSA) egy-felhasználós alkalmazás. Tehát a programunkban szereplő aktorok mindegyike ugyanazon felhasználóra vonatkozik.



3.1 Use case diagramok






Alkalmazásindítás (use case):

-         Funkció leírása: a program elindítására szolgál

-         Előfeltétel: az alkalmazásnak futásra kész állapotban kell állnia (telepítve kell lennie)

-         Előfeltétel: A program betöltődése után készen áll a probléma nélküli alkalmazásra.

 

Fájlműveletek (use case):

-         Funkció leírása: a forrásfájllal és a készített jelentéssel elvégezhető műveletek, kilépés a programból

-         Előfeltétel: létező futó alkalmazás

-         Előfeltétel: jelentés, nyomtatás, program futásának vége

-         Normál esetben a fájlműveletek sikeresen végrehajtódnak

-         Kivételes eset: nem olvasható valamilyen okból a forrásfájl, esetleg nem hozható létre a jelentés fájl, illetve a nyomtató nem elérhető

Vizsgálat (use case):

-         Funkció leírása: a kiválasztott modulokon a szükséges vizsgálatok elvégzése

-         Előfeltétel: az ellenőrizendő forrásfájl meg van nyitva

-         Előfeltétel: elkészül a jelentés, természetesen a moduloknak megfelelően

-         Normál esetben elkészül a jelentés

Beállítások (use case):

-         Funkció leírása: területi beállításokat végezhetünk el illetve a header fájlok helyét adhatjuk meg

-         Előfeltétel: futó program

-         Előfeltétel: a beállításokat a program tudomásul veszi

-         Normál esetben aktivizálódnak az új beállítások

Segítség kérése (use case):

-         Funkció leírása: Súgó megtekintése

-         Előfeltétel: futó program

-         Előfeltétel: a felhasználó választ kap kérdéseire

-         Normál esetben kielégíti a felhasználó kérdéseit

Nézetváltás (use case):

-         Funkció leírása: a forrás és a jelentés nézete között választhatunk

-         Előfeltétel: nyitott forrásfájl, elkészült jelentés

-         Előfeltétel: a kívánt dokumentum tárul szemünk elé

-         Normál esetben működik a nézetváltás

-         Kivételes eset akkor léphet fel, ha nincs nyitott forrásfájlunk vagy nincs már elkészült jelentésünk



3.1.1 Fájlműveletek




Forrásfájl megnyitása (use case):

-         Funkció leírása: az ellenőrizendő forrásfájlt meg tudjuk nyitni

-         Előfeltétel: nyitott forrásfájl

-         Normál esetben a megnyitott forrásfájl már csak ellenőrzésre vár

-         Probléma akkor léphet fel, ha a forrásfájl valamilyen okból nem nyitható meg

Elkészített jelentés mentése (use case):

-         Funkció leírása: elmenthetjük elkészült jelentésünket

-         Előfeltétel: elkészített jelentés

-         Előfeltétel: a jelentés elmentése

-         Normál esetben  a jelentés mentére kerül

-         Gondot az okozhat, ha valamilyen okból a jelentés nem menthető

Forrásfájl nyomtatása (use case):

-         Funkció leírása: a forrásfájlt nyomtathatjuk ki vele

-         Előfeltétel: nyitott forrásfájl

-         Előfeltétel: a forrásfájl kinyomtatásra kerül

-         Normál esetben a forrásfájl kinyomtatásra kerül

-         Hibás működést okozhat a nyomtató valamilyen okból való használhatatlansága

Elkészült jelentés nyomtatása (use case):

-         Funkció leírása: elkészült jelentést nyomtathatunk

-         Előfeltétel: legyen egy már elkészült jelentésünk

-         Előfeltétel: kinyomtatódik a jelentés

-         Normál esetben a jelentés nyomtatása sikeres

-         Hibás működést okozhat a nyomtató valamilyen okból való használhatatlansága

Program bezárása (use case):

            - Funkció leírása: a futó programunkat zárhatjuk be ezen funkció segítségével

            - Előfeltétel: futó program

            - Előfeltétel: a program valóban bezárul

            - Normál esetben az alkalmazás valóban bezárul



3.1.2 Vizsgálatok




1-1  modul szerinti vizsgálat (use case):

-         Funkció leírása: modulonként (egyet - egyet kiválasztva) végezhetjük a vizsgálatot

-         Előfeltétel: nyitott forrásfájl

-         Előfeltétel: megtörténik az ellenőrzés

-         Normál esetben elkészül a jelentés

Összes modul szerinti vizsgálat (use case):

-         Funkció leírása: forrásfájl vizsgálata az összes modul segítségével

-         Előfeltétel: nyitott forrásfájl

-         Előfeltétel: megtörténik az ellenőrzés

-         Normál esetben elkészül a jelentés

Egyéni vizsgálat (use case):

-         Funkció leírása: Modulok szerinti vizsgálat

-         Előfeltétel: nyitott forrásfájl

-         Előfeltétel: megtörténjen az ellenőrzés

-         Normál esetben elkészül a jelentés

Modulok kiválasztása (use case):

-         Funkció leírása: itt választhatjuk ki azokat a modulokat amelyek alapján szeretnénk ha a vizsgálat lefutna

-         Előfeltétel: nyitott forrásfájl

-         Előfeltétel: megtörténjen az ellenőrzés

-         Végkifejlet: elkészül a jelentés

Jelentés előállítása (use case):

-         Funkció leírása: jelentés készítése megadott paraméterek alapján

-         Előfeltétel: nyitott forrásfájl, paraméterek bevitele

-         Normál esetben megjelenik a jelentés



3.1.3 Beállítások




Területi beállítások (use case):

-         Funkció leírása: itt állíthatjuk be a program nyelvét

-         Előfeltétel: létezzen a program nyelvének átállításához nélkülözhetetlen nyelvi fájl

-         Előfeltétel: a program az általunk kiválasztott nyelven működik tovább

-         Normál esetben megváltozik a program nyelve

-         Probléma akkor merülhet fel, ha nem létezik nyelvi fájl

Header fájlok helyének meghatározása (use case):

-         Funkció leírása: az ellenőrizendő header-fájlok helyét adhatjuk meg

-         Előfeltétel: legyen indukált header fájl a forrásban

-         Előfeltétel: eltároljuk a header fájl eléréséről szóló információt

-         Problémamenetes működésnél tárolásra kerül az inkludált headerfájlok directory-ja



3.1.4 Nézetváltás




Forrás megjelenítése (use case):

-         Funkció leírása: ezen funkció lehetővé teszi, hogy a megnyitott forrásfájlt láthatjuk

-         Előfeltétel: mindig legyen megnyitott forrásfájl

-         Előfeltétel: a forrásfájl látható a képernyőn

-         Zavartalan működésnél átvált forrás nézetre

-         Kivételes eset akkor áll fenn, ha nincs megnyitott forrásfájlunk

Jelentés megjelenítése (use case):

-         Funkció leírása: ezen funkció lehetőé teszi, hogy átváltsunk olyan módba, hogy az elkészített jelentést láthassuk

-         Előfeltétel: legyen elkészült jelentésünk

-         Előfeltétel: az elkészült jelentés látható legyen a képernyőn

-         Ha minden zavartalan a program átvált a jelentés nézetére

-         Kivételes eset akkor áll fenn, ha nincs elkészült jelentés



3.1.5 Segítség kérése (Súgó)




Súgó megjelenítése (use case):

-         Funkció leírása: Súgó funkció megtekintés

-         Előfeltétel: a program használata során valami kérdés merüljön fel a felhasználóban a z alkalmazással kapcsolatban

-         Előfeltétel: a felhasználó kérdésére megtalálja a megfelelő választ

-         A funkció hibamentes működésekor a súgó elindul

Alkalmazás névjegyének megjelenítése (use case):

-         Funkció leírása: a program készítésének ideje, verziószáma, illetve a készítők névsorát tekinthetjük meg

-         Előfeltétel: a felhasználó érdeklődést mutasson a program ezen adatai iránt

-         Előfeltétel: a program használója érdeklődését kielégíti

-         A funkció hibamentesen működésekor megjelenik a névjegy



4. Használhatóság

Fontos szempont a tervezéskor, hogy a program maximálisan felhasználóbarát legyen, így egy kezdő felhasználó is gyorsan elsajátíthatja a program használatát, a betanulás nem von el sok időt a produktív munkától. Igyekszünk egy széles felhasználói tábor számára könnyen és hatékonyan alkalmazható alkalmazás elkészítésére. A könnyű kezelhetőséget és rövid betanulási időt szolgálja az is, hogy a program kezelőfelülete hasonló más programok felületéhez (általános menüpontok (File, Súgó, Nézet, stb.)), így az elérhető funkciók feltérképezése, megtalálása gyors lehet.



4.1 A felhasználó tudásszintje

Nem teszünk különbséget kezdő és haladó felhasználó között, így nincs a programnak ’kezdő’ és ’haladó’ üzemmódja. Ezt igyekszünk kiváltani az áttekinthető, logikus, magától értetődő felülettel, ennek köszönhetően kezdő és haladó felhasználó is könnyen és hatékonyan dolgozhat a szoftver segítségével („Nem a programmal kell dolgozni, hanem a program segítségével…”). Ha a felhasználó mégis elakad, akkor segítséget kaphat a beépített súgóból.



4.2 A sebesség más rendszerekhez viszonyítva

Erről nincs konkrét adatunk, mivel nehéz hasonló célú alkalmazást találni (illetve hozzájutni), viszont a program becsült futásideje átlagos méretű forrásfájlokon (pár ezer sor) a néhány másodperc tartományba esik, így tulajdonképpen nincs értelme a sebességen gondolkodni.



4.3 Kezdő felhasználót segítő lehetőségek

Legfontosabb a magától értetődő, egyszerű, logikus felhasználói felület, az átgondolt, áttekinthető menürendszer és a mindenre kiterjedő, lehetőleg példákkal illusztrált súgó funkció. Ezek alakján (és mivel a programnak nincs különösebben sok funkciója (csak azt csinálja, amire készítettük, de azt tökéletesen)) nyugodtak vagyunk afelől, hogy bármilyen, akár tapasztalatlan felhasználói is rövid ismerkedés után képes lesz használni a programot.



4.4 A program felhasználói felülete

A program felhasználói felületét úgy tervezzük meg, hogy a felhasználóknak ismerős legyen, hasonlítson más, hasonló célú programok kinézetére (általános menüpontok, képernyőelemek elhelyezése, stb.), így kevesebb idő szükséges majd a program megismeréséhez, betanulásához, így több idő marad a produktív munkára, ez pedig költségmegtakarítást jelent a felhasználónak (és versenyelőnyt nekünk).



5. Megbízhatóság

Az elkészítendő rendszerrel szemben igyekeztünk maximális elvárásokat támasztani, így ha néhány rész nem sikerül tökéletesen, még mindig elfogadható lesz az eredmény. Megpróbáltuk megbecsülni az alkalmazás teljesítményével kapcsolatos fontosabb időadatokat. Ezek persze a tervezés későbbi fázisaiban, illetve az implementáció folyamán még változhatnak. A végleges értékek majd a tesztelés fázisában derülnek ki. Mégis fontos tisztában lenni a várható értékekkel, mivel komolyabb változtatásokat a későbbi tervezési fázisokban már igen nehéz eszközölni.

A program várható teljesítménye megfelelő lesz, hiszen csupán néhány kB méretű szövegfájlok átvizsgálásáról van sző. A válaszidőt a vizsgált forráskód hossza és bonyolultsága határozza meg.

A válaszidő alapvetően két részből tevődik össze:

-         a forrás megnyitása: max. 1 mp

-         a forrás átvizsgálása: hossztól függően 2-3 mp.

A forrás vizsgálatának időtartama alatt a program funkciói korlátozva vannak, a vizsgálat folyamata bármikor megszakítható. Ennek csak különösen nagy méretű fájlok esetén van jelentősége, mivel átlagos méretű (néhány száz, vagy pár ezer sor) fájlok esetén az egész folyamat néhány másodperc alatt végbemegy.

            A program a forrásfájlokon semmilyen módosítást nem végez, így kárt, vagy veszteséget, adatvesztést, fájlsérülést nem okozhat. Ilyen hiba csak más szoftverek hibájából, vagy hardverhibából adódhat, azonban ez bármilyen más szoftver esetén fennáll. A program csupán olvassa és elemzi a fájlokat és a megadott szempontok alapján egy jelentést állít elő, ami gyakorlatilag egy ajánlás a forráskód esetleges szintaktikai, szemantikai, vagy formai hibáinak kijavítására. Az analízis időtartama alatt tájékoztatja a felhasználót a folyamat aktuális állapotáról és a befejezés becsült idejéről. Lehetőség van a folyamat megszakítására is, természetesen a program ebbel az esetben eltávolít maga után, ami a működés közben létrejött. Ilyenkor semmilyen változtatás nem történik egyetlen fájlon sem. A folyamat megszakítása esetén is készül azonban jelentés, amely a megszakítás időpontjáig feldolgozott részekre vonatkozik. Ebben az esetben a jelentés végén jelzi a program, hogy a vizsgálat nem ment teljes mértékben végbe, hanem meg lett szakítva.

            A program karbantartást nem igényel, így karbantartási idővel nem számolhatunk, a telepítést követően nincs szükség semmilyen frissítésre, vagy egyéb beállításra.



6. Teljesítmény

Egy megfelelően elkészített programról is feltételezhetjük hogy tartalmazhatnak olyan kisebb, vagy nagyobb hibákat amelyeket a felhasználó nem vesz észre, ennek érdekében el fogunk készíteni egy olyan forráskód elemző alkalmazást, amelynek feladata ennek a fajta problémának a megtalálása. Ez pedig a TMSA („TM Source Analiser”). Két fajta hiba fordulhat elő amelyet a felhasználó elkövethet ezek pedig a szintaktikai és szemantikai  hibák. Mindkét hiba olyan problémából adódhat amely az emberi tényező fáradságán, hiányosságán alapul.

A TMSA a szemantikai ellenőrzést nem valósítja meg csupán csak a szintaktikait. Ez abból ered hogy a  szemantikai ellenőrzés nagyon bonyolult és ennek következtében sok időt venne igénybe.

A TMSA nem korlátozza a forrásfájl méretét, mivel az Általános Informatika Tanszék C++ háziszabványa alapján ellenőrzi, melyben pontosan szerepelnek a forrásfájl méretére vonatkozó előírások.

Az erőforrásigényeket meghatározza, hogy Windows platformra tervezzük, így a minimális rendszerkövetelmények adódnak. A Windows követelményein túl a TMSA nem igényel semmilyen további erőforrást. A futtatáshoz tehát elméletileg elégséges a legalább 166MHz órajelű, pentium osztályú processzor, 125MB szabad merevlemez-kapacitás és legalább 32MB memőria.



7. Támogatottság

Egy meglehetősen egyszerű feladatot megvalósító alkalmazásról van szó, nem kíván különösebb beállítási, vagy karbantartási műveleteket. Ezért nem tervezünk a programba ilyen funkciókat beépíteni.

Fontosabb szempontok a támogatottsággal kapcsolatban:

·        Fejlesztőkörnyezetnek a MS Visual J++-t választottuk, így a későbbi kiegészítésekhez, bővítésekhez is ezt kell majd használni

·        Az esetleges hibák kijavítását és a későbbi bővítést megkönnyíti, hogy a háziszabványnak megfelelően készítjük el a programot

·        A program nem készít naplófájlokat az elemzés folyamatáról, így utólagos hibakeresésre nincs lehetőség

·        A későbbi fejlesztésekhez, bővítésekhez szükséges információk a forrásfájlokban – a felhasználó elől rejtve – megtalálhatók.



8. Tervezési korlátozások

· Közérthetőség: A tervezési korlátozások fontos egysége a felhasználói felület közérthetősége, felhasználóbarát mivolta. Hatékonyságot megnövelendő minden felhasználó számára a könnyű kezelhetőség érdekében az átlátható felépítés, szemléletes megjelenítés, maga a program használhatósága. A program által nyújtott szolgáltatások elérhetősége kell rövid, és átlátható legyen. Természetesen az egyszerűség nem korlátozhatja mindazt, amit a program lehetőségként felkínál nekünk. De mint említettük elsősorban a bonyolultságot akarjuk nélkülözni, maximális kihasználtság mellett. Alpontokba tömörítve a következők céljaink:

o       Az interaktivitást szem előtt tartva a parancssoros megoldást elvetettük, helyette ablakozós programot készítünk majd, elérve ezzel célunkat a kor követelményeinek való megfelelést.

o       Szintén a használhatóságot előtérbe helyezve jól érthető, könnyen azonosítható menük létrehozását tervezzük, különböző opciók széles körű felhasználását lehetővé téve ezzel.  

o       Lementés report formájában történik majd, nyomtatható verzióban.

 

· Igényekhez igazodva: természetesen nem kapunk teljesen szabad kezet a megvalósítást illetően, hiszen alkalmazkodnunk kell a megrendelő igényeihez, az általa támasztott elvárások betartásához:

o       kívánt funkciók, szolgáltatások megvalósítása 

o       hatásos biztonsági intézkedések létrehozása

· Programozási nyelv: választott objektumorientált nyelv a Java lett, ebből következően az alábbiakat kellett figyelembe vennünk:

o       Külön osztályt képeznek az egyes funkciók

o       Fájlt jelent minden egyes osztály

· Használt fejlesztőeszköz: választott fejlesztőeszköz, a használt programozási nyelv miatt, a program előreláthatólag nem lesz platform független.

· Módszertan: korlátozások lépnek fel az általunk alkalmazott Boehm (1976) –féle klasszikus „vízesés” (ered.: waterfall) modell alkalmazása miatt (lásd az 1.ábra):

o       Egyes hibák sajnos rejtve maradhatnak az implementáció késői volta miatt, ezek felderítése nem épp könnyű feladat.

o       A programról való kommunikáció a megrendelővel nem mindig egyértelmű és hiányosságok lévén nem elég hatékony. Ezek kiküszöbölhetőek lennének futó prototípus alkalmazása esetén, azonban ez nem áll rendelkezésünkre. A pontosítás csak később megldható.

· Fontos: rengeteg fejtörést fog várhatóan okozni az egyes csapattagok számára a Java nyelv használata, ugyanakkor megfelelő hozzáállással nem szabad ez gondot jelentsen a fejlesztőknek, nekünk. Elsajátítása csak hasznunkra válhat, és reméljük fog is.



9. On-line dokumentáció és Help rendszer

A program használatához segítséget nyújtó dokumentumot fogunk készíteni. Ez jelentheti a felhasználók számára a Help rendszert, közérthetőbben a súgót. Ezt elérhetővé szándékozzuk tenni a programunkból is. Szöveges dokumentumról lévén szó megtekinthető a Súgó programunk használata, és egyéb programok használatának mellőzésével is View-ot használva szövegszerkesztő alatt. Help rendszerünk nem igényel programunkra való tekintettel hagyományos felépítést, ezért a keresőrendszerben való tárolást elvetettük. Helyette megfontoltan felépített tartalomjegyzékkel ellátott egyszerűbb szöveges dokumentumot hoztunk létre. A felhasználó igényeit ez is tökéletesen kielégíti.

Nem célunk on-line dokumentációt készíteni, hiszen programunk nem internetes alkalmazás, ennek ellenére a Súgó fájl elérhető a világhálóról.



10. Felhasznált kész komponensek

Törekszünk az egyediségre, és önálló erőből történő megvalósításra. Nem célunk élni a lehetőséggel, hogy más „segítségét” igénybe vegyük. Tehát nem fogunk ilyen komponenseket, akár programrészletet használni.



11. Interfészek

Külső kapcsolata nem lesz termékünknek, azaz nem kapcsolódik hálózatba. Nem végzi feladatát osztott módban, az elvégzett tranzakciókról nem készül napló fájl, így külső interfészre nincs szükség. A felhasználóval való kapcsolattartást érdekében használunk egyedül interfészeket, közlésként benne hogy hány százalékban van készen a forrásfájl ellenőrzése.



11.1. Felhasználói interfészek

A felhasználói interfészre vonatkozó követelmények:

·        Könnyű átláthatóság az interfészre vonatkozólag.

·        Ne térjen el a felhasználó számára megszokottaktól

·        Érthető, világos megfogalmazás tekintettel a felhasználóra.

Előny, és igénye is a felhasználóknak a gyors tanulhatóság, könnyű, világos kezelhetőség, a területi beállítás lehetősége adott legyen, amennyiben kifejezett igény van rá.  Fontos része még a programot illetően a hibák pontos felfedése, helyének meghatározása, valamint ellenőrzési funkcióiban bővíthető legyen. 

A kapcsolattartó felület fontosságát ki kell emelnünk. Leglényegesebb tehát a user interfész, amely maga a program felülete, amely segítségével a felhasználó kívánt műveleteit végrehajthatja. Menüből választható műveletek, melyek lehetnek akár opcionálisak is. Ezek a felhasználó számára feltételezhetően ismerős a Windows operációs rendszer által kínált beépített programokhoz lehet hasonló.



11.2. Hardware interfészek

Speciálisan kezelendő hardver elemeket nem használunk.



11.3. Software interfészek

Eme elemekkel való használatról is lemondunk.



11.4. Kommunikációs interfészek

Mint már említettük rendszerünk nem rendelkezik kommunikációs interfésszel, nem tartja a kapcsolatot más rendszerekkel.



12. Alkalmazott szabványok

Jellegéből adódóan a program üzemeltetése során semmilyen törvénysértő tevékenységet nem visz véghez, valamint az felhasználás során alkalmazandó szabvány nagyfokú hasonlóságot mutat a fejlesztés során követendő szabványhoz, ezért ezek értékelésével nem áll szándékunkban foglalkozni.

Feltételezzük, hogy a felhasználó az ellenőrizendő forráskódhoz jogtiszta forrásból jut hozzá, hiszen ezt nem is tudnánk ellenőrizni.



12.1. Kötelezően alkalmazandó szabványok

Egyetlen kritériumként az objektumorientáltságot véltük felfedezni, melynek betartása kellemes, és egyet is értünk vele. Kitűnő lehetőséget biztosít ez számunkra a Java nyelv minél mélyebb megismerését illetően. Kifejezetten e nyelven való megvalósítás volt célunk. Manapság természetesen szükség van az objektum orientáltságra. Projektunk szempontjából ez nem jelenthet akadályt az ily módon történő fejlesztés.

A tantárgy tehát nem szabja az implementációs nyelvet, következésképp kötelezően betartandó szabványt sem ad meg.



12.2. Választás alapján alkalmazott szabványok

Forráskód elemző programunk miatt, teljesen egyértelmű, hogy legalább azon formai előírásokat be kell tartanunk, amelyek meglétét az alkalmazásunk is ellenőrzi.

A C-re és a C++ -ra vonatkozó házi-szabvány előírásait tervezzük betartani. Természetesen azon részeit csak, amelyek alkalmazhatók Java környezetben, és elvonatkoztathatók az előbbiekben említett nyelvektől.

Fennáll annak lehetősége, mivel a fejlesztőeszközünk az MS Visual J++, ezért némely, a fejlesztőkörnyezet által automatikusan generált kódrészletek ettől eltérhetnek.

Az egységesség és szabvány értelmében igyekszünk elvonatkoztatni saját programírási stílusunktól, és kinézetre is összefüggő kódot létrehozni. Ami előreláthatólag szintén több időt fog felemészteni, mint ahogyan azt most tervezzük.



13. Mellékletek

Források:

1.      http://www.iit.uni-miskolc.hu/ficsor

2.      a Szoftver technológia című tárgy előadásainak anyaga

3.      a Miskolci Egyetem C++ kódolási háziszabványa



A dokumentum készült a következők alapján:

1.      az analízis fázis Visio és Projekt Terv nevű dokumentumai alapján

2.      a konzulenssel folytatott megbeszélések alapján

Ábrajegyzék: