Введение

 

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

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

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

Сняты практически все аппаратные ограничения на реше­ние задач. Оставшиеся ограничения приходятся на долю ПО.

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

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

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

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

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

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

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

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

Различают методы, средства и процедуры ТРПО. Методы обеспечивают решение следующих задач:

- планирование и оценка проекта;

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

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

- кодирование;

- тестирование;

- сопровождение.

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

Требования к подготовке инженеров программистов непрерывно растут.

Выпускник по специальности «Программное обеспечение вычислительной техники и автоматизированных систем» (220400) должен знать:

- модели жизненного цикла программных средств (ПС), модели процесса разработки ПС;

- технологии и инструментальные средства, применяемые на всех этапах разработки ПС;

- основные методы построения и анализа алгоритмов, основные результаты теории сложности алгоритмов;

- задачи, методы и приемы аналитической верификации программ;

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

- формальные модели, применяемые при анализе, разработке и испытаниях ПС;

- формальные модели, применяемые при анализе, разработке и испытаниях ПС;

- методы обеспечения надежности и информационной безопасности ПС;

- основные модели, методы и алгоритмы теории языков программирования и методов трансляции;

- основные модели и методы теории вычислительных процессов;

- архитектуру многомашинных и многопроцессорных вычислительных систем (ВС), вычисленных сетей.

 

 

Выпускник должен владеть:

- методами, языками и технологиями разработки корректных ПС;

- методами разработки и анализа алгоритмов, моделей и структур данных, объектов и интерфейсов;

- методами и средствами программирования распределенных ВС и сетей;

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

- методами анализа и проектирования баз данных и знаний;

- методами и средствами тестирования, отладки и испытаний ПС;

- математическими моделями вычислительных процессов и структур ВС;

- методами и средствами анализа и разработки программных компонентов сетевых и телекоммуникационных систем;

- методами и средствами защиты информации в ВС;

- методами и средствами разработки ПС систем мультимедиа и компьютерной графики.

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

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

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

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

- анализ возможных подходов и методов решения с обоснованием выбранного подхода;

- выбор или разработка модели (математической, структурной, информационной), необходимой для достижения цели;

- выбор эффективных алгоритмов с учетом их точности, устойчивости, сходимости;

- анализ полученных результатов работы программного обеспечения.