Структурное разбиение предметной области компания по разработке программных продуктов


С этим файлом связано 1 файл(ов). Среди них: Петров ИС21.01п 02.09.22 (2) (1).docx.
Показать все связанные файлы


Подборка по базе: Лабораторная работа 13.doc, Практическая работа 3.docx, Лабораторная работа 12.doc, Практическая работа №1 Лопатникова А.И..docx, Практическая работа №2.docx, Аттестационная работа_итоговая_9 кл.doc, Практическая работа № 1 Бренько Т.Ю..docx, Практическая работа № 4.docx, Итоговая работа 1.docx, Практическая работа № 3.docx


Лабораторная работа 1. Анализ предметной области и разработка описания информационной системы

Цель работы: ознакомиться с процессом описания информационной системы и получить навыки по использованию основных методов анализа ИС.

Теоретические сведения

Проблемы управления программными проектами впервые появились в 60-х– начале70- х годов прошлого века, когда провалились многие большие проекты по разработке программных продуктов. Были зафиксированы задержки в создании ПО, программное обеспечение было ненадежным, затраты на разработку в несколько раз превосходили первоначальные оценки и т.д. Провалы этих проектов обуславливались не только некомпетентностью руководителей и программистов. Напротив, в этих больших поисковых проектах принимали участие люди, уровень квалификации которых был явно выше среднего. Причины провалов коренились в тех подходах, которые использовались в управлении проектами. Применяемая методика была основана на опыте управления техническими проектами и оказалась неэффективной при разработке программных проектов.

Руководители программных проектов выполняют такую же работу, что и руководители технических проектов. Вместе с тем процесс разработки ПО существенно отличается от процессов реализации технических проектов. Ниже приведен небольшой список этих отличий.

  1. Программный продукт нематериален. Менеджер судостроительного проекта или проекта постройки здания видит результат выполнения своего проекта. Если реализация проекта отстает от графика, то это видно по незавершенности конструкции. В противоположность этому процент незавершенности программного проекта нельзя увидеть или потрогать. Менеджер программного проекта может полагаться только на документацию, которая фиксирует процесс разработки программного продукта.
  2. Не существует стандартных процессов разработки программного обеспечения. На сегодняшний день не существует четкой зависимости между процессом создания ПО и типом создаваемого программного продукта. Другие технические дисциплины имеют длительную историю, процессы разработки технических изделий многократно опробованы и проверены. Изучением же процессов создания ПО специалисты занимаются только последние несколько лет. Поэтому пока нельзя точно предсказать, на каком этапе процесса разработки ПО могут возникнуть проблемы, угрожающие всему проекту.
  3. Большие программные проекты это часто одноразовые проекты. Большие программные проекты, как правило, значительно отличаются от проектов, реализованных ранее. Поэтому, чтобы уменьшить неопределенность в планировании проекта, руководители проектов должны обладать очень большим практическим опытом. Но постоянные технологические изменения в компьютерной технике обесценивают предыдущий опыт. Перечисленные особенности могут привести к тому, что реализация проекта выйдет за рамки временного графика или бюджетных ассигнований. Об этом всегда нужно помнить.

Процессы управления программными проектами

Невозможно описать и стандартизировать все работы, выполняемые менеджером проекта по созданию ПО, но в большинстве случаев к ним относятся.

− Написание предложений по созданию ПО.

− Планирование и составление графика работ проекта.

− Оценивание стоимости проекта.

− Контроль процессов выполнения работ.

− Подбор персонала.

− Написание отчетов и представлений.

Время выполнения больших программных проектов может занимать несколько лет. В течение этого времени цели и намерения организации, оказавшей программный проект, могут существенно измениться. Может оказаться, что разрабатываемый программный продукт стал уже ненужным либо исходные требования к ПО устарели и их нужно кардинально менять. В такой ситуации руководство организации-разработчика может принять решение о прекращении разработки ПО или об изменении проекта в целом.

Планирование проекта

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

План проекта должен показать ресурсы, необходимые для реализации проекта, разделение работ на этапы и временной график выполнения этих этапов. Детализация планов проектов очень разнится в зависимости от типа разрабатываемого программного продукта и организации-разработчика. Но в любом случае большинство планов содержит следующие разделы.

  1. Введение. Краткое описание целей проекта и проектных ограничений (бюджетных, временных и т.д.).
  2. Организация выполнения проекта. Описание способа подбора команды разработчиков и распределение обязанностей между членами команды.
  3. Анализ рисков. Описание возможных проектных рисков, вероятность их проявления и стратегий, направленных на их уменьшение.
  4. Аппаратные и программные ресурсы для реализации проекта. Перечень аппаратных средств и программного обеспечения, необходимого для разработки программного продукта.
  5. Разбиение работ на этапы. Проект разбивается на отдельные процессы, определяются этапы выполнения проекта, приводится описание результатов каждого этапа и контрольные отметки.
  6. График работ. В графике работ отображаются зависимости между отдельными этапами разработки по, оценки времени их выполнения и распределение членов команды проекта по отдельным этапам.
  7. Механизмы контроля и мониторинга за ходом выполнения проекта. Описываются механизмы и сроки предоставления отчетов о ходе работ, а также механизмы мониторинга всего проекта.

При планировании проекта разработки ПО определяются контрольные точки вехи, отмечающие окончание определенного этапа работ. Для каждой вехи создается отчет, который предоставляется руководству проекта.

Рисунок 1. Этапы процесса разработки спецификации

При определении контрольных точек весь процесс создания ПО должен быть разбит на отдельные этапы с указанным «выходом» (результатом) каждого этапа. Например, на рис. 1 показаны этапы разработки спецификации требований в случае, когда для ее проверки используется прототип системы.

Информационный процесс это осуществление всей совокупности следующих элементарных информационных актов: прием или создание информации, ее хранение, передача и использование. Информационная система это совокупность механизмов, обеспечивающих полное осуществление информационного процесса.

Вне ИС информация может лишь сохраняться в виде записей на тех или иных физических носителях, но не может быть ни принятой, ни переданной, ни использованной.

Информационная система — организационно-техническая система, которая предназначена для выполнения информационно-вычислительных работ или предоставления информационно- вычислительных работ, или предоставления информационно-вычислительных услуг, удовлетворяющих потребности системы управления и ее пользователей управленческого персонала, внешних пользователей путем использования и/или создания информационных продуктов. Информационные системы существуют в рамках системы управления и полностью подчинены целям функционирования этих систем.

Информационно-вычислительная работа деятельность, связанная с использованием информационных продуктов. Типичным примером информационной работы является поддержка информационных технологий управления.

Информационно-вычислительная услуга это разовая информационно-вычислительная работа. Под информационным продуктом понимается вещественный или нематериальный результат интеллектуального человеческого труда, обычно материализованный на определенном носителе, например разнообразных программных продуктов, выходной информации в виде документов управления, баз данных, хранилищ данных, баз знаний, проектов ИС и ИТ.

Методологическую основу изучения ИС составляет системный подход, в соответствии с которым любая система представляет собой совокупность взаимосвязанных объектов, функционирующих совместно для достижения общей цели.

Информационная система представляет собой совокупность функциональной структуры, информационного, математического, технического, организационного и кадрового обеспечения, которые объединены в единую системы в целях сбора, хранения, обработки и выдачи необходимой информации для выполнения функций управления. Она обеспечивает информационные потоки:

    1. — информационный поток из внешней среды в систему управления, который, с одной стороны, представляет собой поток нормативной информации, создаваемый государственными учреждениями в части законодательства, а с другой стороны — поток информации о конъюнктуре рынка, создаваемый конкурентами, потребителями, поставщиками;
    2. информационный поток из системы управления во внешнюю среду (отчетная информация, прежде всего финансовая в государственные органы, инвесторам, кредиторам, потребителям; маркетинговая информация потенциальным потребителям);
    3. информационный поток из системы управления на объект, представляет собой совокупность плановой, нормативной и распорядительной информации для осуществления хозяйственных процессов;
    4. — информационный поток от объекта в систему управления, который отражает учетную информацию о состоянии объекта управления экономической системой (сырья, материалов, денежных, энергетических, трудовых ресурсов, готовой продукции и выполненных услугах) в результате выполнения хозяйственных процессов.

Задачи информационных систем

Корпоративные системы позволяют решить следующие задачи:

  • гарантировать требуемое качество управления предприятием;
  • повысить оперативность и эффективность взаимодействия между подразделениями;
  • обеспечить управляемость качеством выпускаемой продукции;
  • увеличить экономическую эффективность деятельности предприятия;
  • создать систему статистического учета на предприятии;
  • осуществлять прогноз развития предприятия;
  • создать систему стратегического и оперативного планирования, систему прогнозирования.

Порядок выполнения работы

  1. Ознакомиться с предложенным вариантом описания предметной области (согласно заданию индивидуального проекта).
  2. Проанализировать предметную область, уточнив и дополнив ее, руководствуясь собственным опытом, консультациями и любыми источниками (книгами, учебниками или Интернет-источниками).
  3. Выполнить структурное разбиение предметной области на отдельные подразделения (подсистемы) согласно выполняемым ими функциям.

Отдел тоготого Отдел того того

  1. Определить задачи и функции системы в целом и функции каждого подразделения (подсистемы).
  1. Продумать подробное описание работы каждого подразделения (подсистемы), алгоритмов и сценариев выполнения ими отдельных работ. Продумать виды входной и выходной информации для каждого подразделения (подсистемы).
  2. Описать схему работы будущей информационной системы, учитывая выделенные и описанные ранее подсистемы.
  3. Определить группу пользователей, для которой данная система будет более востребована. Описать перечень функций системы, которые будут доступны данной группе пользователей.
  4. Создать физическую диаграмму в соответствии с описанием деятельности предметной области.

Рисунок 1 – Схематическое отображение физической диаграммы предметной области

  1. Подготовить отчет по работе (в формате текстового документа word либо google документа).

Варианты заданий

Предметная область Сущность задачи
Страховая медицинская компания Страховая медицинская компания (СМК) заключает договоры добровольного медицинского страхования с населением и договоры с лечебными учреждениями на лечение застрахованных клиентов. При возникновении страхового случая клиент подает заявку на оказание медицинских услуг по условиям договора инспектору, который работает с данным клиентом. Инспектор направляет данного клиента в лечебное учреждение. Отчеты о своей деятельности инспектор предоставляет в бухгалтерию. Бухгалтерия проверяет оплату договоров, перечисляет денежные средства за оказанные услуги лечебным учреждениям, производит отчисления в налоговые органы и предоставляет отчетность в органы государственной статистики. СМК не только оплачивает лечение застрахованного лица при возникновении с ним страхового случая, но и, при возникновении каких-либо осложнений после лечения, оплачивает лечение этих осложнений
Агентство недвижимости Агентство недвижимости занимается покупкой, продажей, сдачей в аренду объектов недвижимости по договорам с их собственниками. Агентство управляет объектами недвижимости как физических, так и юридических лиц. Собственник может иметь несколько объектов. В случае покупки или аренды клиент может произвести осмотр объекта. В качестве одной из услуг, предлагаемых агентством, является проведение инспектирования текущего состояния объекта для адекватного определения его рыночной цены. По результатам своей деятельности агентство производит отчисления в налоговые органы и предоставляет отчетность в органы государственной статистики
фотоцентр Фотоцентр занимается оказанием фото услуг и продажей различных фототоваров. В состав фото услуг входит: печать фотографий, проявление фотопленок, художественное фото, фото на документы, реставрация фотографий, выезд фотографа для съемки объекта. Поставка необходимых материалов осуществляется через дилеров ведущих мировых производителей фототоваров. Согласно отдельному договору, различные химические отходы передаются предприятию по утилизации вредных веществ. По результатам своей деятельности фотоцентр производит отчисления в налоговые органы и предоставляет отчетность в органы государственной статистики.
ателье Ателье занимается изготовлением одежды. Клиент может выбрать либо из каталога определенных моделей, либо осуществить индивидуальный заказ. Отдельно с клиентом оговариваются материал, его свойства (цвет, прочность и т.д.), срочность выполнения заказа, даты примерок. После согласования всех деталей рассчитывается ориентировочная стоимость заказа, на основании которой клиент вносит аванс. После выполнения заказа клиент оплачивает его окончательную стоимость. По результатам своей деятельности ателье производит отчисления в налоговые органы и предоставляет отчетность в органы государственной статистики.
Кадровое агентство Кадровое агентство способствует трудоустройству безработных граждан. Агентство ведет учет и классификацию данных о безработных на основании резюме от них. От предприятий города поступают данные о свободных вакансиях, на основании которых агентство предлагает различные варианты трудоустройства соискателям. В случае положительного исхода поиска вакансия считается заполненной, а безработный становится трудоустроенным. По результатам своей деятельности кадровое агентство производит отчисления в налоговые органы и предоставляет отчетность в органы государственной статистики
Компания по разработке программных продуктов Компания заключает договор с клиентом на разработку программного продукта согласно техническому заданию. После утверждения технического задания определяется состав и объем работ, составляется предварительная смета. На каждый проект назначается ответственный за его выполнение – куратор проекта, который распределяет нагрузку между программистами и следит за выполнением технического задания. Когда программный продукт готов, то его внедряют, производят обучение клиента и осуществляют дальнейшее сопровождение. По результатам своей деятельности компания производит отчисления в налоговые органы и предоставляет отчетность в органы государственной статистики
строительная организация Строительная организация занимается строительством объектов по заказам клиентов. Сначала заказ проходит предварительную стадию: сбор различных разрешений на строительство, составление эскиза объекта, расчет объема и закупка строительных материалов. Сами строительные материалы доставляются на объект партиями. По мере поступления очередной партии стройматериалов закладывается фундамент объекта, строится каркас здания. По результатам данной работы происходит согласование с заказчиком, после чего утепляется контур, вставляются окна, устанавливается крыша. Дальше идет обсуждение с клиентом внутренней отделки здания, закупаются отделочные материалы. После того, как объект проходит технический контроль, он передается заказчику. В дополнительные услуги строительной организации входят: услуги дизайнера по интерьеру, закупка и доставка мебели, сотрудничество с охранным предприятием по установке сигнализации. По результатам своей деятельности строительная организация производит отчисления в налоговые органы и предоставляет отчетность в органы государственной статистики
обувная фабрика Обувная фабрика производит разнообразную обувь, ассортимент которой зависит от конъюнктуры рынка, от сезона, от моды. У различных поставщиков фабрика закупает необходимые для производства материалы и сырье. Готовая продукция отпускается в магазины под реализацию. При необходимости, магазины могут высказывать свои пожелания/претензии на ассортимент. Брак и отходы производства передаются специальному предприятию по утилизации. По результатам своей деятельности обувная фабрика производит отчисления в налоговые органы и предоставляет отчетность в органы государственной статистики.
мебельный центр Мебельный центр занимается изготовлением мебели на заказ. Дизайнер приезжает к клиенту, замеряет необходимые параметры будущей мебели и составляет предварительную смету. Клиент вносит предоплату для закупки необходимых материалов. После изготовления мебели рассчитывается окончательная стоимость заказа, осуществляется доставка и сборка, происходит полный расчет за заказ. По результатам своей деятельности мебельный центр производит отчисления в налоговые органы и предоставляет отчетность в органы государственной статистики.
компьютерная компания Компьютерная компания занимается продажей, ремонтом, сборкой, тестированием компьютерной техники. Также, специалисты компании предоставляют услуги по разработке и монтажу локальных вычислительных сетей. Вся техника и комплектующие закупаются оптом у дилеров и хранятся на складе. Клиент, который хочет приобрести товар, оформляет заказ в торговом зале, а забирает технику со склада или оставляет заявку на ее доставку. Клиент, который хочет отремонтировать технику, приносит ее в сервисный отдел, откуда, по прошествии некоторого времени, забирает как отремонтированную или как технику, не подлежащую ремонту. По желанию клиента, специалисты компании могут выехать к клиенту для общей диагностики возникшей проблемы с техникой. По результатам своей деятельности компьютерная компания производит отчисления в налоговые органы и предоставляет отчетность в органы государственной статистики
компания по предоставлению телекоммуникационных услуг Компания занимается оказанием телекоммуникационных услуг абонентам. Клиент делает заявку на подключение к телекоммуникационным услугам и ему, по необходимости, устанавливают соответствующее оборудование. Оплата за услуги вносится путем авансовых платежей. Каждый факт предоставления услуги фиксируется соответствующим оборудованием и является основанием для списания соответствующей суммы с личного счета абонента. Клиент в любое время суток может получить отчет об оказанных ему услугах, их стоимости и остатку на личном счете абонента. По результатам своей деятельности компания производит отчисления в налоговые органы и предоставляет от-четность в органы государственной статистики.
управляющая компания ЖКХ. Управляющая компания (УК) ЖКХ занимается обслуживанием жилого фонда города. УК получает финансовые средства от населения и бюджета города в виде компенсаций и субсидий на коммунальные услуги. На основании поступивших средств УК осуществляет текущий ремонт жилого фонда, а также капитальный ремонт согласно плану. Для непосредственного выполнения работ УК нанимает соответствующую рабочую силу (сантехников, дворников, электриков и т.д.). По результатам своей деятельности УК ЖКХ производит отчисления в налоговые органы и предоставляет от-четность в органы государственной статистики.
автобаза Автобаза предоставляет услуги по перевозке пассажиров, различных грузов как в черте города, так и между соседними городами. Для регулярных рейсов оплата клиентами услуги происходит в момент их оказания. В остальных случаях клиент должен сделать заявку, которая может быть отклонена. Для междугородных перевозок в диспетчерские автобазы фиксируется маршрут следования рейса. По результатам своей деятельности автобаза производит отчисления в налоговые органы и предоставляет отчетность в органы государственной статистики.
Туроператор Туроператор предоставляет возможность своим клиентам осуществить туристическую или деловую поездку в различные города России и мира. При разработке нового тура сначала анализируется текущая ситуация на рынке туризма и выбирается направление тура. После этого определяется статус тура, бронируются места в гостиницах и билеты на переезд к месту тура, разрабатывается культурная/ деловая/ развлекательная программа, утверждаются сроки тура. На каждый тур назначается ответственное лицо от туроператора, которое будет вести данный тур для улаживания проблем в случае возникновения каких-нибудь чрезвычайных или форс- мажорных ситуаций. Клиент приходит в офис туроператора, где вместе с менеджером выбирает уже разработанный тур и оформляет путевку. После возвращения из тура клиент может высказать свои замечания или пожелания, которые будут учтены при доработке существующих туров или при разработке новых. Также, для дальнейшего улучшения тура, туроператор проводит анализ отчетов от посредников (гостиница, гиды и т.д.). По результатам своей деятельности туроператор производит отчисления в налоговые органы и предоставляет отчетность в органы государственной статистики.
больница Больница осуществляет круглосуточное оказание услуг по лечению пациентов. Пациент подает заявку на лечение в регистратуру больницы. Регистратор выписывает направление больному, закрепляет за ним лечащего врача и, по мере надобности, койко-место. Пациент получает набор лечебных процедур до тех пор, пока его лечащий врач не примет решение о завершении лечения. Лекарства для лечения пациентов поступают в лечебные отделения со склада больницы. Также, за все время нахождения в больнице, пациентам предоставляется питание. По результатам своей деятельности больница производит отчисления в налоговые органы и предоставляет отчетность в органы государственной статистики.
спортивный комплекс Спортивный комплекс предоставляет услуги по проведению спортивных тренировок. Тренировки, относящиеся к одному виду спорта, объединяются в спортивные секции. Клиент обращается в спортивный комплекс, где получает абонемент на посещение спортивной секции. На основе купленных абонементов составляется расписание тренировок на следующий месяц. Также, в зависимости от загруженности спортивного комплекса, распределяются тренера спортивных секций. По результатам своей деятельности спортивный комплекс производит отчисления в налоговые органы и предоставляет отчетность в органы государственной статистики.
гостиница Гостиница служит для обеспечения проживания, предоставления социально-бытовых услуг и создания условий жизнедеятельности клиентов на небольшой временной срок. Клиент приезжает в гостиницу и заказывает номер. В номере клиента ежедневно осуществляется уборка и раз в неделю – смена постельного белья. Клиент может заказать себе дополнительные услуги (вызов такси, пробуждение в определенное время и т.д.). Любой номер можно забронировать заранее. Периодически гостиница обновляет свою мебель, интерьер, производит перепланировку номеров. По результатам своей деятельности гостиница производит отчисления в налоговые органы и предоставляет отчетность в органы государственной статистики.
банк Банк – это предприятие, осуществляющее регулирование платежного оборота в наличной и безналичной формах. Банк привлекает денежные средства физических и юридических лиц во вклады; размещает привлеченные средства от своего имени и за свой счет; открывает и ведет банковские счета физических и юридических лиц; инкассирует денежные средства, векселя, платежные и расчетные документы; производит кассовое обслуживание физических и юридических лиц; производит куплю-продажу иностранной валюты в наличной и безналичной формах; предоставляет услугу хранения ценных бумаг и драгоценных металлов; осуществляет выдачу банковских гарантий; осуществляет переводы денежных средств по поручению физических лиц без открытия банковских счетов. По результатам своей деятельности банк про-изводит отчисления в налоговые органы и предоставляет отчетность в органы государственной статистики и Центральный Банк РФ.
авиакомпания Авиакомпания совершает авиаперелеты между городами. В зависимости от парка самолетов, сезона, спроса составляется расписание полетов. Данные о клиентах, купивших билеты на рейс, поступают из кассы. В случае неблагоприятных погодных условий рейс может быть отложен или отменен, о чем необходимо сообщить клиентам, которые могут отказаться от рейса или вылететь другим. В авиакомпании существует система скидок для постоянных клиентов, детей, своих сотрудников. По результатам своей деятельности авиакомпания производит отчисления в налоговые органы и предоставляет отчетность в органы государственной статистики.
студия звукозаписи Студия звукозаписи занимается поиском исполнителей песен различных жанров для записи, выпуска и продажи их альбомов. Продюсер исполнителя договаривается со студией о создании альбома. После подписания договора исполнитель записывает альбом. Когда альбом полностью записан, то он отправляется в тираж. Копии альбома распределяются по торговым точкам. По результатам своей деятельности студия звукозаписи производит отчисления в налоговые органы и предоставляет отчетность в органы государственной статистики.

Источники дополнительной информации

https://pandia.ru/text/77/246/75733.php

Предварительное исследование предметной области при разработке программного обеспечения

Предметная область — это окружение, часть реального мира, связанная или влияющая на объект рассматриваемой деятельности. Без предварительного изучения и анализа предметной области существует огромный риск разработки неэффективного продукта, который останется невостребованным у конечных пользователей или большая вероятность срыва сроков сдачи в эксплуатацию.

Первым этапом нашей работы при получении запроса на разработку программного продукта является определение целей его создания и перечня задач, которые он в перспективе должен решить. Если заказчик не предоставляет нам формулировку целей и перечень задач, то мы выявляем это совместно, путем анкетирования. Вот некоторые вопросы, которые могут быть заданы заказчику в процессе анкетирования:

  • В чем вы видите назначение будущей системы?
  • Какие проблемы она должна решить?
  • Какие возможности должна предоставить?
  • Как должна выглядеть?
  • Известны ли вам аналогичные продукты?
  • Будет ли система единичной или тиражируемой?
  • В каких странах она будет работать?
  • Предполагается ли обмен данными с другими существующими продуктами?
  • Сколько пользователей будет работать с системой к моменту реализации и в перспективе?
  • С какими системами и как давно вы работаете?

Для целей качественного и всеобъемлющего исследования предметной области мы можем запросить документацию, которая ведется заказчиком по автоматизируемой деятельности, это, например, могут быть:

  • правила ведения документооборота;
  • заполняемые отчеты, бланки отчетности;
  • должностные инструкции;
  • внутренние регламенты, инструкции;
  • документация из области управления качеством.

Довольно результативным способом исследования предметной области также является интервьюирование сотрудников компании-заказчика. Иногда нам удается выявить противоречивые ожидания и, конечно, нужно их сопоставить и прийти к общему видению.

Процесс формирования и анализа требований к ПО

На основе анализа собранной информации формируется ряд требований к будущему программному продукту: способ реализации, особенности дизайна, характер взаимодействия с пользователем, пользовательские роли, модель хранения данных и т. д. Первичное документирование требований производится в технической спецификации, а их детализация, архитектура и подробный способ реализации описываются в техническом задании.

Сбором и анализом информации, проводимой в целях исследования предметной области, формированием требований к программному продукту и их документированием в нашей компании занимается специализированное подразделение, состоящее из квалифицированных инженеров-аналитиков под руководством главного конструктора.

Исследование предметной области и разработка технической документации выделена нами в отдельную услугу. Тем, кто заинтересован в такой услуге, предлагаем обратиться к нам:

  • тел.: +7(7212)50-50-85,
  • e-mail: contact@toowto.kz
    • Рекомендуем ознакомиться с другими статьями нашего блога:
    • • Взаимодействие с клиентом в процессе создания программного продукта
    • • На что обращать внимание при поиске разработчика программного продукта
    • • От чего зависит стоимость и сроки разработки программного обеспечения

Статья подготовлена

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

Структурное
программирование (СП) является одним
из методов улучшения программы. Оно
предназначено для организации
проектирования программ и процесса
кодирования. Таким образом, чтобы
предотвратить большинство логических
ошибок и обнаружить те, которые допущены.

Модульное
программирование – это процесс разделения
программы на логические части, называемые
модулями, и последовательное
программирование каждой части. Когда
большая единая задача делиться на
подзадачи, то значительно проще прочесть
и понять программу. Если проведено
программирование всей задачи сверху –
вниз, то она естественно разбивается
на подзадачи для возможных модулей. При
этом преследуется две цели:

  • необходимость
    добиться того, чтобы программный модуль
    был правильным и не зависел от контекста
    в котором он будет использоваться

  • следует
    стремиться к тому, чтобы из модулей
    можно было формировать большие программы
    без каких-либо предварительных значений
    о внутренней работе модуля.

Перечислим
некоторые достоинства структурного
программирования:

  1. Структурное
    программирование позволяет значительно
    сократить число вариантов построения
    программы по одной и той же спецификации,
    что приводит к значительно снижает
    сложность программы.

  2. В
    структурированных программах логически
    связанные операторы находятся визуально
    ближе, а слабо связанные дальше, что
    позволяет обходится без блок схем и
    других графических форм изображения
    алгоритмов.

  3. Сильно
    упрощается процесс тестирования и
    отладки структурированных программ.

  4. более
    высокую производительность работы за
    счет того, что действие каждой управляющей
    структуры хорошо известно и нет
    необходимости его обдумывать;

  5. ясность
    и читаемость программ;

  6. более
    высокую эффективность за счет глобальной
    оптимизации программы.

7.1. Модули. Сцепление и связность модулей

Модуль
это
самостоятельная часть программы, имеющая
определенное назначение и обеспечивающая
заданные функции обработки автономно
от других программных модулей.

Разделение
ПО на модули необходимо для упрощения
их реализации, облегчения чтения
программы и работы с данными, имеющими
сложную структуру. Выделение модулей
позволяет избежать чрезмерной детализации
алгоритмов больших программ: перенести
подробное рассмотрение реализации тех
или иных действий на алгоритмы модулей.
Колоссальные трудности вызывает отладка
больших программ, но их можно свести к
минимуму, если отлаживать программу по
частям – модулям, логически связанным
между собой, но функционально обособленным.

Кроме
этого структуризация программных
продуктов преследует цели:

  • распределить
    работы по исполнителям, обеспечив
    приемлемую их загрузку и требуемые
    сроки разработки программных продуктов;

  • построить
    календарные графики проектных работ
    и осуществлять их координацию в процессе
    создания программных изделий;

  • контролировать
    трудозатраты и стоимость проектных
    работ и др.

Структурное
«разбиение» программ на отдельные
составляющие служит основой и для выбора
инструментальных средств их создания,
хотя имеет место и обратное влияние –
выбор инструментальных средств
разработчика программного обеспечения
определяет типы программных модулей.

Структуризация
программ выполняется в первую очередь
для удобства разработки, программирования,
отладки и внесения изменений в программный
продукт. Как правило, программные
комплексы большой алгоритмической
сложности разрабатываются коллективом
разработчиков (2–15 и более человек).

Термин
«модуль» традиционно используется в
двух смыслах. Первоначально, когда
размер программ был сравнительно
невелик, и все подпрограммы компилировались
отдельно, под модулем понималась
подпрограмма, т. е. последовательность
связанных фрагментов программы, обращение
к которой выполняется по имени.
Со
временем, когда размер программ
значительно вырос, и появилась возможность
создавать библиотеки ресурсов: констант,
переменных, описаний типов, классов и
подпрограмм, термин «модуль» стал
использоваться и в смысле автономно
компилируемый набор программных
ресурсов.

К
модулям предъявляются следующие
требования:

  • отдельная
    компиляция;

  • один
    вход и один выход – на входе программный
    модуль получает определенный набор
    исходных данных, выполняет содержательную
    обработку и возвращает один набор
    результатных данных, т. е. реализуется
    стандартный принцип IPO (Input – Process –
    Output) – вход-процесс-выход;

  • выполнение
    минимального числа функций.

  • функциональная
    завершенность – модуль выполняет
    перечень регламентированных операций
    для реализации каждой отдельной функции
    в полном составе, достаточных для
    завершения начатой обработки;

  • логическая
    независимость – результат работы
    программного модуля зависит только от
    исходных данных, но не зависит от работы
    других модулей;

  • слабые
    информационные связи с другими
    программными модулями – обмен информацией
    между модулями должен быть по возможности
    минимизирован;

  • соответствие
    принципу вертикального управления;

  • возможность
    вызова других модулей;

  • обозримый
    по размеру и сложности программный
    элемент;

  • независимость
    от истории вызовов;

Требования
одной точки входа, одной точки выхода,
независимости от истории вызовов и
соответствия принципу вертикального
управления вызваны тем, что в ранее
из-за серьезных ограничений на объем
оперативной памяти программисты были
вынуждены разрабатывать программы с
максимально возможной повторяемостью
кодов. В результате подпрограммы, имеющие
несколько точек входа и выхода, были не
только обычным явлением, но и считались
высоким классом программирования.
Следствием же было то, что программы
было очень сложно не только модифицировать,
но и понять, а иногда и просто полностью
отладить.

Со
временем, когда основные требования
структурного подхода стали поддерживаться
языками программирования, и под модулем
стали понимать отдельно компилируемую
библиотеку ресурсов, требование
независимости модулей стало основным.

Следует
стремиться к независимости между
модулями или программами. Для достижения
этого требуется, чтобы модуль не зависел
от:

1)
источника входных данных;

2)
местоназначения выходных данных;

3)
от предистории.

Каждый
модуль должен иметь свое назначение,
отличающееся от назначения других
модулей. Это должен быть замкнутый блок,
вход и выход которого четко определены.
Стремление к независимости хорошо тем,
что изменения в одном модуле (подпрограмме)
влияют на другую часть программы.
Воздействие изменения в одном модуле
на другую часть программы называется
волновым
эффектом
.
Этот эффект можно уменьшить сведя к
минимуму связь между модулями, т. е.
сократить количество путей вдоль которых
изменения или ошибки могут проникнуть
в другие части. Простой путь уменьшения
волнового эффекта – избегать использование
глобальных перемен и делать модуль
небольшим. Минимизация взаимосвязи
между модулями – это модульное сцепление,
которое происходит за счет усиления
связей между элементами одного модуля
(модульная прочность). Таким образом
тесно связанные элементы надо стремиться
поместить в один модуль. Использование
модулей приводит к уменьшению сложностей,
факторы сложности при этом включают
три составляющие:

1)
функциональная сложность – обусловлено
тем, что один модуль выполняет слишком
много функций;

2)
распределенная сложность – это сложность
идентификации общей функции распределенной
между несколькими модулями за счет чего
утрачивается возможность уменьшения
сложности всей программы при модульном
программировании;

3)
сложность связи – определяется сложностью
взаимодействия модулей, при использовании
общих данных.

Практика показала,
что чем выше степень независимости
модулей, тем:

• легче разобраться
в отдельном модуле и всей программе и,
соответственно, тестировать, отлаживать
и модифицировать ее;

• меньше
вероятность появления новых ошибок при
исправлении старых или внесении изменений
в программу, т. е. вероятность появления
«волнового» эффекта;

• проще
организовать разработку программного
обеспечения группой программистов и
легче его сопровождать.

Таким
образом, уменьшение зависимости модулей
улучшает технологичность проекта.

Степень
независимости модулей (как подпрограмм,
так и библиотек) оценивают двумя
критериями: сцеплением и связностью.

Сцепление
модулей.
Сцепление
является
мерой взаимозависимости модулей, которая
определяет, насколько хорошо модули
отделены друг от друга. Модули независимы,
если каждый из них не содержит о другом
никакой информации. Чем больше информации
о других модулях хранит модуль, тем
больше он с ними сцеплен.

Различают пять
типов сцепления модулей:

• по данным;

• по образцу;

• по управлению;

• по общей области
данных;

• по содержимому.

Сцепление
по данным
предполагает,
что модули обмениваются данными,
представленными скалярными значениями.
При небольшом количестве передаваемых
параметров этот тип обеспечивает
наилучшие технологические характеристики
программного обеспечения.

Сцепление
по образцу
предполагает,
что модули обмениваются данными,
объединенными в структуры. Этот тип
также обеспечивает неплохие характеристики,
но они хуже, чем у предыдущего типа, так
как конкретные передаваемые данные
«спрятаны» в структуры, и потому
уменьшается «прозрачность» связи между
модулями. Кроме того, при изменении
структуры передаваемых данных необходимо
модифицировать все использующие ее
модули.

При
сцеплении
по управлению
один
модуль посылает другому некоторый
информационный объект (флаг), предназначенный
для управления внутренней логикой
модуля. Таким способом часто выполняют
настройку режимов работы программного
обеспечения. Подобные настройки также
снижают наглядность взаимодействия
модулей и потому обеспечивают еще худшие
характеристики технологичности
разрабатываемого программного обеспечения
по сравнению с предыдущими типами
связей.

Сцепление
по общей области данных
предполагает,
что модули работают с общей областью
данных. Однако:

• программы,
использующие данный тип сцепления,
очень сложны для понимания при
сопровождении программного обеспечения;

• ошибка
одного модуля, приводящая к изменению
общих данных, может проявиться при
выполнении другого модуля, что существенно
усложняет локализацию ошибок;

• при
ссылке к данным в общей области модули
используют конкретные имена, что
уменьшает гибкость разрабатываемого
программного обеспечения.

Связность
модулей.
Связность
– мера
прочности соединения функциональных
и информационных объектов внутри одного
модуля. Если сцепление характеризует
качество отделения модулей, то связность
характеризует степень взаимосвязи
элементов, реализуемых одним модулем.
Размещение сильно связанных элементов
в одном модуле уменьшает межмодульные
связи и, соответственно, взаимовлияние
модулей. В то же время помещение сильно
связанных элементов в разные модули не
только усиливает межмодульные связи,
но и усложняет понимание их взаимодействия.
Объединение слабо связанных элементов
также уменьшает технологичность модулей,
так как такими элементами сложнее
мысленно манипулировать.

Различают следующие
виды связности (в порядке убывания
уровня):

• функциональную;

• последовательную;

• информационную
(коммуникативную);

• процедурную;

• временную;

• логическую;

• случайную.

При
функциональной
связности
все
объекты модуля предназначены для
выполнения одной функции: операции,
объединяемые для выполнения одной
функции, или данные, связанные с одной
функцией. Модуль, элементы которого
связаны функционально, имеет четко
определенную цель, при его вызове
выполняется одна задача, например,
подпрограмма поиска минимального
элемента массива. Такой модуль имеет
максимальную связность, следствием
которой являются его хорошие технологические
качества: простота тестирования,
модификации и сопровождения. Именно с
этим связано одно из требований
структурной декомпозиции «один модуль
– одна между модулями — библиотеками
ресурсов. Например, если при проектировании
текстового редактора предполагается
функция редактирования, то лучше
организовать модуль – библиотеку
функций редактирования, чем поместить
часть функций в один модуль, а часть в
другой.

При
последовательной
связности
функций
выход одной функции служит исходными
данными для другой функции. Как правило,
такой модуль имеет одну точку входа, т.
е. реализует одну подпрограмму, выполняющую
две функции. Считают, что данные,
используемые последовательными
функциями, также связаны последовательно.
Модуль с последовательной связностью
функций можно разбить на два или более
модулей, как с последовательной, так и
с функциональной связностью. Такой
модуль выполняет несколько функций, и,
следовательно, его технологичность
хуже: сложнее организовать тестирование,
а при выполнении модификации мысленно
приходится разделять функции модуля.

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

Процедурно
связаны
функции
или данные, которые являются частями
одного процесса. Обычно модули с
процедурной связностью функций получают,
если в модуле объединены функции
альтернативных частей программы. При
процедурной связности отдельные элементы
модуля связаны крайне слабо, так как
реализуемые ими действия связаны лишь
общим процессом, следовательно,
технологичность данного вида связи
ниже, чем предыдущего.

Временная
связность
функций
подразумевает, что эти функции выполняются
параллельно или в течение некоторого
периода времени. Временная связность
данных означает, что они используются
в некотором временном интервале.
Например, временную связность имеют
функции, выполняемые при инициализации
некоторого процесса. Отличительной
особенностью временной связности
является то, что действия, реализуемые
такими функциями, обычно могут выполняться
в любом порядке. Содержание модуля с
временной связностью функций имеет
тенденцию меняться: в него могут
включаться новые действия и/или
исключаться старые.

Большая
вероятность модификации функции еще
больше уменьшает показатели технологичности
модулей данного вида по сравнению с
предыдущим.

Логическая
связь
базируется
на объединении данных или функций в
одну логическую группу. В качестве
примера можно привести функции обработки
текстовой информации или данные одного
и того же типа. Модуль с логической
связностью функций часто реализует
альтернативные варианты одной операции,
например, сложение целых чисел и сложение
вещественных чисел. Из такого модуля
всегда будет вызываться одна какая-либо
его часть, при этом вызывающий и вызываемый
модули будут связаны по управлению.
Понять логику работы модулей, содержащих
логически связанные компоненты, как
правило, сложнее, чем модулей, использующих
временную связность, следовательно, их
показатели технологичности еще ниже.

В
том случае, если связь между элементами
мала или отсутствует, считают, что они
имеют случайную
связность
.
Модуль, элементы которого связаны
случайно, имеет самые низкие показатели
технологичности, так как элементы,
объединенные в нем, вообще не связаны.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Работа добавлена на сайт samzan.net: 2016-06-20

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой — мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

СОДЕРЖАНИЕ

стр.

Введение

1.Анализ предметной области разрабатываемого программного продукта

1.1Постановка задачи

1.2 Назначение задачи

1.3 Выбор технологии и среды разработки

1.4 Анализ технических требований и уточнение спецификаций

2. Проектирование структуры и компонентов программного продукта

2.1Разработка  интерфейса пользователя

2.2Разработка структурной схемы программного продукта

2.3 Разработка основных алгоритмов программного продукта

2.4 Отладка и тестирование

2.5 Инструкция пользователю

Заключение

Литература

Приложение 1. Техническое задание

Приложение 2. Текст программы

Приложение 3. Окна работающей программы

Приложение В. Руководство пользователю

Введение

В ходе выполняемой курсовой работы будет разрабатываться игровая программа «Парные картинки», которая и будет являться объектом исследования. Потребуется создать полноценную правильно-функционирующую программу и самостоятельно изучим некоторые процедуры и функции.

Delphi — это комбинация нескольких важнейших технологий:

— Высокопроизводительный компилятор в машинный код;

— Объектно-ориентированная модель компонент;

— Визуальное (а, следовательно, и скоростное) построение приложений из программных прототипов;

— Масштабируемые средства для построения баз данных;

Компилятор, встроенный в Delphi, обеспечивает высокую производительность, необходимую для построения приложений в архитектуре “клиент-сервер”. Этот компилятор в настоящее время является самым быстрым в мире, его скорость компиляции составляет свыше 120 тысяч строк в минуту на компьютере 486DX33. Он предлагает легкость разработки и быстрое время проверки готового программного блока, характерного для языков четвертого поколения (4GL) и в то же время обеспечивает качество кода, характерного для компилятора 3GL. Кроме того, Delphi обеспечивает быструю разработку без необходимости писать вставки на C++ или ручного написания кода (хотя это возможно).

1.Анализ предметной области разрабатываемого программного продукта 1.1Постановка задачи

Разработать программу, реализующую функции тренировки памяти.

Программа должна иметь уровни сложности тренировки, на более сложный нельзя попасть не пройдя предыдущий.

1.2 Назначение задачи

Суть программы состоит в том, что на экран выдается определённое количество парно одинаковых изображений, они открыты на небольшой промежуток времени, после чего закрываются, и пользователю необходимо угадать попарно одинаковые картины за заданное время, если он не успевает этого сделать, то игра возобновится.

Каждое прохождение уровня должно сопровождаться звуковым сигналом

1.3 Выбор технологии и среды разработки

Я выбрал среду разработки Borland Delhi7, так как я думаю что это наиболее благоприятная среда для разработки игр, так же язык программирования Pascal один один из наиболее известных языков программирования, используется для обучения программированию в старших классах и на первых курсах вузов, является базой для ряда Delphi — результат развития языка Турбо Паскаль, который, в свою очередь, развился из язык Паскаль.

Язык Паскаль был создан Никлаусом Виртом в 1968—1969 годах после его участия в работе комитета разработки стандарта языка Алгол-68. Язык назван в честь французского математика, физика, литератора и философа Блеза Паскаля, который создал первую в мире механическую машину, складывающую два числа. Первая публикация Вирта о языке датирована 1970 годом, представляя язык, автор указывал в качестве цели его создания — построение небольшого и эффективного языка, способствующего хорошему стилю программирования, использующему структурное программирование и структурированные данные.

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

Pascal был уникальным в своём роде – он имел самый быстрый компилятор в мире, да и в нем впервые была разработана технология создания платформенно независимых программ, которая нашла широкое применение в таком языке, как Java. Своё имя он получил в честь великого французкого физика Паскаля. Позднее, разработкой Pascal`ей занялась компания Borland, с помощью которой Pascal встал на серийное производство, надо заметить, что кроме Turbo Pascal компанией выпускался Borland Pascal, который выходил в свет несколько позднее, чем Turbo Pascal, но в отличие от него обладал большими способностями, как то различные режимы компиляции программы, более расширенный набор функций. Так, версия за версией было выпущенно семь Turbo и Borland Pascal. С появлением Windows у Pascal появилась новая разновидность – Turbo и Borland Pascal for Windows. Данная программа была не чуть не лучше обыкновенного блокнота, разве что только цифры отображала синим. Но время шло, требования к качеству оформления программ росли, а языки программиравания оставались всё теми же – Dos. И вот, наконец, компанией Microsoft был совершен переворот в области прикладного программирования – ими впервые была создана визуальная система разработки прикладных программ, которую они реализовали в Visual Basic. К новому стандарту стали приобщать все языки программирования, не избежал своей участи и Pascal. В тот момент, когда разработчики Pascal в компании Borland наконец добрались до него – находился он довольно в запущенном состоянии. Было пересмотрено и переработано множество функций, добавлено, а вернее сказать создано, многое. И в итоге внесения оказались столь колоссальными, что разработчики создали, можно сказать, новый язык программирования.

Delphi 7 — это достаточно мощная система, предназначенная для быстрой разработки приложений самого разного характера и назначения, в том числе для работы с базами данных (драйверы dbExpress, DB2 7.2, InterBase 6.5, MySQL, MSSQL) и Интернет.

В Delphi 7 достигнут высокий уровень возможностей и нет избыточных и дублирующих друг друга средств.

Скорость и производительость программиста при создании программ на Delphi достигаются благодаря IDE (Integrated Development Environment — интегрированная среда разработки) в которой они создаются.

Интегрированная среда разработки в Delphi 7 — это пользовательский интерфейс, состоящий из множества окон, перечень которых зависит от настроек программиста и соответственно от выполняемых задачь.

Таким образом разработка приложения в Delphi делиться на 2 основных этапа:

непосредственное создание пользовательского интерфейса

определение функциональности приложения

Пользовательский интерфейс — в данном случае это внешний вид программы (формы), с помощью интерфейса происходит взаимодействие пользователя с приложением.

В Delphi 7 интерфейс создается очень просто — он конструируется элементами управления (компонентами), которые располагаются на форме приложения.

Функциональность создаваемого приложения формируется процедурами, которые выполняются при возникновении событий, например при нажатии на кнопку и т.д.

Таким образом, разработка приложений сводиться к размещению на форме необходимых компонентов и настройки и написания их свойств, возникающих при том или ином событии.

Многие только переходили к Delphi из DOS, многие использовали Borland Pascal for Windows и работали с Windows API напрямую. Объекты еще были в диковинку, и полное разъяснение новых принципов было просто обязательно.

Но и сейчас писать об этом вполне актуально. Конечно, выросло поколение программистов, которые «с молоком матери» впитали новые понятия. Но от понимания объектов до их грамотного использования — дистанция огромного размера. Для создания более или менее сложных приложений нужны навыки объектно-ориентированного дизайна, а для приложений в свою очередь — четкое знание возможностей вашей среды программирования. Поэтому в данной главе мы постараемся акцентировать внимание читателя на применение ООП в среде Delphi 7.

По сравнению с традиционными способами программирования ООП обладает рядом преимуществ. Главное из них заключается в том, что эта концепция в наибольшей степени соответствует внутренней логике функционирования операционной системы (ОС) Windows. Программа, состоящая из отдельных объектов, отлично приспособлена к реагированию на события, происходящие в ОС. К другим преимуществам ООП можно отнести большую надежность кода и возможность повторного использования отработанных объектов.

1.4 Анализ технических требований и уточнение спецификаций

2. Проектирование структуры и компонентов программного продукта

2.1  Разработка  интерфейса пользователя

Интерфейс пользователя , он жепользовательский интерфейс — разновидность интерфейсов, в котором одна сторона представлена человеком (пользователем), другая — машиной/устройством. Представляет собой совокупность средств и методов, при помощи которых пользователь взаимодействует с различными, чаще всего сложными, машинами, устройствами и аппаратурой.

Весьма часто термин применяется по отношению к компьютерным программам, однако под ним может подразумеваться набор средств, методов и правил взаимодействия любой системы, управляемой человеком.

Несколько широко распространённых примеров:

меню на экране телевизора + пульт дистанционного управления;

дисплей электронного аппарата (автомагнитолы, часов) + набор кнопок и переключателей для настройки;

приборная панель (автомобиля, самолёта) + рычаги управления.

Интерфейс двунаправленный (интерактивный) — когда устройство, получив команды от пользователя и исполнив их, выдаёт информацию пользователю наличествующими у неё средствами — визуальными, звуковыми, тактильными и т. п. (приняв которую, пользователь выдаёт устройству последующие команды предоставленными в его распоряжение средствами: кнопки, переключатели, регуляторы, сенсоры, голосом, и т. д.).

Поскольку интерфейс есть совокупность, то есть он состоит из элементов, которые, сами по себе, также могут состоять из элементов (так, экран дисплея может содержать в себе другие окна, которые, в свою очередь, могут содержать панели, кнопки и прочие интерфейсные элементы).

Мой интерфейс очень интуитивен и понятен, для любого  круга лиц , состоящий из 3-х вкладок

  •  Первая вкладка «Новая игра» при нажатии на нее открываются уровни сложности

  •  При нажатии на вторую вкладку «Рекорды» показывает рекорды игроков на три уровня сложности,

  •  Во вкладке  «Справка» есть два пункта :
  1.  Правила
  2.  Опрограмме

Компоненты Delphi используемые в программе

2.2Разработка структурной схемы программного продукта

Компонент TMainMenu

TMainMenu – позволяет поместить главное меню в программу. При помещении TMainMenu на форму это выглядит, как просто иконка . Иконки данного типа называют невидимым (невизуальным) компонентом, поскольку они невидимы во время выполнения программы. 

Создание меню включает три шага:

  1.  помещение TMainMenu на форму;
  2.  вызов Menu Designer 
  3.  определение пунктов меню в Menu Designer.

Этот компонент доступен из модуля MENUS, и находится на странице Палитры компонентов Standard.

Этот компонент представляет главное меню формы и наследует все методы и свойства TMenu. Особенность его в том, что в нем реализован сложный механизм объединения меню. Это необходимо по следующим причинам:

  1.  Если в приложении имеется несколько форм со своими меню, то для упрощения работы целесообразно соединить их в одно и управлять меню из главной формы.
  2.  Объединение меню нужно при работе с интерфейсом MDI и его подокнами.
  3.  Механизм объединения меню используется серверами OLE, запускаемыми по месту нахождения объекта OLE. Загружаясь, сервер дописывает осуществляемые им операции к меню другого приложения.

Для того чтобы реализовать объединение меню, у тех форм, меню которых будут присоединены к главному, необходимо установить в True свойство:

(Pb) property AutoMerge: Boolean;

При этом у главного меню оно должно оставаться равным False, иначе главное меню будет вообще невидимым. Объединение будет происходить автоматически при активизации новых форм или серверов OLE. Кроме автоматического режима, объединение меню можно выполнить при вызове метода:

procedure Merge(Menu: TMainMenu);

1.2 Компонент TLabel

 

TLabel – служит для отображения текста на экране. Можно изменить шрифт и цвет метки, если дважды щелкнуть на свойство Font в Инспекторе Объектов. Видно, что это легко сделать и во время выполнения программы, написав всего одну строчку кода.

Этот компонент доступен из модуля STDCTRLS, и находится на странице Палитры компонентов Standard.

Компонент представляет собой статический текст. С помощью этого компонента на рабочей поверхности формы можно отобразить информацию, сделать пояснения и показать названия других компонентов. Но он имеет и другую важную функцию – если в составе текста TLabel есть символы-акселераторы, информация об их нажатии может передаваться от TLabel другому элементу управления.

1.3 Компонент TPanel

TPanel – управляющий, похожий на TGroupBox, используется в декоративных целях. Чтобы использовать TPanel, просто поместите его на форму и затем положите другие компоненты на него. Теперь при перемещении TPanel будут передвигаться и эти компоненты. TPanel используется также для создания панели инструментов и окна статуса.

Этот компонент доступен из модуля EXTCTRLS, и находится на странице Палитры компонентов Standard.

Этот компонент — является несущей конструкцией для размещения других элементов управления. В отличие от простой рамки (TBevel) панель сама является оконным элементом управления и родителем для всех размещенных на ней компонентов. Часто ее используют для создания панелей инструментов, строк состояния и т. п.

На границах панели размещаются две специальные окаймляющие рамки (bevels): BevelInner и BevelOuter. При помощи комбинации белого и серого цветов они имитируют трёхмерность – приподнятость (bvRaised) или утопленность (bvLowered). Также рамки могут быть невидимыми (bvNone).

Выравнивание текста заголовка панели определяется при помощи свойства:

(Pb) property Alignment: TAlignment;

1.4 Компонент TImage

TImage – отображает графическое изображение на форме. Воспринимает форматы BMP, ICO, WMF. Если картинку подключить во время дизайна программы, то она прикомпилируется к EXE файлу.

Этот компонент доступен из модуля EXTCTRLS, и находится на странице Палитры компонентов Additional.

Этот компонент служит надстройкой над классом TPicture и замыкает всю иерархию графических объектов VCL. Он предназначен для показа на форме изображения: битовой карты (TBitmap), метафайла (TMetafile), значка (TIcon).

1.5 Компонент TImageList

TImageList представляет собой контейнер для хранения множества рисунков одинакового размера. Он может быть полезен при программном создании набора инструментальных кнопок, секций управляющего заголовка, при разработке программ, использующих анимационные эффекты, и вообще там, где требуется индексированный доступ к изображениям. Воспринимает форматы BMP, ICO.

При помещении TImageList на форму это выглядит, как просто иконка. Иконки данного типа называют невидимым (невизуальным) компонентом, поскольку они невидимы во время выполнения программы. Этот компонент находится на странице Палитры компонентов Win 32.

1.6 Компонент TTimer

TTimer (таймер) служит для отсчета интервалов реального времени. Его свойство interval определяет интервал времени в миллисекундах, который должен пройти от включения таймера до наступления события onTimer. Таймер включается при установке значения True в его свойство Enabled. Раз включенный таймер все время будет возбуждать события onTimer до тех пор, пока его свойство Enabled не примет значения False.

2.3 Разработка основных алгоритмов программного продукта

2.4 отладка и тестирование

при отлатке программы ошибок не обнаружено

  1.  инсткурция пользователю

Описание пользовательского интерфейса

  •  Файл → Новая игра – начало новой игры.
  •  Файл → Выход – выход из программы.
  •  Справка → О программе – Вывод дополнительной информации о программе и о её создателе.

Заключение

В результате выполнения данной курсовой работы мной была разработана игровая программа под названием “Крестики-нолики”. Было проведено исследование компонентов программной среды Borland Delphi 6.0, которые использовались при создании программы, использовалось множество процедур и функций. Была использована и изучена процедура блокировки кнопки “максимизации”.

При создании программы использовались следующие компоненты: TMainMenu, TLabel, TPanel, TImage, TImageList, TTimer.

Также  использовались и другие программы:

  •  Adobe Photoshop CS v8.0 – использовался для создания дополнительных надписей на картинке для формы “О программе”;
  •  Restorator 2005 v3.50 build 1442 – использовался для изменения иконки EXE файла игры;
  •  Microsoft Paint v5.1 – использовался для создания рисунков к данному курсовому проекту

Изначально я подумывал сделать данную программу с искусственным интеллектом, т.е. сделать возможной игру человека с компьютером, но потом передумал, т.к. компьютер ходил бы на бум, а разработка более серьёзного искусственного интеллекта пока не в моих силах.

Список используемой литературы

  1.  Михаил Фленов «Библия Delphi»  БХВ-Петербург,  2004г. 880с.
  2.  Интернет портал http://delphiworld.narod.ru
  3.  Интернет портал http://delphikingdown.ru

Приложение 1

Исходный текст

unit Unit1;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, Menus, unit2, ExtCtrls, ComCtrls, unit3, StdCtrls, ImgList;

type

 TForm1 = class(TForm)

   MainMenu1: TMainMenu;

   FileMenuItem: TMenuItem;

   NewMenuItem: TMenuItem;

   N3: TMenuItem;

   N4: TMenuItem;

   InformationMenuItem: TMenuItem;

   AboutMenuItem: TMenuItem;

   Panel1: TPanel;

   Panel2: TPanel;

   Panel3: TPanel;

   Panel4: TPanel;

   Panel5: TPanel;

   Panel6: TPanel;

   Panel7: TPanel;

   Panel8: TPanel;

   Panel9: TPanel;

   Panel10: TPanel;

   Timer1: TTimer;

   ImageList1: TImageList;

   procedure AboutMenuItemClick(Sender: TObject);

   procedure Panel2Click(Sender: TObject);

   procedure Panel5Click(Sender: TObject);

   procedure Panel8Click(Sender: TObject);

   procedure Panel3Click(Sender: TObject);

   procedure Panel6Click(Sender: TObject);

   procedure Panel9Click(Sender: TObject);

   procedure Panel4Click(Sender: TObject);

   procedure Panel7Click(Sender: TObject);

   procedure Panel10Click(Sender: TObject);

   procedure Timer1Timer(Sender: TObject);

   procedure NewMenuItemClick(Sender: TObject);

   procedure FormCreate(Sender: TObject);

   procedure N4Click(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Form1: TForm1;

Implementation

{$R *.dfm}

procedure clean;                                      // Процедура общего сброса («Новая игра»)

begin

Form1.Timer1.Enabled:=false;              // Для надежности выключаем таймер

Form1.Panel2.BevelInner:=bvNone;     // Меняем стиль панели на начальный

Form1.Panel2.Caption:=»;                     // Убираем заголовок панели

 Form1.Panel3.BevelInner:=bvNone;

Form1.Panel3.Caption:=»;

Form1.Panel4.BevelInner:=bvNone;

Form1.Panel4.Caption:=»;

Form1.Panel5.BevelInner:=bvNone;

Form1.Panel5.Caption:=»;

Form1.Panel6.BevelInner:=bvNone;

Form1.Panel6.Caption:=»;

Form1.Panel7.BevelInner:=bvNone;

Form1.Panel7.Caption:=»;

Form1.Panel8.BevelInner:=bvNone;

Form1.Panel8.Caption:=»;

Form1.Panel9.BevelInner:=bvNone;

Form1.Panel9.Caption:=»;

Form1.Panel10.BevelInner:=bvNone;

Form1.Panel10.Caption:=»;

Form1.Tag:=0;

Form1.Timer1.Enabled:=true;               // Возобновляем работу таймера

end;

procedure TForm1.AboutMenuItemClick(Sender: TObject);

begin

Form2.ShowModal;                              // Вызываем окно «О программе»

end;

procedure TForm1.Panel2Click(Sender: TObject);

begin

if Panel2.Caption<>» then exit;            // Проверка на заголовок панели (анти-мухлеж)

Panel2.BevelInner:=bvLowered;          // Присваиваем стиль при нажатии на панель

if Form1.Tag=0

 then                                                      // Меняем tag формы (для чередования X и O)

  begin

   Panel2.Caption:=’X’;                         // если таг=0 тогда вписываем X

   Form1.Tag:=1;

  end

 else

  begin

   Panel2.Caption:=’O’;                         // если таг=1 тогда вписываем O

   Form1.Tag:=0;

  end;

end;

procedure TForm1.Panel5Click(Sender: TObject);

begin

if Panel5.Caption<>» then exit;

Panel5.BevelInner:=bvLowered;

if Form1.Tag=0

 then

  begin

   Panel5.Caption:=’X’;

   Form1.Tag:=1;

  end

 else

  begin

   Panel5.Caption:=’O’;

   Form1.Tag:=0;

  end;

end;

procedure TForm1.Panel8Click(Sender: TObject);

begin

if Panel8.Caption<>» then exit;

Panel8.BevelInner:=bvLowered;

if Form1.Tag=0

 then

  begin

   Panel8.Caption:=’X’;

   Form1.Tag:=1;

  end

 else

  begin

   Panel8.Caption:=’O’;

   Form1.Tag:=0;

  end;

end;

procedure TForm1.Panel3Click(Sender: TObject);

begin

if Panel3.Caption<>» then exit;

Panel3.BevelInner:=bvLowered;

if form1.Tag=0

 then

  begin

   Panel3.Caption:=’X’;

   Form1.Tag:=1;

  end

 else

  begin

   Panel3.Caption:=’O’;

   Form1.Tag:=0;

  end;

end;

procedure TForm1.Panel6Click(Sender: TObject);

begin

if Panel6.Caption<>» then exit;

Panel6.BevelInner:=bvLowered;

if form1.Tag=0

 then

  begin

   Panel6.Caption:=’X’;

   Form1.Tag:=1;

  end

 else

  begin

   Panel6.Caption:=’O’;

   Form1.Tag:=0;

  end;

end;

procedure TForm1.Panel9Click(Sender: TObject);

begin

if Panel9.Caption<>» then exit;

Panel9.BevelInner:=bvLowered;

if form1.Tag=0

 then

  begin

   Panel9.Caption:=’X’;

   Form1.Tag:=1;

  end

 else

  begin

   Panel9.Caption:=’O’;

   Form1.Tag:=0;

  end;

end;

procedure TForm1.Panel4Click(Sender: TObject);

begin

if Panel4.Caption<>» then exit;

Panel4.BevelInner:=bvLowered;

if Form1.Tag=0

 then

  begin

   Panel4.Caption:=’X’;

   Form1.Tag:=1;

  end

 else

  begin

   Panel4.Caption:=’O’;

   Form1.Tag:=0;

  end;

end;

procedure TForm1.Panel7Click(Sender: TObject);

begin

if Panel7.Caption<>» then exit;

Panel7.BevelInner:=bvLowered;

if Form1.Tag=0

 then

  begin

   Panel7.Caption:=’X’;

   Form1.Tag:=1;

  end

 else

  begin

   Panel7.Caption:=’O’;

   Form1.Tag:=0;

  end;

end;

procedure TForm1.Panel10Click(Sender: TObject);

begin

if Panel10.Caption<>» then exit;

Panel10.BevelInner:=bvLowered;

if Form1.Tag=0

 then

  begin

   Panel10.Caption:=’X’;

   Form1.Tag:=1;

  end

 else

  begin

   Panel10.Caption:=’O’;

   Form1.Tag:=0;

  end;

end;

procedure TForm1.Timer1Timer(Sender: TObject);    // Процедура проверки на выигрыш;

begin

try                                                                                 // защита от непредвиденных ошибок

 if (Panel2.BevelInner=bvLowered) and (Panel4.BevelInner=bvLowered) and (Panel3.BevelInner=bvLowered) then

                                                                           // Если панели нажаты, то проверяем заголовки

 if (Panel2.Caption=Panel3.Caption) and (Panel2.Caption=Panel4.Caption)

  then                                           

   begin

    Form3.Label1.Caption:=Form1.Panel2.Caption;    // Если выигрышная комбинация то присваиваем Х или О в Лейбл формы поздравления

    Form3.ShowModal;                                                 // Открываем окно поздравления «:-)»

    clean;                                                                        // Очистка игрового поля                                                         

   end;

 if (Panel7.BevelInner=bvLowered) and (Panel5.BevelInner=bvLowered) and (Panel6.BevelInner=bvLowered) then

 if (Panel5.Caption=Panel6.Caption) and (Panel5.Caption=Panel7.Caption)

  then

   begin

    Form3.Label1.Caption:=Form1.Panel5.Caption;

    Form3.ShowModal;

    clean;

   end;

 if (Panel9.BevelInner=bvLowered) and (Panel10.BevelInner=bvLowered) and (Panel8.BevelInner=bvLowered) then

 if (Panel8.Caption=Panel9.Caption) and (Panel8.Caption=Panel10.Caption)

  then

   begin

    Form3.Label1.Caption:=Form1.Panel10.Caption;

    Form3.ShowModal;

    clean;

   end;

 if (Panel5.BevelInner=bvLowered) and (Panel2.BevelInner=bvLowered) and (Panel8.BevelInner=bvLowered) then

 if (Panel2.Caption=Panel5.Caption) and (Panel2.Caption=Panel8.Caption)

  then

   begin

    Form3.Label1.Caption:=Form1.Panel2.Caption;

    Form3.ShowModal;

    clean;

   end;

 if (Panel9.BevelInner=bvLowered) and (Panel3.BevelInner=bvLowered) and (Panel6.BevelInner=bvLowered) then

 if (Panel6.Caption=Panel3.Caption) and (Panel6.Caption=Panel9.Caption)

  then

   begin

    Form3.Label1.Caption:=Form1.Panel3.Caption;

    Form3.ShowModal;

    clean;

   end;

 if (Panel4.BevelInner=bvLowered) and (Panel7.BevelInner=bvLowered) and (Panel10.BevelInner=bvLowered) then

 if (Panel4.Caption=Panel7.Caption) and (Panel10.Caption=Panel4.Caption)

  then

   begin

    Form3.Label1.Caption:=Form1.Panel4.Caption;

    Form3.ShowModal;

    clean;

   end;

 if (Panel6.BevelInner=bvLowered) and (Panel2.BevelInner=bvLowered) and (Panel10.BevelInner=bvLowered) then

 if (Panel2.Caption=Panel6.Caption) and (Panel2.Caption=Panel10.Caption)

  then

   begin

    Form3.Label1.Caption:=Form1.Panel2.Caption;

    Form3.ShowModal;

    clean;

   end;

 if (Panel6.BevelInner=bvLowered) and (Panel8.BevelInner=bvLowered) and (Panel4.BevelInner=bvLowered) then

 if (Panel4.Caption=Panel6.Caption) and (Panel8.Caption=Panel4.Caption)

  then

   begin

    Form3.Label1.Caption:=Form1.Panel4.Caption;

    Form3.ShowModal;

    clean;

   end;

except;

end;

if (Panel2.BevelInner=bvLowered) and (Panel3.BevelInner=bvLowered) and (Panel4.BevelInner=bvLowered) and (Panel5.BevelInner=bvLowered) and (Panel6.BevelInner=bvLowered) and (Panel7.BevelInner=bvLowered) and (Panel8.BevelInner=bvLowered) and (Panel9.BevelInner=bvLowered) and (Panel10.BevelInner=bvLowered)

 then

  begin

   Form1.Timer1.Enabled:=False;

   ShowMessage (‘Ничья, попробуйте ещё раз!’);

   clean;

  end;

end;

procedure TForm1.NewMenuItemClick(Sender: TObject);

begin

clean;                                                            // Очистка игрового поля для новой игры

end;

procedure TForm1.FormCreate(Sender: TObject);

 var

 l:DWORD;                                                  // Процедура блокировки кнопки «Развернуть»

begin

l:=GetWindowLong(Self.Handle,GWL_STYLE);

l:=l and not(WS_MAXIMIZEBOX);

l:=SetWindowLong(Self.Handle,GWL_STYLE,l);

end;

procedure TForm1.N4Click(Sender: TObject);

begin

Close;                                                           // Выход из программы

end;

end.

unit Unit2;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, StdCtrls, jpeg, ExtCtrls;

type

 TForm2 = class(TForm)

   Image1: TImage;

   Label1: TLabel;

   Label3: TLabel;

   Label2: TLabel;

   Label4: TLabel;

   procedure Image1Click(Sender: TObject);

   procedure Label1Click(Sender: TObject);

   procedure Label2Click(Sender: TObject);

   procedure Label3Click(Sender: TObject);

   procedure Label4Click(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Form2: TForm2;

Implementation

{$R *.dfm}

procedure TForm2.Image1Click(Sender: TObject);

begin

Close;                                                                    // Закрытие окна при нажатии на него

end;

procedure TForm2.Label1Click(Sender: TObject);

begin

Close;

end;

procedure TForm2.Label2Click(Sender: TObject);

begin

Close;

end;

procedure TForm2.Label3Click(Sender: TObject);

begin

Close;

end;

procedure TForm2.Label4Click(Sender: TObject);

begin

Close;

end;

end.

unit Unit3;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, StdCtrls, ExtCtrls, jpeg;

type

 TForm3 = class(TForm)

   Image1: TImage;

   Label3: TLabel;

   Label2: TLabel;

   Label1: TLabel;

   procedure FormShow(Sender: TObject);

   procedure Image1Click(Sender: TObject);

   procedure Label1Click(Sender: TObject);

   procedure Label2Click(Sender: TObject);

   procedure Label3Click(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Form3: TForm3;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm3.FormShow(Sender: TObject);

begin

Form1.Timer1.Enabled:=False;                                        // Выключаем таймер

end;

procedure TForm3.Image1Click(Sender: TObject);

begin

Close;                                                                                // Закрытие окна при нажатии на него

end;

procedure TForm3.Label1Click(Sender: TObject);

begin

Close;

end;

procedure TForm3.Label2Click(Sender: TObject);

begin

Close;

end;

procedure TForm3.Label3Click(Sender: TObject);

begin

Close;

end;

end.

Приложение 2

Блок схема

                                                                                                             нет

                                                                                да

                                                                                                 нет

                                                                                да

PAGE  16

Понравилась статья? Поделить с друзьями:

Другие крутые статьи на нашем сайте:

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии