
- •Программалық қамтамасыз етудiң күрделiгi: анықтама, мысалдар.
- •Қарапайым программалық жүйелердің 4 мысалын келтіріңіз.
- •Күрделi программалық жүйелердің 4 мысалын келтіріңіз.
- •Программалық қамтамасыз етудiң күрделiгiнiң себебтері.
- •Күрделi жүйелердің белгiлері.
- •Декомпозиция, алгоритмдік декомпозиция, объектті бағыттылған декомпозиция: анықтама, мысалдар.
- •Абстракция: анықтама, мысалдар.
- •Иерархия: анықтама, мысалдар.
- •Программалық жобалау қандай элементтерден тұрады?
- •Oop, ood және ооа: анықтама, айырмашылықтары.
- •Программалаудың негiзгi парадигмалары: олардың ерекшелiктері.
- •Абстрактциялау: анықтама, мысалдар.
- •Инкапсуляция
- •Модулдік
- •Иерархия
- •Типтелу
- •Параллелизм: анықтама, мысалдар.
- •Сақталатындық: анықтама, мысалдар.
- •Объектiлердiң мысалдарын келтірiңiз.
- •Объекттiң күйі және тәртібі: анықтама, мысалдар.
- •Байланысқа қатысатын объектiлердiң рөлдері: анықтамалар, мысалдар. (актер, сервер, агент)
- •Агрегация: анықтама, мысалдар.
- •Кластардың мысалдарын келтірiңiз.
- •Кластардың интерфейсі және реализациясы: анықтама, мысалдар.
- •Кластардың арасындағы қатынастар: мысалдар. (ассоциация, мұрагерлік, агрегация, пайдалану, метакласс)
- •Классикалық категориялау, концептуалды кластерлеу, түптұлғалар теориясы. Осы тәсiлдерден қандайы жақсы және нелiктен?
- •Аж жобада белгiлеу жүйесі не үшiн қажет?
- •Аж логикалық және физикалық үлгiлері: анықтама, мысалдар.
- •Аж статикалық және динамикалық үлгiлері: анықтама, мысалдар.
- •Кластар диаграммасы: тағайындау, мысал.
- •(1)Класстар диаграммасындағы кластың графикалық суретінің нұсқалары
- •Кооперация диаграммасы: тағайындау, мысал.
- •Жобалаудың микропроцессi: анықтама, мысалдар.
- •Жобалаудың макропроцессi: анықтама, мысалдар.
- •Тәуекелдердi басқару: анықтама, мысалдар.
- •Аж өңдеушiлердiң рөлдері.
- •Аж релиздерді басқару
- •Аж тестілеу
- •Аж әзiрлеу кезінде қайтадан пайдалану.
- •Программалық өнiмнің сапасын өлшеу.
- •Аж документациясын әзiрлеу.
Абстракция: анықтама, мысалдар.
Адам әдетте бір мезгілде ақпаратты белгілі-бір мөлшерде ғана қабылдай алады. Және қабылдаған ақпараты оның мазмұнына тәуелді емес. Миллер айтқандай: "Біздің жадымыздың көлемі біз қабылдай алатын, өңдей алатын және есте сақтай алуымызбен толы болады.Бір мезгілде бірнеше каналдан келетін ақпаратты белгілі бір көлемін ғана қабылдап қалған бөлігін шегеруімізге тура келеді" .
Жаңа терминология бойынша бұл процесті абстракця деп атаймыз.
Программалық жүйенің проектілеу әдістері
Метод дегеніміз моделдер пайда болуының қалыпты процесі,өңделіп жатқан программалық жүйені анықталған шарттарымен сипаттайтын.
Методология өмір циклында қолданылатын программалық жабдықталудың өңделуі.
Әдістер бірнеше себептері бойынша маңызды. Біріншіден олар топтағы барлық адамға түсінікті болатындай етіп күрделі жүйелердің құрылу кезеңін қадағалайды. Екіншіден менеджердің процесс өңделу кезіндегі қозғалу деңгейі мен тәуекелін қадағалауға мүмкіндік береді.
Компьютерлер алғаш өндіріске ене бастағанда үлкен программаларды құру қте қиын болды, өйткені компьютер мүмкіндігі өте аз еді.Шектеулер оперативті жадының аздығынан, ақпаратты жай оқудан,процестің жай болуынан шықты.Кейіннен негізгі элементтерінің пайда болуынан алгоритмдік жоғары дәрежелі тілдер пайдаланыла бастады.Ол тілдер программисттер мен разработчиктердің күрделі программалық жүйелерді кең қолдануына зор мүмкіндік берді. Құрылымдық программалауда дәс осындай амал қолданылады:алгоритмдік декомпозиция үлкен тапсырманы кіші бөліктерге бөлуге пайдаланылады.
Барынша тиімді әдістерді Петерсом, Йеном мен Цаи және TeledyneBrown фирмасы жасап шығарды.Саммервилль оларды негізгі 3 топқа бөлуді ұсынады:
1.құрылымды проектілеудің жоғарыдан төменге әдісі;
2.мәліметтер ағымы әдісі;
3.обьектіге бағытталған программалау.
Құрылымдық әдіс абстракцияны бөліп көрсете алмайды және мәліметтерге кіру құқығына қауіпсіздік бере алмайды.
Мысалы өсімдіктердегі фотосинтез процесін бақылай отырып біз химиялық реакциялардың белгілі бір клеткада жүруіне ғана көңіл аударамызда ал қалған бөліктеріне қарай қоймаймыз,бірақ біз әдеттегідей бір мезгілде болап жатқан ақпараттар көлемін анықтап отыруға тиіспіз.Бірақ абстракцияның арқасында семантикалық көлемде болып жатқан процестерге ғана көңіл бөле аламыз.Егерде әлемге обьектіге бағытталған көзқараспен қарасақ әдістің дұрыстығына көз жеткіземіз,абстракция секілді обьектілер нақты әлемнің бөлек ақпараттық байланыстарын көрсетеді.
Иерархия: анықтама, мысалдар.
Маңызды ықшамда күрделі тапсырманы иерархиялық құрылымның абстракциясы арқылы шешеміз. Иерархияны келесі түрде анықтаймыз:
Иерархия- абстракцияның реттілеуі, олардың деңгейлерге ,бөлінуі.
Иерархиялық құрылымның күрделі жүйелерде түрлері: класстың("isa" иерархиясы) құрылымы және нысанның("part of" иерархиясы) құрылымы болып табылады.
Иерархияның негізгі түрі "isa" болып табылады. "isa" жоғарғы мұрагерлік концепсияны тұжырымдайды.Мұрагерлік класстар арасындағы қатынаста мынадай мағына береді(ұрпақтық қатынас): бір класс құрылымдық немесе функциялық басқа бір немесе бірнеше класс бөлігін пайдаланған жағдайда (сәйкесінше, жеке және көпшілік мұрагерлік).
Мұрагерлік класс тармақтары бір немесе бірнеше суперкласстан кейін құралатын абстракцияның иерархиясын құрады.
Жиі жағдайда класс тармақтары жоғарғы класстың компонентін құрап бітіреді немесе көшіріп алады.
Мысалы:
Бақша жүйесінде өсімдіктің түрлерін қарастырамыз.
Әр түрлі дақылдар бөлек жоспарларды сұрайды. Жемістер үшін жоспарлар бір-біріне ұқсас, бірақ көкөніс немесе гүлдер жоспарларынан айырмашылық болады. Егістің жиынынын және тозаңдануын қосып жаңа деңгейде құрамыз.
C++ "жеміс" жоспары
// Бақша типі
typedef unsigned int Yield;
class FruitGrowingPlan : public GrowingPlan {
public:
FruitGrowingPlan(char* name);
virtual ~FruitGrowingPlan();
virtual void establish(Day, Hour, Condition&);
void scheduleHarvest(Day, Hour);
Boolean isHarvested() const;
unsigned daysUntilHarvest() const;
Yield estimatedYield() const;
protected:
Boolean repHarvested;
Yield repYield;