Документирование требований
Требования обычно используются как средство коммуникации между различными заинтересованными лицами. Это означает, что требования должны быть просты и понятны для обычных пользователей и разработчиков. Один общий способ задокументировать требование — это написать утверждение о том, что должна сделать система.
В зарубежной и российской практике встречаются следующие типы документов требований:
Концепция программы (Vision) [источник не указан 2071 день]
Спецификация требований программного обеспечения (англ. Software Requirements Specification, SRS)
Спецификацию программного обеспечения часто называют техническим заданием. Это ошибка. Спецификация требований является частью технического задания в случае создания автоматизированных информационных систем.
За создание спецификации программного обеспечения чаще всего в российской практике отвечает Системный аналитик, иногда — Бизнес-аналитик.
Для графических моделей требований исторически использовались диаграммы или методологии графического моделирования: ER (IDEF1FX), IDEF0, IDEF3, DFD, UML, OCL, SysML, ARIS (eEPC, VAD).
Изменение требований
В общем случае требования изменяются со временем. После того, как требования определены и одобрены, изменения должны попадать под контроль внесения изменений. Для многих проектов требования изменяются до завершения создания системы. Это происходит частично из-за сложности программного обеспечения и того факта, что пользователи не знают, что им нужно на самом деле. Эта особенность требований привела к появлению процесса управления требованиями.
12-лекция. Абстрактные типы данных. Рекурсивные типы данных
ПЛАН:
Абстрактные типы данных
Рекурсивные типы данных
Темой этой лекции является абстрактный тип данных или ADT. Вы сейчас должны быть хорошо знакомы с различными видами типов данных, в том числе примитивными типами данных, такими как int для целых и double для чисел с плавающей точкой. Мы также обсудили массив, как простую структуру данных, которая облегчает хранение и извлечение данных одного и того же типа.
Когда мы используем тип данных, важно думать не только о данных, которые он представляет, важно также учитывать операции, которые связаны с этими данными. Например, когда мы используем тип данных int, сами данные не были бы слишком полезны без арифметических операций, таких как сложение, вычитание, умножение и деление. Когда мы используем тип String, методы, такие как charAt, compareTo и substring часто используются для манипулирования строкой символов, которую он представляет. В общем, абстрактный тип данных (ADT) представляет собой структуру данных, которая определяет характеристики набора данных и операции, которые можно выполнять с набором данных.
Но подробности о том, как данные представлены, и реализация скрыты от пользователей. Например, когда мы используем строку символов, мы не должны знать, как строка символов представлена внутренне и как метод charAt реализуется, пока он возвращает char значение выбранной позиции строки, как указано в спецификации метода charAt. Таким образом, ключевой концепцией ADT является то, что он скрывает детали реализации от пользователей. Ключевые преимущества в использовании ADT является то, что он делает проще программирование и нам не нужно повторно реализовать тип данных каждый раз, когда он нам нужен. Что еще более важно, любые изменения в конкретной реализации ADT не влияют на использование типа данных, поэтому важно, что, когда используется ADT, мы не должны рассматривать какие-либо специальные функции реализации.
Я буду использовать ADT, известный как стек, чтобы проиллюстрировать полезность ADT. Можно придумать множество примеров из реальной жизни, которые используют ситуации со стеком. Например, стопка монет может храниться в денежном разменнике, мы часто видим штабеля книг в библиотеке или книжных магазинах, когда мы идем в кафе, то вынимаем пищевые лотки из стопки, и мы вынимаем корзину для покупок в супермаркете. Вы можете не знать об этом, но стеки часто используются в компьютерных операциях, когда мы отменяем операции, которые мы сделали в программном приложении, стек используется для хранения последовательности операций, и последняя выполненная операция будут находиться на вершине стека, так что она будет первой для отмены.
Когда мы используем веб браузер, список сайтов, которые мы посетили, может храниться в стеке, так что, когда нажимаешь на кнопку "назад", можно вернуться к последнему сайту, на котором побывали. Мы также упоминали, что вызовы методов хранятся в стеке программы таким образом, что локальные переменные могут быть сохранены. Для всех этих примеров можно увидеть, что одна общая характеристика стека это то, что добавление и удаление записей может быть осуществлено только в верхней части стека.
Так как добавление и удаление записей может быть сделано только на вершине стека, последняя запись, которая добавляется в стек, всегда будет первой записью, которая должны быть удалена из стека. Стек часто называют last-in-first out структурой данных (LIFO). Две важные операции, поддерживаемые стеком абстрактных типов данных, являются push и pop. Операция push добавляет запись на вершину стека и pop является операцией по удалению записи из верхней части стека. Обратите внимание, что если задача требует вставки записи в середину набора или удаления записи из нижней части набора, стек не будет соответствующим типом данных для данной задачи. Другие ADT также часто доступны в большинстве объектно-ориентированных языков программирования.
Другой ADT, похожий на стек, называется очередью. В отличие от стека, добавление записей в очереди, можно проводить только в хвосте или в конце очереди. Это похоже на то, когда вы выстраиваетесь купить билет или ждать своей очереди в супермаркете, Вы должны встать в конец очереди. Если же вы встанете в начало или в середину очереди, я уверен, что на вас кричали бы все другие, которые уже в очереди. Удаление же записей, подобно стеку, может быть осуществлено только в начале очереди. Очередь часто называют структурой данных FIFO, так как элементы, которые должны быть удалены из очереди, будут основываться на их порядке в очереди. Два широко используемые операции это addLast для добавления объекта в конец очереди и removeFirst для удаления и возвращения объекта в начало очереди.
Do'stlaringiz bilan baham: |