МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ Новокузнецкий институт (филиал) федерального государственного бюджетного образовательного учреждения высшего образования «Кемеровский государственный университет» Факультет информатики, математики и экономики Кафедра информатики и вычислительной техники им. В.К. Буторина Митин Кирилл Евгеньевич РАЗРАБОТКА ПРИЛОЖЕНИЯ «ИНФОРМАЦИОННАЯ СИСТЕМА «РЖД» тема ВКР Выпускная квалификационная работа (бакалаврская работа) по направлению подготовки 09.03.03 Прикладная информатика направленность (профиль) подготовки «Прикладная информатика в экономике» Руководитель ВКР Маркидонов А.В., д-р физ.-мат. наук, профессор Ученая степень, должность, И.О. фамилия _______________ подпись Работа защищена с оценкой: _____________________________ Протокол ГЭК № _________ от «____»___________20_____ г. Секретарь ГЭК О.А. Штейнбрехер ________________ подпись Новокузнецк 2021 Новокузнецкий институт (филиал) федерального государственного бюджетного образовательного учреждения высшего образования «Кемеровский государственный университет» кафедра информатики и вычислительной техники им. В.К. Буторина ЗАДАНИЕ на бакалаврскую работу Митин Кирилл Евгеньевич группа гр. ПИЭпоз-18 Тема бакалаврской работы: РАЗРАБОТКА ПРИЛОЖЕНИЯ «ИНФОРМАЦИОННАЯ СИСТЕМА «РЖД» Утверждена приказом № ___от « Срок сдачи законченной работы « __» __» __ ____ 20__г. 20 __ г. Исходные условия и данные к работе: должностные инструкции, литература по тематике, анализ работы ОАО «РЖД», материалы преддипломной практики Содержание расчетно-пояснительной записки, перечень подлежащих разработке вопросов Определения, обозначения, сокращения Введение 1 2 3 4 Заключение Список использованных источников и литературы Зав. кафедрой __________ / Маркидонов А.В. / Руководитель ____________ / Маркидонов А.В. / Задание к исполнению принял ______________ /Мамайкин Е.А./ «____» ___________ 2021 г. 2 ЛИСТ УТВЕРЖДЕНИЯ Консультанты по проекту с указанием относящихся к ним разделов проекта(работы) Информационная часть Маркидонов А.В Экономическая часть Грачев В.В. Нормоконтроль Грачев В.В. Отчет о проверке ВКР в системе «Антиплагиат. ВУЗ» … Руководитель ____________ / Маркидонов А.В / Исполнитель _____________ /Митин К.Е./ 3 СОДЕРЖАНИЕ ОПРЕДЕЛЕНИЯ, ОБОЗНАЧЕНИЯ И СОКРАЩЕНИЯ .............................. 5 ВВЕДЕНИЕ ....................................................................................................... 6 1 ОБЩАЯ ЧАСТЬ ............................................................................................ 7 1.1 История возникновения и общая характеристика ОАО «РЖД» ..... 7 1.2 Функции Эч-18 ........................ Ошибка! Закладка не определена. 1.3 Структура подразделения ................................................................... 9 1.4 Описание аппаратного обеспечения .................................................. 9 1.5 Программное обеспечение учреждения .......................................... 10 1.6 Бизнес процесс ОАО «РЖД» ............................................................ 10 2. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ .................................................................... 16 2.1 Общее описание языка ........................................................................ 16 2.2 История создания ............................................................................... 17 2.3 История стандартов ........................................................................... 20 2.4 Обзор языка ........................................................................................ 21 2.5 Необъектно-ориентированные возможности .................................. 22 2.6 Объектно-ориентированные особенности языка ............................ 23 3. ПРАКТИЧЕСКАЯ ЧАСТЬ ........................................................................ 27 3.1 Постановка задачи................................................................................ 27 3.2 Описание предметной области ........................................................... 28 3.3 Выбор среды реализации..................................................................... 28 3.4 Диаграмма вариантов использования ................................................ 29 3.5 Описание предметной области ........................................................... 30 3.6 Выбор среды ......................................................................................... 30 4 3.7 Диаграмма вариантов использования ................................................ 31 3.8 Диаграмма последовательности ......................................................... 34 3.9 КооперативнЫЕ диаграммы ............................................................... 39 3.10 Диаграммы классов ............................................................................ 43 3.11 Диаграммы компонентов................................................................... 44 3.12 Диаграмма размещения ..................................................................... 45 3.13 Генерация программного кода С++ ................................................. 47 4 ЭКОНОМИЧЕСКАЯ ЧАСТЬ..................................................................... 51 4.1 Расчет затрат на проектирование ....................................................... 51 4.2 Доходы от реализации проекта........................................................... 59 4.3 Расчет экономических показателей проекта ..................................... 59 Заключение ..................................................................................................... 61 Список использованных источников ........................................................... 62 ПРИЛОЖЕНИЕ А .......................................................................................... 63 ПРИЛОЖЕНИЕ Б ........................................................................................... 69 5 РЕФЕРАТ Бакалаврская работа 67 стр., 32 илл., 11 табл., 18 источников. АВТОСЕРВИС, МЕНЕДЖЕР, АВТОМАТИЗИРОВАННОЕ РАБОЧЕЕ МЕСТО, КОНФИГУРАЦИЯ, ЭКОНОМИЧЕСКАЯ ЭФФЕКТИВНОСТЬ Объектом исследований выпускной квалификационной работы является автосервис ООО «Сервис Плюс-Авто», а предметом исследования – его бизнеспроцессы и в частности деятельность менеджера. Целью выпускной квалификационной работы является повышение эффективности работы менеджера автосервиса ООО «Сервис Плюс-Авто» посредствам внедрения автоматизированного рабочего места. В процессе выполнения бакалаврской работы были построены бизнеспроцессы деятельности менеджера и определены основные проблемы, в организации его работы. В качестве решения данных проблем был предложен проект по внедрению автоматизированного места. Для реализации данного решения была проведена разработка конфигурации «Автоматизированное рабочее место менеджера автосервиса». ОПРЕДЕЛЕНИЯ, ОБОЗНАЧЕНИЯ И СОКРАЩЕНИЯ «1С:Предприятие» – программный продукт компании «1С», предназначенный для автоматизации деятельности на предприятии. IDEF0 – нотация графического моделирования, используемая для создания функциональной модели, отображающей структуру и функции системы, а также потоки информации и материальных объектов, связывающие эти функции. UML – язык графического описания для объектного моделирования в области разработки программного обеспечения, для моделирования бизнес-процессов, системного проектирования и отображения организационных структур. АРМ – Автоматизированное рабочее место. БД – База данных. ЗН – Заказ-Наряд. ИС – Информационная система. ПО – программное обеспечение. СТО – Станция технического обслуживания. СУБД – система управления базами данных. ТО – Техническое обслуживание. ТР – Текущий ремонт. ТС – Транспортное средство. ВВЕДЕНИЕ Основой для учета, контроля и планирования служат всевозможные картотеки, регистрационные журналы, списки и т.д. Они постепенно накапливаются и обновляются. При большом объеме информации поиск и обобщение необходимых сведений, осуществляемых вручную, представляют собой довольно трудоемкий процесс. Поэтому и возникла необходимость создания автоматизация товарного учёта. Цель дипломной работы: Необходимо смоделировать информационную систему «РЖД». Задачи, которые необходимо решить в процессе выполнения данной работы: ознакомиться с предприятием, изучить техническое и программное обеспечение, изучить организационную структуру и основные бизнес-процессы предприятия; изучить понятие автоматизация товарного учета в торговой компании; проанализировать и выбрать программное обеспечение для выполнения поставленных задач; создать программный продукт. Актуальность данной темы заключается в том, что в настоящее время невозможно представить работу большинства финансовых, промышленных, торговых и прочих организаций без автоматизированного товарного учёта. Он позволяют структурировать, хранить и извлекать информацию оптимальным для пользователя способом. Практическая значимость курсовой работы заключается в том, что при выполнении поставленных программных продуктов. задач, были получены навыки создания 1 ОБЩАЯ ЧАСТЬ 1.1 История возникновения и общая характеристика ОАО «РЖД» ОАО «РЖД» учреждено постановлением правительства Российской Федерации от 18 сентября 2003 г. № 585 «О создании открытого акционерного общества «Российские железные дороги»». Хозяйственная деятельность компании началась 1 октября 2003г. В соответствии с Указом Президента Российской Федерации от 4 августа 2004г. №1009 «От утверждении перечня стратегических предприятий и стратегических акционерных обществ» ОАО «РЖД» включено в перечень открытых акционерных обществ, акции которых в федеральной собственности и участие Российской Федерации в управлении которыми обеспечивает стратегические интересы, обороноспособность и безопасность государства, защиту нравственности, здоровья, прав и законных интересов граждан Российской Федерации. Железнодорожный комплекс имеет особое стратегическое значение для России. Он является связующим звеном единой экономической системы, обеспечивает стабильную деятельность промышленных предприятий, своевременный подвоз жизненно важных грузов в самые отдаленные уголки страны, а также является самым доступным транспортом для миллионов граждан. Открытое акционерное общество "Российские железные дороги" входит в мировую тройку лидеров железнодорожных компаний. Это определяют следующие факторы: огромные объемы грузовых и пассажирских перевозок; высокие финансовые рейтинги; квалифицированные специалисты во всех областях железнодорожного транспорта; большая научно-техническая база; проектные и строительные мощности; значительный опыт международного сотрудничества. 1.2 Структура подразделения Структура подразделения ОАО «РЖД» ЭЧ-18 представлена на рисунке 1. Начальник дистанции Зам. начальника по контактной сети Инженер по контактной сети Зам. начальника по тяговым подстанциям Инженер по тяговым подстанциям Зам. начальника по энергетике Старший энергодиспетчер Зам. начальника по кадрам и социальным вопросам Специалисты по управлению персоналом Энергодиспетчера Рисунок 1. Структура ЭЧ-18. 1.3 Описание аппаратного обеспечения Аппаратное обеспечение: Системный блок фирмы ASUS: 1) Процессор: Athlon X4 950; 2) Видеокарта: GeForce GT 1030; 3) Размер оперативной памяти: 4гб; 4) Накопитель HDD 1 Тб. Монитор ACER K192HQLb LED 18.5”; Начальник тех.отдела Программист Клавиатура Sven Standard 301; Мышь проводная DEXP CM-906BU; ИБП CyberPower UTC650E (650 ВА). 1.4 Программное обеспечение учреждения На компьютерах организации установлены и используются: Microsoft Word - текстовый процессор, предназначенный для создания, просмотра и редактирования текстовых документов, используется для создания приказов, нарядов; Microsoft Excel - программа для работы с электронными таблицами, используется для составления графиков; WinRAR - архиватор файлов в форматы RAR и ZIP для 32- и 64- разрядных операционных систем Windows; Internet Explorer- браузер, используется для просмотра почты. 1.5 Бизнес процесс ОАО «РЖД» Перевозка грузов и пассажиров 1. Перевозка пассажиров, грузов, багажа и грузобагажа железнодорожным транспортом общего пользования, в том числе для государственных нужд, воинские и специальные железнодорожные перевозки; 2. Оказание услуг по предоставлению локомотивной тяги; 3. Транспортировка грузов (перемещение грузов без заключения договора перевозки) по железнодорожным путям общего и необщего пользования; 4. Погрузочно-разгрузочная деятельность на железнодорожных путях общего и необщего пользования; 5. Сопровождение и охрана грузов в пути следования и на железнодорожных станциях; 6. Оказание услуг по хранению грузов, в том числе находящихся под таможенным контролем, а также грузобагажа, багажа и ручной клади пассажиров; 7. Транспортно-экспедиционная деятельность; 8. Перевозка грузов и пассажиров автомобильным транспортом; 9. Организация и эксплуатация логистических центров, а также создание интегрированной логистической документации и ее реализация на рынке транспортных услуг. Производство, ремонт, строительство 1. Производство, текущее содержание и эксплуатация железнодорожного подвижного состава (в том числе пожарных поездов), контейнеров и технических средств, используемых на железнодорожном транспорте; 2. Оказание услуг по проведению планового и текущего ремонта, технического обслуживания вагонов, контейнеров и локомотивов, по проведению ремонта колесных пар, а также промывочно-пропарочных работ; 3. Производство работ по ремонту электромашин, изготовлению электрощитов, электроосветительной аппаратуры и металлоконструкций; 4. Оказание услуг по приемке железнодорожного подвижного состава и запасных частей к нему на вагоностроительных и вагоноремонтных заводах; 5. Оказание услуг по осуществлению производственного контроля и надзора за устройством, изготовлением, монтажом, ремонтом и безопасной эксплуатацией подъемных механизмов и оборудования; 6. Выполнение работ по предупреждению и ликвидации пожаров, других аварийных и чрезвычайных ситуаций на железнодорожном транспорте, в том числе проведение аварийно-восстановительных работ; 7. Выполнение работ по обеспечению промышленной безопасности опасных производственных объектов, эксплуатация и ремонт котлов и сосудов, работающих под давлением, трубопроводов, грузоподъемных средств и других технических средств; 8. Производство и реализация строительных конструкций и изделий, нерудных строительных материалов, лесозаготовка, деревообработка, заготовка, переработка и реализация металлолома; 9. Эксплуатация горных производств и объектов; 10. Хранение и применение взрывчатых материалов промышленного назначения; 11. Поставка (продажа) электрической, тепловой энергии, оказание услуг по электроснабжению, теплоснабжению, водоснабжению и водоотведению. Обслуживание инфраструктуры железнодорожного транспорта 1. Оказание услуг по использованию инфраструктуры железнодорожного транспорта общего пользования и иных услуг, связанных с предоставлением этой инфраструктуры (ее элементов); 2. Оказание услуг по предоставлению железнодорожных путей необщего пользования, принадлежащих обществу; 3. Выполнение инфраструктуры работ по эксплуатации, содержанию и железнодорожного транспорта общего ремонту пользования и железнодорожных путей необщего пользования. Проектирование и конструкторская деятельность 1. Оказание услуг по разработке конструкторско-технологической документации, изготовлению и поставке технологического оборудования, и его сервисному обслуживанию; 2. Выполнение метрологических работ, изготовление и ремонт средств измерений; 3. Ведение проектных, научно-исследовательских, изыскательских, строительных, опытно-конструкторских, строительно-монтажных и ремонтно-строительных работ; 4. Производство маркшейдерских работ; 5. Оказание инжиниринговых услуг; 6. Оказание испытательными лабораториями общества услуг в области сертификации. Информация и связь 1. Оказание услуг связи, информационных, маркетинговых, сервисных и других услуг; 2. Информационная, рекламно-издательская и полиграфическая деятельность; 3. Проведение выставок и презентаций; 4. Строительство, техническое обслуживание и ремонт средств связи, включая линейные сооружения, системы и средства радиосвязи; 5. Разработка автоматизированных информационных систем, систем, предназначенных для научных исследований, проектирования и управления, системных и прикладных программных средств; 6. Техническое обслуживание и ремонт вычислительной и иной техники и используемого совместно с ней периферийного оборудования; 7. Оказание услуг по воспроизведению аудиовизуальных произведений и фонограмм на любых видах носителей; 8. Оказание консультационных услуг, в том числе связанных с компьютерными комплексами технических средств, информационным обеспечением и обработкой данных. Торговля программным, 1. Производство и реализация продовольственных и промышленных товаров; 2. Посредническая, торгово-закупочная и снабженческо-сбытовая деятельность; 3. Хранение и реализация горюче-смазочных материалов. Cоциальная сфера 1. Организация работы детских железных дорог и проведение профессионально-ориентационной работы среди молодежи; 2. Деятельность по распространению лекарственных средств и изделий медицинского назначения; 3. Медицинская деятельность; 4. Фармацевтическая деятельность; 5. Образовательная деятельность; 6. Строительство, эксплуатация, технический надзор и ремонт объектов социально-культурного, спортивно-оздоровительного и коммунально-бытового назначения, проведение образовательной, культурно-массовой и спортивнооздоровительной работы, осуществление экскурсионно-туристического и гостиничного обслуживания, организация отдыха и санаторно-курортного лечения; 7. Предоставление коммунально-бытовых услуг. Внешнеэкономическая деятельность Внешнеэкономическая деятельность, в том числе оказание услуг на железнодорожном транспорте общего пользования в международном сообщении, осуществление сотрудничества с иностранными организациями железнодорожного транспорта, привлечение в установленном порядке к сооружению объектов железнодорожного организаций. Другие виды деятельности транспорта иностранных 1. Оказание природоохранных услуг, в том числе услуг по осуществлению производственного экологического контроля; 2. Выполнение работ и оказание услуг по защите государственной тайны, противодействию иностранным техническим разведкам и технической защите информации в соответствии с нормативными правовыми актами Российской Федерации; 3. Управление и распоряжение интеллектуальной собственностью общества. Обобщенная модель технологических и управленческих процессов ОАО "РЖД" представлена на рисунке 2. Рисунок 2. Обобщенная модель технологических и управленческих процессов ОАО "РЖД". ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 2 2.1 Общее описание языка C++ — компилируемый статически типизированный язык программирования общего назначения. Поддерживает такие парадигмы программирования как процедурное программирование, объектно-ориентированное программирование, обобщённое программирование, обеспечивает модульность, раздельную компиляцию, обработку исключений, абстракцию данных, объявление типов (классов) объектов, виртуальные функции. Стандартная библиотека включает, в том числе, общеупотребительные контейнеры и алгоритмы. C++ сочетает свойства как высокоуровневых, так и низкоуровневых языков. В сравнении с его предшественником — языком C, — наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования. C++ широко используется для разработки программного обеспечения, являясь одним из самых популярных языков программирования. Область его применения включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений (игр). Существует множество реализаций языка C++, как бесплатных, так и коммерческих и для различных платформ. Например, на платформе x86 это GCC, Visual C++, Intel C++ Compiler, Embarcadero (Borland) C++ Builder и другие. C++ оказал огромное влияние на другие языки программирования, в первую очередь на Java и C#. Синтаксис C++ унаследован от языка C. Одним из принципов разработки было сохранение совместимости с C. Тем не менее, C++ не является в строгом смысле надмножеством C; множество программ, которые могут одинаково успешно транслироваться как компиляторами C, так и компиляторами C++, довольно велико, но не включает все возможные программы на C. 2.1 История создания Язык возник в начале 1980-х годов, когда сотрудник фирмы Bell Labs Бьёрн Страуструп придумал ряд усовершенствований к языку C под собственные нужды. Когда в конце 1970-х годов Страуструп начал работать в Bell Labs над задачами теории очередей (в приложении к моделированию телефонных вызовов), он обнаружил, что попытки применения существующих в то время языков моделирования оказываются неэффективными, а применение высокоэффективных машинных языков слишком сложно из-за их ограниченной выразительности. Так, язык Симула имеет такие возможности, которые были бы очень полезны для разработки большого программного обеспечения, но работает слишком медленно, а язык BCPL достаточно быстр, но слишком близок к языкам низкого уровня и не подходит для разработки большого программного обеспечения. Вспомнив опыт своей диссертации, Страуструп решил дополнить язык C (преемник BCPL) возможностями, имеющимися в языке Симула. Язык C, будучи базовым языком системы UNIX, на которой работали компьютеры Bell, является быстрым, многофункциональным и переносимым. Страуструп добавил к нему возможность работы с классами и объектами. В результате практические задачи моделирования оказались доступными для решения как с точки зрения времени разработки (благодаря использованию Симула-подобных классов), так и с точки зрения времени вычислений (благодаря быстродействию C). В первую очередь в C были добавлены классы (с инкапсуляцией), наследование классов, строгая проверка типов, inline-функции и аргументы по умолчанию. Ранние версии языка, первоначально именовавшегося «C with classes» («Си с классами»), стали доступны с 1980 года. Разрабатывая C с классами, Страуструп написал программу cfront — транслятор, перерабатывающий исходный код C с классами в исходный код простого C. Это позволило работать над новым языком и использовать его на практике, применяя уже имеющуюся в UNIX инфраструктуру для разработки на C. Новый язык, неожиданно для автора, приобрёл большую популярность среди коллег и вскоре Страуструп уже не мог лично поддерживать его, отвечая на тысячи вопросов. При создании C++ Бьёрн Страуструп хотел: · Получить универсальный язык со статическими типами данных, эффективностью и переносимостью языка C. · Непосредственно и всесторонне поддерживать множество стилей программирования, в том числе процедурное программирование, абстракцию данных, объектно-ориентированное программирование и обобщённое программирование. · Дать программисту свободу выбора, даже если это даст ему возможность выбирать неправильно. · Максимально сохранить совместимость с C, тем самым делая возможным лёгкий переход от программирования на C. · Избежать разночтений между C и C++: любая конструкция, допустимая в обоих языках, должна в каждом из них обозначать одно и то же и приводить к одному и тому же поведению программы. · Избегать особенностей, которые зависят от платформы или не являются универсальными. · «Не платить за то, что не используется» — никакое языковое средство не должно приводить к снижению производительности программ, не использующих его. · Не требовать слишком усложнённой среды программирования. Выбор именно C в качестве базы программирования объясняется тем, что язык C: для создания нового языка · является многоцелевым, лаконичным и относительно низкоуровневым языком; · подходит для решения большинства системных задач; · исполняется везде и на всём; · стыкуется со средой программирования UNIX. Несмотря на ряд известных недостатков языка C, Страуструп пошёл на его использование в качестве основы, так как «в C есть свои проблемы, но их имел бы и разработанный с нуля язык, а проблемы C нам известны». Кроме того, это позволило быстро получить прототип компилятора (cfront), который лишь выполнял трансляцию добавленных синтаксических элементов в оригинальный язык C. По мере разработки C++ в него были включены другие средства, которые перекрывали возможности конструкций C, в связи с чем неоднократно поднимался вопрос об отказе от совместимости языков путём удаления устаревших конструкций. Тем не менее, совместимость была сохранена из следующих соображений: · сохранение действующего кода, написанного изначально на C и прямо перенесённого в C++; · исключение необходимости переучивания программистов, ранее изучавших C (им требуется только изучить новые средства C++); · исключение путаницы между языками при их совместном использовании («если два языка используются совместно, их различия должны быть или минимальными, или настолько большими, чтобы языки было невозможно перепутать»). К 1983 году в язык были добавлены новые возможности, такие как виртуальные функции, перегрузка функций и операторов, ссылки, константы, пользовательский контроль над управлением свободной памятью, улучшенная проверка типов и новый стиль комментариев (//). Получившийся язык уже перестал быть просто дополненной версией классического C и был переименован из C с классами в «C++». Его первый коммерческий выпуск состоялся в октябре 1985 года. Имя языка, получившееся в итоге, происходит от оператора унарного постфиксного инкремента C ++ (увеличение значения переменной на единицу). До начала официальной стандартизации язык развивался в основном силами Страуструпа в ответ на запросы программистского сообщества. Функцию стандартных описаний языка выполняли написанные Страуструпом печатные работы по C++ (описание языка, справочное руководство и так далее). 2.2 История стандартов В 1985 году вышло первое издание «Языка программирования C++», обеспечивающее первое описание этого языка, что было чрезвычайно важно из-за отсутствия официального стандарта. В 1989 году состоялся выход C++ версии 2.0. Его новые возможности включали множественное наследование, абстрактные классы, статические функции-члены, функции-константы и защищённые члены. В 1990 году вышло «Комментированное справочное руководство по C++», положенное впоследствии в основу стандарта. Последние обновления включали шаблоны, исключения, пространства имён, новые способы приведения типов и булевский тип. Стандартная библиотека C++ также развивалась вместе с ним. Первым добавлением к стандартной библиотеке C++ стали потоки ввода-вывода, обеспечивающие средства для замены традиционных функций C printf и scanf. Позднее самым значительным развитием стандартной библиотеки стало включение в неё Стандартной библиотеки шаблонов. В 1998 году был опубликован стандарт языка ISO/IEC 14882:1998 (известный как C++98),[8] разработанный комитетом по стандартизации C++ (ISO/IEC JTC1/SC22/WG21 working group). Стандарт C++ не описывает способы именования объектов, некоторые детали обработки исключений и другие возможности, связанные с деталями реализации, что делает несовместимым объектный код, созданный различными компиляторами. Однако для этого третьими лицами создано множество стандартов для конкретных архитектур и операционных систем. В 2003 году был опубликован стандарт языка ISO/IEC 14882:2003, где были исправлены выявленные ошибки и недочёты предыдущей версии стандарта. В 2005 году был выпущен отчёт Library Technical Report 1 (кратко называемый TR1). Не являясь официально частью стандарта, отчёт описывает расширения стандартной библиотеки, которые, как ожидалось авторами, должны быть включены в следующую версию языка C++. Степень поддержки TR1 улучшается почти во всех поддерживаемых компиляторах языка C++. С 2009 года велась работа по обновлению предыдущего стандарта, предварительной версией нового стандарта сперва был C++09, а спустя год C++0x, сегодня — C++11, куда были включены дополнения в ядро языка и расширение стандартной библиотеки, в том числе большую часть TR1. C++ продолжает развиваться, чтобы отвечать современным требованиям. Одна из групп, разрабатывающих язык C++ и направляющих комитету по стандартизации C++ предложения по его улучшению — это Boost, которая занимается, в том числе, совершенствованием возможностей языка путём добавления в него особенностей метапрограммирования. Никто не обладает правами на язык C++, он является свободным. Однако сам документ стандарта языка (за исключением черновиков) не доступен бесплатно. 2.3 Обзор языка Стандарт C++ на 2003 год состоит из двух основных частей: описание ядра языка и описание стандартной библиотеки. Кроме того, существует огромное количество библиотек C++, не входящих в стандарт. В программах на C++ можно использовать многие библиотеки C. Стандартизация определила язык программирования C++, однако за этим названием могут скрываться также неполные, ограниченные, достандартные варианты языка. Первое время язык развивался вне формальных рамок, спонтанно, по мере встававших перед ним задач. Развитию языка сопутствовало развитие кросс-компилятора cfront. Новшества в языке отражались в изменении номера версии кросс-компилятора. Эти номера версий кросс-компилятора распространялись и на сам язык, но применительно к настоящему времени речь о версиях языка C++ не ведут. 2.4 Необъектно-ориентированные возможности В этом разделе описываются возможности, непосредственно не связанные с объектно-ориентированным программированием (ООП), но многие из них, однако, особенно важны в сочетании с ООП. 1. Комментарии: С++ поддерживает как комментарии в стиле C: « /* это комментарий, который может состоять из нескольких строчек */» так и однострочные: «// вся оставшаяся часть строки является комментарием», где // обозначает начало комментария, а ближайший последующий символ новой строки, который не предварён символом (либо эквивалентным ему обозначением ??/), считается окончанием комментария. 2. Типы В C++ доступны следующие встроенные типы: · Символьные: char, wchar_t (char16_t и char32_t, в стандарте C++11). · Целочисленные знаковые: signed char, short int, int, long int (и long long int, в стандарте C++11). · Целочисленные беззнаковые: unsigned char, unsigned short int, unsigned int, unsigned long int(и unsigned long long int, в стандарте C++11). · С плавающей точкой: float, double, long double. · Логический: bool, имеющий значения true и false. Операции сравнения возвращают тип bool. Выражения в скобках после if, while приводятся к типу bool. Функции могут принимать аргументы по ссылке. Например, функция void f(int &x) {x=3;} присваивает своему аргументу значение 3. Функции также могут возвращать результат по ссылке, и ссылки могут быть вне всякой связи с функциями. Например, {double &b=a[3]; b=sin(b);} эквивалентно a[3]=sin(a[3]);. При программировании ссылки в определённой степени сходны с указателями, со следующими особенностями: перед использованием ссылка должна быть инициализирована; ссылка пожизненно указывает на один и тот же адрес; в выражении ссылка обозначает непосредственно тот объект или ту функцию, на которую она указывает, обращение же к объекту или функции через указатель требует разыменование указателя. Существуют и другие отличия в использовании указателей и ссылок. Концептуально ссылка — другое имя переменной или функции, другое название одного и того же адреса, существует лишь только в тексте программы, заменяемое адресом при компиляции; а указатель — переменная, хранящая адрес, к которому обращаются. 2.5 Объектно-ориентированные особенности языка C++ добавляет к C объектно-ориентированные возможности. Он вводит классы, которые обеспечивают три самых важных свойства ООП: инкапсуляцию, наследование и полиморфизм. В стандарте C++ под классом (class) подразумевается пользовательский тип, объявленный с использованием одного из ключевых слов class, struct или union, под структурой (structure) подразумевается класс, определённый через ключевое слово struct, и под объединением (union) подразумевается класс, определённый через ключевое слово union. 1. Описание функций в теле класса В теле класса можно указать только заголовок функции, а можно описать всю функцию (см. пример с функцией Alloc ниже. В этом случае она считается встраиваемой (inline)). 2. Константные функции-члены Нестатические функции-члены (и только они) могут иметь описатель const class Array { … inline double operator[] (int n) const; Такие функции не имеют права изменять поля класса (кроме полей, определённых как mutable). Если они пытаются это сделать, компилятор должен выдать сообщение об ошибке. 3. Наследование В C++ при наследовании одного класса от другого наследуется реализация класса, плюс класс-наследник может добавлять свои поля и функции или переопределять функции базового класса. Множественное наследование разрешено. Конструктор наследника вызывает конструкторы базовых классов, а затем конструкторы нестатических членов-данных, являющихся экземплярами классов. Деструктор работает в обратном порядке. Наследование бывает публичным, защищённым и закрытым (то есть закрытого типа). Наследник — это больше чем базовый класс, поэтому, если наследование открытое, то он может использоваться везде, где используется базовый класс, но не наоборот. 4. Полиморфизм Семантика системы типов С++ не полиморфна (в отличие от потомков ML, в том числе гибридных с Си — BitC, Cyclone), однако есть несколько способов обеспечить полиморфное поведение. Прежде всего это перегрузка методов классов при наследовании — традиционный для ООП способ обеспечения абстракции данных. Затем есть два способа реализации параметрического полиморфизма (в С++-сообществе обычно называемого «обобщённым программированием»). Первый способ унаследован из Си — использование бестипового указателя и приведение типа в зависимости от других данных — хотя в С++ этот способ традиционно считается неидеоматичным и опасным. Второй заключается в использовании шаблонов но, в отличие от обычных реализаций параметрического полиморфизма, в С++ происходит автоматическая генерация семейства перегруженных мономорфных функций на основании полиморфного определения (шаблона) в соответствии с контекстами его использования — то есть параметрический полиморфизм на уровне исходного кода транслируется в ситуативный (ad hoc) на уровне машинного, за что С++ подвергается критике. В С++ также есть третий вид перегрузки — перегрузка операторов — которая в сочетании с наследованием классов предоставляет ещё большие возможности повышения читабельности кода путём ввода т. н. «синтаксического сахара». Для обеспечения абстракции данных необходимо связать несколько классов в иерархию наследования и назначить функциям одинаковые спецификации. 5. Инкапсуляция Основным способом организации информации в C++ являются классы. В отличие от структуры (struct) языка C, которая может состоять только из полей и вложенных типов, класс (class) C++ может состоять из полей, вложенных типов и функций-членов (member functions). Инкапсуляция в С++ реализуется через указание уровня доступа к членам класса: они бывают публичными (открытыми, public), защищёнными (protected) и собственными (закрытыми, приватными, private). В C++ структуры формально отличаются от классов лишь тем, что по умолчанию члены и базовые классы у структуры публичные, а у класса — собственные. Проверка доступа происходит во время компиляции, попытка обращения к недоступному члену класса вызовет ошибку компиляции. 6. Конструкторы и деструкторы В классах всегда есть специальные функции — конструкторы и деструкторы, которые могут быть объявлены явно или неявно. Конструктор вызывается для инициализации объекта (соответствующего типа) при его создании, а деструктор — для уничтожения объекта. В частности, конструктор может быть вызван для выполнения преобразования к классовому типу. Конструкторы обозначаются как одноимённые классу функции (например, Array::Array), деструкторы — как имя класса, предварённое тильдой (например, Array::~Array). Для конструкторов и деструкторов нельзя указывать тип возвращаемого значения. Деструктор нельзя объявлять как принимающий аргументы. Класс может иметь сколько угодно конструкторов (с разными наборами параметров), в том числе шаблонных, и только один (причём нешаблонный) деструктор. Конструктор без параметров или конструктор, все параметры которого имеют аргументы по умолчанию, называется конструктором по умолчанию, нешаблонный конструктор с первым параметром-ссылкой на тот же класс (например, Array::Array(const Array&)) и остальными параметрами (если таковые есть), имеющими аргументы по умолчанию, — конструктором копирования, он вызывается при создании нового объекта, являющегося копией уже существующего объекта. Если в классе нет явно объявленных конструкторов, класс имеет неявно объявленный конструктор без параметров, который конструирует подобъекты классов-родителей и инициализирует поля класса, вызывая для них конструкторы по умолчанию. Если в классе нет явно объявленных копирующих конструкторов, то класс имеет неявно объявленный копирующий конструктор, который выполняет прямое копирование всех объявленных полей объекта-источника в соответствующие поля объекта-приёмника с помощью соответствующих копирующих конструкторов. Если в классе нет явно объявленного деструктора, то класс имеет неявно объявленный деструктор. Конструкторы в C++ не могут быть объявлены виртуальными, а деструкторы — могут, и обычно так и объявляются, чтобы гарантировать правильное уничтожение доступного по ссылке или указателю объекта независимо от того, какого типа ссылка или указатель. 3. ПРАКТИЧЕСКАЯ ЧАСТЬ 3.1 Постановка задачи Необходимо смоделировать информационную систему «РЖД». Данная система предоставляет возможность пользователям: Узнать о забронированных билетах через интернет; Узнать о забронированных билетах через кассу: купить билет; узнать о расписании движения поездов; узнать о возможности пересадки. В данной работе мы рассмотрим несколько возможных вариантов использования. Определим объекты взаимодействующие в рамках каждого варианта использования. Обозначим методы и атрибуты, которые используются объектами. При проектировании модели информационной системы должны быть созданы: диаграмма вариантов использования; диаграмма последовательности; кооперативная диаграмма; диаграмма классов; диаграмма компонентов; диаграмма размещения. 3.2 Описание предметной области Железнодорожная информационная система относится к классу больших корпоративных систем и предназначена для решения как информационных задач, так и задач управления отраслью. Главная цель железнодорожной информационной системы состоит в повсеместном обеспечении информацией технологических процессов и сфер деятельности железнодорожного транспорта, в создании информационной основы для достижения максимальной эффективности его работы в условиях рыночной экономики. Основные направления коммерческой деятельности компании - грузовые и пассажирские перевозки. Доля РЖД в грузообороте транспортной системы РФ составляет около 42 %, в пассажирообороте - около 33 % 3.3 Выбор среды реализации Rational Rose - CASE-средство визуального моделирования объектноориентированных информационных систем, а также для генерации кодов на различных языках и выпуска проектной документации. Rational Rose использует синтез-методологию объектно-ориентированного анализа и проектирования, основанную на подходах трех ведущих специалистов в данной области: Гради Буча, Джеймса Рамбо и Айвара Джекобсона. Работа продукта основана на унифицированном языке моделирования. Унифицированный язык моделирования (Unified Modeling Language) - язык визуального моделирования, предназначенный для спецификации, визуализации и документирования объектно-ориентированных систем и бизнес-процессов во время их проектирования и разработки. С самой общей точки зрения описание языка UML состоит из двух взаимодействующих частей: семантики и нотации. Семантика (semantics) - система правил и соглашений, определяющих толкование и придание смысла конструкциям некоторого языка. Нотация (notation) - система условных обозначений, принятая в некотором языке для изображения и визуализации модели. В рамках языка UML все представления о модели сложной системы фиксируются в виде специальных графических конструкций, получивших название диаграмм. В терминах языка UML определены следующие типы диаграмм, последовательное создание которых позволяет получить полное представление обо всей проектируемой системе и об отдельных ее компонентах. 3.4 Диаграмма вариантов использования Необходимо смоделировать информационную систему «РЖД». Данная система предоставляет возможность пользователям: 1. Забронировать билет через интернет; 2. Забронировать билет через кассу: купить билет; узнать о расписании движения поездов; узнать о возможности пересадки. В данной работе мы рассмотрим несколько возможных вариантов использования. Определим объекты, взаимодействующие в рамках каждого варианта использования. Обозначим методы и атрибуты, которые используются объектами. При проектировании модели информационной системы должны быть созданы: диаграмма вариантов использования; диаграмма последовательности; кооперативная диаграмма; диаграмма классов; диаграмма компонентов; диаграмма размещения. 3.5 Описание предметной области Железнодорожная информационная система относится к классу больших корпоративных систем и предназначена для решения как информационных задач, так и задач управления отраслью. Главная цель железнодорожной информационной системы состоит в повсеместном обеспечении информацией технологических процессов и сфер деятельности железнодорожного транспорта, в создании информационной основы для достижения максимальной эффективности его работы в условиях рыночной экономики. Основные направления коммерческой деятельности компании - грузовые и пассажирские перевозки. Доля РЖД в грузообороте транспортной системы РФ составляет около 42 %, в пассажирообороте - около 33 % 3.6 Выбор среды Rational Rose - CASE-средство визуального моделирования объектноориентированных информационных систем, а также для генерации кодов на различных языках и выпуска проектной документации. Rational Rose использует синтез-методологию объектно-ориентированного анализа и проектирования, основанную на подходах трех ведущих специалистов в данной области: Гради Буча, Джеймса Рамбо и Айвара Джекобсона. Работа продукта основана на унифицированном языке моделирования. Унифицированный язык моделирования (Unified Modeling Language) - язык визуального моделирования, предназначенный для спецификации, визуализации и документирования объектно-ориентированных систем и бизнес-процессов во время их проектирования и разработки. С самой общей точки зрения описание языка UML состоит из двух взаимодействующих частей: семантики и нотации. Семантика (semantics) - система правил и соглашений, определяющих толкование и придание смысла конструкциям некоторого языка. Нотация (notation) - система условных обозначений, принятая в некотором языке для изображения и визуализации модели. В рамках языка UML все представления о модели сложной системы фиксируются в виде специальных графических конструкций, получивших название диаграмм. В терминах языка UML определены следующие типы диаграмм, последовательное создание которых позволяет получить полное представление обо всей проектируемой системе и об отдельных ее компонентах. 3.7 Диаграмма вариантов использования Диаграмма вариантов использования определяет поведение системы с точки зрения пользователя. Одним из основных преимуществ, применения диаграммы Вариантов использования является то, что она предоставляет важную информацию. Взглянув на Варианты использования, клиенты поймут, какие функциональные возможности заложены в систему. Рассматривая действующих лиц, они выяснят, кто конкретно будет с ней взаимодействовать. Изучая все множество вариантов использования, они определят сферу применения системы. Вариант использования представляет собой последовательность действий (транзакций), выполняемых системой в ответ на событие, инициируемое некоторым внешним объектом (действующим лицом). Вариант использования описывает типичное взаимодействие между пользователем и системой. В простейшем случае вариант использования определяется в процессе обсуждения с пользователем тех функций, которые он хотел бы реализовать. Действующее лицо (actor) - это роль, которую пользователь играет по отношению к системе. Действующие лица представляют собой роли, а не конкретных людей или наименования работ. Несмотря на то, что на диаграммах вариантов использования они изображаются в виде стилизованных человеческих фигурок, действующее лицо может также быть внешней системой, которой необходима некоторая информация от данной системы. Показывать на диаграмме действующих лиц следует только в том случае, когда им действительно необходимы некоторые варианты использования. Действующие лица делятся на три основных типа - пользователи системы, другие системы, взаимодействующие с данной, и время. Время становится действующим лицом, если от него зависит запуск каких-либо событий в системе. Разрабатывая диаграммы Вариантов использования нужно придерживаться следующих правил: не моделировать связи между действующими лицами; не соединять стрелкой непосредственно два варианта использования; каждый вариант использования должен быть инициирован действующим лицом. Диаграмма вариантов использования для информационной системы РЖД выглядит следующим образом: Рисунок 3. Диаграмма вариантов использования На этой диаграмме одно действующее лицо. Существует также пять основных действий, выполняемых моделируемой системой: забронировать билет, забронировать билет On-Line , купить билет, узнать о возможности движения с пересадкой, узнать расписание движения поездов. На диаграмме вариантов использования показано взаимодействие между вариантами использования и действующими лицами. Она отражает требования к системе с точки зрения пользователя. Таким образом, варианты использования - это функции, выполняемые системой, а действующие лица - это заинтересованные по отношению к создаваемой системе. Основная задача диаграммы вариантов использования - представлять собой единое средство, дающее возможность заказчику, конечному пользователю и разработчику совместно обсуждать функциональность и поведение системы. 3.8 Диаграмма последовательности Для моделирования взаимодействия объектов во времени в языке UML используются диаграммы последовательности (ДП). Диаграмма последовательности отражает поток событий, происходящих в рамках варианта использования. На диаграмме последовательности изображаются только те объекты, которые непосредственно участвуют во взаимодействии. Ключевым моментом для диаграмм последовательности является динамика взаимодействия объектов во времени. На диаграмме последовательности объект изображается в виде прямоугольника, от которого вниз проведена пунктирная вертикальная линия. Эта линия называется линией жизни объекта. Она представляет собой фрагмент жизненного цикла объекта в процессе взаимодействия. Каждое сообщение представляется в виде стрелки между линиями жизни двух объектов и помечается именем. Рассмотрим подробнее каждый из вариантов использования: Рисунок 4. Диаграмма последовательности для варианта использования «Забронировать билет» В данной диаграмме действующее лицо –Магомедова С.К., а объекты - сайт РЖД, личный расчетный счет, база данных РЖД. Магомедова С.К. выбирает маршрут и дату отправления. Далее осуществляется формирование и отправка запроса к базе данных. База данных проверяет существование данного рейса, есть ли в ней поезда на данный маршрут и дату, и выдает соответствующую информацию, после чего посылает подтверждение и процесс завершается выдачей квитанции о бронировании. Диаграмма Последовательности для варианта использования «Забронировать билет On-Line» Рисунок 5. Диаграмма последовательности для варианта использования «Забронировать билет On-Line» Магомедова С.К. регистрируется на сайте РЖД, выбирает маршрут, желаемое место и дату, далее происходит обращение к БД РЖД, она определяет наличие заданного билета. Та, в свою очередь, производит проверку существования билета, после чего посылает подтверждение и процесс завершается получением необходимой информации для получения билета. Диаграмма Последовательности для варианта использования «Купить билет». Рисунок 6. Диаграмма последовательности для варианта использования «Купить билет» В данной диаграмме, действующее лицо – Магомедова С.К., объекты следующие: касса РЖД, БД РЖД. Для покупки билета Магомедова С.К. узнает в кассе о необходимом ей рейсе, касса РЖД осуществляет проверку данного билета, проверяет свободные места по БД РЖД. После чего БД посылает подтверждение и процесс завершается выдачей билета. Диаграмма Последовательности для варианта использования «Узнать расписание движения поездов». Рисунок 7. Диаграмма последовательности для варианта использования «Узнать расписание движения поездов» В этой диаграмме действующим лицом является Магомедова С.К. а объектами: экран, менеджер транзакций, БД РЖД. Для расписания движения Магомедова С.К. запускает систему, выбирает соответствующую транзакцию, вводит данные о билете. Затем осуществляется запрос к менеджеру транзакций для формирования и отправки запроса и следует обращение к базе данных РЖД. Та, в свою очередь, производит проверку рейсов, после чего посылает подтверждение и процесс завершается выводом на экран необходимой информации. Диаграмма Последовательности для варианта использования «Узнать о возможности пересадки». Рисунок 8. Диаграмма последовательности для варианта использования «Узнать о возможности пересадки» В этой диаграмме действующим лицом является Магомедова С.К., а объектами: экран, менеджер транзакций, БД РЖД. Магомедова С.К. инициализирует экран, далее происходит ввод транзакции, обращение к менеджеру транзакций, а затем к базе данных РЖД. База данных осуществляет поиск возможных поездов для пересадки и осуществляет вывод информации на экран. 3.9 КооперативнЫЕ диаграммы Главная особенность диаграммы кооперации заключается в возможности графически представить не только последовательность взаимодействия, но и все структурные отношения между объектами, участвующими в этом взаимодействии. Прежде всего, на диаграмме кооперации в виде прямоугольников изображаются участвующие во взаимодействии объекты, содержащие имя объекта, его класс и, возможно, значения атрибутов. Далее, как и на диаграмме классов, указываются ассоциации между объектами в виде различных соединительных линий. При этом можно явно указать имена ассоциации и ролей, которые играют объекты в данной ассоциации. Дополнительно могут быть изображены динамические связи потоки сообщений. Они представляются также в виде соединительных линий между объектами, над которыми располагается стрелка с указанием направления, имени сообщения и порядкового номера в общей последовательности инициализации сообщений. В отличие от диаграммы последовательности, на диаграмме кооперации изображаются только отношения между объектами, играющими определенные роли во взаимодействии. На этой диаграмме не указывается время в виде отдельного измерения. Поэтому последовательность взаимодействий и параллельных потоков может быть определена с помощью порядковых номеров. Следовательно, если необходимо явно специфицировать взаимосвязи между объектами в реальном времени, лучше это делать на диаграмме последовательности. Кооперативные диаграммы создаются Последовательности. практически Достаточно нажать одновременно с функциональную диаграммами клавишу F5. Кооперативная диаграмма для варианта использования «Забронировать билет OnLine». Рисунок 9. Кооперативная «Забронировать билет On-Line» диаграмма для варианта использования Кооперативная диаграмма для варианта использования «Забронировать билет». Рисунок 10. Кооперативная диаграмма для варианта использования «Забронировать билет» Кооперативная диаграмма для варианта использования «Купить билет». Рисунок 11. Кооперативная диаграмма для варианта использования «Купить билет» Кооперативная диаграмма для варианта использования «Узнать расписание движения поездов». Рисунок 12. Кооперативная диаграмма для варианта использования «Узнать расписание движения поездов» Кооперативная диаграмма для варианта использования «Узнать о возможности пересадки» Рисунок 13. Кооперативная диаграмма для варианта использования «Узнать о возможности пересадки» Как видно из рисунков 7,8,9,10,11, здесь представлена вся та информация, которая была и на диаграмме последовательности, но кооперативная диаграмма подругому описывает поток событий. Из нее легче понять связи между объектами, однако труднее уяснить последовательность событий. На кооперативной диаграмме, так же как и на диаграмме последовательности, стрелки обозначают сообщения, обмен которыми осуществляется в рамках данного варианта использования. Их временная последовательность, однако, указывается путем нумерации сообщений. 3.10 Диаграммы классов Диаграммы классов отражают взаимодействие между классами системы. Класс создается для каждого типа объектов. Диаграмма классов показывает набор классов, интерфейсов, сотрудничеств и их отношений. При моделировании объектноориентированных систем диаграммы классов используются наиболее часто. Диаграммы классов обеспечивают статическое проектное представление системы. Диаграмма классов может отражать, в частности, различные взаимосвязи между отдельными сущностями предметной области, такими как объекты и подсистемы, а также описывать их внутреннюю структуру и типы отношений. Для моделируемой системы диаграмма классов выглядит следующим образом: Рисунок 14. Диаграмма классов «ИС РЖД» Каждый класс на диаграмме выглядит в виде прямоугольника, разделенного на три части. В первой содержится имя класса, во второй - его атрибуты. В последней части содержатся операции класса, отражающие его поведение. Ассоциация - это семантическая связь между классами. Ассоциации могут быть двунаправленными или однонаправленными. На языке UML двунаправленные ассоциации рисуют в виде простой линии без стрелок или со стрелками с обеих ее сторон. На однонаправленной ассоциации изображают только одну стрелку, показывающую ее направление. Если все сообщения на диаграмме Классов отправляются только одним классом и принимаются только другим классом, между этими классами имеет место однонаправленная связь. Если хотя бы одно сообщение отправляется в обратную сторону, ассоциация должна быть двунаправленной. Ассоциации могут быть рефлексивными. Рефлексивная ассоциация предполагает, что один экземпляр класса взаимодействует с другими экземплярами этого же класса. Атрибут - это элемент информации, связанный с классом. Из диаграммы видно, например, атрибут класса ID является закрытым, т.е. он не виден никаким другим классам. Остальные атрибуты этого класса - видимые. Операции реализуют связанное с классом поведение. Операция включает три части - имя, параметры и тип возвращаемого значения. Таким образом, диаграмма классов определяет типы классов системы и различного рода статические связи, которые существуют между ними. 3.11 Диаграммы компонентов Диаграммы компонентов показывают, как выглядит модель на физическом уровне. На них изображены компоненты программного обеспечения и связи между ними. Диаграмма компонентов, показывает, как выглядит модель на физическом уровне. Выбрав в качестве языка программирования С++, для каждого класса созданы соответствующие этому языку компоненты. Каждый класс модели (или подсистема) преобразуется в компонент исходного кода. После создания они сразу добавляются к диаграмме компонентов. Между отдельными компонентами изображают зависимости, зависимостям на этапе компиляции или выполнения программы. соответствующие Рисунок 15. Диаграмма компонентов ИС РЖД Главный компонент, который фактически управляет остальными это Сервер РЖД. Каждый компонент состоит из двух частей: 1. Спецификация - это заголовочный файл для сведений о прототипах функций для класса (не закрашенная часть); 2. Тело пакета - часть, которая содержит код операции класса (закрашенная часть). Диаграмма компонентов показывает, как выглядит модель на физическом уровне. 3.12 Диаграмма размещения Физическое представление программной системы не может быть полным, если отсутствует информация о том, на какой платформе и на каких вычислительных средствах она реализована. Для представления общей конфигурации и топологии распределенной программной системы в UML предназначены диаграммы размещения. Диаграмма размещения предназначена для визуализации элементов и компонентов программы, существующих лишь на этапе ее исполнения. При этом представляются только компоненты-экземпляры программы, являющиеся исполняемыми файлами или динамическими библиотеками. Те компоненты, которые не используются на этапе исполнения, на диаграмме развертывания не показываются. Так, компоненты с исходными текстами программ могут присутствовать только на диаграмме компонентов. На диаграмме размещения они не указываются. Диаграмма размещения отражает физические взаимосвязи между программными и аппаратными компонентами системы. Она является хорошим средством для того, чтобы показать маршруты перемещения объектов и компонентов в распределенной системе. Каждый узел на диаграмме размещения представляет собой некоторый тип вычислительного устройства - в большинстве случаев, часть аппаратуры. Эта аппаратура может быть простым устройством или датчиком, а может быть и мэйнфреймом. Рисунок 16. Диаграмма размещений Закрашенные части диаграммы представляют собой процессоры, то есть компьютеры, которые могут обрабатывать данные. Здесь это сервер базы данных, касса и клиент - сервер компьютеров. Не закрашенные - устройства, неспособные обрабатывать данные. В данном случае, это принтер и совокупность экранов, используемых для отображения и ввода информации. Диаграмма размещения содержит графические изображения процессоров, устройств, процессов и связей между ними. В отличие от диаграмм логического представления, диаграмма размещения является единой для системы в целом, поскольку должна всецело отражать особенности ее реализации. Разработка диаграммы размещения, как правило, является последним этапом спецификации модели программной системы. 3.13 Генерация программного кода С++ Язык C++ является одним из наиболее широко применяемых на практике объектно-ориентированных языков. В Rational Rose 2000 предусмотрена возможность генерации программного кода C++, а также интеграции с языком Visual C++ v6 компании Microsoft. Для генерации программного кода на стандартном C++ необходимо: создать компоненты; определить компоненты для классов; установить свойства генерации программного кода; выбрать класс или компонент для генерации на диаграмме классов или компонентов; железнодорожный информационный билет программный для генерации выбрать Tools > C++ > Code Generation; выбрать в меню Tools > C++ > Browse Header или Browse Body для просмотра сгенерированного программного кода. В C++ создание компонентов для классов (файла реализации и заголовочного файла) является необязательным. Rational Rose генерирует файлы *. cpp и *. h для каждого класса. Тем не менее, настоятельно рекомендуется создавать компоненты, что позволит управлять отображением классов на компоненты и моделировать зависимости между компонентами. При генерации с помощью Rational Rose 2000 программного кода Visual C++ применяется программа-мастер. Для запуска этого мастера необходимо выбрать Tools > Visual C++ Update Code, после чего стартует инструментальное средство обновления. Для генерации программного кода Rational Rose 2000 выбирает нужные для генерации кода сведения из всех данных, вводимых в окнах спецификации различных элементов модели. Rational Rose Data Modeler это инструмент, позволяющий моделировать базы данных и внедрять их в проекты. Data Modeler использует три модели — объектную модель, модель данных и модель хранения данных. Данный инструмент оперирует терминами унифицированного языка моделирования (Unified Modeling Language UML) и терминами теории баз данных. Для работы с моделями необходимо понимать принципы разработки баз данных. Data Modeler поддерживает стандарт ANSI SQL 92 в следующих СУБД: IBM DB2 MVS и UDB 5.x, 6.x и 7.0; Oracle 7.x и 8.x; Microsoft SQL Server 6.5, 7.0 и 2000; Sybase Adaptive Server 12.x. Data Modeler поддерживает связь между объектной моделью и моделью данных, трансформируя одну в другую и наоборот. При построении приложения Data Modeler использует объектную модель. Можно строить приложение, основанное на модели данных, трансформируя ее в объектную модель. Физическая база данных создается на основе модели данных. Модель данных можно создать следующими способами: трансформировать имеющуюся объектную модель в модель данных; применить реинжиниринг (Reverse Engineering) имеющейся базы данных или файла DDL ; построить модель данных. Рисунок 17. Схема модели данных Rational Rose и SQL Server Rational Rose поддерживает несколько СУБД, одной из которых является SQL Server. При проектировании больших систем, как правило, предполагается хранение каких-либо данных. Возникает необходимость создавать базы данных. Продукт Rational Rose предоставляет огромные возможности для этого. Используя Data Modeler, можно создать логическую или физическую модель данных, после чего экспортировать ее в SQL Server, причем без каких-либо потерь в структуре. При экспорте моделей можно указать, какие объекты структуры модели будут мигрировать, а какие нет. Такими объектами выступают триггеры, хранимые процедуры, отношения, ограничения и т. д. В результате такого экспорта возникает физическая база данных SQL Server со всеми указанными при экспорте параметрами. Рисунок 18. Главное окно программы Рисунок 19. – Сортировка Рисунок 19 – Поиск рейса по вокзалу 4 ЭКОНОМИЧЕСКАЯ ЧАСТЬ 4.1 Расчет затрат на проектирование Последовательность выполнения отдельных разделов проекта производится по согласованному графику выполнения работ и представляется в виде таблицы 1. Таблица 1 - Планирование работ Наименование этапа Срок выполнен ия, дни Постановка задачи 1 Разработка алгоритма Разработка системы Отладка и тестирование Разработка документации 5 60 Проектирование 14 4 и Исполнитель Коэффициент Тд, часы загрузки руководитель разработчик разработчик разработчик руководитель разработчик руководитель разработчик разработка 0,4 0,6 1 1 0,2 0,8 0,3 0,7 информационных 0,4 0,6 5 60 2,8 11,2 1,2 2,8 технологий требует проведения расчета стоимостных характеристик создания проекта. Затраты на проектирование информационной технологии определяются по формуле (1): Зпр = Зоб + За + З з / п + З ЕСН + З эн + Зн. р. + Зпроч + З м где З пр , – затраты на проектирование информационных технологий, руб.; З об – затраты на оборудование и программное обеспечение, руб.; За – амортизационные отчисления, руб.; З з/п – затраты на заработную плату участников проекта, руб.; (1) З ЕСН З эн – отчисления на единый социальный налог, руб.; – энергетические затраты, руб.; З н . р. – накладные расходы, руб.; З проч – прочие расходы, руб.; Зм – затраты на материалы, руб. Программное обеспечение и оборудование, необходимое для разработки программы, указано в таблице 2. Таблица 2 – Стоимость приобретаемого оборудования и программного обеспечения Наименование оборудования и программного обеспечения Рабочий компьютер Серверный компьютер Безлимитный интернет ОС Linux debian Серверное программное обеспечение Клиентское программное обеспечение Стол офисный Стул офисный Итого затрат Срок службы, года 3 3 - Количество, Стоимость, Сумма, шт. руб. руб 1 1 1 1 14200 51200 1400 0 14200 51200 1400 0 - - 0 0 3 3 - 1 1 - 0 8000 7000 - 0 8000 7000 82020 Расчет стоимости компьютера приведен в таблице 3. Таблица 3 – Расчет стоимости клиентского компьютера Количество, Стоимость ед. единицы, руб ЖК монитор Samsung 2243NW 1 6350 Жесткий диск HDD WD 500 Gb 1 2090 Intel Pentium E6800 3.33 GHz 1066MHz 2Mb LGA775 OEM 1 2760 Оперативная память Kingston DDR-II 1024 2 600 Наименование Сумма, руб. 6350 2090 2760 1200 Корпус Miditower ATX AirTone GM-7006 400W Клавиатура Keyboard PC\2 Optical Mouse USB Итого 1 2 2 - 1540 110 130 - 1540 220 260 14420 Расчет стоимости серверного компьютера приведен в таблице 4. Таблица 4 – Расчет стоимости серверного компьютера Наименование Процессор Intel Xeon 5503 2.00 Ghz(2 Cores), 4MB Cache Оперативная память Kingston 2048MB ddr3-1066 Жесткий диск Seagate Barracuda ES 7200 500 gb Комплектующие Итого Количество, ед. Стоимость ед, руб Сумма, руб. 1 12000 12000 2 1200 2400 2 1 - 3400 30000 - 6800 30000 51200 При расчете амортизационных отчислений на оборудование, используемое при проектировании, используется линейный метод начисления амортизации. Стоимость оборудования, относимая на проект, определяется пропорционально времени использования основных средств на этапе проектирования. Амортизационные отчисления за период проектирования информационных технологий рассчитываются в соответствии с формулой (2): АП где Н А * ОФ ПЕР Т П , 100% АП – амортизационные отчисления (2) за период проектирования информационных технологий, руб.; НА – месячная норма амортизационных отчислений на полное восстановление, %.; ОФПЕР – первоначальная стоимость основных средств, руб.; Т П – время проектирования информационного проекта, мес. Расчет затрат на амортизационные отчисления представлен в таблицы 5. Таблица 5 - Амортизационные отчисления на оборудование Наименование Количество, Стоимость ОФПЕР , оборудование ед. ед. руб Клиентский компьютер 1 14420 17304 Серверный компьютер 1 51200 61440 Стул офисный 1 8000 9600 Стол офисный 1 7000 8400 Итого - На,% Аn,руб 2,77 2,77 2,77 2,77 - 1302,452 4624,516 722,5806 632,2581 7281,806 Расчет трудоемкости проекта произведем на основании конструктивной модели стоимости. Для оценки трудозатрат и продолжительности разработки программного проекта используются следующие уравнения базовой модели КОМОСТ: где ТР ТР а ( РП ) b , (3) ДР с (ТР) d , (4) – трудоемкость, человеко-месяцы; РП – время разработки продукта; ДР – длительность разработки, мес.; a , b, c , d – коэффициенты. Так как программный продукт относится к распространенному типу, то коэффициенты a, b, c, d определим из таблицы 6. Таблица 6 – Коэффициенты уравнений КОМОСТ для распространенного типа программного проекта Тип программного проекта распространенный а b c d 2,4 1,05 2,5 0,38 Произведя расчеты, получаем: ТР = 8 ч/м; ДР = 5,5 мес. Расчет размера оплаты за 1 час педагогической работы руководителя проекта осуществляется по формуле (5): CЧ (Т С * (1 Н УС ) Н ЗВ ) * РК *12 , Пн (5) где СЧ – размер оплаты за 1 час педагогической работы руководителя проекта, руб.; Т С – тарифная ставка (оклад), равная соответствующему разряду ЕТС, руб.; Н УС – надбавка за ученую степень (0,4 – для кандидата наук, 0,6 – для доктора наук); Н ЗВ – надбавка за ученое звание, руб.; П Н – педагогическая нагрузка преподавателя на учебный год, час; РК – районный коэффициент. СЧ (6000 * (1 0,4) 3000) *1,3 *12 203,25 875 Расчет заработной платы руководителя проекта ( ЗП ППС ) производится по формуле (6): ЗП ППС CЧ * Т ПН , (6) где ЗП ППС – размер заработной платы руководителя проекта, руб.; Т ПН – количество часов педагогической нагрузки руководителя проекта за время выполнения проекта; СЧ – ставка почасовой оплаты труда преподавателя. ЗП ППС 203,25 * 64 13008 Затраты на оплату труда разработчикам проекта рассчитываем по формуле (7): ЗЗ / П СЧАС * Т Ф , (7) где ЗЗ / П – затраты на оплату труда разработчикам проекта, руб.; СЧАС – среднечасовая заработная плата исполнителя проекта, руб.; Т Ф – фактическое время работы исполнителей проекта, час. ЗЗ / П 100 *1200 120000 Отчисления на единый социальный налог составляют 26,2 % от заработной платы исполнителей проекта и рассчитываются по формулам (8) и (9): ЕСН РУК ЗП ППС * 0,262 , (8) где ЕСН РУК – отчисления на единый социальный налог руководителя проекта, руб. ЕСН РУК 13008 * 0,262 3408,10 ЕСН РАЗР ЗЗ / П * 0,262 , где ЕСН РАЗР – отчисления на единый социальный налог разработчиков проекта, руб.; ЕСН РАЗР 120000 * 0,262 31440 (9) Затраты на силовую энергию рассчитываем по формуле (10): ЗЭЛС Р * Т Р * СУЭ , (10) где ЗЭЛС – затраты на силовую энергию, руб.; Р – потребляемая мощность токоприемника, кВт; Т Р – время работы токоприемника, час; СУЭ – стоимость одного кВт*часа электроэнергии, руб/кВт*час. Затраты на силовую энергию представлены в таблице 7. Таблица 7 – Затраты силовую энергию на этапе проектирования Наименование токоприемника Компьютер Лампа накаливания Итого Потребляем ая мощность, кВт 0,25 0,21 - Время работы, ч Затраты на Стоимость электроэнергию, кВт*ч ,руб руб 1200 400 - 1,32 1,32 - 396 110,88 506,88 Расчет затрат на материалы ЗМ , необходимые для выполнения дипломного проекта представлен в таблице 8. Таблица 8 - Смета затрат на материалы для проектирования Наименование материалов Бумага «SVETO COPY», уп Ручка шариковая Карандаш Итого Накладные расходы Количествово, штук Стоимость единицы, руб Сумма, руб 1 2 1 - 130 3 3 - 130 6 3 139 ( РНАКЛ ), включающие затраты на содержание административно-управленческого персонала, содержания помещения, содержание и эксплуатацию телефонных линий и расходы на оплату других средств связи и т.п., исчисляются как 10 % от фонда оплаты труда с учетом ЕСН, рассчитываются по формуле (11): РНАКЛ (ЗП ППС ЗЗ / П ЕСН РУК ЕСН РАЗР ) * 0,1, (11) где РНАКЛ – накладные расходы, руб. РНАКЛ (13008 120000 3408,10 31440) * 0,1 16785,61 Прочие затраты учитываем в размере 2% от суммы всех предшествующих затрат (затраты на ПО и оборудование, амортизационные отчисления, затраты на заработную плату, отчисление в социальные фонды, затраты на силовую и электроэнергию, затраты на материалы, накладные расходы). Смета затрат на проектирование представлена в форме таблицы 9. Таблица 9 - Смета затрат на проектирование информационных технологий Наименование затрат Затраты на ПО и оборудование Амортизационные отчисления Затраты на заработную плату отчисление в социальные фонды Затраты на силовую и электроэнергию Затраты на материалы Накладные расходы Прочие расходы Итого затрат Значение показателя, руб 82020 7282 133008 34848,1 506,88 139 16785,61 5490 280079,59 Так как проект не внедряется на производство, то затраты на внедрение равны 0. 4.2 Доходы от реализации проекта Основной доход от реализации этого проекта будет поступать от продажи рекламного места на сайте. Предполагаемый доход в сутки, при количестве пользователей, около 500 человек в сутки, рассчитывается по формуле (12): Д П CTR C , (12) где П – количество пользователей в сутки; CTR – процент пользователей прошедших по ссылке на рекламу, предполагаемо 0,12. C – цена за переход пользователя по контекстной рекламе, 2 руб. Д = 120 руб./сутки 4.3 Расчет экономических показателей проекта Эффективность ( Е ) инвестиционного проекта выражается отношением результата ( Р ) к затратам необходимым для его достижения ( З ) в соответствии с формулой (13): Е Р , З (13) За результат примем сумму доходов, которые принесет проект через срок окупаемости в год. Затратами являются затраты на разработку системы: Е 43800 0,15 280079,59 Срок окупаемости ( Tok ) – это период времени за который чистые денежные поступления в результате реализации проекта покроют все затраты. Срок окупаемости рассчитывается по формуле (14): Tok И , Д где И – инвестиции, руб.; Д – ежегодные чистые поступления, руб. Т ok 280079,59 6,394 43800 (14) ЗАКЛЮЧЕНИЕ В ходе выполнения курсового проекта была смоделирована и создана ИС «РЖД». Разработанная система наглядно демонстрирует основные преимущества визуального моделирования. Моделирование обеспечивает более точную оценку необходимых ресурсов, четкую проработку планов и эффективное функционирование создаваемых систем. Данный курсовой проект позволил изучить особенности языка UML, который научил быстро составить представление о технологии, познакомиться с ней на концептуальном и понятийном уровне, а также приобрести навыки работы с пакетом программных продуктов Rational Rose. Преимущества: данный подход позволил ускорить процесс разработки ПО; наглядность проектируемой модели в процессе разработки, что позволяет легко вносить изменения в модель без редактирования кода,результатом работы стало создание ИС для РЖД. СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 1. Официальный сайт ОАО «РЖД» [Электронный ресурс]: [http://history.rzd.ru/history/public/ru?STRUCTURE_ID=5163]; 2. Учет товаров в розничной торговле: как вести торговый учет в магазине. Программа для учета товаров [Электронный ресурс]: [https://www.business.ru/article/589-effektivnoe-vedenie-torgovogo-ucheta-spomoshchyu-programm-avtomatizatsii#2]; 3. ГОСТ Р ИСО/МЭК 9126-93. Информационная технология. Оценка программной продукции. Характеристики качества и руководство по их применению. [Электронный ресурс]: [http://center-comptech.ru/articles/st-1102141.html]; 4. Автоматизация учета в торговле [Электронный ресурс]: [http://center- comptech.ru/articles/st-110214-1.html]; 5. АВТОМАТИЗАЦИЯ УЧЕТА В ТОРГОВЛЕ. СИСТЕМА “ОБОРОТ+” [Электронный ресурс]: [http://www.k-press.ru/comp/1999/3/ok-oborplus/ok- oborplus.asp] 6. Объектно-ориентированный анализ и проектирование с использованием UML и IBM RATIONAL ROSE: учебное пособие/ А.В. Леоненков. 2006г ПРИЛОЖЕНИЕ А (обязательное) Код программы #include "База данных РЖД.h" { //##ModelId=5550A1B00063 База данных РЖД::add ticket() }; { //##ModelId=5550A60C0296 База данных РЖД::proverit reis() }; { //##ModelId=5550A76D0361 База данных РЖД::proverit nalichie svobodnyh mest() }; { //##ModelId=5550A791004A База данных РЖД::opname() }; #ifndef БАЗА_ДАННЫХ_РЖД_H_HEADER_INCLUDED_AAAE103A #define БАЗА_ДАННЫХ_РЖД_H_HEADER_INCLUDED_AAAE103A //##ModelId=55509E470079 class База данных РЖД : public Менеджер транзакции { public: //##ModelId=5550A1B00063 add ticket(); //##ModelId=5550A60C0296 proverit reis(); //##ModelId=5550A76D0361 proverit nalichie svobodnyh mest(); //##ModelId=5550A791004A opname(); //##ModelId=5550A1EA011F Tip Poezda; //##ModelId=5550A1FF00EE Class; //##ModelId=5550A7D3036A Data; private: //##ModelId=5550A1D60361 Time; }; #endif /* БАЗА_ДАННЫХ_РЖД_H_HEADER_INCLUDED_AAAE103A */ #include "Касса РЖД.h" { //##ModelId=5550D59503E5 Касса РЖД::zapros dannyh o schete() }; { //##ModelId=5550D5B10134 Касса РЖД::zapros klassa i vagona() }; { //##ModelId=5550D5D001A5 Касса РЖД::vidacha kvitanciy() }; #ifndef КАССА_РЖД_H_HEADER_INCLUDED_AAAE541C #define КАССА_РЖД_H_HEADER_INCLUDED_AAAE541C //##ModelId=55509D91035C class Касса РЖД { public: //##ModelId=5550D59503E5 zapros dannyh o schete(); //##ModelId=5550D5B10134 zapros klassa i vagona(); //##ModelId=5550D5D001A5 vidacha kvitanciy(); //##ModelId=5550D6040295 Name; //##ModelId=5550D62B022C Marshrut; //##ModelId=5550D63A01FD Tip poezda; //##ModelId=5550D64601C5 Class; private: //##ModelId=5550D61D00A5 Identification number; }; #endif /* КАССА_РЖД_H_HEADER_INCLUDED_AAAE541C */ #include "Менеджер транзакции.h" { //##ModelId=5550AAAE0214 Менеджер транзакции::Formirovanie zaprosa() }; { //##ModelId=5550AAC70076 Менеджер транзакции::Otpravka zaprosa() }; { //##ModelId=5550AAD702CC Менеджер транзакции::opname() }; { //##ModelId=5550C900032D Менеджер транзакции::podtverzhdenie polucheniya bileta() }; { //##ModelId=5550CB7B0117 Менеджер транзакции::Vidacha kvitancii na poluchenie() }; #ifndef МЕНЕДЖЕР_ТРАНЗАКЦИИ_H_HEADER_INCLUDED_AAAE0F5B #define МЕНЕДЖЕР_ТРАНЗАКЦИИ_H_HEADER_INCLUDED_AAAE0F5B //##ModelId=55509E7700C8 class Менеджер транзакции { public: //##ModelId=5550AAAE0214 Formirovanie zaprosa(); //##ModelId=5550AAC70076 Otpravka zaprosa(); //##ModelId=5550AAD702CC opname(); //##ModelId=5550C900032D podtverzhdenie polucheniya bileta(); //##ModelId=5550CB7B0117 Vidacha kvitancii na poluchenie(); private: //##ModelId=5550CBA303AB Spiski; //##ModelId=5550CBC601E5 Kontactnaya informaciya; }; #endif /* МЕНЕДЖЕР_ТРАНЗАКЦИИ_H_HEADER_INCLUDED_AAAE0F5B */ #include "Экран.h" { //##ModelId=5550CC8F0176 Экран::Inicializaciya ekrana() }; { //##ModelId=5550CD9B00CD Экран::Vvjod tranzakcii() }; { //##ModelId=5550CDE1025D Экран::Vvod nachalnih dannih() }; { //##ModelId=5550CF650065 Экран::Vibor marshruta, reisa, tipa vagona() }; #ifndef ЭКРАН_H_HEADER_INCLUDED_AAAE05C4 #define ЭКРАН_H_HEADER_INCLUDED_AAAE05C4 //##ModelId=55509E64005A class Экран { public: //##ModelId=5550CC8F0176 Inicializaciya ekrana(); //##ModelId=5550CD9B00CD Vvjod tranzakcii(); //##ModelId=5550CDE1025D Vvod nachalnih dannih(); //##ModelId=5550CF650065 Vibor marshruta, reisa, tipa vagona(); //##ModelId=5550CFA20276 Name; //##ModelId=5550D38F0395 Destination; //##ModelId=5550D399017D Data; private: //##ModelId=5550CFAA003D Identification number; }; #endif /* ЭКРАН_H_HEADER_INCLUDED_AAAE05C4 */ Rational Rose Data Modeler ПРИЛОЖЕНИЕ Б (обязательное) Техническое задание 1. ВВЕДЕНИЕ Программа «ИНФОРМАЦИОННАЯ СИСТЕМА «РЖД» » позволяет пользователю снизить зависимость от онлайн ресурсов. 2. ОСНОВАНИЕ ДЛЯ РАЗРАБОТКИ Программа разрабатывается в качестве курсовой работы на основе учебного плана по предмету программирования” “Высокоуровневые направления методы подготовки информатики 09.03.03 и «Прикладная информатика в экономике» кафедры информатика и вычислительная техника им. В.К. Буторина. 3. НАЗНАЧЕНИЕ Данная разработка позволяет сотрудникам Узнать о забронированных билетах через интернет; Узнать о забронированных билетах через кассу: купить билет; узнать о расписании движения поездов; узнать о возможности пересадки. . 4. ТРЕБОВАНИЕ К ПРОГРАММЕ 4.1. Требования к функциональным характеристикам 4.1.1. Программа должна следующих функций: • вывод текста на экран; • ввод текста с клавиатуры. 4.1.2. Исходные данные: обеспечивать возможность выполнения • ответ пользователя на заданное событие. 4.1.3 Результаты: • текст события, зависящий от выбора пользователя. 4.2. Требования к надежности Предусмотреть вывод сообщения на некорректные ответы пользователя на заданные события. 4.3. Требования к составу и параметрам технических средств 4.3.1. Система должна работать на IBM совместимых персональных компьютерах. 4.3.2. Минимальная конфигурация: • тип процессора Intel Atom Processor N270 1,60 ГГц и выше; • объем оперативного запоминающего устройства 1 Гб и более. 5. ТРЕБОВАНИЯ К ПРОГРАММНОЙ ДОКУМЕНТАЦИИ 5.1. Разрабатываемые программные модули должны быть самодокументированы, т. е. тексты программ должны содержать все необходимые комментарии.