КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Методи розробки алгоритмів і програм
Життєвий цикл програмного забезпечення Програми будь-якого виду характеризуються життєвим циклом - від моменту виникнення ідеї, розробки програми до моменту відмовлення зід використання програми. Тривалість життєвого циклу різних програм неоднакова і для більшості з них виміряється в роках (3-4 роки). Стадії життєвого циклу програм визначають склад і зміст робіт зі створення програмних продуктів. Життєвий цикл програмного забезпечення містить у собі ряд етапів: - аналіз вимог; - визначення специфікацій; - проектування; - кодування; - тестування; - супровід. Розглянемо їх. Аналіз вимог. При розробці програмного забезпечення він винятково важливий. Помилки, допущені на цьому етапі, навіть за умови бездоганного виконання наступних етапів можуть призвести до того, що розроблений програмний продукт не буде відповідати вимогам практики. Визначення специфікацій. Певною мірою цей етап можна розглядати як формулювання висновків, що випливають з результатів попереднього етапу. Вимоги до програми мають бути представлені у вигляді ряду специфікацій, що явно визначають робочі характеристики майбутньої програми. До числа таких характеристик можуть входити швидкість виконання, обсяг споживаної пам'яті, гнучкість застосування та ін. Проектування. На цьому етапі створюється загальна структура програми, яка має відповідати специфікаціям; визначаються загальні принципи управління і взаємодії між різними компонентами програми. Кодування. Полягає в перекладі на мову програмування конструкцій, записаних мовою проектування. Тестування. На цьому етапі здійснюється всебічна перевірка програм. Супровід. Це етап експлуатації системи. Яким би детальним не було тестування програм, на жаль, у великих програмних комплексах надзвичайно важко усунути абсолютно всі помилки. Усунення виявлених при експлуатації помилок - найперше завдання цього етапу. Однак це далеко не все, що виконується при супроводі. Виконуваний у ході супроводу аналіз досвіду експлуатації програми дозволяє виявляти «вузькі місця» чи невдалі проектні рішення в тих чи інших частинах програмного комплексу. В результаті такого аналізу може бути прийняте рішення про проведення робіт з удосконалювання розробленої системи.
Найважливішими класифікаційними ознаками методів проектування алгоритмів і програм є: - ступінь автоматизації виконання проектних робіт; - методологія процесу розробки. За ступенем автоматизації процесу проектування алгоритмів і програм можна виділити методи неавтоматизованого проектування і методи автоматизованого проектування (САSE, Соmputer Аіded Sistem Еngsneering). Неавтоматизоване проектування використовується при розробці невеликих за трудомісткістю й структурною складністю програмних продуктів, що не вимагають участі великого числа розробників. Автоматизоване проектування виникло в зв'язку з необхідністю скорочення витрат і термінів виконання проектних робіт, створення і використання типових елементів та їх комплексів при розробці алгоритмів і програм, координації робіт великого колективу розробників, використання засобів обчислювальної техніки на різних етапах створення і супроводу програмних продуктів. Автоматизація проектування може охоплювати усі чи окремий етап життєвого циклу програмного продукту, в ізольованому вигляді чи в комплексі. Проектування алгоритмів і програм може ґрунтуватися на різних підходах, серед яких найбільш поширені: - структурне проектування і програмування; - інформаційне моделювання предметної області і пов'язаних з нею додатків; - об'єктно-орієнтоване проектування. Початок розвитку структурного проектування алгоритмів і програм припадає на 60-і роки. У його основу покладені послідовна декомпозиція і структурування цілого, від загального до частки.; Технології структурного підходу орієнтовані, у першу чергу, на процеси обробки з подальшим установленням необхідних для них даних, а також на правильну організацію інформаційних потоків між пов'язаними процесами.. Інформаційне моделювання предметної області має вирішальне значення для розробки алгоритмів і програм, що працюють із БД. В основі даного підходу лежить положення про визначальну роль і незалежність даних при проектуванні алгоритмів і програм. Підхід склався в умовах появи концепції БД. Один з основоположників інформаційної інженерії – Дж. Мартін виділяє такі складові даного підходу: - інформаційний аналіз предметних областей; - побудова взаємозалежних моделей даних; - системне проектування функцій обробки даних; - детальне конструювання процедур обробки даних.
Традиційні підходи до розробки програмних продуктів завждгґ) підкреслювали розходження між даними і процесами їх обробки (програмні / модулі забезпечують обробку вхідних даних, але не містять цих даних). На відміну від традиційного структурного підходу, об'ектно-орієитова-ний підхід до проектування програмних продуктів ґрунтується на: - виділенні класів; - встановленні характерних властивостей класів і методів їх обробки;, - створенні ієрархії класів; - спадкуванні властивостей класів та методів їх обробки. Кожен об'єкт поєднує в собі як дані, так і програму обробки цих] даних. Об'єкт - це конкретний екземпляр класу. За допомогою класу і той самий програмний код можна багаторазово використовувати для різних об'єктів того самого класу. Для проектування програмних продуктів розроблені об'єктно-орієн Методи об'єктно-орієнтованого проектування ґрунтуються на: моделі побудови системи як сукупності об'єктів абстрактного типу даних, модульній структурі програм, спадному проектуванні при виділенні об'єктів. Об'єктно-орієнтований підхід використовує такі базові поняття: клас, об'єкт, подія, властивості об'єкта, метод обробки. Об'єкт - сукупність властивостей (даних) визначених сутностей і методів їхньої обробки. Об'єкт містить інструкції (програмний код), що визначають дії, які може виконувати об'єкт, та оброблювані дані. Властивість - характеристика об'єкта, його параметр. Властивості об'єкта в їх сукупності виділяють об'єкт із множини інших об'єктів, задають якісну визначеність, обумовлюють незалежність створення й обробки від інших об'єктів. Метод - це програма дій над об'єктом чи його властивостями. Метод розглядається як програмний код, пов'язаний з певним об'єктом, за: допомогою якого здійснюється перетворення властивостей об'єкта або і зміна його поведінки. Методи виконуються при настанні наперед визна-; чених подій.
Покоління мов програмування . Перші мови програмування були дуже примітивними і це були машинні коди - машинні мови, що дозволяли задавати назви команд у символічному вигляді і вказувати числа в двійковому, шістнадцятковому й десятковому форматах. Процес програмування був складним і передбачав запис програмістом усіх алгоритмів безпосередньо машинною мовою. Першим кроком на шляху до полегшення завдань програмування була відмова від використання цифр для запису команд і операндів безпосередньо в тій формі, у якій вони використовуються в машині. З цією метою при розробці програм стали широко застосовувати мнемонічний запис різних команд замість їхнього шістнадцяткового представлення (асемблерні мови). Програми, написані мовою асемблеру, є принципово машпнно-залежними, тобто команди в цих програмах виражаються в термінах певних машинних атрибутів. Програму мовою асемблеру досить складно виконати на іншій машині, оскільки для цього її потрібно переписати з урахуванням нової конфігурації регістрів і набору команд. При розв'язанні багатьох задач типова прикладна програма змушена покладатися на операційну систему. Наприклад, вона може звернутися до диспетчера вікна для організації взаємодії з користувачем чи диспетчера файлів для зчитування даних із пристроїв масової пам'яті. Різні операційні системи виконують такі запити по-різному. Тому якщо програма призначена для розсилання і виконання в мережі, що поєднує машини різного типу, які мають різні операційні системи, то вона має бути незалежною як від операційних систем, так і від типу використовуваних машин. З'явилася необхідність у мовах програмування високого рівня і були сформульовані вимоги до таких мов: 1. Мова має бути близькою до тих фрагментів природних мов, які забезпечують конкретну предметну галузь діяльності людини; (мова, орієнтована на ділові сфери застосування, має містити поняття, використовувані в цьому виді діяльності: документ, база даних тощо). 2. Усі засоби мови мають бути формалізовані настільки, щоб їх можна було реалізувати як машинні програми. 3. Мова програмування не тільки підтримує предметно-орієнтовану діяльність, а й стимулює її розвиток (поняття бази даних, обчислювальної мережі призвело до революції в діловій діяльності). 4. Мова програмування - щось більше, ніж засіб опису алгоритмів: вона несе в собі систему понять, на основі яких людина може обмірковувати свої задачі, і нотацію, за допомогою якої вона може виразити свої міркування з приводу розв'язання задачі. Виходячи з такого підходу, у 60-х роках з'явилися мови програмування третього покоління, що відрізнялися від попередніх поколінь тим, що їхні мовні конструкції мали вищий рівень і були машинно-незалежними. Це універсальні мови високого рівня. Найбільш відомими прикладами ранніх мов третього покоління є FORTRAN (FORmula ТRANslation – перекладач формул), розроблений під керівництвом Дж. Бекуса 1960 р., яка була призначена для наукових і інженерних розрахунків, і СОВОL (мова загального призначення ділової орієнтації), розроблена у 1960 р. фахівцями військово-морського флоту США для розв'язання економічних задач, АLGOL, розроблений міжнародною робочою групою. З появою мов програмування третього покоління мета забезпечення Насправді не все так просто. При розробці самого компілятора доводиться враховувати певні обмеження, що накладаються тією машиною, для якої він призначений. У результаті ці обмеження відбиваються мовою програмування, що підлягає перекладу на машинну мову. Наприклад, розмір машинних регістрів і чарунок пам'яті впливає на максимальний розмір значень цілих змінних, котрими може безпосередньо оперувати програма. Такі обмеження призводять до того, що та сама мова програмування на різних машинах має свої особливості. Проблема переносу програм з однієї машини на іншу полягає у відсутності спільної точки зору на те, що саме вважати стандартом цієї мови програмування. У зв'язку з цим Американський національний інститут стандартів (АNSI) і Міжнародна організація з стандартизації (ІSO) прийняли стандарти для багатьох популярних мов програмування. В інших випадках застосовуються неформальні стандарти, що є наслідком популярності того чи іншого діалекту мови, а також бажання багатьох розробників компіляторів створювати продукти, сумісні з іншими, подібними до них. Стисла характеристика основних мов програмування На сьогодні розроблено значна кількість мов програмування. Вони відрізняються одна від одної різними властивостями, а виходить, і галуззю застосування.. До машинно-залежних мов належить асемблер. Мова асемблера робить доступними всі програмно-керовані компоненти ЕОМ. Тому він застосовується для написання програм, що явно використовують специфіку конкретної апаратури. Асемблер - це найбільш трудомістка мова програмування і через її низький рівень не вдається побудувати засоби налагодження, що істотно знизили б цю трудомісткість. Програмуванні мовою асемблера оперує з термінами команд апаратної частини машини, і тому вимагає від програміста детальних знань технічних компонентів комп'ютера. Кожен комп'ютер має таку систему програмування. Як правило, ця система програмування розробляється і поставляється фірмою-виготовлювачем ЕОМ. Використання мови асемблера обмежується галуззю системного програмування, тобто для програмування мікропроцесорів, для розробки операційних систем чи окремих компонентів ОС, програм обміну між системним блоком і периферійними пристроями (драйверів) тощо. До машинно-орієнтованшмов можна віднести також мову С (Сі). Ця мова є результатом спроби об'єднати переваги низькорівневих можливостей алгоритмічних мов високого рівня (АМВР). Мову С часто називають мовою асемблера з вбудованими структурами даних. Використання структур даних дозволяє більш систематично підходити до реалізації завдання мовою С і скорочує обсяг текстів розроблювальних програм. Особливістю цієї мови є максимальне використання можливостей конкретної обчислювальної архітектури на основі бітових операцій, функцій і призначень. Завдяки цьому програми мовою С компактні і працюють швидко. Однак синтаксис мови досить складний, тому читання текстів програм на ній вимагає певних навичок. Мова С спочатку була орієнтована насамперед на розробку системних програм. Вона, зокрема, послужила головним інструментом для створення операційних систем МS DOS і UNIX. Зараз мова застосовується головним чином для створення системних і прикладних програм, у яких швидкість роботи й обсяг пам'яті є основними параметрами. Найбільш широко представлений клас процедурних мов програмування. Серед них можна виділити такі популярні мови високого рівня, як Бейсик, Паскаль,С, Фокал, Фортран, Ада, Кобол, Модула-2, РL/1 і низку інших. Історично однією з найпоширеніших мов став Бейсик. Це пояснюється, насамперед, тим, що Бейсик простий в освоєнні й використанні. Написати на ньому невелику програму в 20-30 рядків й відразу одержати результат її роботи можна буквально за кілька хвилин. У Бейсик, як правило, вбудовуються зручні функції для роботи з екраном дисплея, клавіатурою, магнітними накопичувачами, принтером, комунікаційними каналами. Це дозволяє ставитися до Бейсика як до продовження апаратури ЕОМ. Щоб освоїти якусь особливість чи режим роботи апаратних засобів, найпростіше написати і виконати відповідну програму на Бейсику. Для різних типів ЕОМ, що істотно відрізняються одна від одної, розроблено відповідні версії мови. Найбільш вдалою вважається версія фірми Місгоsof. Поява могутніх компіляторів, таких, наприклад, як Quick Basic і Visual Basic фірми Місгоsoft поставила цю мову в ряд з іншими мовами високого рівня і додає їй додаткової популярності. Мова Visual Basic - об'ктно-орієнтована мова, причому дещо більше, аніж просто мова програмування. Це - могутній інтегрований пакет розробки програмного забезпечення, який дозволяє програмісту створювати графічний інтерфейс користувача з заздалегідь визначених компонентів (таких як кнопки, прапорці опцій, текстові поля, смуги прокручування тощо) і настроювати роботу цих компонентів у додатку, описуючи їхню реакцію на різні події. Наприклад, якщо мова йде про кнопку, програміст повинний описати, що має трапитися, якщо користувач натисне її. Visual Basic зараз став однією з найбільш відомих і широко використовуваних мов програмування. C++ – це обєктно-орієнтованне розширення мови С. В цій мові велика кількість нових потужних можливостей, що дозволяють підвищити продуктивність програмістів, поєдналася з низькорівневістю мови С, в результаті чого створення складних і надійних програм потребує від розробників високого рівня професійної підготовки. JAVA (Джава) – мова, що була створенна на основі мови С++. Вона покликана спростити розробку додатків на основі С++ шляхом виключення з неї низькорівневих можливостей. Але головною особливістю цієї мови є компіляція не в машинний код, а в платформо-незалежний байт-код (кожна команда займає один байт).Цей байт-код може виконуватись з допомогою інтерпретатора – виртульної машини Java-машини, версії якої зараз створені для будь-яких платформ. Завдяки множени Java -машин програми на Java можна переносити не тільки на рівні первинних текстів, але і на рівні двійкового байт-коду, тому по популярності мова J ava сьгодні займає друге місце після Бейсика. Особливу увагу при розвитку цієї мови приділяють двум напрямкам: підтримці різних мікрокомп’ютерів, що вбудовуються в побутову техніку і створенню платформо-незалежних програмних модулів для серверів в локальних та глобальних мережах з різними операційними системами. Поки що основним недоліком мови Java є невисока швидкодія,так як програми на цій мові виконуються через інтерпретатор. Мову Паскаль можна вважати однією з найпоширеніших, хоча вона й створювалася як навчальна. Згодом Паскаль зарекомендував себе як відмінний інструмент для рішення серйозних задач, тому що його розробник спеціально конструював мову, яка дозволяє створювати добре структуровані програми. Причиною популярності цієї мови стала поява оригінальної версії мови Паскаль - Турбо-Паскаль фірми Вогland Іnternational. Турбо-Паскаль характеризується такими важливими особливостями, як повноек-ранне редагування і управління, графіка, звуковий супровід і зв'язки з ОС. Система програмування на Турбо-Паскалі сама є резидентною програмою. Вона дозволяє користувачу вводити його програми і виконувати їх негайно, не витрачаючи час на компілювання.
Delphi – мова (інтегрована система розробки програм), побудована на основі мови Оbject-Pascal. Особливої уваги заслуговує могутня вбудована підтримка баз даних Delphi. Це дозволяє швидко здійснювати розробку складних прикладних програм.
Мова Фортран - перша мова програмування високого рівня, активно використовувана і на сучасних персональних комп'ютерах. Близькість її конструкції до традиційної архітектури ЕОМ (йдеться про традиційну фон-неймановську архітектуру) зробила Фортран надзвичайно популярним. Застосовується Фортран головним чином при розробці прикладних систем, орієнтованих на наукові дослідження, інженерні завдання, автоматизацію проектування та інші галузі, де накопичено великі бібліотеки стандартних програм. Мова Фортран має недоліки, такі, як відсутність типів, оголошення змінних і типів за замовчуванням,, незручні структури управління та ін. Певний час навіть було розпочато спроби заборонити його використання. Однак серед програмістів Фортран залишився популярною й активно застосовуваною мовою. Зараз відомо кілька версій цієї мови для ПЕОМ. Це Fortran Compiler фірми Місгsoft, Фортран IV, Фортран 77, ФортранF2k(2000).. Мову Кобол було розроблено спеціально для розв'язання економічних задач. На відміну від Фортрану Кобол дає можливість складати більш зручні для читання програми, які можуть бути зрозумілі і непрограмісту. У програмах на Коболі особливо виявляється самодокументованість, що полегшує їхнє виправлення й удосконалення, а при обробці даних складної структури він буває ефективніше Паскалю. Кобол, будучи широко розповсюдженим на великих і середніх машинах, на ПЕОМ використовується мало.
Окрім наведенних мов програмування широкого призначення існує велика кількість спеціалізованих мов. Наприклад, мови проектування баз даних SGL, dBase, Visual FoxPro та інш., опису електронних схем VHDL, моделювання графіки UML, мови програмування для Інтернет HTML,Perl та інші. Про ці мови річ буде у подальшому в спеціальних дисциплінах.
Помітимо, що мови високого рівня, яка була б ідеальною для усіх випадків, не існує. Найбільш важливе завдання, очевидно, полягає в тому, щоб визначити, яка мова є «найкращою» у кожній конкретній ситуації. У багатьох випадках такий вибір диктується дуже простими причинами - доступністю того чи іншого транслятора й умінням складати програми цією мовою. Якщо, однак, у розпорядженні користувача є досить великий вибір мов програмування, то необхідно враховувати такі обставини: - призначення розроблювальної програми (чи буде вона використовуватися тимчасово чи постійно, чи буде вона модернізуватися і розвиватися); - час виконання програми (йдеться про співвідношення обчислювальних процедур і процедур вводу-виводу); - очікуваний розмір програми (чи вистачить пам'яті для реалізації цілком усієї програми чи слід її розділити на окремі взаємодіючі модулі); - необхідність сполучення розроблювальної програми з іншими пакетами чи профамами, у тому числі складеними іншими мовами програмування; - чи передбачено можливість перенесення програми на інші типи ЕОМ; - основні типи даних, з якими буде працювати програми (цілі і дійсні числа, рядки, списки й інші типи структур); - характер і рівень використання апаратних засобів (дисплея, клавіатури, НМД тощо); - можливість і доцільність використання наявних стандартних бібліо-
Дата добавления: 2014-01-04; Просмотров: 2057; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |