Реализация жизненного цикла программного обеспечения
Изучение основных понятий, методов и моделей программной инженерии, составляющих процесса разработки программного обеспечения. Разработка функциональной структуры программного обеспечения. Разработка программного кода. Анализ программного продукта.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 20.09.2016 |
Размер файла | 1,7 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Федеральное агентство связи
Федеральное государственное образовательное бюджетное учреждение
высшего профессионального образования
«Сибирский государственный университет телекоммуникаций и информатики»
(ФГОБУ ВПО «СибГУТИ»)
Кафедра математического моделирования бизнес-процессов
ИНДИВИДУАЛЬНОЕ ЗАДАНИЕ
По дисциплине «Программная инженерия»
Тема: Реализация жизненного цикла программного обеспечения
Новосибирск - 2015
Реферат
46 стр., 22 рис., 8 табл., 5 прил.
В данной работе рассматриваются и применяются на практике методы, способы и инструментальные средства для анализа предметной области (Охранная служба), постановки задачи, формулирования требований к программе, компилятивной сборки и тестирования специального программного обеспечения.
Целью работы является изучение основных понятий, методов и моделей программной инженерии, составляющие процесса разработки программного обеспечения, управление требованиями к программной системе, конфигурационное управление программным продуктом, методы, способы и порядок тестирования программного обеспечения, управление версиями и сборками.
На практике реализуются: постановка задачи на создание программного продукта, техническое задание на создание программного продукта, проектирование функциональной структуры программного продукта, разработка программного кода, рефакторинг, сборка и анализ программного продукта, управление качеством программного продукта
Работа может быть использована для дальнейших разработок по выполнению работ.
ТАБЛИЦА, СУЩНОСТЬ, ПРОГРАММНЫЙ ПРОДУКТ, РЕФАКТОРИНГ, ОХРАННАЯ СЛУЖБА, ЗАДАЧА, ТЕСТИРОВАНИЕ, ФУНКЦИОНАЛЬНЫЕ ТРЕБОВАНИЯ, НЕФУНКЦИОНАЛЬНЫЕ ТРЕБОВАНИЯ, IDEF0, ЧЕРНЫЙ ЯЩИК, MS VISUAL STUDIO, LIFO, СОРТИРОВКИ
Обозначения и сокращения
ПО - программное обеспечение
MS - Microsoft
VS - VisualStudio
ФИО - Фамилия Имя Отчество
LIFO - LastInFirstOut(последний пришел, первый вышел)
Введение
Программная инженерия (промышленное программирование) обычно ассоциируется с разработкой больших и сложных программ коллективами разработчиков. Становление и развитие этой области деятельности было вызвано рядом проблем, связанных с высокой стоимостью программного обеспечения, сложностью его создания, необходимостью управления и прогнозирования процессов разработки.
Дисциплина «Программная инженерия» рассматривает методы и инструментальные средства программной инженерии для решения задач создания качественного программного обеспечения в разных сферах деятельности человека с применением современных информационных и компьютерных технологий.
Программа данного курса позволяет научиться создавать программы от начала до конца, независимо от темы. Для начала будет составлено общее описание программы, далее будет написана сама программа и протестирована различными способами и на различных платформах.
Данная тема актуальна в современном мире, потому что большинство компаний переходит на электронные системы и всё больше заказчиков в этой области.
Задание на разработку ИС
При выполнении лабораторных работ была установлена системная программа для реализации ПО, а именно MicrosoftVisualStudio 2015 Community, в которой использовался язык C#.
Было создано программное обеспечение с графическим интерфейсом для охранной службы, с помощью которого можно было вводить данные о постах и охранниках, контролировать время работы охранников, контролировать замечания охранникам. Также имеется возможность вывода статистики работы каждого из охранников по его номеру. Данные можно отсортировать как по ФИО охранников так и по возрасту.
Данное ПО было протестировано различными способами, все ошибки исправлены и прокомментированы, было посчитано среднее время работы программы на различных платформах.
Вариант 2.
№ вар. |
Предметная область |
Вид списка |
Методы сортировки |
|
2. |
Ювелирный магазин: названия изделий, комитенты (кто сдал на комиссию), журнал сдачи изделий на продажу, журнал покупки изделий. |
Очередь FIFO |
2,12,20 |
Сортировки:
2 |
Сортировка пузырьком |
|
12 |
Сортировка слиянием |
|
20 |
Сортировка извлечением |
Основная часть
Лабораторная работа №1
Тема: Постановка задачи на создание программного продукта
Цель: изучение и системное представление бизнес-процессов, подлежащих программированию, приобретение навыков системного анализа объектов и процессов реального мира на предмет организации программного управления.
Ход работы
В рассматриваемом бизнес-процессе участвуют следующие субъекты: названия изделий, комитенты, журнал сдачи изделий на продажу, журнал покупки изделий.
Цель процесса: Учет продажи ювелирных изделий, сданных на комиссию и классифицированных по названиям.
Перед продажей, ювелирные изделия сдаются на комиссию, составляется список сданных изделий на продажу, а также список проданных изделий, после их продажи.
Вся полученная информация хранится у главного сотрудника фирмы, который формирует отчетность.
Из Базы Данных можно получить такую информацию, как:
1. Количество изделий (название, дата сдачи, дата выдачи, дата продажи)
2. Провести сортировку по дате сдачи на комиссию и выдачи на продажу.
Бизнес-процесс можно разбить на следующие подзадачи, для наглядности была построена организационная диаграмма:
1) Сдача ювелирных изделий на комиссию
2) Создание журнала учета с названиями изделий
3) Учет изделий сданных на продажу в журнале
4) Учет проданных изделий в журнале
Описание:
Сдача ювелирных изделий на комиссию: Прием товаров на комиссию оформляется путём составления документа (договор комиссии, квитанция, накладная и другие виды), подписываемого комиссионером и комитентом.
Создание журнала учета с названиями изделий: Классификация изделий по названию, весу, металлу.
Учет изделий сданных на продажу в журнале: Список изделий, сданных на комиссию и сданных на продажу.
Учет проданных изделий в журнале: Учет проданных изделий из имеющихся, сданных.
При выполнении бизнес-процесса выполняются следующие операции:
· Сдача юв.изделий на комиссию
· Составление договора между комитетом и комиссионером
· Создание журнала учета
· Классификация изделий по характеристикам
· Учет изделий сданных на продажу
· Учет проданных изделий
· Выбор в консоли необходимых параметров сортировки
· Выбор периода
· Вывод информации на экран
Написание программного обеспечения позволит оптимизировать работу дежурного, принимающего информацию об изделиях и упростит их учет. С помощью автоматизации можно сократить время на ввод повторяющейся информации, а так же сократить время на поиск необходимых данных. Упрощение работы с отчетностью.
Вывод: Создание ПО оптимизирует рабочий день сотрудников, позволит экономить время на формировании отчетности и тратить большее количество времени и сил на деятельность по специальности. Сокращение времени , требуемого для формирования отчетности и статистики.
Лабораторная работа №2
Техническое задание на создание программного обеспечения
Цель: Освоение методики предварительного анализа разрабатываемой программы; освоение задач формулирования функциональных и нефункциональных требований к программной реализации отдельных задач и к программе в целом; выработка навыков разработки технического задания.
Ход работы
1. Назначение и цель программы:
Данная программа автоматизирует хранение данных о сдаче изделий на продажу, их покупке, а также изменения, если требуются, и сортировку.
При создании ПО мы учитываем основные цели ради которых она создавалась. Автоматизация сортировки, упрощение заполнение данных, которые поступают в консоль. Также возможность получения нужной информации/отчета по предприятию на данный момент. Это позволит упростить ввод данных и сортировку по выбранным признакам, сократит время поиска необходимой информации в БД.
Данная программа позволит получить данные с любого компьютера на котором будет установлено ПО включая БД отдельным файлом.
Оценкой качества ПО будет служить отсутствие сбоев поставки информации, в любое время и с любого компьютера. Пользователь сможет получить нужную ему информацию, регулярное обновление статистических данных. В заданный момент времени пользователь сможет видеть обновленную статистику/отчет, т.е. в момент внесения в БД при сохранении.
2. Структура программы и состав функциональных задач:
В ходе разработки программы необходимо реализовать ряд задач:
1) Создание в БД нового объекта (Вид запроса (сдача/покупка) - ФИО комитента - Номер телефона - Вид изделия - Характеристика)
2) Заполнение значений атрибутов объекта
3) Сохранение значений (формирование журнала об изделиях)
5) Формирование статистики о работе (продаже изделий).
6) Чек/накладная.
7) Доступ к БД с любого ПК на котором установлено ПО
3. Функциональные требования к программе:
3.1 Требования к задаче «Создание в базе данных нового объекта
В консоли программы выбрать из списка «Создать запись». Требуется прописать первичную информацию через пробел:
· ФИО комитента (полностью). Поле не может быть пустым, допустимые символы -буквы
· Вид запроса (сдача/покупка). Поле не может быть пустым, допустимые символы -буквы
· Номер телефона - Поле не может быть пустым, допустимые символы -цифры
· Вид изделия. Требования: поле не может оставаться пустым, допустимые символы - буквы
· Характеристика изделия - Поле не может быть пустым, допустимые символы - буквы, цифры
· Дата - Поле не может быть пустым, допустимые символы -цифры
Пример ввода:
Сдача
Быков В.Е
Серьги
Золото 585
12.10.13
После заполнение строки в консоли при нажатии на ENTER создается запись о сданном изделии. Источником назначения и записи служит сотрудник юв.магазина.
3.2 Требования к задаче «Заполнение значений заранее заданных атрибутов объекта»
После выполнения предыдущего пункта в базе данных (стеке) появляется запись
3.3 Редактирование ранее созданной записи и сохранение в БД новой информации.
После создания новой записи есть возможность вернуться к ней, путем выбора из списка. Сохранение данных осуществляется путем выбора пункта «5.Сохранение БД» в консоли, и вводе названия файла, после чего запись заносится в файл БД
3.4Требования к задаче «Составление результатов в журнале по заданным параметрам»
В консоли программы прописывается пункт «4.Статистическая обработка» При выборе данного пункта пользователь попадает в подпункты по параметрам:
· Дата
· Вид изделия
· Характеристика
При выборе определённого подпункта формируется отчет и выводится в консоль
3.5 Требования к задаче «Формирование отчета по всем записям»
Для реализаций этой задачи требуется написать пункт «2. Отчет по всем записям из файла» в главном корне консоли этой программы.
3.6 Требование к задаче «Доступ к БД с любого ПК на котором установлено ПО»
Данное требование обязательно для исполнения. Для того что бы оно работало надо перенести ПО и БД файл на другой ПК.
Разрабатываемая программа должна базироваться на ОС Windows 7/8/8.1/10.
Средства разработки, дополнительные программные утилиты остаются на выбор разработчиков. Ограничений нет. Так же вид сортировок используется без стека с массивом данных.Используется язык программирования С#
4. Нефункциональные требования
Из нефункциональных свойств необходимо выделить:
· Удобство интерфейса - использование графического вида так и консольного не повлияет на работу специалиста на ПО для данного предприятия
· Безопасность данных - не является обязательной функцией
· Обязательный язык программы - русский
· Хранение данных должно осуществляется до тех пока это необходимо
Лабораторная работа №3
Тема: Разработка функциональной структуры программного обеспечения
Ход работы
Построим функциональную модель разрабатываемого ПО в виде контекстной диаграммы в нотации IDEF0 при помощи пакета BPWin.
Рисунок 1. Диаграмма IDEF0
Рисунок 2. 1-ая Декомпозиция
Рисунок 3. Этапы процесса А1
Рисунок 4. Этапы процесса А2
Рисунок 5. Этапы процесса А3
Описание стрелок диаграмм в виде таблиц
Таблица 3.1 Описание стрелок диаграммы А0
Наименование стрелки |
Тип стрелки |
Источник стрелки |
Приемник стрелки |
|
Список изделий |
Input |
Внешняя граница |
Специальное ПО для автоматизации учета контроля на предприятии |
|
Заявка на сдачу/покупку изделия |
Input |
Внешняя граница |
Специальное ПО для автоматизации учета контроля на предприятии |
|
Журнал изделий |
Output |
Специальное ПО для автоматизации учета контроля на предприятии |
Внешняя граница |
|
Журнал статистики о работе |
Output |
Специальное ПО для автоматизации учета контроля на предприятии |
Внешняя граница |
|
Кодекс РФ |
Control |
Внешняя граница |
Специальное ПО для автоматизации учета контроля на предприятии |
|
Администратор |
Mechanism |
Внешняя граница |
Специальное ПО для автоматизации учета контроля на предприятии |
Таблица 3.2 Описание стрелок 1-ой декомпозиции
Наименование стрелки |
Тип стрелки |
Источник Стрелки |
Приемник стрелки |
|
Список изделий |
Input |
Внешняя граница |
Ввод и изменение данных |
|
Заявка на сдачу/покупку изделия |
Input |
Внешняя граница |
Ввод и изменение данных |
|
Администратор |
Mechanism |
Внешняя граница |
Ввод и изменение данных |
|
Кодекс РФ |
Control |
Внешняя граница |
Правила ухода за ювелирными изделиями |
|
Информация об изделиях и заявках |
Internal |
Ввод и изменение данных |
Формирование списка изделий |
|
Журнал изделий |
Output |
Формирование списка изделий |
Внешняя граница |
|
Журнал статистики о работе |
Output |
Формирование списка продаж/сдачи изделий на продажу |
Внешняя граница |
|
Администратор |
Mechanism |
Внешняя граница |
Формирование списка изделий |
|
Администратор |
Mechanism |
Внешняя граница |
Формирование списка продаж/сдачи изделий на продажу |
Таблица 3.3 Описание стрелок этапов процесса А1
Наименование стрелки |
Тип стрелки |
Источник стрелки |
Приемник стрелки |
|
Список изделий |
Input |
Внешняя граница |
Получение данных о товаре |
|
Заявка на сдачу/покупку изделия |
Input |
Внешняя граница |
Получение данных о заявке |
|
Введенные данные |
Internal |
Получение данных о товаре |
Проверка данных |
|
Информация об изделиях и заявках |
Output |
Проверка данных |
Внешняя граница |
|
Администратор |
Mechanism |
Внешняя граница |
Получение данных о заявке |
|
Администратор |
Mechanism |
Внешняя граница |
Получение данных о Товаре |
Таблица 3.4 Описание стрелок этапов процесса А2
Наименование стрелки |
Тип стрелки |
Источник стрелки |
Приемник стрелки |
|
1 |
2 |
3 |
4 |
|
Информация об изделиях и заявках |
Input |
Внешняя граница |
Подготовка персонала |
|
Отсортированный список изделий |
Internal |
Сортировка изделий по виду |
Формирование и изменение данных о заявках |
|
Данные |
Internal |
Формирование и изменение данных о заявках |
Сохранение данных |
|
Кодекс РФ |
Control |
Внешняя граница |
Подготовка персонала |
|
Журнал изделий |
Output |
Сохранение данных |
Внешняя граница |
|
Статистика |
Output |
Сохранение данных |
Внешняя граница |
|
Администратор |
Mechanism |
Внешняя граница |
Сортировка изделий по виду |
|
Администратор |
Mechanism |
Внешняя граница |
Формирование и изменение данных о заявках |
Таблица 3.5 Описание стрелок этапов процесса А3
Наименование стрелки |
Тип стрелки |
Источник стрелки |
Приемник стрелки |
|
1 |
2 |
3 |
4 |
|
Информация об изделиях и заявках |
Input |
Внешняя граница |
Сортировка заявок |
|
Сведения |
Internal |
Сортировка заявок |
Составление журнала статистики о работе |
|
Журнал статистики о работе |
Output |
Составление журнала статистики о работе |
Внешняя граница |
|
Администратор |
Mechanism |
Внешняя граница |
Сортировка заявок |
Вывод: В результате выполнения данной лабораторной работы нами была построена функциональная модель разрабатываемого ПО в виде контекстной диаграммы в нотации IDEF0.Также была создана диаграмма декомпозиции А0 на дочерние подпроцессы (задачи) и для всех функциональных блоков диаграммы А0 построены диаграммы декомпозиции А2 на подзадачи.
Лабораторная работа №4
Тема: Разработка программного кода. Рефакторин
Цель: освоение средства разработки программного кода MS VisualStudio для программирования алгоритмов внутренней сортировки, изучение и освоение применения процедуры рефакторинга для улучшения программного кода.
Ход работы
Сортировка пузырьком - простейший алгоритм сортировки, применяемый чисто для учебных целей. Практического применения этому алгоритму нет, так как он не эффективен, особенно если необходимо отсортировать массив большого размера. К плюсам сортировки пузырьком относится простота реализации алгоритма. Алгоритм сортировки пузырьком сводится к повторению проходов по элементам сортируемого массива. Проход по элементам массива выполняет внутренний цикл. За каждый проход сравниваются два соседних элемента, и если порядок неверный элементы меняются местами. Внешний цикл будет работать до тех пор, пока массив не будет отсортирован. Таким образом внешний цикл контролирует количество срабатываний внутреннего цикла Когда при очередном проходе по элементам массива не будет совершено ни одной перестановки, то массив будет считаться отсортированным. Для реализации был выбран массив из 5 элементов, имеющих строковый тип и хранящих наименования ювелирных изделий. string[] myArray = { "Серьги", "Кольцо", "Ожерелье", "Кулон", "Подвеска" };
Алгоритм сортировки пузырьком массива Arrayиз 5 элементов:
1. Если первый элемент больше второго - меняем местами
2. Если второй больше третьего - меняем местами
3. Если третий больше четвертого - меняем местами
4. Если четвертый больше пятого - меняем местами
5. Если первый элемент больше второго - меняем местами
6. Если второй больше третьего - меняем местами
7. Если третий больше четвертого - меняем местами
8. Если четвертый больше пятого - меняем местами
9. Если первый элемент больше второго - меняем местами
10. Если второй больше третьего - меняем местами
11. Если третий больше четвертого - меняем местами
12. Если четвертый больше пятого - меняем местами
13. Если первый элемент больше второго - меняем местами
14. Если второй больше третьего - меняем местами
15. Если третий больше четвертого - меняем местами
16. Если четвертый больше пятого - меняем местами
17. Если первый элемент больше второго - меняем местами
18. Если второй больше третьего - меняем местами
19. Если третий больше четвертого - меняем местами
20. Если четвертый больше пятого - меняем местами
Листинг программы реализующий алгоритм сортировки слиянием для массива из 5 элементов (Приложение 1)
ФункцияString.Compare(arg1,arg2) производит сравнение строк arg1 и arg2, и возвращает отрицательное число если первая предшествует второй при сортировке, ноль - если строки равны, положительное число - если первая следует после второй.
Сложность алгоритма равна О(n*(n-1)).
Листинг модифицированного программного кода:
using System;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
namespaceProgEng
{
classProgram
{
staticvoid Main(string[] args)
{
string[] myArray = { "Серьги", "Кольцо", "Ожерелье", "Кулон", "Подвеска" };
Console.WriteLine("{0}, {1}, {2}, {3}, {4}.", myArray[0], myArray[1], myArray[2], myArray[3], myArray[4]);
string s;
for (inti = 0; i<myArray.Length; i++)
for (int j = 1; j <myArray.Length; j++)
if (String.Compare(myArray[j - 1], myArray[j]) > 0)
{
s = myArray[j];
myArray[j] = myArray[j - 1];
myArray[j - 1] = s;
}
Console.WriteLine("{0}, {1}, {2}, {3}, {4}.", myArray[0], myArray[1], myArray[2], myArray[3], myArray[4]);
Console.ReadLine();
}
}
}
Описание:
Внешнийциклfor(inti=0;i<myArray.Length;i++) служит для повторения процесса прохода по массиву 5 раз.
Циклfor(intj=1;j<myArray.Length;j++)нужен для сравнения всех соседних элементов массива.
Рисунок 6. Скриншот работы программы
Вывод
В данной программе мы освоили средства разработки программного кода MS Visual Studio для программирования алгоритмов внутренней сортировки, изучили и освоили применения процедуры рефакторинга для улучшения программного кода. Создали консольное приложение, реализовали алгоритм и сортировку.
Лабораторная работа №5
инженерия программный код
Тема: Сборка и анализ программного продукта
Цель: Изучение на практике стадии кодирования ПО, освоение методики разработки и описания программного кода с применением заданных фрагментов кода, а также методов анализа сложности и эффективности кода.
Ход работы
Очередь FIFO (акроним First In, First Out - «первым пришёл - первым ушёл») - способ организации и манипулирования данными относительно времени и приоритетов. Это выражение описывает принцип технической обработки очереди или обслуживания конфликтных требований путём упорядочения процесса по принципу: «первым пришёл - первым обслужен» (ПППО). Тот, кто приходит первым, тот и обслуживается первым, пришедший следующим ждёт, пока обслуживание первого не будет закончено, и так далее.
Этот принцип аналогичен поведению лиц, стоящих в очереди, когда люди получают обслуживание в том порядке, в котором они занимали очередь. То же самое происходит, например, на нерегулируемом перекрёстке, когда водители ожидают своей очереди на продолжение движения (в американских ПДД нет правила «помеха справа», приоритет определяется по принципу FIFO). ПППО также используется как сокращённое название для алгоритма FIFO планирования работы операционной системы, по которому процессорное время выделяется каждому процессу в порядке их поступления на обслуживание. В более широком смысле, абстракция LIFO или Last-In-First-Out («последним пришёл - первым ушёл») является противоположностью абстракции FIFO. Разница, возможно, станет яснее, если принять во внимание реже используемый синоним FILO, означающий First-In-Last-Out («первым пришёл - последним ушёл»). В сущности, обе абстракции являются конкретными случаями более общего понятия работы со списком. Разница не в списке (данных), а в правиле доступа к содержимому. В первом случае добавление делается к одному концу списка, а снятие с другого, во втором случае добавление и снятие делается на одном конце.
Сортировка простыми обменами, сортировка пузырьком (англ. bubble sort) - простой алгоритм сортировки. Для понимания и реализации этот алгоритм - простейший, но эффективен он лишь для небольших массивов.
Алгоритм состоит из повторяющихся проходов по сортируемому массиву. За каждый проход элементы последовательно сравниваются попарно и, если порядок в паре неверный, выполняется обмен элементов. Проходы по массиву повторяются N-1 раз или до тех пор, пока на очередном проходе не окажется, что обмены больше не нужны, что означает - массив отсортирован. При каждом проходе алгоритма по внутреннему циклу, очередной наибольший элемент массива ставится на своё место в конце массива рядом с предыдущим «наибольшим элементом», а наименьший элемент перемещается на одну позицию к началу массива («всплывает» до нужной позиции, как пузырёк в воде, отсюда и название алгоритма).
Сортировка слиянием - вероятно, один из самых простых алгоритмов сортировки (среди «быстрых» алгоритмов). Особенностью этого алгоритма является то, что он работает с элементами массива преимущественно последовательно, благодаря чему именно этот алгоритм используется при сортировке в системах с различными аппаратными ограничениями (например, при сортировке данных на жёстком диске, или даже на магнитной ленте). Кроме того, сортировка слиянием - чуть ли не единственный алгоритм, который может быть эффективно использован для сортировки таких структур данных, как связанные списки. Последовательная работа с элементами массива значительно увеличивает скорость сортировки в системах с кэшированием.
Сортировка слиянием - стабильный алгоритм сортировки. Это означает, что порядок «равных» элементов не изменяется в результате работы алгоритма. В некоторых задачах это свойство достаточно важно.
Сортировка извлечением (методом простого включения: сдвиг-вставка, вставками, вставка и сдвиг)
Хотя этот метод сортировки намного менее эффективен, чем сложные алгоритмы (такие как быстрая сортировка), у него есть ряд преимуществ:
1. прост в реализации;
2. эффективен на небольших наборах данных, на наборах данных до десятков элементов может оказаться лучшим;
3. эффективен на наборах данных, которые уже частично отсортированы;
4. это устойчивый алгоритм сортировки (не меняет порядок элементов, которые уже отсортированы);
5. может сортировать массив по мере его получения;
6. не требует временной памяти, даже под стек.
На каждом шаге алгоритма выбираем один из элементов входных данных и вставляем его на нужную позицию в уже отсортированной последовательности до тех пор, пока набор входных данных не будет исчерпан. Метод выбора очередного элемента из исходного массива произволен; может использоваться практически любой алгоритм выбора
Ход работы
Запустим программу и загрузим данные из файла:
Рисунок 7. Запуск программы
Перейдем к работе с данными
Рисунок 8. Работа с данными
Удалим пару элементов:
Рисунок 9. Удаление элементов
Добавим элемент:
Рисунок 10.
Отсортируем по фамилии:
Рисунок 11.
По типу операции:
Рисунок 12. Сортировка по типу операции
По типу украшения:
Рисунок 13.Сортировка по типу украшения
Вывод числа совершенных операций:
Рисунок 14. Вывод числа совершенных операций
Листинг программы:
Класс Data- данные, состоящие из трех строковых параметров (фамилия сотрудника, район и тип преступления)
using System;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
namespaceProgEng
{
classData
{
string name { get; set; }//Фамилия
string type { get; set; }//Тип операции
string vid { get; set; }//Продукция
stringsostav { get; set; }//Состав
public Data(string name, string type, string vid, stringsost)//конструктор
{
this.name = name;
this.type = type;
this.sostav = sost;
this.vid = vid;
}
publicstringReturnData()//Возвращает всю информацию в виде одной строки
{
return name + " " + type + " " + vid + " " + sostav;
}
publicstaticintNameCompare(Data d1, Data d2)//Сравнивает 2 объекта по полю фамилия
{
returnString.Compare(d1.name, d2.name);
}
publicstaticintTypeCompare(Data d1, Data d2)//Сравнивает 2 объекта по полю тип сделки
{
returnString.Compare(d1.type, d2.type);
}
publicstaticintVidCompare(Data d1, Data d2)//Сравнивает 2 объекта по полю вид продукции
{
returnString.Compare(d1.vid, d2.vid);
}
publicstaticintSostavCompare(Data d1, Data d2)//Сравнивает 2 объекта пополю состав изделия
{
returnString.Compare(d1.sostav, d2.sostav);
}}}
Класс List - реализует экземпляр односвязного списка с указателемна следующий и полем с данными. (Приложение 2)
Класс FIFO - хранит ссылку на первый элемент очереди и позволяет работать с ней, осуществляя операции добавления (в конец), удаления (из начала) и сортировки. (Приложение 3)
Класс Program - описывает интерфейс программы, осуществляющей работу с экземпляром класса FIFO, и позволяет считывать и сохранять информацию в файл. (Приложение 4)
Лабораторная работа №6
Тема: Управление качеством программного продукта
Цель: Освоение методики обеспечения качества разработанного программного кода, тестирования программы в ручном режиме, анализ производительности.
Ход работы
Стрессовое тестирование:
Считаем список из файла, введем в команду цифру 5:
Рисунок 6.1 Вывод команды
Программа укажет, что такой команды нет.
Перейдем к работе со списком, попробуем добавить элемент из двух строк:
Рисунок 6.2 Добавим элемент из двух строк
Программа укажет на неверное число элементов.
Время работы сортировок (в тактах процессора)
AMDFX6300 3.51ГГц, 8Гб ОЗУ
Таблица 6.1
Sort1 |
2955 |
8166 |
36615 |
6398984 |
60003594 |
|
Sort2 |
2929 |
3550 |
4921 |
36984 |
138195 |
|
Sort3 |
1071 |
3504 |
17475 |
1567697 |
13017903 |
|
Размер |
10 |
50 |
100 |
500 |
1000 |
Intel Atom CPU N2800 1.86ГГц, 2ГбОЗУ
Таблица 6.2
Sort1 |
7588 |
16765 |
85676 |
14234642 |
120346543 |
|
Sort2 |
3540 |
4801 |
6737 |
92887 |
436058 |
|
Sort3 |
3577 |
6265 |
38562 |
3107200 |
22409739 |
|
Размер |
10 |
50 |
100 |
500 |
1000 |
Intel Core i3-2348M 2.30 ГГц, 4ГБОЗУ
Таблица 6.3
Sort1 |
6201 |
8032 |
70254 |
10605410 |
73254744 |
|
Sort2 |
3205 |
4216 |
5632 |
50698 |
254398 |
|
Sort3 |
2433 |
4008 |
27152 |
2157252 |
18675438 |
|
Размер |
10 |
50 |
100 |
500 |
1000 |
Рисунок 6.3 -Sort1. Сортировка пузырьком
Рисунок 6.4 -Sort2. Сортировка слиянием.
Рисунок 6.5-Sort3. Сортировка извлечением
Модифицированный код сортировки (Приложение 5)
Приложения
Приложение 1. (Лабораторная работа №4) Листинг программы, реализующий алгоритм сортировки слиянием для массива из 5 элементов
using System;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
namespaceProgEng
{
classProgram
{
staticvoid Main(string[] args)
{
string[] myArray = { "Иванов Вадим", "Акинфеев Игорь", "Иванов Артем", "Петров Кирилл", "Николаев Игорь" };
string s;
if (String.Compare(myArray[0], myArray[1]) > 0)
{
s = myArray[1];
myArray[1] = myArray[0];
myArray[0] = s;
}
if (String.Compare(myArray[1], myArray[2]) > 0)
{
s = myArray[2];
myArray[2] = myArray[1];
myArray[1] = s;
}
if (String.Compare(myArray[2], myArray[3]) > 0)
{
s = myArray[3];
myArray[3] = myArray[2];
myArray[2] = s;
}
if (String.Compare(myArray[3], myArray[4]) > 0)
{
s = myArray[4];
myArray[4] = myArray[3];
myArray[3] = s;
}
if (String.Compare(myArray[0], myArray[1]) > 0)
{
s = myArray[1];
myArray[1] = myArray[0];
myArray[0] = s;
}
if (String.Compare(myArray[1], myArray[2]) > 0)
{
s = myArray[2];
myArray[2] = myArray[1];
myArray[1] = s;
}
if (String.Compare(myArray[2], myArray[3]) > 0)
{
s = myArray[3];
myArray[3] = myArray[2];
myArray[2] = s;
}
if (String.Compare(myArray[3], myArray[4]) > 0)
{
s = myArray[4];
myArray[4] = myArray[3];
myArray[3] = s;
}
if (String.Compare(myArray[0], myArray[1]) > 0)
{
s = myArray[1];
myArray[1] = myArray[0];
myArray[0] = s;
}
if (String.Compare(myArray[1], myArray[2]) > 0)
{
s = myArray[2];
myArray[2] = myArray[1];
myArray[1] = s;
}
if (String.Compare(myArray[2], myArray[3]) > 0)
{
s = myArray[3];
myArray[3] = myArray[2];
myArray[2] = s;
}
if (String.Compare(myArray[3], myArray[4]) > 0)
{
s = myArray[4];
myArray[4] = myArray[3];
myArray[3] = s;
}
if (String.Compare(myArray[0], myArray[1]) > 0)
{
s = myArray[1];
myArray[1] = myArray[0];
myArray[0] = s;
}
if (String.Compare(myArray[1], myArray[2]) > 0)
{
s = myArray[2];
myArray[2] = myArray[1];
myArray[1] = s;
}
if (String.Compare(myArray[2], myArray[3]) > 0)
{
s = myArray[3];
myArray[3] = myArray[2];
myArray[2] = s;
}
if (String.Compare(myArray[3], myArray[4]) > 0)
{
s = myArray[4];
myArray[4] = myArray[3];
myArray[3] = s;
}
if (String.Compare(myArray[0], myArray[1]) > 0)
{
s = myArray[1];
myArray[1] = myArray[0];
myArray[0] = s;
}
if (String.Compare(myArray[1], myArray[2]) > 0)
{
s = myArray[2];
myArray[2] = myArray[1];
myArray[1] = s;
}
if (String.Compare(myArray[2], myArray[3]) > 0)
{
s = myArray[3];
myArray[3] = myArray[2];
myArray[2] = s;
}
if (String.Compare(myArray[3], myArray[4]) > 0)
{
s = myArray[4];
myArray[4] = myArray[3];
myArray[3] = s;
}
Console.WriteLine("{0}, {1}, {2}, {3}, {4}.", myArray[0], myArray[1], myArray[2], myArray[3], myArray[4]);
Console.ReadLine();
}
}
}
Приложение 2. (Лабораторная работа №5)
using System;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
namespaceProgEng
{
classList
{
privateData data;//Поледанных
privateListnext;//Указатель на следующий элемент
publicList(Datadata)//Конструктор нового элемента с заданными данными
{
this.data = data;
this.next = null;
}
publicList()//Конструктор пустого элемента
{
this.data = null;
this.next = null;
}
publicListInsertAt(inti, Data data)//Добавляет элемент в i-позицию
{
List s = newList(data);
if (i == 0)
{
s.next = this;
return s;
}
List l = this;
for (int j = 1; j <i; j++, l = l.next) ;
s.next = l.next;
l.next = s;
returnthis;
}
publicList Add(Data data)//Добавляет элемент в конец списка
{
if (this.data == null)
returnnewList(data);
List s = newList(data);
List l = this;
while (l.next != null)
l = l.next;
l.next = s;
returnthis;
}
publicListRemoveFrom(inti)//Удаляет элемент из i-позиции
{
if (i == 0)
returnthis.next;
List s = this;
for (int j = 1; j <i; j++, s = s.next) ;
s.next = s.next.next;
returnthis;
}
publicDataGet(int i)//Возвращает поле данных элемента i-позиции
{
List s = this;
for (int j = 0; j <i; j++, s = s.next) ;
returns.data;
}
publicintValue()//Возвращает кол-во элементов списка
{
if (this.data == null)
return 0;
List s = this;
int k = 0;
while (s != null)
{
s = s.next;
k++;
}
return k;
}
publicListSwapElem(int d1, int d2)//Меняетдваэлементаспискаместами
{
List s = this, l = this, k = this, f;
if (d1 == d2)//Если равны выходим сразу
return k;
for (inti = 1; i< d1; i++)//Ищемэлементподномером d1
s = s.next;
for (inti = 1; i< d2; i++)//Ищемэлементподномером d2
l = l.next;
if (d1 == 0)//Если d1 первый элемент
{
if (l == k)//Если d2 второй элемент
{
k = l.next;
l.next = k.next;
k.next = l;
return k;
}
s = k.next;//Если d2 не второй
k.next = l.next.next;
l.next.next = s;
s = l.next;
l.next = k;
return s;
}
if (d2 == 0)//Если d2 первый элемент
{
if (s == k)//Если d1 второй элемент
{
k = s.next;
s.next = k.next;
k.next = s;
return k;
}
l = k.next;//Если d1 не второй
k.next = s.next.next;
s.next.next = l;
l = s.next;
s.next = k;
return l;
}
if (s.next == l)//Если d1 стоит после d2
{
f = l.next;
l.next = f.next;
f.next = l;
s.next = f;
return k;
}
if (l.next == s)//Если d2 стоит после d1
{
f = s.next;
s.next = f.next;
f.next = s;
l.next = f;
return k;
}
f = l.next.next;//Все остальные случаи
l.next.next = s.next.next;
s.next.next = f;
f = l.next;
l.next = s.next;
s.next = f;
return k;
}
publicstaticintNameCompare(List L, int a, int b)//Сравнивает два элемента списка под номерами a и b по полю фамилия
{
int k = 0;
List La = L, Lb = L;
for (inti = 0; i< a; i++)
La = La.next;
for (int j = 0; j < b; j++)
Lb = Lb.next;
k = Data.NameCompare(La.data, Lb.data);
return k;
}
publicstaticintTypeCompare(List L1, List L2, int a, int b)//Сравнивает элемент из списка l1 под номером а иих l2 подномером b пополю тип сделки
{
int k = 0;
List La = L1, Lb = L2;
for (inti = 0; i< a; i++)
La = La.next;
for (int j = 0; j < b; j++)
Lb = Lb.next;
k = Data.TypeCompare(La.data, Lb.data);
return k;
}
publicstaticintVidCompare(List L, int a, int b)//Сравнивает два элемента списка под номерами a и b пополю вид продукции
{
int k = 0;
List La = L, Lb = L;
for (inti = 0; i< a; i++)
La = La.next;
for (int j = 0; j < b; j++)
Lb = Lb.next;
k = Data.VidCompare(La.data, Lb.data);
return k;
}
internalvoid View()
{
for (inti = 0; i<this.Value();i++){Console.WriteLine("{0}", this.Get(i).ReturnData());} }}}
Приложение 3. (Лабораторная работа №5)
using System;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Collections;
namespaceProgEng
{
classFIFO
{
privateListRoot;//Указатель на первый элемент списка
public FIFO(Data d)//Конструктор
{
this.Root = newList(d);
}
public FIFO()//Конструктор
{
this.Root = null;
}
publicboolIsEmpty()//Проверка на пустоту
{
if (this.Root == null)
returntrue;
if (Root.Value() == 0)
returntrue;
returnfalse;
}
publicvoidClear()//Удаляет список, делая очередь пустой
{
this.Root = null;
}
publicvoid Add(Data data)//Добавлениеэлемента
{
if (Root != null)
Root = Root.Add(data);
else
Root = newList(data);
}
publicvoidRemove()//Удаление элемента
{
if (Root != null)
Root = Root.RemoveFrom(0);
}
publicDataGet()//Возвращает значение первого элемента
{
returnRoot.Get(0);
}
publicvoid Sort1()//Сортировка пузырьком
{
for (inti = 0; i<Root.Value(); i++)
for (int j = 1; j <Root.Value(); j++)
if (List.NameCompare(Root, j - 1, j) > 0)
Root = Root.SwapElem(j - 1, j);
}
publicvoid Sort2()//Сортировка слиянием
{
Root = merge_sort(Root);
}
publicstaticList merge(List a, List b)//функциясливаетдвасписка
{
List c = newList();
//количество использованных вершин
int kol1 = 0;//в списке а
int kol2 = 0;//в списке b
for (inti = 0; i<a.Value() + b.Value(); i++)
{//если мы уже полностью использовали вектора а,
//то нам осталось дописать элементы вектора b
if (kol1 == a.Value())
{
c=c.Add(b.Get(kol2));
kol2++;
continue;
}
if (kol2 == b.Value())//наоборот
{
c=c.Add(a.Get(kol1));
kol1++;
continue;
}//так как наши списки еще не полностью
//использованы, то нужно сравнить какое
//значение ставить на следующее место
if (List.TypeCompare(a,b,kol1,kol2)<0)
{
c=c.Add(a.Get(kol1));
kol1++;
}
else
{
c=c.Add(b.Get(kol2));
kol2++;
}
}
return c;
}
//функция рекурсивно сортирует список
publicstaticListmerge_sort(List a)
{//если размер меньше или 1, то он отсортирован
if (a.Value() <= 1)
return a;
List b = newList();//Иначе разбиваем на два меньших списка
List c = newList();
int k = a.Value() / 2;
for(inti=0;i<k;i++){
b=b.Add(a.Get(i));
}
for (inti = k; i<a.Value(); i++)
{
c=c.Add(a.Get(i));
}
returnmerge(merge_sort(b), merge_sort(c));//Слияем их, предварительно вызвав для каждого из них сортировку
}
publicvoid Sort3()//Сортировка извлечением
{
for (inti = 0; i<Root.Value() - 1; i++)
{
int k = i;
for (int j = i; j <Root.Value(); j++)
{
if (List.VidCompare(Root, k, j) > 0)
k = j;
}
Root = Root.SwapElem(i, k);
}
}
publicvoidView()//Выводит в консоль элементы очереди
{
Root.View();
}
internalvoidStat()//Выводит в консоль число совершенных операций
{
Console.WriteLine("Числоопераций - {0}", Root.Value());
}}}
Приложение 4. (Лабораторная работа №5)
using System;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
namespaceProgEng
{
classProgram
{
constint Work = 9, Exit = 0, File = 1, EquWork = 2, Clear = 3, Save = 4;
staticvoid Main(string[] args)
{
FIFO S = newFIFO();
int Check = Work;
while (Check != Exit)
{
if (!S.IsEmpty())
S.View();
Console.WriteLine("Выберетеоперацию:");
Console.WriteLine("1 - Считатьсписокизфайла");
Console.WriteLine("2 - Работа со списком");
if (!S.IsEmpty())
{
Console.WriteLine("3 - Очистка списка");
Console.WriteLine("4 - Сохранение в файл");
}
Console.WriteLine("0 - Выход из программы");
try
{
Check = Int32.Parse(Console.ReadLine());
Console.Clear();
}
catch (FormatException ex)
{
Console.Clear();
Console.WriteLine("Ошибкаввода - {0}", ex);
Check = Work;
}
switch (Check)
{
case File:
{
try
{
S.Clear();
System.IO.StreamReader file =
newSystem.IO.StreamReader(@"c:\users\ag-volk\documents\visual studio 2010\Projects\ProgEngNast\ProgEngNast\T.txt");
string line;
while ((line = file.ReadLine()) != null)
{
string[] s = newstring[3];
s = line.Split(' ');
S.Add(newData(s[0], s[1], s[2], s[3]));
}
file.Close();
}
catch (FormatException ex)
{
Console.WriteLine("Ошибкачтения - {0}", ex);
S.Clear();
}
break;
}
caseEquWork:
{
int Key = Work;
while (Key != Exit)
{
if (S.IsEmpty())
{
try
{
Console.WriteLine("Списокпуст");
Console.WriteLine("1 - Добавитьэлемент");
Console.WriteLine("0 - Выход");
Key = Int32.Parse(Console.ReadLine());
Console.Clear();
if (Key==1)
{
Console.WriteLine("Введитеэлемент:");
string[] s = Console.ReadLine().Split(' ');
S.Add(newData(s[0], s[1], s[2], s[3]));
break;
}
else
Console.WriteLine("Ошибка - {0}");
}
catch (FormatException ex)
{
Console.WriteLine("Ошибка - {0}", ex);
Key = Work;
}
}
else
{
Console.WriteLine("Вашсписок:");
S.View();
Console.WriteLine("1 - Добавитьэлемент");
Console.WriteLine("2 - Удалитьэлемент");
Console.WriteLine("3 - Редактировать элемент");
Console.WriteLine("10 - Сортировать список по фамилиям клиентов");
Console.WriteLine("11 - Сортировать список по типу операции");
Console.WriteLine("12 - Сортировать список по типу продукции");
Console.WriteLine("20 - Вывести кол-во совершенных операций");
Console.WriteLine("0 - Выход");
Key = Int32.Parse(Console.ReadLine());
Console.Clear();
try
{
switch (Key)
{
case 1:
{
Console.WriteLine("Введитеэлемент:");
string[] s = Console.ReadLine().Split(' ');
S.Add(newData(s[0], s[1], s[2], s[3]));
break;
}
case 2:
{
S.Remove();
break;
}
case 3:
{
Console.WriteLine("Введите новое значение элемента:");
string[] s = Console.ReadLine().Split(' ');
S.Remove();
S.Add(newData(s[0], s[1], s[2], s[3]));
break;
}
case 10:
{
S.Sort1();
break;
}
case 11:
{
S.Sort2();
break;
}
case 12:
{
S.Sort3();
break;
}
case 20:
{
S.Stat();
break;
}
default:
break;
}
}
catch (FormatException ex)
{
Console.WriteLine("Ошибка - {0}", ex);
Key = Work;
}
}
}
break;
}
case Clear:
{
S.Clear();
break;
}
case Save:
{
try
{
string line;
FIFO f = newFIFO();
System.IO.StreamWriter file =
newSystem.IO.StreamWriter(@"c:\users\ag-volk\documents\visual studio 2010\Projects\ProgEngNast\ProgEngNast\T.txt");
while (!S.IsEmpty())
{
line = S.Get().ReturnData();
file.WriteLine(line);
f.Add(S.Get());
S.Remove();
}
while (!f.IsEmpty())
{
S.Add(f.Get());
f.Remove();
}
file.Close();
}
catch (FormatException ex)
{
Console.WriteLine("Ошибказаписи - {0}", ex);
S.Clear();
}
break;
}
default:
{
if ((Check != 0) || (Check != 9))
Console.WriteLine("Ошибкаввода - Неверныйдиапазон");
break; } } } } }}
Приложение 5. (Лабораторная работа №6)
publicvoid Sort(int key)
{
if (key == 1)//Сортировкапузырьком
{
for (inti = 0; i<Root.Value(); i++)
for (int j = 1; j <Root.Value(); j++)
if (List.NameCompare(Root, j - 1, j) > 0)
Root = Root.SwapElem(j - 1, j);
}
else
if (key == 2)//Сортировка слиянием
{
Root = merge_sort(Root);
}
else//Сортировкаизвлечением
{
for (inti = 0; i<Root.Value() - 1; i++)
{
int k = i;
for (int j = i; j <Root.Value(); j++)
{
if (List.VidCompare(Root, k, j) > 0)
k = j;
}
Root = Root.SwapElem(i, k); } } }
publicstaticList merge(List a, List b)//функциясливаетдвасписка
{
List c = newList();
//количество использованных вершин
int kol1 = 0;//в списке а
int kol2 = 0;//в списке b
for (inti = 0; i<a.Value() + b.Value(); i++)
{//если мы уже полностью использовали вектора а,
//то нам осталось дописать элементы вектора b
if (kol1 == a.Value())
{ c=c.Add(b.Get(kol2));
kol2++;
continue; }
if (kol2 == b.Value())//наоборот
{
c=c.Add(a.Get(kol1));
kol1++;
continue;}//так как наши списки еще не полностью
//использованы, то нужно сравнить какое
//значение ставить на следующее место
if (List.TypeCompare(a,b,kol1,kol2)<0)
{ c=c.Add(a.Get(kol1));
kol1++; }
else
{ c=c.Add(b.Get(kol2));
kol2++; } }
return c; }
//функция рекурсивно сортирует список
publicstaticListmerge_sort(List a)
{//если размер меньше или 1, то он отсортирован
if (a.Value() <= 1)
return a;
List b = newList();//Иначе разбиваем на два меньших списка
List c = newList();
int k = a.Value() / 2;
for(inti=0;i<k;i++){
b=b.Add(a.Get(i));
}
for (inti = k; i<a.Value(); i++)
{
c=c.Add(a.Get(i));
}
returnmerge(merge_sort(b), merge_sort(c));//Слияем их, предварительно вызвав для каждого из них сортировку }
Размещено на Allbest.ru
...Подобные документы
Цели и задачи программной инженерии. Понятие программного обеспечения. Шесть принципов эффективного использования программного обеспечения. Виды программного обеспечения: общесистемное, сетевое и прикладное. Принципы построения программного обеспечения.
курсовая работа [30,4 K], добавлен 29.06.2010Общая характеристика основных моделей жизненного цикла: каскадная, инкрементная, спиральная. Стадия как часть процесса создания программного обеспечения, ограниченная определенными временными рамками и заканчивающаяся выпуском конкретного продукта.
презентация [159,1 K], добавлен 27.12.2013Использование моделирования в программной инженерии в процессе разработки программного обеспечения. Основные этапы процесса разработки программного обеспечения, их характеристика. Моделирование процессов, их определение фазами и видами деятельности.
реферат [2,2 M], добавлен 25.12.2017Схемы взаимодействия между заказчиком и разработчиком программного обеспечения. Качество программного обеспечения и определение основных критериев его оценка на современном этапе, особенности управления на стадиях жизненного цикла, анализ достаточности.
презентация [114,7 K], добавлен 14.08.2013Понятие программной инженерии как применения определенного систематического измеримого подхода при разработке, эксплуатации и поддержке программного обеспечения. Модели процесса разработки программного обеспечения. Управление программными проектами.
презентация [870,6 K], добавлен 12.11.2014Изучение основных видов угроз программного обеспечения. Выявление наиболее эффективных средств и методов защиты программного обеспечения. Анализ их достоинств и недостатков. Описания особенностей лицензирования и патентования программного обеспечения.
курсовая работа [67,9 K], добавлен 29.05.2013Реализация программного средства "Действия над матрицами". Разработка кода программного продукта на основе готовой спецификации на уровне модуля. Использование инструментальных средств на этапе отладки программного модуля. Выбор стратегии тестирования.
отчет по практике [296,1 K], добавлен 19.04.2015Требования к технологии проектирования программного обеспечения (ПО). Состав и описание стадий полного жизненного цикла ПО. Классификация моделей жизненного цикла ПО, их особенности. Методологии разработки ПО, приёмы экстремальный программирование.
презентация [874,4 K], добавлен 19.09.2016Возможности среды программирования delphi при разработке приложения с визуальным интерфейсом. Разработка спецификации программного обеспечения и на ее основе кода программного продукта. Отладка программы "трассировкой", ее тестирование и оптимизация.
курсовая работа [501,4 K], добавлен 07.12.2016Исследование объектно-ориентированного подхода к проектированию программного обеспечения будильника. Модель программного обеспечения. Взаимодействие между пользователями и системой. Диаграммы и генерация программного кода при помощи средств Rational Rose.
курсовая работа [355,8 K], добавлен 26.09.2014Понятие программного обеспечения, вопросы его разработки и использования. Общая характеристика системного программного обеспечения и работа операционной системы. Специфика процесса управления разработкой программного обеспечения и его особенности.
курсовая работа [636,2 K], добавлен 23.08.2011Понятие и ключевое отличие распределенной разработки программного обеспечения, его достоинства и недостатки. Концептуальное решение и выбор типа разработки. Особенности программного обеспечения с открытым исходным кодом. Идея и развитие Open Source.
курсовая работа [97,7 K], добавлен 14.12.2012Современные инструменты разработки программного обеспечения для СУТП. Универсальные языки программирования и сравнение их со SCADA-системами. Разработка программного обеспечения с использованием многоканальных измерительных преобразователей Ш9327.
дипломная работа [2,3 M], добавлен 13.07.2011Оснащенность предприятия системным программным обеспечением, используемым для организации производственного процесса. Проектирование, внедрение и эксплуатация системного и прикладного программного обеспечения. Тестирование и отладка программного продукта.
отчет по практике [272,2 K], добавлен 29.12.2014Понятие и этапы жизненного цикла программного обеспечения как некоторых событий, которые происходят с системой компьютера в процессе ее создания, внедрения и сопровождения. Модели данного процесса: каскадная, спиральная, их отличительные особенности.
доклад [33,5 K], добавлен 06.04.2015Возможности среды программирования delphi при разработке приложения с визуальным интерфейсом. Отладка программных модулей с использованием специализированных программных средств. Тестирование программного обеспечения. Оптимизация программного кода.
курсовая работа [974,0 K], добавлен 21.12.2016Технологии разработки программного обеспечения. Процедура постановки задачи, определения требований. Последовательность действий логической, разветвленной и циклической структуры. Терминология программирования. Этапы создания программного продукта.
презентация [793,8 K], добавлен 15.11.2010Порядок автоматизации расчетов себестоимости и длительности программного обеспечения производственного предприятия. Выбор языка программирования и системы управления базами данных. Разработка алгоритмов расчета себестоимости программного обеспечения.
дипломная работа [1,7 M], добавлен 13.06.2017Понятие технологии разработки программного обеспечения и модели жизненного цикла. Сущность объектно-ориентированного подхода. Строительные блоки, общие механизмы языка моделирования UML, диаграммы классов, состояний, взаимодействий и компонентов.
курсовая работа [262,5 K], добавлен 10.07.2014Основные функции автоматизированной системы "Решатель математических формул". Требования к техническим средствам, информационной и программной совместимости. Стратегии конструирования программного обеспечения. Проектирование, разработка программного кода.
курсовая работа [600,0 K], добавлен 25.02.2012