2
.docxМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ,
СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»
(СПбГУТ)
Факультет Инфокоммуникационных сетей и систем
Кафедра Защищенных систем связи
Дисциплина Защита программ и данных
ОТЧЕТ
Исследование полного жизненного цикла ПО
(тема отчета)
Направление/специальность подготовки
10.03.01 Информационная безопасность
(код и наименование направления/специальности)
Студент:
(Ф.И.О., № группы) (подпись)
1. Выбрать простую идею своей новой программы.
Программа для рисования геометрических фигур на координатной плоскости.
2. Описать идею программы (ППО_1)
Программа должна запрашивать у пользователя исходные данные и выводить координатную плоскость с рисунками геометрической фигуры на ней.
3. Создать концептуальную модель программы (ППО_2)
4. Создать архитектуру своей программы (ППО_3)
Язык Python
Модуль ввода – input()
Модуль вывода – print()
Объекты входных/выходных данных для задавания фигуры (int) и координат (float)
Подпрограммы для основных процессов и операций – if/else/def
Внешние подключаемые библиотеки - turtle
5. Создать блок-схемы алгоритмов 3-х любых подпрограмм (ППО_4)
6. Написать исходный код для выбранных 3-х блок-схем (ППО_5)
import turtle
from random import choice, randint
window = turtle.Screen()
window.title("1")
window.setup(width=1.0, height=1.0)
window.bgcolor("Black")
# поле
border = turtle.Turtle()
border.speed(0)
border.begin_fill()
border.color('white')
border.goto(-800, 500)
border.goto(800, 500)
border.goto(800, -500)
border.goto(-800, -500)
border.goto(-800, 500)
border.end_fill()
border.hideturtle()
# плоскость
border = turtle.Turtle()
border.speed(0)
border.goto(0, 500)
border.pensize(2)
border.color('Black')
border.goto(0, -500)
border = turtle.Turtle()
border.speed(0)
border.goto(790, 0)
border.pensize(2)
border.color('Black')
border.goto(-790, 0)
border.hideturtle()
#выбор
figure = int(input("Выберите фигуру: 1 - Окружность; 2 - Квадрат; 3 - Прямая; 4 - Прямоугольник "))
if figure == 1:
Circle = turtle.Turtle()
x = float(input("Введите координату x окружности:"))
y = float(input("Введите координату y: окружности"))
radius = float(input("Введите радиус окружности:"))
Circle.up()
Circle.goto(x, y)
Circle.down()
Circle.pensize(3)
Circle.circle(radius)
Circle.hideturtle()
elif (figure == 2):
Square = turtle.Turtle()
x_2 = float(input("Введите координату квадрата x: "))
y_2 = float(input("Введите координату квадрата y: "))
stk = float(input("Введите сторону квадрата: "))
Square.up()
Square.goto(x_2, y_2)
Square.down()
Square.pensize(3)
Square.forward(stk)
Square.left(90)
Square.forward(stk)
Square.left(90)
Square.forward(stk)
Square.left(90)
Square.forward(stk)
Square.left(90)
Square.hideturtle()
elif (figure == 3):
Straight = turtle.Turtle()
y_3 = float(input("Введите координату прямой: "))
Straight.up()
Straight.goto(-500, y_3)
Straight.down()
Straight.pensize(3)
Straight.forward(1000)
elif (figure == 4):
t = turtle.Turtle()
x_4 = float(input("Введите координату прямоугольника x: "))
y_4 = float(input("Введите координату прямоугольника y: "))
sx = float(input("Введите длину прямоугольника: "))
sy = float(input("Введите ширину прямоугольника: "))
t.up()
t.goto(x_4, y_4)
t.down()
t.pensize(3)
def rectangle(w, h):
for i in range(2):
t.left(90)
t.fd(h)
t.left(90)
t.fd(w)
rectangle(sx, sy)
t.hideturtle()
else:
print("Введена неправильная информация")
7. Скомпилировать исходный код 3-х блок-схем в ассемблерный или байт-код (ППО_6)
Например: ассемблерный код для подпрограмм ввода данных, деления и вывода данных
Например: байт-код (CIL/JBC) для подпрограмм ввода данных, деления и вывода данных
8. Для каждого из представлений ППО_1–ППО_6 придумать уязвимость, которая может появиться в этом представлении
Например: для следующих представлений возможны уязвимости:
ППО_1 – Нету, оно считается идеальным
ППО_2 – Фигура выбирается числом от 1 до 4
ППО_3 – Слишком большие координаты могут не поместиться на координатную плоскость
ППО_4 – При вводе неверного символа при первом вводе программа «ломается»
ППО_5 – Если пойти не по сценарию, программа «сломается»
ППО_6 –
Санкт-Петербург 2021