Программная инженерия. Лекция 4

Содержание

Слайд 2

Что такое Функциональная спецификация? Если техническое задание затрагивает все, что касается

Что такое Функциональная спецификация?

Если техническое задание затрагивает все, что касается отношений

между заказчиком и разработчиком, то спецификации – уже внутренний документ. Внутренний, для разработки.
Слайд 3

Что такое Функциональная спецификация? Функциональная спецификация описывает как все должно работать

Что такое Функциональная спецификация?

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

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

Что такое Функциональная спецификация? Во-первых, нужно разработать функциональную спецификацию. Основная ее

Что такое Функциональная спецификация?

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

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

Что такое Функциональная спецификация? Если описываете продукт, с которым будут работать

Что такое Функциональная спецификация?

Если описываете продукт, с которым будут работать конечные

пользователи, сюда входит то, что называется «Пользовательским интерфейсом» – набор окон, элементов ввода-вывода информации и описание как можно большего количества ситуаций работы с системой.
Если продукт является компонентом, который будет использоваться в более объемной системе, то в это описание должны входить все интерфейсные функции этого модуля.
Слайд 6

Для чего она нужна? Когда вы проектируете ваш программный продукт на

Для чего она нужна?

Когда вы проектируете ваш программный продукт на человеческом

языке, вам нужно меньше времени, чтобы попытаться вдуматься в альтернативные пути, исправить ошибки и улучшить разработку. Менее болезненно, когда удаляет абзац в тексте, чем если вы реализуете без проектирования, итерационная разработка займет недели.
Хуже всего, что программист, который потратил 2 недели на написание определенного кода, привязывается к нему душой, независимо от того, насколько тот неправильный. Неважно, что скажут начальник и заказчики.
Слайд 7

Для чего она нужна? Спецификации сокращают информационные потоки. Когда вы пишете

Для чего она нужна?

Спецификации сокращают информационные потоки. Когда вы пишете спецификацию,

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

Для чего она нужна? Без детальной спецификации невозможно составить план. Почти

Для чего она нужна?

Без детальной спецификации невозможно составить план. Почти в

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

Для чего она нужна? Распространена следующая ошибка: разработчики долго обсуждают, каким

Для чего она нужна?

Распространена следующая ошибка: разработчики долго обсуждают, каким образом

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

Что должно быть в функциональной спецификации? Название, Автор, Общая информация, Сценарии, Детали, Проблемы, Заметки.

Что должно быть в функциональной спецификации?

Название,
Автор,
Общая информация,
Сценарии,
Детали,
Проблемы,
Заметки.

Слайд 11

Что должно быть в функциональной спецификации? Автор Спецификация должна иметь автора.

Что должно быть в функциональной спецификации?

Автор
Спецификация должна иметь автора. Не стоит

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

Что должно быть в функциональной спецификации? Общая информация Здесь вы должны

Что должно быть в функциональной спецификации?

Общая информация
Здесь вы должны привести общее

описание системы, блок-схему, архитектуру системы, прочитав, которую читатели должны составить себе общую картину того, что они делают.
Рамки системы, т.е. вы должны описать чего не будет делать ваша система.
Пригласить, всех к обсуждению или к исправлению ошибок.
Слайд 13

Что должно быть в функциональной спецификации? Сценарии При проектировании программных продуктов

Что должно быть в функциональной спецификации?

Сценарии
При проектировании программных продуктов у вас

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

Что должно быть в функциональной спецификации? Детали Детали наиболее важная часть

Что должно быть в функциональной спецификации?

Детали
Детали наиболее важная часть функциональной спецификации.

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

Что должно быть в функциональной спецификации? Проблемы Вполне приемлемо, если первая

Что должно быть в функциональной спецификации?

Проблемы
Вполне приемлемо, если первая версия вашей

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

Кто должен писать функциональную спецификацию? Если вы когда-либо заботились почему программисты

Кто должен писать функциональную спецификацию?

Если вы когда-либо заботились почему программисты более

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

Кто должен писать функциональную спецификацию? Менеджеры проектов это отдельный класс специалистов.

Кто должен писать функциональную спецификацию?

Менеджеры проектов это отдельный класс специалистов. Они

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

Обновления функциональной спецификации Функциональная спецификация всегда должна оставаться актуальной. Она должна

Обновления функциональной спецификации

Функциональная спецификация всегда должна оставаться актуальной. Она должна обновляться

и во время реализации проекта если были приняты новые проектные решения.
Слайд 19

Техническая спецификация Техническая спецификация описывает внутреннюю реализацию системы. Она описывает структуры

Техническая спецификация

Техническая спецификация описывает внутреннюю реализацию системы. Она описывает структуры данных,

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

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

План работы

После того, как вы разберетесь со спецификациями, вы будете готовы

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

Для чего нужен план? План позволяет не только распланировать действия, которые

Для чего нужен план?

План позволяет не только распланировать действия, которые вы

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

Что должно быть в плане? Минимально план должен включать: Задачи, Исполнителя,

Что должно быть в плане?

Минимально план должен включать:
Задачи,
Исполнителя,
Длительность реализации задачи,
Приоритет.
Так же

в нее можно включать:
Начальная оценка выполняемости,
Текущая оценка,
Прошло,
осталось
Слайд 23

Кто его должен составлять? Только программист, который будет писать данный код,

Кто его должен составлять?

Только программист, который будет писать данный код, может

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

Пример

Пример

Слайд 25

Подсказки Каждое свойство должно состоять из нескольких задач. Ставьте очень мелко

Подсказки

Каждое свойство должно состоять из нескольких задач.
Ставьте очень мелко дроблёные задачи.


Добавьте строки для Праздников, Отпуска, и т.д.
Поместите в план время отладки!
Добавьте в план время на интеграцию.
Добавьте буфер в план.
Время выполнения задачи, которое вы запланировали, лучше умножить на 3, тогда вы получите более реальные сроки выполнения.