Главная страница
Навигация по странице:

  • Сибирский государственный университет науки и технологий имени академика М.Ф. Решетнёва

  • Цель работы

  • Масштабируемость программного продукта

  • Оценка программного обеспечения

  • Индекс удобства поддержки

  • Сложность организации циклов

  • Эффективность программного продукта для метода Петрова-Соколицина

  • Отчет Ластовка А.С.. Лабораторная работа "Программная реализация алгоритма Джонсона и алгоритма ПетроваСоколицина" студент группы


    Скачать 269.94 Kb.
    НазваниеЛабораторная работа "Программная реализация алгоритма Джонсона и алгоритма ПетроваСоколицина" студент группы
    АнкорОтчет Ластовка А.С..docx
    Дата01.03.2023
    Размер269.94 Kb.
    Формат файлаdocx
    Имя файлаОтчет Ластовка А.С..docx
    ТипЛабораторная работа
    #962075

    МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

    Федеральное государственное бюджетное образовательное учреждение

    высшего образования

    "Сибирский государственный университет науки и технологий

    имени академика М.Ф. Решетнёва"

    ЛАБОРАТОРНАЯ РАБОТА

    "Программная реализация алгоритма Джонсона и алгоритма Петрова-Соколицина"

    Выполнил: студент группы

    дневной формы обучения

    Проверила: Носкова Е.Е.

    Красноярск 2020

    Цель работы: сделать программную реализацию алгоритма Джонсона и алгоритма Петрова-Соколицина. Выполнить построение диаграммы Ганта.

    Описание работы

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

    Алгоритмическая часть

    Алгоритм работы приложения для Джонсона представлен на диаграмме активности:



    Для Петрова-Соколицина:



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

    Диаграмма последовательности для Петрова-Соколицина:



    Диаграмма последовательности для Джонсона:



    На диаграмме прецедентов можно ознакомиться с возможными действиями пользователя.

    Диаграмма прецедентов для алгоритма Джонсона:



    Диаграмма прецедентов для алгоритма Петрова-Соколицина:



    Программная реализация

    Windows Forms – интерфейс программирования приложений (API), отвечающий за графический интерфейс пользователя и являющийся частью Microsoft .NET Framework. Данный интерфейс упрощает доступ к элементам интерфейса Microsoft Windows за счет создания обёртки для существующего Win32 API в управляемом коде. Причём управляемый код — классы, реализующие API для Windows Forms, не зависят от языка разработки. То есть программист одинаково может использовать Windows Forms как при написании ПО на C#, С++, так и на VB.Net, J# и др.

    Windows Presentation Foundation – аналог WinForms, система для построения клиентских приложений Windows с визуально привлекательными возможностями взаимодействия с пользователем, графическая (презентационная) подсистема в составе .NET Framework, использующая язык XAML. В основе WPF лежит векторная система визуализации, не зависящая от разрешения устройства вывода и созданная с учётом возможностей современного графического оборудования. WPF предоставляет средства для создания визуального интерфейса, включая язык XAML (eXtensible Application Markup Language), элементы управления, привязку данных, макеты, двухмерную и трёхмерную графику, анимацию, стили, шаблоны, документы, текст, мультимедиа и оформление.

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

    Но это не значит, что стоит забыть о технологии WinForms и все свои проекты переводить на WPF. Microsoft не сообщала о прекращение поддержки WinForms. Кроме того, у нее имеется большая история развития, а, следовательно, под неё написано множество готовых решений. Проекты, в которых пользовательский интерфейс стоит не на первом месте, могут быть написаны и на WinForms.

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

    Программа с алгоритмом Петрова-Соколицина имеет схожую структуру.

    Масштабируемость программного продукта

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

    Для того, чтобы добавить новый алгоритм решения в задачу, необходимо:

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

    2. в любом из программ, добавить этот класс в проект;

    3. на форме, в обработчике при нажатии на кнопку «Выполнение алгоритма» создать объект добавленного класса и передать в него количество деталей, станков и исходные данные.

    Построение графика

    В качестве библиотеки для работы с графиками была выбрана базовая библиотека Windows System.Chart. Так как при сравнении со сторонней библиотекой DevExpress, были выявлены следующие плюсы использования Windows System.Chart: бесплатная и встроенная в Visual Studio библиотека, простота использования.
    Оценка программного обеспечения

    Оценка программного продукта реализации алгоритма Джонсона. Результаты метрики, которые вычисляет Visual Studio:



    Оценка программного продукта реализации алгоритма Петрова-Соколицина. Результаты метрики, которые вычисляет Visual Studio:



    Индекс удобства поддержки – вычисляет значение индекса от 0 до 100, представляющий относительной простоты обслуживания кода. Чем больше значение этой метрики, тем легче поддерживать код. В моем случае самый низкий индекс удобства поддержки: для метода Джонсона класс Form() имеет значение 43, а для метода Петрова-Соколицина значение 53 для класса Form(). Такой низкий показатель связан с тем, что данный класс генерируется самой Visaul Studio, поэтому сложность кода там значительно выше.

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

    Глубина наследования – указывает количество различных классов, которые наследуют друг от друга, вплоть до базового класса. Глубина наследования аналогична взаимосвязанности классов в том, что изменение базового класса может повлиять на любые из его унаследованных классов. Чем выше это число, тем более глубокое наследование и тем выше вероятность внесения изменений в базовый класс, что приводит к критическому изменению. В моем случае для классов форм, индекс имеет значение 7, так как он наследуется от множества базовых классов, остальные классы не превышают значение 3, так как при создании классов они берут базовый функционал от базовых библиотек.

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

    Строки исходного кода – указывает точное число строк исходного кода, имеющихся в исходном файле, включая пустые строки. Этот показатель показывает не точное количество строк в вашем файле, так как подсчет основан на IL-коде.

    Эффективность программного продукта для метода Петрова-Соколицина

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




    Random(0,20)

    Random(30,50)

    Random(60-80)

    Лучшее время

    127

    506

    916

    № лучшей очереди

    1

    3

    2


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

    Вывод: сделал программную реализацию алгоритма Джонсона и алгоритма Петрова-Соколицина, а также построение диаграммы Ганта.


    написать администратору сайта