- Фантастика и фэнтези
- Ироническое фэнтези
- Стимпанк
- Детективная фантастика
- Киберпанк
- Попаданцы
- LitRPG
- Космоопера
- Технофэнтези
- Городская фантастика
- Русское фэнтези
- Юмористическая фантастика
- Космическая фантастика
- Боевое фэнтези
- Эпическая фантастика
- Зарубежная фантастика
- Книги магов
- Мистика
- Разная фантастика
- Разное фэнтези
- Любовное фэнтези
- Романтическая фантастика
- Городское фентези
- Историческая фантастика
- Историческое фэнтези
- Социально-философская фантастика
- Сказочная фантастика
- Иностранное фэнтези
- Романтическое фэнтези
- Ироническая фантастика
- Ужасы и Мистика
- Постапокалипсис
- Героическая фантастика
- Фэнтези
- Научная Фантастика
- Социально-психологическая
- Альтернативная история
- Боевая фантастика
- Разная литература
- Пословицы, поговорки
- Шахматы
- Визуальные искусства
- Фанфик
- Авто и ПДД
- Военное
- Отраслевые издания
- Гиды, путеводители
- Зарубежная образовательная литература
- Военная история
- Цитаты из афоризмов
- Современная литература
- Великолепные истории
- Начинающие авторы
- Современная зарубежная литература
- Боевые искусства
- Изобразительное искусство, фотография
- Кино
- Литература 19 века
- Недвижимость
- Музыка, музыканты
- Готические новеллы
- Истории из жизни
- Культура и искусство
- Спецслужбы
- Зарубежная прикладная литература
- Музыка, танцы
- Подростковая литература
- Прочее
- Военная техника, оружие
- Газеты и журналы
- Периодические издания
- Домоводство, Дом и семья
- Любовные романы
- Экономическая литература
- Научные и научно-популярные книги
- О животных
- Биохимия
- Культурология
- Юриспруденция
- Политика
- Психотерапия
- Языкознание
- Научпоп
- Медицина
- Психология, личное
- Радиотехника
- Филология
- Педагогика
- Образовательная литература
- Деловая литература
- Физика
- Науки: разное
- Химия
- Воспитание детей, педагогика
- Детская психология
- Зарубежная публицистика
- Биология
- Архитектура
- Зарубежная психология
- Науки о космосе
- Социология
- Математика
- География
- Беременность, ожидание детей
- Литературоведение
- Транспорт, военная техника
- Обществознание
- Зоология
- География
- Альтернативная медицина
- Иностранные языки
- Ветеринария
- Рефераты
- Астрология
- Биофизика
- Экология
- История Европы
- Учебники
- Шпаргалки
- Государство и право
- Ботаника
- Религиоведение
- История
- Техническая литература
- Прочая научная литература
- Психология
- Детективы и Триллеры
- Справочная литература
- Проза
- Новелла
- Юмор
- Проза
- Историческая проза
- Русская современная проза
- Советская классическая проза
- Повести
- Очерки
- Эссе
- Рассказы
- Зарубежная современная проза
- Сентиментальная проза
- Зарубежная классика
- Афоризмы
- Эпистолярная проза
- Феерия
- Семейный роман/Семейная сага
- Разное
- Антисоветская литература
- Магический реализм
- Русская классическая проза
- Современная проза
- О войне
- Контркультура
- Классическая проза
- Поэзия, Драматургия
- Детская литература
- Детская фантастика
- Детские остросюжетные
- Детские стихи
- Детские приключения
- Внеклассное чтение
- Учебная литература
- Зарубежные детские книги
- Бизнес
- Загадки
- Книги для подростков
- Школьные учебники
- Детский фольклор
- Книги для дошкольников
- Детские детективы
- Детская познавательная и развивающая литература
- Буквари
- Прочая детская литература
- Сказка
- Детская проза
- Детская образовательная литература
- Юмор
- Документальные книги
- Бизнес
- Внешнеэкономическая деятельность
- Тайм-менеджмент
- Кадровый менеджмент
- О бизнесе популярно
- Управление, подбор персонала
- Бизнес
- Менеджмент и кадры
- Продажи
- Экономика
- Ценные бумаги и инвестиции
- Малый бизнес
- Делопроизводство, офис
- Корпоративная культура, бизнес
- Банковское дело
- Финансы
- Зарубежная деловая литература
- Ораторское искусство / риторика
- Личные финансы
- Интернет-бизнес
- Поиск работы
- Государственное и муниципальное управление
- Бухучет и аудит
- Работа с клиентами
- Менеджмент
- Краткое содержание
- Личная эффективность
- Переговоры
- Приключения
- Старинная литература
- Религия и духовность
- Компьютеры и Интернет
- Блог
Читаем без скачивания ВСТУП ДО ІНЖЕНЕРІЇ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ - М. Сидоров
Шрифт:
Интервал:
Закладка:
Розглянемо ці методи докладніше.
Рівні абстракції (Е. Дейкстра, 1968). Ґрунтуючись на досвіді системи мультипрограмування Т.Н.Е., Дейкстра запропонував розробляти програмне забезпечення за рівнями. Перший низький рівень забезпечує балові сервіси для реалізації наступних, рівнів і ґрунтується на можливостях тієї машини, що реально існує. Кожен наступний рівень використовує сервіси поперед нього. Процес Створення рівнів продовжується до тих пір, доки по буде реалізований найвищий рівень абстракції. Наводиться приклад з управлінням пам'яті. На базовому рівні (машинна мова) відомі канальні команди для обміну даними між різними типами пам'яті. На першому рівні проектується механізм управління перериваннями - вплив на сигнали переривання, але без деталей маскування, відкриття, закривання, блокування, черговості. На наступному рівні проектується канальний супервізор - зберігається можливість управління каналами без зайвих деталей і, нарешті, на ще вищому рівні адміністратор пам'яті організовує обмін. Метод можна віднести як до методів розробки, так і управління.
Покрокове уточнення (Н. Вірт, 1971). Цей метод ґрунтується на таких принципах:
- розкладання простору рішень на підпростори;
- ітеративне вирішення завдання (повторення дій);
- аналіз ефективності розкладання (наступне поліпшення виконується лише у вигідному напрямі).
Мета покрокового уточнення полягає в зменшенні ризику, пов'язаного із застосуванням рішень під час програмування. Розділений процесу розробки програмного забезпечення на кроки дає змогу планувати його створення, відкладаючи реалізацію певних модулів, шляхом заміни їх заглушками, що імітують міжмодульні інтерфейси.
Наприклад, метод МЕТА (X. Ледгард, 1973) використовує низхідне уточнення.
Необхідна умова роботи методу - наявність точного і стабільного опису завдання, а результат S - програма.
Функціональна декомпозиція — це метод низхідного аналізу програмного забезпечення шляхом опису функцій, котрі йога утворюють і уявлення про їх реалізацію у вигляді функціональних зв'язаних модулів. Модуль називається функціонально зв'язаним, якщо містить компоненти, спрямовані на виконання однієї функції. Додаток, побудований з функціонально зв'язаних модулів, легко будувати і супроводжувати.
Модуляризація (Д. Парнас, 1972). Цей метод заснований на трьох фундаментальних принципах: з'єднання, скріплення, приховування інформації. Метод призначений для вирішення завдання розбиття програми на модулі, яка називається модуляризацією. Використовуються такі критерії модуляризації:
- з'єднання - поєднання частин модуля із зовнішнім оточенням повинне бути слабким;
- скріплення - скріплення частин, що входять до складу модуля має бути сильним;
- приховування - інформація, що міститься в модулі, повинна бути прихованою.
Модуль мас тіло, яке містить опис функції, що вирішується модулем, і інтерфейс, що забезпечує зв'язок модуля з його користувачами.
Структурне програмування (Е. Дейктра, 1972). Цей метод обмежує написання програм шляхом використання лише трьох типів операторів: послідовне з'єднання, вибір і повтор. Такий операторний базис достатній для написання будь-якої програми. Програми називаються структурними, а процес програмування - структурним. Метод передбачає також способи переходу від неструктурних програм до структурних.
Абстрактні типи даних (Б, Лісков, С. Зайліс, 1975). Суть методу полягає в розширенні концепції структур даних визначуваними операціями над ними. Перші реалізації абстрактних типів даних могли здійснюватися вже в підпрограмних мовах програмування (Paskal, С) шляхом використання процедурного типу або вказівного тину на підпрограму. У подальшому в мовах програмування були введені спеціальні конструкції (модуль, клас), спрямовані на ефективну реалізацію абстрактних типів даних.
Структурний аналіз (Т. де Марко, 1978). Метод аналізу специфікацій вимог за допомогою діаграм (управління, дані, перехід станів) - PSL/PSA (Д. Тіхроєв, 1977) шляхом ієрархічної декомпозиції вирішення проблеми. Людино-машинна техніка реалізована у вигляді мов і призначена для структуризації документації і аналізу інформації. Мови PSL/PSA використовують графічні діаграми {System Analisys and Design Techik - SADT), які застосовують для опису даних, перетворення інформації і процесів, що відбуваються в системах (рис. 4.6).
Рис. 4.6. Діаграма SADT
ER-моделювання (С. Чен, 1976). Метод опису прикладного домена за допомогою спеціальних діаграм «суть-зв'язок» (Enitity -Relation - ER), Метод використовує три типи нотацій: сутність, зв'язок (відношення), з'єднання.
Наприклад, діаграма на рис. 4.7 описує домен «комп'ютер — програма».
ER-модель використовується для опису логічних схем баз даних.
Рис. 4.7. ER-Діаграма:
□-сутність; ◊-(зв'язок,відношення) − − - з’єднання
Позначення 1 і т біля з'єднань показують їх тип (у цьому прикладі і «один - до багатьох»).
Системне програмування Джексона (К. Джексон, 1977). Метод використовує структурні оператори (проходження, вибір, повторения) для представлення логічних структур програмного забезпечення.
Віденський метод (IBM, 1970). Метод ґрунтується па операційному підході до опису семантики мов програмування. Суть методу полягає в тому, що завдання семантики здійснюється шляхом опису певних системних пристроїв - автоматів, що володіють па м'ятно і структурними станами.
Метод був розроблений для представлення семантики мови програмування PL/1, а потім використовувався для опису програмного забезпечення.
Simula 67 (У. Дал, Л. Keй, 1976), Мова програмування, до якої вперше введено поняття класу. Основним поняттям у мові був об'єкт - екземпляр блоку. Безліч об'єктів утворюють клас. Класи можуть складатися з підкласів (ієрархія, контейнер) у сучасному розумінні Згодом мова Simula 67 стала основою побудови мов об'єктно-орієнтованого програмування.
Об'єктно-орієнтоване проектування (Г. Буч, 1980). Суть методу полягає у використанні поняття об'єкта при аналізі наочної об ласті і проектуванні програмного забезпечення,
Доменний аналіз (Р. Прісто-Діаз, 1991). Метод спрямований на аналіз наочних областей з метою визначення повторно використовуваних рішень.
Об'єктнно-орієнтований аналіз (Е. Йодон, П. Коад. і 978). Є розширенням методу структурного аналізу шляхом використання об'єктів.
Усі перелічені методи можна розташувати в матриці (рис. 4.8),
Тип моделі Зорієнтованість методів, проблемно-орієнтовані продукто-орієнтовані Концептуальний І Структурний аналіз ER-модель Об'єктно-орієнтований аналіз ІІ Структурно проектування О'бєктно-оріентоване проектування Формальні моделі ІІІ JSD VDM IV Рівні абстракцій; Покрокова розробка Доведення правильності JSD ОО - програмуванняРис. 4.8. Відповідність типів моделей і методів
4.3.3. ПерсоналПрограмні процеси реалізують фахівці. Більшість програмних Процесів є настільки складними, що не можуть бути виконані одним або двома особами, тому шин зазвичай, утворюють певну структуру (організацію), характер якої, як і властивості окремих осіб, відіграють дуже важливу роль у розробці програмних продуктів.
Отже, розглянемо дві складових персоналу:
- кваліфіковані фахівці, здатні викопувати роботи зі створення програмного забезпечення;
- організації - об'єднання людей, що ставлять за мету виконання робіт зі створення програмного продукту.
Фахівці. Нині відомий дуже широкий спектр фахівців, які можуть залучатися до розробки програмного забезпечення.
Фахівцями комісії SEEPP розроблений етичний кодекс інженера з програмного забезпечення. Він включає такі аспекти:
- суспільні інтереси - дії програмістів повинні відповідати суспільним інтересам;
- клієнт і працедавець - програмісти повинні вчиняти так, щоб якнайкраще задовольнити вимоги клієнта і працедавця, але при цьому дотримуватись суспільних інтересів;
- продукт — програмісти повинні бути впевнені в тому, що створюванні ними програмні продукти і пов'язані з продуктами модифікації відповідають професійним найвищим стандартам;
- критицизм - інженери-програмісти повинні дотримуватися цілісності і незалежності своїх думок, формуючи здоровий професійний критицизм мислення;
- Менеджмент - менеджери і лідери, керівники груп з розробки ПО, зобов'язані дотримуватися стичних норм у процесі розробки і супроводу програм;