Оценка принципов разработки ПО. Курсовая работа (т). Информационное обеспечение, программирование.

Оценка принципов разработки ПО. Курсовая работа (т). Информационное обеспечение, программирование.




⚡ 👉🏻👉🏻👉🏻 ИНФОРМАЦИЯ ДОСТУПНА ЗДЕСЬ ЖМИТЕ 👈🏻👈🏻👈🏻


























































Информационное обеспечение, программирование

Вы можете узнать стоимость помощи в написании студенческой работы.


Помощь в написании работы, которую точно примут!

Похожие работы на - Оценка принципов разработки ПО

Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе

Нужна качественная работа без плагиата?

Не нашел материал для своей работы?


Поможем написать качественную работу Без плагиата!

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


Основной задачей 90-х годов и начала XXI века стало
совершенствование качества компьютерных приложений, возможности которых целиком
определяются программным обеспечением (ПО).


Современный персональный компьютер теперь
имеет производительность большой ЭВМ 80-х годов. Сняты практически все
аппаратные ограничения на решение задач. Оставшиеся ограничения приходятся на
долю ПО.


Чрезвычайно актуальными стали следующие
проблемы:


аппаратная сложность опережает наше умение
строить ПО, использующее потенциальные возможности аппаратуры;


наше умение строить новые программы
отстает от требований к новым программам;


нашим возможностям эксплуатировать
существующие программы угрожает низкое качество их разработки.


Ключом к решению этих проблем является
грамотная организация процесса создания ПО, реализация технологических
принципов промышленного конструирования программных систем (ПС).


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


Компьютерные науки вообще и программная
инженерия в частности - очень популярные и стремительно развивающиеся области
знаний. Обоснование простое: человеческое общество XXI века - информационное
общество. Об этом говорят цифры: в ведущих странах занятость населения в
информационной сфере составляет 60%, а в сфере материального производства -
40%. Именно поэтому специальности направления «Компьютерные науки и
информационные технологии» гарантируют приобретение наиболее престижных, дефицитных
и высокооплачиваемых профессий. Так считают во всех развитых странах мира. Ведь
не зря утверждают: «Кто владеет информацией - тот владеет миром!»


Поэтому понятно то пристальное внимание,
которое уделяет компьютерному образованию мировое сообщество, понятно
стремление унифицировать и упорядочить знания, необходимые специалисту этого
направления. Одними из результатов такой работы являются международный стандарт
по компьютерному образованию Computing Curricula 2001 - Computer Science и международный стандарт по программной инженерии IEEE/ACM
Software Engineering Body of Knowledge SWEBOK 2001.







1. Базовые основы разработки программного
обеспечения




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


Различают методы, средства и процедуры
технологии разработки ПО [1].


Методы обеспечивают решение следующих
задач:


анализ системных и программных требований;


проектирование алгоритмов, структур данных
и программных структур;


Средства (утилиты) разработки ПО
обеспечивают автоматизированную или автоматическую поддержку методов. В целях
совместного применения утилиты могут объединяться в системы автоматизированного
конструирования ПО. Такие системы принято называть CASE-системами. Аббревиатура CASE расшифровывается как Computer Aided Software Engineering (программная инженерия с
компьютерной поддержкой).


Процедуры являются «клеем», который соединяет
методы и утилиты так, что они обеспечивают непрерывную технологическую цепочку
разработки. Процедуры определяют:


- порядок применения методов и утилит;


формирование отчетов, форм по
соответствующим требованиям;


контроль, который помогает обеспечивать
качество и координировать изменения;


формирование «вех», по которым
руководители оценивают прогресс.


Процесс конструирования программного
обеспечения состоит из последовательности шагов, использующих методы, утилиты и
процедуры. Эти последовательности шагов часто называют парадигмами технологии
конструирования ПО.


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


Рассмотрим наиболее популярные парадигмы
технологии конструирования ПО.




Старейшей парадигмой процесса разработки
ПО является классический жизненный цикл (автор Уинстон Ройс, 1970) [1].


Очень часто классический жизненный цикл
называют каскадной или водопадной моделью, подчеркивая, что разработка
рассматривается как последовательность этапов, причем переход на следующий,
иерархически нижний этап происходит только после полного завершения работ на
текущем этапе (рис. 1).


Охарактеризуем содержание основных этапов.


Подразумевается, что разработка начинается
на системном уровне и проходит через анализ, проектирование, кодирование,
тестирование и сопровождение. При этом моделируются действия стандартного
инженерного цикла.


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


Анализ требований относится к программному
элементу - программному обеспечению. Уточняются и детализируются его функции,
характеристики и интерфейс.


Все определения документируются в спецификации
анализа. Здесь же завершается решение задачи планирования проекта.




Рис. 1. Классический жизненный цикл
разработки ПО




Проектирование состоит в создании
представлений:


входного и выходного интерфейса (входных и
выходных форм данных).


Исходные данные для проектирования
содержатся в спецификации анализа, то есть в ходе проектирования
выполняется трансляция требований к ПО во множество проектных представлений.
При решении задач проектирования основное внимание уделяется качеству будущего
программного продукта.


Кодирование состоит в переводе
результатов проектирования в текст на языке программирования.


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


Сопровождение - это внесение изменений в
эксплуатируемое ПО. Цели изменений:


адаптация к изменениям внешней для ПО
среды;


усовершенствование ПО по требованиям
заказчика.


Сопровождение ПО состоит в повторном
применении каждого из предшествующих шагов (этапов) жизненного цикла к
существующей программе, но не в разработке новой программы.


Как и любая инженерная схема, классический
жизненный цикл имеет достоинства и недостатки.


Достоинства классического
жизненного цикла: дает план и временной график по всем этапам проекта, упорядочивает
ход конструирования.


Недостатки классического
жизненного цикла:


1) реальные проекты часто требуют
отклонения от стандартной последовательности шагов;


2) цикл основан на точной формулировке исходных требований к
ПО (реально в начале проекта требования заказчика определены лишь частично);


3) результаты проекта доступны заказчику
только в конце работы.




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


Основная цель макетирования - снять
неопределенности в требованиях заказчика.


Макетирование (прототипирование) - это
процесс создания модели (макета) требуемого программного продукта.


Модель может принимать одну из трех форм:


) бумажный макет или макет на основе ПК
(изображает или рисует человеко-машинный диалог);


) работающий макет (выполняет некоторую
часть требуемых функций);


) существующая программа (характеристики
которой затем должны быть улучшены).
Последовательность действий при
макетировании представлена на рис. 3. Макетирование начинается со сбора и
уточнения требований к создаваемому ПО Разработчик и заказчик встречаются и
определяют все цели ПО, устанавливают, какие требования известны, а какие
предстоит доопределить.


Затем выполняется быстрое проектирование.
В нем внимание сосредоточивается на тех характеристиках ПО, которые должны быть
видимы пользователю.


Быстрое проектирование приводит к
построению макета.


Макет оценивается заказчиком и
используется для уточнения требований к ПО.


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


Достоинство
макетирования: обеспечивает определение полных требований к ПО.


- заказчик может принять макет за продукт;


разработчик может принять макет за
продукт.


Поясним суть недостатков. Когда заказчик
видит работающую версию ПО, он перестает сознавать, что детали макета скреплены
«жевательной резинкой и проволокой»; он забывает, что в погоне за работающим
вариантом оставлены нерешенными вопросы качества и удобства сопровождения ПО.
Когда заказчику говорят, что продукт должен быть перестроен, он начинает
возмущаться и требовать, чтобы макет «в три приема» был превращен в рабочий
продукт. Очень часто это отрицательно сказывается на управлении разработкой ПО.







Рис. 3. Последовательность действий при
макетировании




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


Очевидно, что преодоление этих недостатков
требует борьбы с житейским соблазном - принять желаемое за действительное.




Существуют 3 стратегии конструирования ПО
[1]:


- однократный проход (водопадная стратегия) -
линейная последовательность этапов конструирования;


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


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


Характеристики стратегий конструирования
ПО в соответствии с требованиями стандарта IEEE/EIA 12207.2 приведены в
табл. 1.




Таблица 1. Характеристики стратегий конструирования




В начале
процесса определены все требования?

Однократный
проход Инкрементная (запланированное улучшение продукта) Эволюционная

В терминах общей стратегии конструирования
ПО различают ряд моделей:


.       Инкрементная модель является
классическим примером инкрементной стратегии конструирования. Она объединяет
элементы последовательной водопадной модели с итерационной философией
макетирования. Каждая линейная последовательность здесь вырабатывает
поставляемый инкремент ПО. Например, ПО для обработки слов в 1-м инкременте
реализует функции базовой обработки файлов, функции редактирования и
документирования; во 2-м инкременте - более сложные возможности редактирования
и документирования; в 3-м инкременте - проверку орфографии и грамматики; в 4-м
инкременте - возможности компоновки страницы.


.       Модель быстрой разработки
приложений (Rapid Application Development) - второй пример применения инкрементной
стратегии конструирования. RAD-модель обеспечивает экстремально короткий цикл
разработки. RAD - высокоскоростная адаптация линейной последовательной модели, в
которой быстрая разработка достигается за счет использования
компонентно-ориентированного конструирования. Если требования полностью
определены, а проектная область ограничена, RAD-процесс позволяет группе
создать полностью функциональную систему за очень короткое время (60-90 дней). RAD-подход ориентирован на
разработку информационных систем.


.       Спиральная модель - классический
пример применения эволюционной стратегии конструирования. Спиральная модель
(автор Барри Боэм, 1988) базируется на лучших свойствах классического
жизненного цикла и макетирования, к которым добавляется новый элемент - анализ
риска, отсутствующий в этих парадигмах [13].


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


.       ХР-процесс. Экстремальное
программирование (eXtreme Programming, XP) - облегченный (подвижный) процесс
(или методология), главный автор которого - Кент Бек (1999) [4]. ХР-процесс
ориентирован на группы малого и среднего размера, строящие программное
обеспечение в условиях неопределенных или быстро изменяющихся требований. ХР-группу
образуют до 10 сотрудников, которые размещаются в одном помещении. Основная
идея ХР - устранить высокую стоимость изменения, характерную для приложений с
использованием объектов, паттернов* и реляционных баз данных. Поэтому
ХР-процесс должен быть высокодинамичным процессом. ХР-группа имеет дело с
изменениями требований на всем протяжении итерационного цикла разработки,
причем цикл состоит из очень коротких итераций. Четырьмя базовыми действиями в
ХР-цикле являются: кодирование, тестирование, выслушивание заказчика и
проектирование. Динамизм обеспечивается с помощью четырех характеристик:
непрерывной связи с заказчиком (и в пределах группы), простоты (всегда
выбирается минимальное решение), быстрой обратной связи (с помощью модульного и
функционального тестирования), смелости в проведении профилактики возможных
проблем.




В современных условиях, условиях жесткой
конкуренции, очень важно гарантировать высокое качество вашего процесса
разработки ПО. Такую гарантию дает сертификат качества процесса, подтверждающий
его соответствие принятым международным стандартам. Каждый такой стандарт
фиксирует свою модель обеспечения качества. Наиболее авторитетны модели
стандартов ISO 9001:2000, ISO/ IEC 15504 и модель зрелости процесса конструирования
ПО (Capability Maturity Model - СММ) Института программной инженерии при
американском университете Карнеги-Меллон.


Модель стандарта ISO 9001:2000 ориентирована
на процессы разработки из любых областей человеческой деятельности. Стандарт ISO/IEC 15504 специализируется
на процессах программной разработки и отличается более высоким уровнем
детализации. Достаточно сказать, что объем этого стандарта превышает 500
страниц. Значительная часть идей ISO/IEC 15504 взята из модели СММ.


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


Напротив, в зрелой компании работают ясные
процедуры управления проектами и построения программных продуктов. По мере
необходимости эти процедуры уточняются и развиваются. Оценки длительности и
затрат разработки точны, основываются на накопленном опыте. Кроме того, в
компании имеются и действуют корпоративные стандарты на процессы взаимодействия
с заказчиком, процессы анализа, проектирования, программирования, тестирования
и внедрения программных продуктов. Все это создает среду, обеспечивающую
качественную разработку программного обеспечения.


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


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




Рис. 4. Пять уровней зрелости модели СММ





Начальный уровень (уровень 1) означает,
что процесс в компании не формализован. Он не может строго планироваться и
отслеживаться, его успех носит случайный характер. Результат работы целиком и
полностью зависит от личных качеств отдельных сотрудников. При увольнении таких
сотрудников проект останавливается.


Для перехода на повторяемый уровень
(уровень 2) необходимо внедрить формальные процедуры для выполнения основных
элементов процесса конструирования. Результаты выполнения процесса
соответствуют заданным требованиям и стандартам. Основное отличие от уровня 1
состоит в том, что выполнение процесса планируется и контролируется.
Применяемые средства планирования и управления дают возможность повторения
ранее достигнутых успехов.


Следующий, определенный уровень (уровень
3) требует, чтобы все элементы процесса были определены, стандартизованы и
задокументированы. Основное отличие от уровня 2 заключается в том, что элементы
процесса уровня 3 планируются и управляются на основе единого стандарта
компании. Качество разрабатываемого ПО уже не зависит от способностей отдельных
личностей.


С переходом на управляемый уровень
(уровень 4) в компании принимаются количественные показатели качества как
программных продуктов, так и процесса. Это обеспечивает более точное
планирование проекта и контроль качества его результатов. Основное отличие от
уровня 3 состоит в более объективной, количественной оценке продукта и
процесса.


Высший, оптимизирующий уровень (уровень 5)
подразумевает, что главной задачей компании становится постоянное улучшение и
повышение эффективности существующих процессов, ввод новых технологий. Основное
отличие от уровня 4 заключается в том, что технология создания и сопровождения
программных продуктов планомерно и последовательно совершенствуется.


Каждый уровень СММ характеризуется
областью ключевых процессов (ОКП), причем считается, что каждый последующий
уровень включает в себя все характеристики предыдущих уровней. Иначе говоря,
для 3-го уровня зрелости рассматриваются ОКП 3-го уровня, ОКП 2-го уровня и ОКП
1-го уровня. Область ключевых процессов образуют процессы, которые при
совместном выполнении приводят к достижению определенного набора целей.
Например, ОКП 5-го уровня образуют процессы:


Если все цели ОКП достигнуты, компании
присваивается сертификат данного уровня зрелости. Если хотя бы одна цель не
достигнута, то компания не может соответствовать данному уровню СММ.







Предполагается, что инженеры-программисты просто обеспечивают
работу программ, которые нужны пользователям на их компьютерах. Это означает,
что программы должны делать правильные вещи. Они должны быть устойчивыми.
Иногда мы должны знать вполне определенно, что они устойчивы (надежны), а
иногда нам требуется уметь это доказать. Нам всегда бы понравилось оказаться
способными все это делать! Необходимые программы должны работать так же и
завтра, что обычно означает, что программы сегодня должны быть поддерживаемыми.
Эта работа, должна быть эффективна по стоимости, иначе программы, как продукт,
вообще могут не найти своего потребителя. Доставка должна быть вовремя. В этом
заключается, так называемая программная инженерия разработки современного
востребованного программного обеспечения.


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




Традиционный взгляд на работу состоит в том, что команда
выполняет работу, а отдельный человек вносит вклад в общие усилия. Но как
картостроители мы можем попытаться посмотреть на вещи всеми возможными
способами, чтобы проверить, насколько они информативны. Мы можем обрисовать
границу системы вокруг программирующей команды и заметить, что там нет ничего,
что не смог бы сделать отдельный программист. Такие действия, как формулировка
требований, проектирование, реализация, тестирование, управление,
рецензирование, компилирование (build), архивирование и управление
конфигурацией, должны быть выполнены отдельным программистом даже для
выполнения небольшой работы. Поэтому мы можем рассматривать деятельность в
программной инженерии как распределение того, что один человек мог делать
совершенно эффективно в «любительском» («непрофессиональном») режиме во время
обучения!


Мы распределяем программирование по тем же причинам, по
которым распределяем любой вид обработки: пригодность (availability), параллелизм
и специализация.


Такой взгляд приносит понимание. Мы должны аккуратно выделить
различия между задачами. Иногда мы можем получать преимущества от выполнения
двух задач одним человеком, когда нас не должно волновать, что они объединены.
Например, во многих организациях принята практика разделения идентификации
требований и выбора архитектуры, но когда они переходят на технологию
моделирования объектов в стиле Буча, то внимают совету и объединяют эти задачи.
Когда мы разделяем навыки разработки и тестирования, мы можем извлечь из этого
дополнительные преимущества, контролируя взаимодействие между стадиями таким
образом, что мышлению инженера-тестера не угрожает мышление проектировщика. Был
менеджер проекта, скорее всего паковщик. Он не имел ясного понимания того, что
он делал и почему, а отсутствие какой-нибудь позитивной модели своей работы
привело его к мысли, что ключевая цель состоит в предотвращении какого бы то ни
было взаимодействия. Тестеры не должны были знать, как установить (создать) условия
для компонентов, которые они должны были тестировать, а проектировщикам не
дозволялось об этом говорить. Яростные споры продолжались днями. Это реально
произошло тогда, когда мы потеряли ощущение большой картины.


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


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


Чтобы понять программную инженерию, мы должны понять
программиста. Давайте позволим программисту определять требования (идентичные
требованиям пользователя) и исследуем сценарий, который заканчивается созданием
наипростейшей возможной программы.


Вечером в комнате становится темно.


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


Есть желание (в комнате должно быть светло), и есть понимание
(что воздействие на выключатель удовлетворит желание).


Динамические предметные области, системы и семантика детально
где-то обсуждаются. Но здесь мы концентрируемся на лучшем осознании, что есть
желание и что есть понимание.


Здесь стоит отметить, что мы подразумеваем под словом
«программист». Робот, пишущий все ту же RPG 3 для распечатки счетов, все еще не
делает никакого реального программирования вообще, но менеджер проекта,
используя Excel для получения интуитивного понимания того, когда бюджет
сократится и в чем главные причины, несомненно занимается реальным
программированием.
Хорошее общее правило - держать всю свою работу, включая
средства конфигурации (в файлах скриптов, если нужно) в виде простого текста.
Имейте возможность при необходимости стереть все, кроме исходного текста, и
автоматически перекомпилировать.


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


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


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


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


Сходящаяся в одну точку (Convergent);


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


По некоторым причинам существует мнение, что для того, чтобы
системы были робастными (устойчивыми к ошибкам), им требуются нормальные
режимы, режимы сбоя, в которые они попадают при сбое, и режимы восстановления,
в которые они переходят после попадания в режим сбоя для возврата в нормальный
режим. Частично это провоцируется потерявшими ориентировку пользователями,
которые пытаются описать цели в случае сбоя, но делают это рассуждая о
«режимах» системы. Это деликатная область, поскольку при обсуждении сбоя
пользователи должны думать о составляющих реальной системы, которые могут
давать сбой, и они должны обсуждать сбои заранее, раз они вынуждены подписывать
Требования Пользователя, которые потом могут быть использ
Похожие работы на - Оценка принципов разработки ПО Курсовая работа (т). Информационное обеспечение, программирование.
Музыкальные Сочинения Чайковского
Дипломные Работы Темы По Специальности 35.02 08
Курсовая Работа На Тему Разработка Бизнес-Плана Новой Продукции
Функции И Полномочия Арбитражных Судов Курсовая
Почему Человеку Сложно Понять Себя Итоговое Сочинение
Медный Всадник Итоговое Сочинение 2022
Управление Затратами На Предприятии Курсовая
Сочинение Про Сказочную Страну 4 Класс
Доклад: Мозг и дух. Дух в природе
Гештальтпсихология Реферат По Психологии
Реферат: Направления совершенствования планирования материально-технического обеспечения предприятия
Статья: Из разборов лирики Фета: «Облаком волнистым…»
Аппараты Реферат
Реферат: Профессиональная этика специалиста. Основы его профессиональной деятельности
Сочинение Рассуждение На Тему Чем Опасно Равнодушие
Реферат: Международная безопасность и глобальные угрозы
Курсовая работа: Анализ ликвидности баланса и платежеспособности предприятия
Реферат На Тему Воспитание Жизнеспособности Школьников
Дипломная работа по теме Изменение роли России в международном разделении труда (конец XX - начало XXI вв.): проблемы и возможности преодоления ресурсной специализации
Реферат На Тему Действительные Числа
Реферат: Маркетинговое исследование рынка рукавов высокого давления
Похожие работы на - Види позакласної та позашкільної роботи з образотворчого мистецтва у початкових класах
Похожие работы на - Теоретические основы диагностики в судебном почерковедении

Report Page