Fejlesztő és tesztelő eszközök (Development and testing tools)

Hagyományos szoftverfejlesztés technikái

A fejlődés dióhéjban :

  1. Ősidő: gépi kód közvetlen bevitele (konzolkapcsolókkal, késöbb lyukkártyán)
  2. Assembly nyelvek, assembler fordító, szövegszerkesztő a forráskód szerkesztéséhez.
  3. Magasszintű programnyelvek, compiler (fordító). A fordító dolga a programozási nyelven leírt programból gépi kódot előállítani. Procedurális programnyelveknél (mint pl. Pascal, C) ez viszonylag egyszerű folyamat.
  4. Kiegészítő eszközök: debugger (a programhibák felderítéséhez) , profiler (a szuk keresztmetszetek felderítéséhez), GUI (kezelői felület) tervezö. Mindez egyben: IDE (Integrated Development Environment)
  5. Legújabban: RAD (Rapid Application Development) eszközök. (Pl. VisualBasic, Delphi)

Kisebb szoftvertermékek előállításánál ma is a hagyományos út mentén készülnek a szoftverek.

Kulcsszavak: gépi kód , assembler , forráskód , debugger , GUI , IDE , RAD


Rendszertervezés megjelenése és elvei

A rendszerelmélet kifejezést LudwigvonBertalanffyLudwig von Bertalanffy magyar származású kanadai biológus vezette be a
tudományos irodalomba az ötvenes években, amikor megjelent „általános rendszerelmélet” (General System Theory) címu tanulmánya. A rendszerelmélet tárgya mindig a rendszer.

Fogalma:

  1. A rendszer egymással összefüggö tényezök szervezett együttese.
  2. Rendszer az egymással dinamikus kölcsönhatásban álló dolgok halmaza, amelynek, mint egésznek a viselkedése
    nem jellemzö az öt alkotó dolgok egyedi tulajdonságaira.
  3. A rendszer olyan rendszerrészekböl álló képzödmény, amelyben a rendszerrészek be-és kimenetekkel kapcsolódnak egymáshoz.

Rendszerfejlesztés szakaszai


Szoftvertervezés = rendszertervezés

Termék előállításához  technológiára (=adott termék gyártási eljárásainak összessége) van a szükség.

 

Célja: tervezési paramétereknek megfelelő terméket állítsunk elő
Szoftver rendszer.:  

Szoftvertervezés (Software Engineering)
A nagyméretű programok előállítására alkalmas szoftvertechnológiákkal foglalkozó mérnöki tudományág. Célja: a szoftverrendszerek költséghatékony előállítása
Rendszer egymással kölcsönösen kapcsolatban lévő komponenssel, jól átgondolt egy adott cél elérés érdekében együtt dolgozó együttese.

Szoftvertervezés – fiatal tudomány
1968 – „szoftverkrízis”

Gondok az informatikai rendszerfejlesztésben:

 


Szoftverfolyamat

Tevékenységek és kapcsolódó eredmények olyan sora, amely egy szoftvertermék  előállításához vezet. Szoftverfolyamat indulhat 0-ról. Gyakoribb, hogy alapról indul.
CASE – eszközök -  a szoftverfolyamat automatizálása
Computer Aided Software Engineering

    1. Szoftverspecifikáció: funkcionális  és nem funkcionális tulajdonságok leírása (sebesség, memória felhasználás, egyszerre hány felhasználót képes kiszolgálni, védett)
    2. Szoftvertervezés és implementáció
    3. Szoftvervalidáció – megmutatják ügyfél kívánságainak megfelelő-e
    4. Szoftverevolúció – megrendelő által változtatásokat könnyen végrehajtani

    Szoftverspecifikáció:

    A szoftver funkcionális és nem funkcionális tulajdonságait írja le.(nem funkcionális például a sw sebessége, memóriaigénye, védettsége) Követelmény dokumentum előállítása a cél.

    Szoftvertervezés és implementáció::

    implementáció = rendszer specifikációját futtatható rendszerré alakítják át
    tervezés + kódolás

      • Architektúrális tervezés (alrendszereket, köztük lévő kapcsolatok megnevezése)
      • Absztrakt specifikáció (alrendszerek szolgáltatásait leírjuk)
      • Interfész tervezés
      • Komponens tervezés (szolgáltatásokat helyezünk el, komponensek közötti kapcsolatok tervezése)
      • Adatszerkezet tervezése
      • Algoritmusok tervezése

      Szoftvervalidáció: Szoftvervizsgálat és tesztelés

      A felhasználó, megrendelő azt kapta-e amit akart?

      Szoftverevolúció:

        • korrigálni kell az eredeti rendszer hibáit
        • új követelmények beépítése
        • gépek, szervezetek (célok) megvalósítása – akár 90%-a is lehet a szoftver költségeknek


         

        A szoftverfolyamat modellje:

        Vízesés modell, Evolúciós modell, Boehm-féle spirális modell, ...

        Vízesés modell:

        Boehm-féle spirális modell:

         

         

         

        A szoftverfejlesztés életciklusa

        Egy emelkedo spirált képzeljetek ide:

        1. Az igény felmerülése
        2. Elemzés
        3. Strukturált tervezés
        4. Kódolás
        5. Termék kibocsátás
        6. Elemzés
        7. Hibajavítás vagy új termék igényének felmerülése

        Azért az látszik, hogy hiába a strukturált tervezés, a programkódot elöbb utóbb mindenképpen meg kell írni, ha muködö rendszert akarunk. Az strukturált módszertan és az azt támogató CASE eszközök azt biztosítják számunkra, hogy korrekt feladatspecifikáció fog rendelkezésre állni, illetöleg a program egyes - egyébként programozástechnikailag unalmas - részei automatikusan keletkeznek. így a programozó az érdemi problémára összpontosíthat, amely ráadásul elég kis, önmagukban könnyen áttekinthetö részekre lett szétszedve. A kódolás érdemi munkáját pedig valamilyen hagyományoshoz közeli módon (pl. RAD) végzi.

         


         

        Automatizált folyamattámogatás

         

        CASE eszközök

        Mi a CASE-eszköz?
        CASE = Computer Aided Software Engineering.
        A CASE-eszközök olyan szoftver rendszerek, amelyek a szoftver folyamat tevékenységeit támogatják, automatizálják. általában konkrét módszerekhez kapcsolódnak.
        Magas szintu CASE-eszközök:
        A szoftverfolyamat kezdeti lépéseit támogatják: elemzés, tervezés, modellezés, rendszer dokumentálás, jelentés-készítés, stb.
        Alacsony szintu CASE-eszközök:
        A szoftverfejlesztés késobbi tevékenységeit támogatják, mint kódszerkesztés (kódgenerálás!), kódelemzés, nyomkövetés tesztelés, stb.

        Egy 1979-es vizsgálat eredménye szerint a megkezdett programok fele elkészül, de sohasem használják, negyede el sem készül, negyede kerül végül használatba, de nagyobbrészben utólagos nagyobb mérvu átalakítás után.
        Akkori tapasztalatok szerint a hibajavítás a programozási idö 80 %-át teszi ki.
        Hosszú a "belövési ido": amíg a rendszert a felhasználó igényeinek megfelelö minöségben muködö állapotba hozzák.

         

        A CASE-eszközök szerepe

        Követelményspecifikáció során: grafikus rendszermodellek, üzleti és domain modellek
        Elemzés / tervezés során: adatszótár kezelése (a tervben található egyedek és kapcsolataik),
                                                              felhasználói interfész generálása egy grafikus interfész leírástól a terv          ellentmondás mentességgel vizsgálata
        Implementáció során:

        • automatikus kódgenerálás (Computer Aided Programming – CAD)
        • verziókezelés

        Szoftvervalidáció során:

        • automatikus teszteset – generálás
        • teszt kiértékelés, dokumentálás


        Szoftverevolúció során:

        • forráskód visszafejtés (reverse engineering),
        • régebbi verziójú programoknak automatikus újrafordítása az új verzióra


        Minden fázisban:

        • automatikus dokumentum generálás
        • projektmenedzsment támogatás (ütemezés, határidők figyelése, erőforrás kiosztás, kezelés) 40%
        • tervezői tevékenység --> kreatív gondolkodást igényel, csak a rutintevékenységek automatizáltak (MI használata)
        • csoportkommunikáció gyenge támogatása

        A CASE-eszközök csoportosítása

        • funkcionális
        • folyamat
        • integrációs

        Funkcionalitásuk alapján: tervező, szerkesztő, konfigurációkezelő, prototípuskészítő, nyelvi feldolgozó, tesztelő programkezelő, nyomkövető, dokumentációs és újratervezési
        Az eszközök által támogatott folyamat alapján
        Integrációs szempont szerint:

        • Eszköz (Tool): egy folyamatlépést támogatnak
        • Eszközkészletek (Toolkits): néhány folyamatlépést támogatnak
        • Környezetek (I-CASE Integrated Workbench): a szoftverfolyamat minden lépését támogatják, eszközök teljesen integráltak

        Néhány konkrét CASE-eszköz:
        iUML; Objectory; Paradigma Plus,Rationel Suite (IBM); ARIS;Forte ADE; Cool termékcsalád


        A jó szoftver!

        Minőség:

        gyors, hatékony, érhető, könnyen módosítható kód, kis válaszidő

        Követelmények:

        • termékkövetelmények

          - használhatóság
          - hatékonysági (teljesítmény, tárterület)
          - megbízhatósági
          - hordozhatósági

        • külső követelmények

          - együttműködési
          - etikai
          - törvényi (adatvédelmi, biztonsági)

        • terméktulajdonság

          - karbantarthatóság
          - üzembiztonság
          - hatékonyság
          - használhatóság – megcélzott felhasználónak ne kelljen indokolatlan erőfeszítést tennie a program használatához

        A szoftvertervezés főbb kihívásai:

        • Bizalom: weboldalak, webszolgáltatások, megbízhatóak legyenek, adattovábbítás, kezelés megoldott
        • Heterogenitás: különböző gépek, op. rendszerek, programozási nyelvek együttműködésének biztosítás
        • Szállítás: hagyományos fejlesztési technikák lassúak, nagy rendszerek gyors és megbízható előállítása

        Összegezve:

        Gyakorló kérdések

        Irodalom: Esztergár-Kiss Domokos: A szoftvertechnológia alapjai