
- •Предисловие
- •Оглавление
- •Глава 1. Программные продукты, характеристика, классификация .........................8
- •Глава 2. Жизненный цикл. Стратегии и модели конструирования по ……………..17
- •Глава 3.Руководство проектом. Метрики ………………………………………………..31
- •Глава 4. Структурное проектирование ………………………………………..................42
- •Глава 5. Основы объектно-ориентированного представления
- •Глава 6. Язык визуального моделирования uml …………………………....................73
- •Глава 7. Проектирование интерфейса пользователя …………………………………..90
- •Глава 12. Эффективность и оптимизация программ ………………………………….139
- •Глава 13. Структурное тестирование по ………………………...................................153
- •Глава 14. Функциональное тестирование по ………………………………………….160
- •Глава 15. Комплексное тестирование. Отладка ………………………………………...170
- •Глава 16. Сопровождение программного обеспечения.
- •Глава 17. Защита программ ……………………………………………………………...187
- •Глава 18. Инструментарий технологии программирования.
- •Глава 19. Коллективная разработка по ………………………………………………..215
- •Глава 20 Стандартизация по.
- •Глава 1. Программные продукты, характеристика, классификация
- •1.Основные определения, характеристики
- •2.Классификация по по праву владения, использования, распространения
- •3 Пакеты прикладных программ
- •Контрольные вопросы
- •Глава 2. Жизненный цикл. Стратегии и модели конструирования по
- •1. Технология конструирования программного обеспечения– определение, парадигмы
- •1.1 Классический жизненный цикл
- •Проектирование
- •Кодирование
- •1.2 Макетирование
- •2. Стратегии конструирования по
- •3. Модели конструирования
- •3.1 Инкрементная модель
- •3.2 Модель rad - Быстрая разработка приложений
- •3.3 Спиральная модель
- •3.4 Компонентно-ориентированная модель
- •4. Прогнозирующие и адаптивные процессы
- •6. Модели качества процессов конструирования
- •Контрольные вопросы
- •Глава 3.Руководство проектом. Метрики
- •1. Процесс руководства проектом
- •2. Метрики
- •2.1 Размерно-ориентированные метрики
- •2.2 Функционально-ориентированные метрики
- •3. Выполнение оценки в ходе руководства проектом
- •3.1.Оценка проекта на основе loc- и fp-метрик
- •3.2.Конструктивная модель стоимости cocomo
- •Контрольные вопросы
- •Глава 4. Структурное проектирование
- •1.1 Диаграммы потоков данных
- •1.2 .Методы анализа, ориентированные на структуры данных
- •2. Основы проектирования программных систем
- •Этапы проектирования
- •2.2 Структурирование системы
- •2.3 Моделирование управления
- •2.4 Декомпозиция подсистем на модули
- •3. Модульность
- •3.1. Свойства, обоснование
- •3.2 Информационная закрытость
- •3.3 Связность модуля
- •3.4. Алгоритм определения связности модуля
- •3.5. Сцепление модулей
- •4. Сложность программной системы
- •5. Характеристики иерархической структуры программной системы
- •Контрольные вопросы
- •Глава 5. Основы объектно-ориентированного представления программных систем. Метрики
- •1. Принципы объектно-ориентированного
- •Представления программных систем
- •2. Объекты
- •2.1 Определение, характеристика объектов
- •2.2 Виды отношений между объектами
- •1.Связи
- •2.Агрегация
- •3. Классы
- •3.1 Понятие, характеристика
- •3.2 Виды отношений между классами
- •1).Ассоциации классов
- •4).Зависимость
- •4. Метрики объектно-ориентированных программных систем
- •4.1 Метрические особенности объектно-ориентированных систем
- •4. 2.Эволюция мер связи для объектно-ориентированных систем
- •4.3. Набор метрик Чидамбера и Кемерера
- •Контрольные вопросы
- •Глава 6. Язык визуального моделирования uml
- •1. Базис uml
- •1.1.Предметы в uml
- •1.1.Структурные предметы
- •1.2.Предметы поведения
- •1.3.Группирующие предметы
- •1.4.Поясняющие предметы
- •1.2.Отношения в uml
- •1.3.Диаграммы в uml
- •2. Диаграммы use case
- •2.1 Особенности диаграмм Use Case
- •2.2 Актеры и элементы Use Case
- •2.3 Отношения в диаграммах Use Case
- •2.4 Примеры диаграмм use case
- •3. Модели реализации объектно-ориентированных программных систем в uml
- •3.1.Компонентные диаграммы
- •3.2. Использование компонентных диаграмм
- •Контрольные вопросы
- •Глава 7. Проектирование интерфейса пользователя
- •Принципы организации интерфейса пользователя
- •2. Требования к пользовательскому интерфейсу
- •3. Типы пользовательского интерфейса
- •4. Стандарты пользовательского интерфейса информационных технологий
- •4.1. Стандартизация в области информационных технологий
- •4.2 Проектирование пользовательского интерфейса
- •Контрольные вопросы
- •Глава 8. Информационное моделирование
- •1. Этапы проектирования баз данных
- •2. Классификация и характеристика моделей данных
- •3. Типы и структуры данных
- •Контрольные вопросы
- •Глава 9. Модель "Сущность-связь"(er - Entity Relationship)
- •Базовые понятия er-модели
- •2. Пример построения er-модели
- •Контрольные вопросы
- •Глава 10. Стиль программирования
- •1. Три подхода к программированию
- •2. Стиль структу́рного программи́рования
- •3. Общие положения стандарта оформления кода
- •Необходимо
- •Контрольные вопросы
- •Глава 11. Парадигмы программирования
- •1. Процедурное программирование
- •2. Функциональное программирование
- •3. Логическое программирование
- •4. Автоматное программирование
- •5. Объектно-ориентированное программирование
- •5.1 История ооп
- •5.2 Главные понятия и разновидности ооп
- •5.2.1 Основные понятия
- •5.2.2 Сложности определения
- •5.2.3 Определение ооп
- •5.2.3 Концепции
- •5.2.4 Особенности реализации
- •5.3 Подходы ооп к проектированию программ в целом
- •5.4 Родственные методологии
- •5.4.1 Компонентное программирование
- •5.4.2 Прототипное программирование
- •5.5 Производительность объектных программ
- •5.6 Критика ооп
- •5.7 Объектно-ориентированные языки - характеристика
- •6. Аспектно-ориентированное программирование
- •Контрольные вопросы
- •Глава 12. Эффективность и оптимизация программ
- •1. Общие понятия эффективности
- •2. Оптимизирующие компиляторы
- •3. Оптимизация программ
- •4. Эффективность выполнения программ
- •5. Оптимизация использования памяти
- •6. Некоторые приёмы повышения эффективности программ
- •1.Вычисление констант
- •2.Инициирование переменных
- •3.Арифметические операции
- •4. Арифметика с фиксированной точкой
- •5. Смешанные типы данных
- •6. Способ устранения ошибок
- •7. Выравнивание десятичных чисел
- •8. Упорядочивание памяти
- •9. Группировка
- •10. Исключение циклов
- •11. Организация циклов
- •12. Условные и логические выражения
- •13. Ввод-вывод
- •14. Использование сведения о машине и компиляторе
- •7. Советы программисту по оптимизации программ
- •Контрольные вопросы
- •Глава 13. Структурное тестирование по
- •1.Основные понятия и принципы тестирования по
- •2.Тестирование «черного ящика»
- •3.Тестирование «белого ящика»
- •Контрольные вопросы
- •Глава 14. Функциональное тестирование по
- •1. Особенности тестирования «чёрного ящика»
- •2. Способ разбиения по эквивалентности
- •3. Способ анализа граничных значений
- •4. Способ диаграмм причин-следствий
- •Глава 15. Комплексное тестирование. Отладка
- •1. Методика комплексного тестирования пс
- •2.Тестирование элементов
- •3.Тестирование интеграции
- •3.1.Нисходящее тестирование интеграции
- •3.2 Восходящее тестирование интеграции
- •4.Тестирование правильности
- •5.Системное тестирование
- •5.1.Тестирование восстановления
- •5.2.Тестирование безопасности
- •5.3.Стрессовое тестирование
- •5.4. Тестирование производительности
- •6. Искусство отладки
- •Контрольные вопросы
- •Глава 16. Сопровождение программного обеспечения. Документирование результатов и хода разработки
- •1. Проблемы документирования
- •2. Виды документации
- •3. Средства автоматизации документирования
- •Контрольные вопросы
- •Глава 17. Защита программ
- •1. Концептуальные основы защиты информации
- •2. Организационно-правовое обеспечение защиты информации Организационные мероприятия и процедуры по обеспечению защиты информации
- •3. Защита информации от несанкционированного доступа
- •3.1. Основные понятия защиты от нсд
- •3.2. Формальные модели защиты
- •3 3. Системы разграничения доступа
- •4 Защита информации в каналах связи
- •4. 1. Основные понятия и определения
- •4.2. Криптоалгоритмы и протоколы шифрования
- •4. 3. Алгоритмы и протоколы реализации функции цифровой подписи
- •5.2. Сигнатурные методы защиты от несанкционированного копирования
- •5. 3. Аппаратные методы защиты от несанкционированного копирования
- •6 Компьютерная вирусология
- •Контрольные вопросы
- •Глава 18. Инструментарий технологии программирования. Case - технологии
- •Классификация инструментальных средств
- •2. Общая характеристика case- средств
- •3. Классификация case-средств
- •4.Технология внедрения case-средств
- •Контрольные вопросы
- •Глава 19. Коллективная разработка по
- •1. Особенности больших программных проектов
- •2. Коллективный характер разработки программного обеспечения. Бригада главного программиста
- •3. Психологические факторы при формировании программистских коллективов
- •4. Коллективная разработка программ - «Коллективная игра»
- •Инженерная модель программирования не оправдывает себя
- •Модель коллективной игры Виды игр, коллективные игры, последовательность игр
- •Кооперация и коммуникация
- •Изобретательность
- •Контрольные вопросы
- •Глава 20 Стандартизация по. Экономические аспекты создания по
- •1.Краткая характеристика программных средств как объекта разработки и стандартизации
- •2. Основные понятия и положения технологии разработки программных средств
- •2) Проблемы технологии разработки пс, включающие:
- •3. Критерии оценки технологий проектирования программных средств
- •4.Общие сведения о сертификации информационных систем и программных средств
- •1) Количественные пк:
- •2) Качественные пк:
- •5. Методы оценки технико-экономических показателей программных средств на различных этапах их жизненного цикла
- •Контрольные вопросы
- •Список литературы
2.Классификация по по праву владения, использования, распространения
Во многих учебниках по информатике и информационно-коммуникационным технологиям можно встретить классификацию ПО, которая базируется на разделении программ по способу их использования: системное ПО, прикладное, средства разработки и тому подобное. Но интересно также рассмотреть классификацию ПО с точки зрения прав владения, использования и распространения. Так как существует немало высококачественных программ, разработанных совместно и распространяемых часто бесплатно, необходимо знать о них и правилах их использования. Тем более. что существует распоряжение Правительства РФ от 18 октября 2007 года №1447-р, в котором говорится о разработке и внедрении в образовательные учреждения свободного программного обеспечения по перечню программ, входящих в стандартный (базовый)пакет.(www.rg.ru/2007/10/24/shkoly-soft-dok.html).
2.1 Abandonware (англ. abandon — покинуть, оставить; software — программное обеспечение) — ПО, которое больше не выставляется на продажу компанией-производителем, не поддерживаются им и издателем (не обновляется техническая документация, не выпускаются дополнения и обновления, не ведется статистика отказов, база данных пользователей и так далее). На русском языке его можно назвать устаревшим или морально устаревшим. Многое abandonware не является общественным достоянием, и по законам большинства государств не должно распространяться без разрешения правообладателя. Abandonware востребованы тогда, когда: используется старая техника; существуют приверженцы устаревшего программного обеспечения (игр, редакторов, операционных систем); приобретение нового лицензионного продукта становится материально обременительным. Чаще всего abandonware распространяется бесплатно, как freeware, иногда — платно, как shareware. Программы лицензирования Microsoft для образовательных и академических организаций «Academic Open License» и «Academic and School Agreement» предполагают возможность использования предыдущих версий приобретаемых продуктов, которые уже не выставляются на продажу. На официальном сайте Microsoft (www.microsoft.com/rus/) можно узнать, что 30 июня 2008 года прекращаются продажи операционной системы Windows XP, хотя поддержка будет осуществляться до 2014 года. Таким образом, Windows XP нельзя до 2014 года отнести к abandonware.
2.2 Freeware (от англ. free — бесплатный и software — программное обеспечение) — это лицензионное бесплатное ПО, распространяемое без исходных кодов, которое можно использовать неограниченное время. Следует отличать freeware от свободного программного обеспечения (англ. free software), которое распространяется с исходными кодами. Freeware-программы обычно собственнические, и условия их распространения могут запрещать их копирование, изменение, повторное распространение и оговариваются в лицензионном соглашении. Найти и скачать freeware-программы можно на следующих сайтах: FreewareDownloads (www.software-bazar.com/index-freeware.htm); антивирус AVG Anti-Virus от компании GriSoft (http://free.avg.com); антивирус Avira AntiVir от компании Avira (www.free-av.com); интернет-мессенджер QIP для службы ICQ (http://qip.ru);обозреватель Internet Explorer 7 (www.microsoft.com/rus/windows/downloads/); персональныйбрандмауэрZonelarm (www.zonealarm.com/store/content/catalog/products/zonealarm_free_firewall.jsp);файловый архив Download.ru (http://download.ru); файловый архив Freeware.ru (www.freeware.ru); файловый архив Freeware32.ru (http://freeware32.ru); файловый архив GoldSoft.ru(www.goldsoft.ru). 2.3. Shareware (англ. share — разделять, участвовать; software — программное обеспечение) — это условно-бесплатное или пробное ПО. Под shareware понимают также метод распространения софта, при котором пользователю предлагается бесплатно ограниченная по возможностям (сроку действия, функциональности — демо-версия) программа, или версия со встроенным раздражающим блокиратором — напоминанием о необходимости оплаты тестируемой программы. В лицензионное соглашение может быть включен запрет на коммерческое или профессиональное использование программы. Основной принцип shareware — «попробуй, прежде чем купить» (try before you buy). В течение ограниченного срока, составляющего обычно 30 дней, пользователь может тестировать программу, осваивать ее возможности. Если по истечении срока тестирования пользователь решит продолжить использование ПО, он обязан заплатить правообладателю определенную сумму. В противном случае в соответствии с лицензионным соглашением пользователь должен удалить понравившуюся программу со своего компьютера. Так как некоторые продолжают пользоваться shareware-ПО и после установленного срока, то производители предпринимают ряд мер для борьбы с такими нарушителями. Например, программа спустя 30 дней прекращает запускаться, или становится недоступной часть функций, или функциональность остается в полном объеме, но время от времени выходит напоминание о том, что его копия программы незарегистрированная. Основной способ распространения shareware-программ — это каталоги программного обеспечения или баннерная реклама в поисковых системах. Найти и скачать shareware-программы можно на следующих сайтах: антивирус Panda Antivirus 2008, ознакомительная демо-версия (www.viruslab.ru); антивирус ESET NOD32, пробная версия(www.esetnod32.ru); пакет программ для работы с графикой CorelDRAW Graphics Suite Х4 (www.corel.com);файловый архив shareware и freeware программ (www.shareware.com). 2.4. Free software Free software (пер. с англ. «свободное программное обеспечение») — ПО, в отношении которого пользователь имеет право делать следующее: запускать, изучать, улучшать и распространять. В мире существуют люди, которые готовы бесплатно делиться текстами своих программ и совершенствовать тексты чужих. Свободное ПО унаследовало модель открытой научной разработки, а вместе с ней — и академическую модель взаимодействия между учеными, вылившуюся в специфическую организацию сообщества разработчиков и пользователей. Еще одним ярким примером таких моделей является получившая мировую известность упомянутая выше «Википедия». В ее наполнении принимают участие огромное число пользователей Интернета. Любой желающий может добавить или отредактировать статью. Однако совершенствовать программы могут только программисты, понимающие код. По законодательству многих стран, программный продукт и его исходный код охраняется авторским правом, которое дает автору (или другому правообладателю) полную власть над распространением и изменением программы, даже в случае, когда исходный код общедоступен для обозрения (см. Гражданский кодекс РФ от 18.12.2006 № 230-ФЗ — Часть 4, глава 70). Свободное ПО выпускается под одной из так называемых свободных лицензий. К ним относятся: Общественное достояние; Лицензия Apache ; Лицензия BSD (Программная лицензия университета Беркли); GNU General Public License (GNU GPL); GNU Lesser General Public License; GNU Affero General Public License;Лицензия MIT; Mozilla Public License. Особенностью общественной лицензии GNU является наличие правила «копилефт», которое представляет собой условие распространения свободного ПО: ни один пользователь не имеет права, сделав модифицированную версию свободной программы, распространять ее, не соблюдая всех принципов свободного ПО. То есть, нельзя модификацию свободной программы сделать несвободной. По этой причине лицензию GNU прозвали «вирусной лицензией»: она как бы «заражает» программу, становясь ее неотъемлемой частью. Существует даже знак «копилефт», который симметричен знаку «копирайт». Лицензии BSD, MIT, Apache не включают правила «копилефт». Считается, что лицензия Mozilla Public License обеспечивает слабый «копилефт». Они позволяют дальнейшие модификации выпускать под другими лицензиями, что может повлечь за собой выход из категории свободного ПО. С 1985 года существует Фонд свободного программного обеспечения (www.fsf.org), созданный с целью поддержания идеалов свободного ПО. Он формирует каталог свободного ПО для систематизации сведений о нем, а также для информации о том, была ли определенная программа проверена на соответствие критериям свободного ПО. Свободное ПО может одновременно быть и коммерческим — существует много бизнес-моделей, где не надо платить за каждую копию ПО. В качестве примера можно привести платную сервисную поддержку или коммерческую лицензию для использования свободного кода в собственническом ПО. Подавляющее большинство открытых программ является одновременно свободными и наоборот, поскольку определения открытого и свободного ПО очень близки. Наиболее известные представители свободно распространяемых программ: браузер Mozilla Firefox; операционная система Linux (включена в ПСПО для общеобразовательных учреждений); язык веб-программирования PHP; сервер Аpache; операционная система FreeBSD; программный движок для веб-сайтов MediaWiki; Free Pascal Compiler — компилятор языка программирования Pascal; FreeBASIC Compiler — компилятор языка программирования Basic; система компьютерной верстки TeX; СУБД реляционная MySQL. Найти в Интернете ссылки на перечисленные программы можно на сайте www.sura.ru/Dikov/resourses/free_soft.htm)
2.5. Открытое программное обеспечение (англ. open source software). Открытое программное обеспечение, то есть программное обеспечение с открытым исходным кодом — способ разработки ПО, при котором исходный код создаваемых программ общедоступен, то есть открыт для просмотра и изменения. Термин «open source» был введен в 1998 году Эриком Реймондом и Брюсом Перенсом, которые утверждали, что термин «свободное программное обеспечение» (free software) неоднозначен и отпугивает коммерческих предпринимателей.
Open Source — торговая марка организации OSI — Open Source Initiative. Существует специальный комитет, решающий, может ли лицензия носить имя Open Source. OSI активно участвует в посторении Open Source-сообщества. Члены OSI посещают Open Source-конференции, встречаются с разработчиками Open Source и пользователями, обсуждают с органами исполнительной власти вопросы о том, как Open Source-технологии, лицензии и модели разработки могут обеспечить экономические и стратегические преимущества. Лицензия на открытое ПО не требует, чтобы оно всегда предоставлялось бесплатно. Тем не менее, многие из наиболее успешных проектов открытого ПО бесплатны. Лицензии на открытое ПО часто совпадают с лицензиями на свободное ПО. Так, например, к лицензиям на open sourсe относятся: PHP License; Python license; Mozilla Public License; MIT license; GNU General Public License (GPL); GNU Lesser General Public License; Apache Software License.
Подавляющее большинство открытых программ является одновременно «свободными» и наоборот, так как определения открытого и свободного ПО почти идентичны, а большинство лицензий соответствуют обоим. Существует мнение, что понятие свободного ПО шире, чем открытого. Отличие между движениями открытого и свободного ПО заключается в основном в акцентах. Сторонники открытого ПО делают упор на эффективность метода его разработки. Приверженцы свободно распространяемого ПО исходят из того, что именно права на распространение, модификацию и изучение программ можно считать главным достоинством свободного ПО. Наиболее известными представителями программ с открытым кодом: офисный пакет OpenOffice.org; среда дистанционного обучения Moodle; операционная система OpenBSD. Впрочем, в этом списке можно привести практически все перечисленные свободные программы, так как они распространяются с исходным кодом, доступным для модификации.
2.6. Собственническое или проприетарное программное обеспечение. Собственническое или проприетарное программное обеспечение (англ. proprietary software) — это несвободное и неоткрытое ПО. Правообладатель сохраняет за собой монополию на его использование, копирование и модификацию, полностью или в существенных моментах. Собственническое ПО не идентично коммерческому, которое может быть и свободным. Защита исходного кода от копирования и модификации может быть достигнута правовыми и техническими средствами. Технические средства включают в себя выпуск только машинно-читаемых двоичных файлов, ограничение доступа к читаемому человеком исходному коду (закрытый исходный код), затруднение использования собственноручно сделанных копий. Правовые средства могут включать в себя коммерческую тайну, копирайт и патенты. Популярными собственническими программами являются: ОС Microsoft Windows Vista; офисный пакет Microsoft Office 2007; графический редактор Adobe Photoshop; издательская система Adobe Acrobat; математический пакет Mathcad 14.0; антивирус Panda Antivirus 2008; антивирус Norton AntiVirus 2008; переводчик PROMT Standard 8.0; почтовый клиент The Bat! 2.7. Коммерческое программное обеспечение (англ. commercial software) — ПО, распространяемое с целью получения прибыли. Как правило, коммерческие программные продукты имеют постоянную техническую поддержку крупных компаний. Так, например, фирма Microsoft регулярно выпускает обновления для своих программных продуктов в виде пакетов Service Pack. Напротив, техническая поддержка свободного и открытого ПО осуществляется на платной основе. На все программные продукты, не являющиеся общественным достоянием, накладываются ограничения лицензии согласно авторскому праву. Существует большое число лицензий, и многие компании — разработчики ПО на коммерческой основе составляют собственные лицензионные соглашения. Покупатель коммерческого софта должен принять условия лицензии и обязуется соблюдать все ее положения. Все лицензии на эти программы включают ограничения на их коммерческое использование, распространение и модификацию. На сайте известного распространителя программного обеспечения от ведущих российских и зарубежных компаний — производителей ПО softline (www.softline.ru) опубликован перечень опасностей, связанных с нарушением условий лицензионных соглашений: юридическая ответственность; ущерб деловой репутации; отсутствие прав на техническую поддержку и обновление продуктов; проблемы совместимости ПО.