Задания. Методические рекомендации по выполнению практических
Скачать 2.15 Mb.
|
Задание №1. Провести сравнение понятий «качество» государственным и международным стандартами. Выписать документы, в которых даны данные определения. Задание №2. Опишите методы получения информации о ПС по ГОСТу. Для каждого метода выделите источник информации. Задание №3. Выберите стандарты для оценки качества ПС. Перечислите критерии надежности ПС по ГОСТу. Задание №4. Методика оценки качественных показателей ПП основана на составлении метрики ПП. В лабораторной работе необходимо выполнить следующее: 1. Выбрать показатели качества (не менее 5) и сформулировать их сущность. Каждый показатель должен быть существенным, т. е. должны быть ясны потенциальные выгоды его использования. Показатели представить в виде таблицы (таблица 1). Показатели качества Сущность показателя Экспертная оценка (вес) wi Оценка, установленная экспериментом ri 2. Установить веса показателей wi (?wi =1). 3. Для каждого показателя установить конкретную численную оценку ri от 0 до 1, исходя из следующего: § 0 – свойство в ПП присутствует, но качество его неприемлемо; § 0.5 — 1 – свойство в ПП присутствует и обладает приемлемым качеством; § 1 – свойство в ПП присутствует и обладает очень высоким качеством. § Возможно, присвоение промежуточных значений в соответствии с мнением оценивающего лица относительно полезности того или иного свойства ПП. Результатом выполнения данной работы является отчет Лабораторные работы №10 «Инспекция программного кода на предмет соответствия стандартам кодирования» Цель: научиться выполнять реорганизацию программного кода на основании шаблонов рефакторинга. Задание №1 Выполнить анализ программного кода для разрабатываемого ПО и модульных тестов с целью плохо организованного кода. Задание №2 Используя шаблоны рефакторинга, выполнить реорганизацию программного кода разрабатываемого ПО. Задание №3 Выполнить описание произведенных операций рефакторинга (было-стало-шаблон рефакторинга). Задание №4 В случае необходимости скорректировать проектную документацию. Задание №5 Сделать выводы по результатам выполнения работ. Класс Main Было: пакетная игра; импорт игры. Персонажи. *; импорт игры. Персонажи. Персонажи; импорт игры. Энергетика. Энергетика; импорт игры. Энергетика. Освещение; импорт игры. Уровни. Блок; импорт игры. Уровни. Уровень; импортировать game.Levels.Level_data; импорт игры. Weapon.Bullet; импорт игры. Оружие. Оружие; import javafx.animation.AnimationTimer; импорт javafx.application.Application; import javafx.scene.Scene; import javafx.scene.image.Image; import javafx.scene.input.KeyCode; import javafx.scene.layout.Pane; import javafx.stage.Stage; import java.io.DataInputStream; import java.io.FileInputStream; импорт java.io.IOException; import java.util.ArrayList; import java.util.HashMap; публичный класс Main расширяет приложение { public static ArrayList частные статические CutScenes cutScene; публичная статика Энергетика энергетика; публичная статическая молния молнии; public static int levelNumber; уровень статического уровня; public static AnimationTimer timer = new AnimationTimer () { @Override public void handle (давно) { Обновить(); } }; приватное статическое void update () { для (EnemyBase враг: враги) { enemy.update (); if (врага.getDelete ()) { enemies.remove (враг); перемена; } } Bullet.update (); Controller.update (); booker.update (); if (! energetic.getName (). equals ("")) energetic.update (); if (levelNumber> 0) elizabeth.update (); если (молния! = ноль) { lightning.update (); if (lightning.getDelete ()) молния = ноль; } menu.update (); hud.update (); weapon.update (); if (booker.getTranslateX ()> Level_data.BLOCK_SIZE * 295) cutScene = новые CutScenes (levelNumber); } @Override public void start (Stage primaryStage) выдает исключение { stage = primaryStage; сцена = новая сцена (appRoot, 1280, 720); . AppRoot.getChildren () добавить (gameRoot); уровень = новый уровень (); try (DataInputStream dataInputStream = new DataInputStream (новый FileInputStream ("C: /DeadShock/saves/data.dat"))) { levelNumber = dataInputStream.readInt (); level.createLevels (levelNumber); level.changeImageView (levelNumber); vendingMachine = new VendingMachine (); букер = новый персонаж (); booker.setMoney (dataInputStream.readInt ()); booker.setSalt (dataInputStream.readByte ()); booker.setCountLives (2); оружие = новое оружие (); weapon.setWeaponClip (dataInputStream.readInt ()); weapon.setBullets (dataInputStream.readInt ()); hud = новый HUD (); Елизавета = новая Елизавета (); энергичный = новый Энергетический (); } catch (IOException e) { levelNumber = 0; level.createLevels (levelNumber); vendingMachine = new VendingMachine (); букер = новый персонаж (); оружие = новое оружие (); hud = новый HUD (); энергичный = новый Энергетический (); tutorial = new Tutorial (levelNumber); } switch (levelNumber) { случай 0: враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 117, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 127, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 148, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 161, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 171, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 185, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 204, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 215, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 228, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 233, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 243, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 252, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 262, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 277, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 280, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 286, 200)); перемена; Дело 1: враги.адд (новый EnemyRedEye (Level_data.BLOCK_SIZE * 57, 200)); враги.адд (новый EnemyRedEye (Level_data.BLOCK_SIZE * 67, 200)); враги.адд (новый EnemyRedEye (Level_data.BLOCK_SIZE * 74, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 87, 200)); враги.адд (новый EnemyRedEye (Level_data.BLOCK_SIZE * 104, 150)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 117, 200)); враги.адд (новый EnemyRedEye (Level_data.BLOCK_SIZE * 133, 200)); враги.адд (новый EnemyRedEye (Level_data.BLOCK_SIZE * 156, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 177, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 193, 200)); враги.адд (новый EnemyRedEye (Level_data.BLOCK_SIZE * 201, 200)); враги.адд (новый EnemyRedEye (Level_data.BLOCK_SIZE * 216, 200)); враги.адд (новый EnemyRedEye (Level_data.BLOCK_SIZE * 224, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 246, 200)); враги.адд (новый EnemyRedEye (Level_data.BLOCK_SIZE * 260, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 277, 100)); Level_data.enemyBlocks.add (новый блок («невидимый», Level_data.BLOCK_SIZE * 34, Level_data.BLOCK_SIZE * 13)); Level_data.enemyBlocks.add (новый блок («невидимый», Level_data.BLOCK_SIZE * 36, Level_data.BLOCK_SIZE * 13)); Level_data.enemyBlocks.add (новый блок («невидимый», Level_data.BLOCK_SIZE * 60, Level_data.BLOCK_SIZE * 9)); Level_data.enemyBlocks.add (новый блок («невидимый», Level_data.BLOCK_SIZE * 61, Level_data.BLOCK_SIZE * 9)); Level_data.enemyBlocks.add (новый блок («невидимый», Level_data.BLOCK_SIZE * 106, Level_data.BLOCK_SIZE * 7)); Level_data.enemyBlocks.add (новый блок («невидимый», Level_data.BLOCK_SIZE * 107, Level_data.BLOCK_SIZE * 7)); Level_data.enemyBlocks.add (новый блок («невидимый», Level_data.BLOCK_SIZE * 168, Level_data.BLOCK_SIZE * 13)); Level_data.enemyBlocks.add (новый блок («невидимый», Level_data.BLOCK_SIZE * 170, Level_data.BLOCK_SIZE * 13)); Level_data.enemyBlocks.add (новый блок («невидимый», Level_data.BLOCK_SIZE * 196, Level_data.BLOCK_SIZE * 13)); Level_data.enemyBlocks.add (новый блок («невидимый», Level_data.BLOCK_SIZE * 197, Level_data.BLOCK_SIZE * 13)); Level_data.enemyBlocks.add (новый блок («невидимый», Level_data.BLOCK_SIZE * 232, Level_data.BLOCK_SIZE * 8)); Level_data.enemyBlocks.add (новый блок («невидимый», Level_data.BLOCK_SIZE * 233, Level_data.BLOCK_SIZE * 8)); перемена; } меню = новое меню (); appRoot.getChildren () добавить (menu.menuBox). booker.translateXProperty (). addListener (((наблюдаемый, oldValue, newValue) -> { int offset = newValue.intValue (); if (offset> 600 && offset })); vendingMachine.createButtons (); stage.getIcons (). add (новое изображение ("файл: / C: /DeadShock/images/icon.jpg")); stage.setTitle ( "DeadShock"); stage.setResizable (ложь); stage.setWidth (scene.getWidth ()); stage.setHeight (scene.getHeight ()); stage.setScene (сцены); stage.show (); timer.start (); } public static void main (String [] args) { запуск (арг); } } Стало: пакетная игра; импорт игры. Персонажи. *; импорт игры. Персонажи. Персонажи; импорт игры. Энергетика. Энергетика; импорт игры. Энергетика. Освещение; импорт игры. Уровни. Блок; импорт игры. Уровни. Уровень; импортировать game.Levels.Level_data; импорт игры. Weapon.Bullet; импорт игры. Оружие. Оружие; import javafx.animation.AnimationTimer; импорт javafx.application.Application; import javafx.scene.Scene; import javafx.scene.image.Image; import javafx.scene.input.KeyCode; import javafx.scene.layout.Pane; import javafx.stage.Stage; import java.io.DataInputStream; import java.io.FileInputStream; импорт java.io.IOException; import java.util.ArrayList; import java.util.HashMap; публичный класс Main расширяет приложение { public static ArrayList @Override public void handle (давно) { Обновить(); } }; private void initContent () { . AppRoot.getChildren () добавить (gameRoot); уровень = новый уровень (); try (DataInputStream dataInputStream = new DataInputStream (новый FileInputStream ("C: /DeadShock/saves/data.dat"))) { levelNumber = dataInputStream.readInt (); level.createLevels (levelNumber); level.changeImageView (levelNumber); vendingMachine = new VendingMachine (); букер = новый персонаж (); booker.setMoney (dataInputStream.readInt ()); booker.setSalt (dataInputStream.readByte ()); booker.setCountLives (2); оружие = новое оружие (); weapon.setWeaponClip (dataInputStream.readInt ()); weapon.setBullets (dataInputStream.readInt ()); hud = новый HUD (); Елизавета = новая Елизавета (); энергичный = новый Энергетический (); } catch (IOException e) { levelNumber = 0; level.createLevels (levelNumber); vendingMachine = new VendingMachine (); букер = новый персонаж (); оружие = новое оружие (); hud = новый HUD (); энергичный = новый Энергетический (); tutorial = new Tutorial (levelNumber); } createEnemies (); меню = новое меню (); appRoot.getChildren () добавить (menu.menuBox). booker.translateXProperty (). addListener (((наблюдаемый, oldValue, newValue) -> { int offset = newValue.intValue (); if (offset> 600 && offset })); vendingMachine.createButtons (); } public static void createEnemies () { switch (levelNumber) { случай 0: враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 117, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 127, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 148, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 161, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 171, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 185, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 204, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 215, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 228, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 233, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 243, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 252, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 262, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 277, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 280, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 286, 200)); перемена; Дело 1: враги.адд (новый EnemyRedEye (Level_data.BLOCK_SIZE * 57, 200)); враги.адд (новый EnemyRedEye (Level_data.BLOCK_SIZE * 67, 200)); враги.адд (новый EnemyRedEye (Level_data.BLOCK_SIZE * 74, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 87, 200)); враги.адд (новый EnemyRedEye (Level_data.BLOCK_SIZE * 104, 150)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 117, 200)); враги.адд (новый EnemyRedEye (Level_data.BLOCK_SIZE * 133, 200)); враги.адд (новый EnemyRedEye (Level_data.BLOCK_SIZE * 156, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 177, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 193, 200)); враги.адд (новый EnemyRedEye (Level_data.BLOCK_SIZE * 201, 200)); враги.адд (новый EnemyRedEye (Level_data.BLOCK_SIZE * 216, 200)); враги.адд (новый EnemyRedEye (Level_data.BLOCK_SIZE * 224, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 246, 200)); враги.адд (новый EnemyRedEye (Level_data.BLOCK_SIZE * 260, 200)); враги.адд (новый EnemyComstock (Level_data.BLOCK_SIZE * 277, 100)); Level_data.enemyBlocks.add (новый блок («невидимый», Level_data.BLOCK_SIZE * 34, Level_data.BLOCK_SIZE * 13)); Level_data.enemyBlocks.add (новый блок («невидимый», Level_data.BLOCK_SIZE * 36, Level_data.BLOCK_SIZE * 13)); Level_data.enemyBlocks.add (новый блок («невидимый», Level_data.BLOCK_SIZE * 60, Level_data.BLOCK_SIZE * 9)); Level_data.enemyBlocks.add (новый блок («невидимый», Level_data.BLOCK_SIZE * 61, Level_data.BLOCK_SIZE * 9)); Level_data.enemyBlocks.add (новый блок («невидимый», Level_data.BLOCK_SIZE * 106, Level_data.BLOCK_SIZE * 7)); Level_data.enemyBlocks.add (новый блок («невидимый», Level_data.BLOCK_SIZE * 107, Level_data.BLOCK_SIZE * 7)); Level_data.enemyBlocks.add (новый блок («невидимый», Level_data.BLOCK_SIZE * 168, Level_data.BLOCK_SIZE * 13)); Level_data.enemyBlocks.add (новый блок («невидимый», Level_data.BLOCK_SIZE * 170, Level_data.BLOCK_SIZE * 13)); Level_data.enemyBlocks.add (новый блок («невидимый», Level_data.BLOCK_SIZE * 196, Level_data.BLOCK_SIZE * 13)); Level_data.enemyBlocks.add (новый блок («невидимый», Level_data.BLOCK_SIZE * 197, Level_data.BLOCK_SIZE * 13)); Level_data.enemyBlocks.add (новый блок («невидимый», Level_data.BLOCK_SIZE * 232, Level_data.BLOCK_SIZE * 8)); Level_data.enemyBlocks.add (новый блок («невидимый», Level_data.BLOCK_SIZE * 233, Level_data.BLOCK_SIZE * 8)); перемена; } } приватное статическое void update () { для (EnemyBase враг: враги) { enemy.update (); If (enemy.GetDelete()) { enemies.remove(enemy); break; } } Bullet.update(); Controller.update(); booker.update(); If (!energetic.GetName().Equals("")) energetic.update(); if (levelNumber > 0) elizabeth.update(); if (lightning != null) { lightning.update(); If (lightning.GetDelete()) lightning = null; } menu.update(); hud.update(); weapon.update(); if (booker.getTranslateX() > Level_data.BLOCK_SIZE * 295) cutScene = new CutScenes(levelNumber); } @Override public void start(Stage primaryStage) throws Exception { stage = primaryStage; scene = new Scene(appRoot, 1280, 720); initContent(); stage.getIcons().add(new Image("file:/C:/DeadShock/images/icon.jpg")); stage.setTitle("DeadShock"); stage.setResizable(false); stage.setWidth(scene.getWidth()); stage.setHeight(scene.getHeight()); stage.setScene(scene); stage.show(); timer.start(); } public static void main(String[] args) { launch(args); } } Шаблон рефакторинга: Выделение метода(Extract Method) Список литературы Электронные издания (электронные ресурсы) 1. Гниденко, И. Г. Технология разработки программного обеспечения : учеб. пособие для СПО / И. Г. Гниденко, Ф. Ф. Павлов, Д. Ю. Федоров. — Москва : Издательство Юрайт, 2019. — 235 с. Текст : электронный // ЭБС Юрайт [сайт]. — Режим доступа: https://biblio- online.ru/bcode/438444 2. Разработка, внедрение и адаптация программного обеспечения отраслевой направленности [Электронный ресурс]: учеб. пособие / Г.Н. Федорова. — М. :КУРС : ИНФРА-М, 2019. — 336 с. (Среднее Профессиональное Образование). - Режим доступа: http://znanium.com/catalog/product/989682 3. Программное обеспечение компьютерных сетей и web-серверов [Электронный ресурс]: учеб. пособие / Г.А. Лисьев, П.Ю. Романов, Ю.И. Аскерко. — М. : ИНФРА-М, 2019. — 145 с. - Режим доступа: http://znanium.com/catalog/product/988332 4. Гагарина, Л. Г. Разработка и эксплуатация автоматизированных информационных систем [Электронный ресурс]: учеб. пособие / Л.Г. Гагарина. — М. : ФОРУМ : ИНФРА- М, 2019. — 384 с.- Режим доступа: http://znanium.com/catalog/product/1003025 (ЭБСZnanium) 5. Технология разработки программного обеспечения [Электронный ресурс]: учеб. пособие / Л.Г. Гагарина, Е.В. Кокорева, Б.Д. Сидорова-Виснадул ; под ред. Л.Г. Гагариной. — М. : ИД «ФОРУМ» : ИНФРА-М, 2019. — 400 с. - Режим доступа: http://znanium.com/catalog/product/1011120 (ЭБСZnanium) 6. Программное обеспечение компьютерных сетей [Электронный ресурс]: учеб. пособие / О.В. Исаченко. — М. : ИНФРА-М, 2019. — 117 с. — (Среднее профессиональное образование). - Режим доступа: http://znanium.com/catalog/product/989894 (ЭБСZnanium) 7. Плохотников, К.Э. Метод и искусство математического моделирования : курс лекций / К.Э. Плохотников. — 2-е изд., стер. — Москва : ФЛИНТА, 2017. — 519 с. - Текст : электронный. - Режим доступа: https://new.znanium.com/catalog/product/1034329 8. Математическое моделирование технических систем [Электронный ресурс]: учебник / В.П. Тарасик. — Минск : Новое знание ; М. : ИНФРА-М, 2019. — 592 с. - Режим доступа: http://znanium.com/catalog/product/1019246 Методические издания 1. Игнатенко, Е.С.. Методические указания по выполнению практических работ по МДК 02.01 Технология разработки програмного обеспечения.– Нефтеюганск: НИК(филиал) ФГБОУ ВО «ЮГУ», 2019 [Электронный ресурс] Режим доступа: локальная сеть филиала. Периодические издания 1. Программные продукты и системы [Электронный ресурс]: журнал.- Тверь: — Научно- исследовательский институт «Центрпрограммсистем» Электронно-библиотечная система «Лань» : [сайт]. — Режим доступа: https://e.lanbook.com/journal/2276 |