Кіріспе
Бағдарламалық қолданбалардың прототиптерін жасау қызметі
Бағдарламалық қолданбаларды прототиптеу – әзірленіп жатқан бағдарламалық қолданбаның толық емес нұсқаларын, яғни прототиптерін жасау қызметі. Бұл бағдарламалық жасақтаманы әзірлеу кезінде жүзеге асырылатын қызмет және машина жасау немесе өндіріс сияқты басқа салалардағы прототиптеумен салыстырылады. Прототип көбінесе соңғы өнімнің тек бірнеше аспектілерін имитациялайды және одан толығымен өзгеше болуы мүмкін. Прототиптеудің бірнеше артықшылығы бар: бағдарламалық жасақтаманы жобалайтын және іске асыратын адамдар жобаның бастапқы кезеңінде пайдаланушылардан құнды кері байланыс ала алады. Клиент пен мердігер жасалған бағдарламалық жасақтаманың бағдарламалық ерекшелемелерге сәйкес келіп-келмейтінін тексеруге мүмкіндік алады, соған сәйкес бағдарламалық қолданба құрылады. Бұдан бөлек, бағдарламалық инженер бастапқы жобалық бағалаулардың дұрыстығын және жоспарланған мерзімдер мен этаптардың орындалу мүмкіндігін бағалай алады. Прототиптеудегі толықтық деңгейі мен қолданылатын техникалар 1970 жылдардың басынан бері дамып, талқыланып келеді.
Шолу
Прототиптің мақсаты – бағдарламалық қамтамасыз етуді пайдаланушыларға соңғы өнімнің дизайны үшін әзірлеушілердің ұсыныстарын сипаттамаларға сүйене отырып түсіндіру және бағалаудың орнына, оларды іс жүзінде сынап көруге, бағалауға мүмкіндік беру. Бағдарламалық қамтамасыз етуді прототиптеу бағдарламаның функцияларын, сондай-ақ ықтимал қауіп-қатерлер мен мәселелерді түсінуге көмектеседі. Сонымен қатар, соңғы пайдаланушылар прототипті бұрын ескерілмеген талаптарды сипаттау және дәлелдеу үшін пайдалана алады, бұл әзірлеушілер мен клиенттері арасындағы коммерциялық қатынаста маңызды рөл атқарады. Әсіресе, өзара әрекеттесу дизайны осы мақсатта прототиптеуді жиі қолданады. Бұл процеске 1960 және 1970 жылдардағы монолиттік даму циклы керісінше келеді. Онда ең алдымен толық бағдарлама құрылып, кейін дизайн мен іске асыру арасындағы келіспеушіліктер шешілетін, бұл бағдарламалық қамтамасыз ету құнының өсуіне және уақыт пен шығындарды дұрыс есептемеуге әкелді. Монолиттік тәсіл "(бағдарламалық) айдаһарды өлтіру" деп аталды, себебі ол бағдарламалық қамтамасыз етуді жасаушы мен әзірлеушінің бүкіл айдаһарды жалғыз өзі жеңуге тиіс батыр екенін болжайды. Прототиптеу аяқталған бағдарламалық өнімді өзгертуге байланысты туындайтын үлкен шығындар мен қиындықтарды болдырмауға да мүмкіндік береді. Прототиптеу практикасы Фредерик П. Брукс өзінің 1975 жылғы "Мифтік адам-ай" кітабында және оның 10 жылдық мерекесіне арналған "Күміс оқ жоқ" мақаласында айтқан мәселелердің бірі. Ірі масштабты бағдарламалық қамтамасыз етуді прототиптеудің ерте мысалы – Нью-Йорк университетінің Ada/ED трансляторын Ada бағдарламалау тілі үшін іске асыру болды. Ол SETL тілінде Ada тілі үшін орындалатын семантикалық модельді жасау мақсатымен жүзеге асырылды, мұнда жылдамдық пен тиімділіктен гөрі дизайн мен пайдаланушы интерфейсінің түсінікті болуына басымдық берілді. NYU Ada/ED жүйесі 1983 жылдың 11 сәуірінде сертификатталған Ada-ның алғашқы расталған іске асырылуы болды.
Түрлері
Бағдарламалық жасақтаманы прототиптеудің көптеген түрлері бар. Дегенмен, барлық әдістер қандай да бір жолмен прототиптеудің екі басты түріне негізделген: бір рет пайдаланылатын және дамып келе жатқан прототиптеу.
Эволюциялық прототиптеу
Эволюциялық прототиптеу (кейде үлгілеу деп те аталады) бір рет қолданылатын прототиптеуден мүлдем өзгеше. Эволюциялық прототиптеуді пайдаланудың басты мақсаты – құрылымды түрде өте берік прототипті жасау және оны үнемі жетілдіріп отыру. Осы тәсілдің себебі – эволюциялық прототип құрылған кезде жаңа жүйенің негізгі бөлігін құрайды, ал кейін жақсартулар мен қосымша талаптар оған енгізіледі. Эволюциялық прототиптеуді қолдана отырып жүйе жасау кезінде, жүйе үнемі жетілдіріліп, қайта құрылады. «Эволюциялық прототиптеу біздің барлық талаптарды толық түсінбейтінімізді мойындайды және жақсы түсінілген талаптарды ғана іске асырады». Бұл техника әзірлеу тобына мүмкіндіктерді қосуға немесе талаптар мен жобалау кезеңінде ескерілмеген өзгерістерді енгізуге мүмкіндік береді. Жүйенің пайдалы болуы үшін, ол мақсатталған пайдалану ортасында қолданылу арқылы дамуы керек. Өнім ешқашан «аяқталмайды»; ол пайдалану ортасы өзгеретін сайын үнемі жетіледі. Біз көбінесе жүйені ең таныс анықтамалық шеңберде – қазіргі уақыттағы жағдайды ескере отырып анықтауға тырысамыз. Бизнес қалай жүргізілетіні және бизнес жүзеге асырылатын технологиялық база туралы болжамдар жасаймыз. Мүмкіндікті дамыту үшін жоспар жасалады және ерте не кеш, көздеген жүйеге ұқсас нәрсе жеткізіледі. Эволюциялық прототиптердің бір рет қолданылатын прототиптерге қарағанда артықшылығы бар – олар функционалды жүйелер. Олар пайдаланушылар жоспарлаған барлық мүмкіндіктерге ие болмаса да, соңғы жүйе жеткізілгенге дейін уақытша пайдаланылуы мүмкін. «Прототиптеу ортасында пайдаланушының бастапқы прототипті практикалық қолдану үшін, одан да жетілдірілген нұсқаны күтіп отыруы жиі кездеседі. Пайдаланушы «кемшілікті» жүйенің мүлдем жүйе болмауынан жақсырақ деп шеше алады».
" evolutionary prototyping acknowledges that we do not understand all the requirements and builds only those that are well understood." This technique allows the development team to add features, or make changes that couldn't be conceived during the requirements and design phase. For a system to be useful, it must evolve through use in its intended operational environment. A product is never "done;" it is always maturing as the usage environment changes we often try to define a system using our most familiar frame of reference—where we are now. We make assumptions about the way business will be conducted and the technology base on which the business will be implemented. A plan is enacted to develop the capability, and, sooner or later, something resembling the envisioned system is delivered. Evolutionary prototypes have an advantage over throwaway prototypes in that they are functional systems. Although they may not have all the features the users have planned, they may be used on an interim basis until the final system is delivered. "It is not unusual within a prototyping environment for the user to put an initial prototype to practical use while waiting for a more developed version The user may decide that a 'flawed' system is better than no system at all."
Өрттену прототиптеу
Соңғы өнім жеке прототиптер түрінде құрастырылады. Соңында, жеке прототиптер біртұтас дизайнға біріктіріледі. Инкременттік прототиптеудің арқасында пайдаланушы мен бағдарламашы арасындағы уақыт аралығы қысқартылады.
Экстремалды прототиптеу
Экстремалды прототиптеу, әсіресе веб-қосымшаларды әзірлеу үшін даму процесі ретінде қолданылады. Негізінде, ол веб-дамытуды үш кезеңге бөледі, әрқайсысы алдыңғы кезеңге негізделген. Бірінші кезең – HTML беттерінен тұратын статикалық прототип. Екінші кезеңде экрандар бағдарламаланып, толыққанды функционалдыққа ие болады, ал қызметтердің қабаты имитацияланады. Үшінші кезеңде қызметтер іске асырылады. "Бұл процесс экстремалды прототиптеу деп аталады, себебі процесстің екінші кезеңіне назар аудару қажет – онда толық функционалды UI, қызметтердің шартына ғана назар аудара отырып, дамытылады."
Артықшылықтар
Бағдарламалық жасақтаманы әзірлеуде прототиптеуді пайдаланудың көптеген артықшылықтары бар – соның ішінде нақты да, абстрактілі де артықшылықтар кездеседі. Уақыт пен шығындарды үнемдеу: Прототиптеу дамытушыларға берілетін талаптар мен техникалық ерекшемелердің сапасын арттыруға мүмкіндік береді. Өйткені өзгерістерді енгізу даму процесінің соңына қарай анықталғанда экспоненциалды түрде қымбатқа түседі, сондықтан пайдаланушының не қалағанын ертерек білу нәтижесінде жылдам әрі төмен құнды бағдарламалық жасақтама жасауға болады.
Операциялық прототиптеу
Операциялық прототипті Алан Дэвис, бір рет пайдаланылатын және эволюциялық прототиптерді дәстүрлі жүйелерді әзірлеумен біріктірудің бір жолы ретінде ұсынды. "Бұл жылдам және жеңіл, сондай-ақ дәстүрлі әзірлеу әлемдерінің ең жақсы жақтарын ақылға қонымды түрде ұсынады. Дизайнерлер эволюциялық базаны құру кезінде жақсы түсінілген мүмкіндіктерді ғана дамытады, ал нашар түсінілген мүмкіндіктерді зерттеу үшін бір рет пайдаланылатын прототиптерді қолданады." Бұл әзірлеме Бағдарламалық өнімділікті арттыру консорциумы (Software Productivity Consortium) тарапынан жасалды, ол Қорғаныс жоғары технологиялық зерттеулер агенттігінің (DARPA) Ақпараттық технологиялар кеңсесі үшін технологияны дамыту және интеграциялау агенті болып табылады. ERD-нің негізі – компоненттерді қайта пайдалану, бағдарламалық үлгілерді қолдану және архитектуралық үлгіге сүйенген бағдарламалық жүйелерді құрастыру концепциясы. Эволюциялық архитектура, жүйе мүмкіндіктерінің пайдаланушылардың өзгеріп жатқан қажеттіліктері мен технологияға жылдам жауап беру арқылы үздіксіз дамуын көрсетеді, бұл шешімдер класын білдіреді. Процесс бағдарламалық қамтамасыз ету және жүйелік инженерия салаларын біріктіретін шағын, қолөнершіл командаларды пайдалануға бағытталған, олар жиі клиенттермен байланыса отырып, бірнеше, көбінесе параллель, қысқа мерзімді кезеңдерде жұмыс істейді. ERD-ге негізделген жобалардың сәтті болуы үшін мүмкіндіктерді, инфрақұрылымды және компоненттерді параллель зерттеу және дамыту, сондай-ақ технологиялардың, нарықтың немесе клиенттердің талаптарына жылдам бейімделуге мүмкіндік беретін, соңғы жаңалықтарды қабылдау маңызды. Қолданбаларды модельдеу үшін компьютерлік оқыту, демонстрация және клиенттік қолдау үшін нақты бағдарламалық бағдарламаларды имитациялайтын бағдарламалық құралдарды қолдануға болады, мысалы, скриншоты бар бағдарламалық құралдар, себебі бұл салалар тығыз байланысты.
Талаптар Инженерлік орта
Талқылаулар инженериясы ортасы (REE), 1985 жылдан бері Рим зертханасында жасалып келеді, күрделі жүйелердің маңызды аспектілерінің модельдерін жылдам жасау, құру және іске қосу үшін біріктірілген құралдар жиынтығын ұсынады. Талқылаулар инженериясы ортасы қазіргі уақытта АҚШ Әуе күштері жүйелерді әзірлеу үшін қолданылады. Ол: жүйелік талдаушыларға жүйелік компоненттердің функционалдық, пайдаланушы интерфейсі және өнімділік прототиптік модельдерін жылдам құруға мүмкіндік беретін біріктірілген құралдар жиынтығы. Бұл модельдеу жұмыстары күрделі жүйелерді жақсырақ түсіну және жүйелерді әзірлеу процесінде талаптардың дәл емес сипаттамаларының құн мен кестеге тигізетін әсерін азайту үшін жүргізіледі. Модельдер оңай және әр түрлі абстракция немесе бөлшектік деңгейде, модельдегі нақты мінез-құлық ерекшеліктеріне байланысты құрастырылуы мүмкін. Бұл жүйе Advanced Requirements Engineering Workstation, яғни AREW деп аталады.
an integrated set of tools that allows systems analysts to rapidly build functional, user interface, and performance prototype models of system components. These modeling activities are performed to gain a greater understanding of complex systems and lessen the impact that inaccurate requirement specifications have on cost and scheduling during the system development process. Models can be constructed easily, and at varying levels of abstraction or granularity, depending on the specific behavioral aspects of the model being exercised. This system is named the Advanced Requirements Engineering Workstation or AREW.
Қарым-қатынассыз орталар
Реляциялық емес деректерді анықтау (мысалы, Caché немесе ассоциативтік модельдерді қолдану) соңғы пайдаланушының прототиптеуін өнімдірек етуге көмектеседі, себебі бұл симуляцияның әрбір итерациясында деректерді нормализациялау қажеттілігін кейінге қалдыруға немесе одан аулақ болуға мүмкіндік береді. Бұл бизнес-талаптарды ертерек және толыққанды түсінуге ықпал етуі мүмкін, алайда бұл талаптардың мақсатты өндірістік жүйеде техникалық және экономикалық жағынан орындалатынын нақты растамайды.
PSDL
PSDL – нақты уақытты бағдарламалық жасақтаманы сипаттауға арналған прототиптік сипаттау тілі. Оған қоса берілген құралдар жиынтығы – CAPS (Компьютерлік көмекпен прототиптеу жүйесі). Қатты нақты уақыт талаптары бар бағдарламалық жүйелерді прототиптеу қиын, себебі уақыт шектеулері іске асыру және аппараттық тәуелділіктерді тудырады. PSDL декларативтік уақыт шектеулерін қамтитын басқару абстракцияларын енгізу арқылы осы мәселелерді шешеді. CAPS бұл ақпаратты кодты және оған байланысты нақты уақыт кестелерін автоматты түрде жасау үшін, прототиптің орындалуы кезінде уақыт шектеулерін бақылау үшін және параметрленген аппараттық модельдер жиынтығына сәйкес пропорционалды нақты уақытта орындалуын симуляциялау үшін пайдаланады. Бұдан басқа, ол толық емес прототиптік сипаттамалардың орындалуын қамтамасыз ететін әдепкі болжамдарды ұсынады, тиімді іске асыруды жылдам жүзеге асыру үшін прототип құрастыруды бағдарламалық жасақтаманы қайта пайдалану қоймасымен біріктіреді және талаптар мен жобалардың жылдам дамуына қолдау көрсетеді.