Методи розробки структури програми, структурне програмування.

Мета модульного програмування

         
 
 
   
 
 

Процедурне програмування плягає в розбитті великої програми на сукупність процедур підпрограм. Одна з підпрограм повина бути головною і з неї починається виконання програми.Процедурний підхід потребував структуризації майбутньої програми, розділення її на окремі процедури. При розробці окремої процедури про інші процедури потрібно було знати тільки їх призначення і спосіб виклику.Структурне програмування - це програмування, при якому програма в цілому і окремі процедури розглядалися як послідовності канонічних структур: лінійних ділянок, циклів і розгалужень.

Метою програмування є опис процесів обробки даних.

Дані - це представлення фактів і ідей у формалізованому вигляді, придатному для передачі і переробці в якомусь процесі, а інформація - це сенс, який додається даним при їх уявленні.

Обробка даних - це виконання систематичної послідовності дій з даними. Дані зберігаються на т.з. носіях даних. Сукупність носіїв даних, використовуваних при якій-небудь обробці даних, називатимемо інформаційним середовищем. Набір даних, що містяться в який-небудь момент в інформаційному середовищі, називатимемо станом цього інформаційного середовища.

Процес можна визначити як послідовність станів деякого інформаційного середовища, що змінюють один одного.

Описати процес - означає визначити послідовність станів заданого інформаційного середовища. Для того, щоб процес породжувався автоматично на ПКі, необхідно, щоб це й опис був формалізованим. Такий опис називається програмою.

Програми розробляються з розрахунку на те, щоб ними могли користуватися люди, що не беруть участь в їх розробці (їх називають користувачами). Для освоєння програми користувачем крім її тексту потрібна певна додаткова документація. Програма або логічно зв'язана сукупність програм на носіях даних, забезпечена програмною документацією, називається програмним засобом (ПЗ). Програма дозволяє здійснювати деяку автоматичну обробку даних на комп'ютері. Програмна документація дозволяє зрозуміти, які функції виконує та або інша програма ПЗ, як підготувати початкові дані і запустити необхідну програму в процес її виконання, а також: що означають отримувані результати (або який ефект виконання цієї програми). Крім того, програмна документація допомагає розібратися в самій програмі, що необхідне, наприклад, при її модифікації.

Продуктом технології програмування є ПЗ, що містить програми, які виконують необхідні функції. Тут під "програмою" часто розуміють правильну програму, тобто програму, що не містить помилок.

Надійність ПЗ - це його здатність безвідмовно виконувати певні функції за заданих умов протягом заданого періоду часу з достатньо великою вірогідністю. При цьому під відмовою в ПЗ розуміють прояв в нім помилки.

Технологія програмування це сукупність виробничих процесів, що приводить до створення необхідного ПЗ, а також опис цієї сукупності процесів.

Не слід також плутати технологію програмування з методологією програмування. В обох випадках вивчаються методи, але в технології програмування методи розглядаються "зверху" - з погляду організації технологічних процесів, а в методології програмування методи розглядаються "знизу" - з погляду основ їх побудови

Загальні принципи розробки програмних засобів

1. Специфіка розробки програмних засобів

· Неформальний характер вимог до ПЗ (постановки завдання), але формалізований основний об'єкт розробки - програми ПЗ.

· Творчий характер розробки ПЗ (на кожному кроці доводиться робити який-небудь вибір, ухвалювати яке-небудь рішення).

· Програмний продукт є деякою сукупністю текстів (тобто статичних об'єктів), сенс же (семантика) цих текстів виражається процесами обробки даних і діями користувачів, що запускають ці процеси (тобто є динамічним).

· Продукт розробки має і іншу специфічну особливість: ПЗ при своєму використанні (експлуатації) не витрачається і не витрачає використовуваних ресурсів.

2. Життєвий цикл програмного засобу

Під життєвим циклом ПЗ розуміють весь період його розробки і експлуатації (використання), починаючи від моменту виникнення задуму ПЗ і кінчаючи припиненням всіх видів його використання. Життєвий цикл включає всі процеси створення і використання ПЗ (software process).

Розрізняють наступні стадії життєвого циклу ПЗ: розробку ПЗ, виробництво програмних виробів (ПВ) і експлуатацію ПЗ.

Стадія розробки (development) ПЗ складається з етапу його зовнішнього опису, етапу конструювання ПЗ, етапу кодування (програмування у вузькому сенсі) ПЗ і етапу атестації ПЗ

Зовнішній опис (Requirements document) ПЗ є описом його поведінки з погляду зовнішнього по відношенню до нього спостерігача з фіксацією вимог щодо його якості.

Конструювання (design) ПЗ охоплює процеси: розробку архітектури ПЗ, розробку структур програм ПЗ і їх детальну специфікацію.

Кодування (coding) створення текстів програм на мовах програмування, їх відладку з тестуванням ПЗ.

На етапі атестації ПЗ проводиться оцінка якості ПЗ, після успішного завершення якого розробка ПЗ вважається закінченою.

Програмний виріб (ПВ) - екземпляр або копія, знята з розробленого ПЗ. Стадія експлуатації ПЗ охоплює процеси зберігання, впровадження і супроводу ПЗ, а також транспортування і застосування (operation) ПІ по своєму призначенню. Вона складається з двох фаз, що паралельно проходять: фази застосування ПЗ і фази супроводу ПЗ.

Застосування (operation) ПЗ - це використання ПЗ для вирішення практичних завдань на комп'ютері шляхом виконання її програм.

Супровід (maintenance) ПЗ - це процес збору інформації про його якість в експлуатації, усунення виявлених в нім помилок, його доопрацювання і модифікації, а також сповіщення користувачів про внесені до нього зміни.

3. Поняття якості програмного засобу

Кожен ПЗ повинне виконувати задуманими функціями. Якість ПЗ - це сукупність його рис і характеристик, які впливають на його здатність задовольняти задані потреби користувачів

В даний час критеріями якості ПЗ прийнято вважати:

· функціональність

· надійність

· легкість застосування

· ефективність

· супровідь

· мобільність.

Функціональність - це здатність ПЗ виконувати набір функцій, що задовольняють заданим або таким, що маються на увазі потребам користувачів. Набір вказаних функцій визначається в зовнішньому описі ПЗ.

Надійність обговорювалась раніше.

Легкість застосування - це характеристики ПЗ, які дозволяють мінімізувати зусилля користувача по підготовці початкових даних, застосуванню ПЗ і оцінці отриманих результатів, а також викликати позитивні емоції певного або такого, що мається на увазі користувача.

Ефективність - це відношення рівня послуг, ПЗ, що надаються, користувачеві за заданих умов, до об'єму використовуваних ресурсів.

Ссупровідь - це характеристики ПЗ, які дозволяють мінімізувати зусилля по внесенню змін для усунення в нім помилок і по його модифікації відповідно до потреб користувачів, що змінюються.

Мобільність - це здатність ПЗ бути перенесеним з одного середовища (оточення) в іншу, зокрема, з однією ЕОМ на іншу.

Функціональність і надійність є обов'язковими критеріями якості ПЗ, причому забезпечення надійності буде червоною ниткою проходити по всіх етапах і процесах розробки ПЗ. Решта критеріїв використовується залежно від потреб користувачів відповідно до вимог до ПЗ - їх забезпечення обговорюватиметься у відповідних розділах курсу.

4. Забезпечення надійності - основний мотив розробки програмних засобів

Загальні принципи забезпечення надійності ПЗ:

· попередження помилок;

· самовиявлення помилок;

· самовиправлення помилок;

· забезпечення стійкості до помилок.

Аналіз природи помилок при розробці ПЗ потребує розглянути наступні питання:

· боротьба з складністю

· забезпечення точності перекладу

· подолання бар'єру між користувачем і розробником

· забезпечення контролю ухвалюваних рішень.

Самовиявлення помилки в програмі означає, що програма містить засоби виявлення відмови в процесі її виконання. Самовиправлення помилки в програмі означає виправлення наслідків цієї відмови, для чого в програмі повинні бути відповідні засоби. Забезпечення стійкості програми до помилок означає, що в програмі містяться засоби, що дозволяють локалізувати область впливу відмови програми, або зменшити його неприємні наслідки, а іноді запобігти катастрофічним наслідкам відмови.

5. Методи боротьби зі складністю систем:

· забезпечення незалежності компонент системи;

· використання в системах ієрархічних структур.

Забезпечення незалежності компонент означає розбиття системи на такі частини, між якими повинні залишитися по можливості менше зв'язків. Одним з втілень цього методу є модульне програмування.

Використання ієрархічних структур дозволяє локалізувати зв'язки між компонентами, допускаючи їх лише між компонентами, що належать суміжним рівням ієрархії. Цей метод, означає розбиття великої системи на підсистеми.

6. Забезпечення точності перекладу

Забезпечення точності перекладу направлене на досягнення однозначності інтерпретації документів різними розробниками, а також користувачами ПЗ. Весь процес перекладу можна розбити на наступні етапи:

· Зрозумійте завдання;

· Складіть план (включаючи цілі і методи рішення);

· Виконайте план (перевіряючи правильність кожного кроку);

· Проаналізуйте отримане рішення.

7. Подолання бар'єру між користувачем і розробником

Для цього необхідно правильно зрозуміти, по-перше, чого хоче користувач, і, по-друге, його рівень підготовки і навколишнє його оточення. Тому слідує - привертати користувача в процеси ухвалення рішень при розробці ПЗ, - ретельно освоїти особливості його роботи (краще всього - побувати в його "шкурі").

8. Контроль ухвалюваних рішень

Обов'язковим кроком в кожному процесі (етапі) розробки ПЗ повинна бути перевірка правильності ухвалених рішень. Це дозволить виявляти і виправляти помилки на найранішій стадії після її виникнення, що, по-перше, істотно знижує вартість її виправлення і, по-друге, підвищує вірогідність правильного її усунення.

Мета модульного програмування

Приступаючи до розробки кожної програми ПЗ, слід зважати на те, що вона, як правило, є великою системою, тому ми повинні прийняти заходи для її спрощення. Тому програму розробляють по частинах, які називаються програмними модулями. А сам такий метод розробки програм називають модульним програмуванням.Програмний модуль - це будь-який фрагмент опису процесу, що оформляється як самостійний програмний продукт, придатний для використання в описах процесу.

Не всякий програмний модуль сприяє спрощенню програми. Для оцінки прийнятності виділеного модуля використовуються критерії:

Розмір модуля вимірюється числом операторів, що містяться в нім (рядків). Модуль не повинен бути дуже маленьким або дуже великим. Маленькі модулі приводять до громіздкої модульної структури програми і можуть не окупати накладних витрат, пов'язаних з їх оформленням.

Міцність модуля - це міра його внутрішніх зв'язків. Чим вище міцність модуля, тим більше зв'язків він може заховати від зовнішнієї частини.

Функціонально міцний модуль - це модуль, що виконує (що реалізовує) одну яку-небудь певну функцію.

Інформаційно міцний модуль - це модуль, що виконує (що реалізовує) декілька операцій (функцій) над однією і тією ж структурою даних (інформаційним об'єктом), яка вважається невідомою поза цим модулем.

Методи розробки структури програми

Модульна структура програми прийнято використовувати деревовидну структуру. У вузлах такого дерева розміщуються програмні модулі, а направлені дуги (стрілки) показують статичну підлеглість модулів, тобто кожна дуга показує, що в тексті модуля, з якого вона виходить, є посилання на модуль, в який вона входить.

Структурне програмування

При програмуванні модуля слід вважати на те, що програма повинна бути зрозумілою не тільки комп'ютеру, але і людині: і розробник модуля, і особи, перевіряючі модуль, і тестовики, що готують тести для відладки модуля, і супровідники ПЗ, що здійснюють необхідні зміни модуля, вимушені будуть багато разів розбирати логіку роботи модуля.

Основними конструкціями структурного програмування є: проходження, розгалуження і повторення

Питання:

1. Визначення технології програмування.*

2. Загальні принципи розробки прграммных засобів.**

3. Модульне програмування.***

4. Критерії оцінки прийнятності виділеного модуля.***

5. Структурне програмування. ***

Література:

1. Левин В.И .История информационных технологий. Издательство: Интернет-университет информационных технологий - ИНТУИТ.ру », БИНОМ. Лаборатория знаний ». Серия: Основы информационных технологий », 2007 - 336 стр.

2. Галатенко В.А.,Основы информационной безопасности.Издательство: Интернет-университет информационных технологий - ИНТУИТ.ру »Серия: Основы информационных технологий »,2008- 208 стр.

  1. Терехов А.Н. Технология программирования, БИНОМ. Лаборатория знаний, Интернет-университет информационных технологий - ИНТУИТ.ру, 2007
  2. Скопин И.Н. Интернет-университет информационных технологий - ИНТУИТ.ру, 2004

5. Котляров В.П. Основы тестирования программного обеспечения. Интернет-университет информационных технологий - ИНТУИТ.ру, 2006