Методы и средства инженерии программного обеспечения

       

ВСТУПЛЕНИЕ


                                                    

Термину «программная инженерия»  (Software engineering) уже более 30 лет. К моменту его появления компьютерные программы проникли во все cферы  человеческой деятельности, а  их разработка  стала массовым занятием. Практически нет ни одной  х сферы человеческой деятельности (медицина, экономика,  коммерция, промышленность и т.д.), где бы не применялись  компьютерные программы.

 

Примерно каждые 10 лет происходит смена языков программирования и ОС. Это приводит к  необходимости изменять  ранее изготовленные и функционирующие  программы применительно к новым языкам  и ОС.  Например,  преобразованием  Фортран и Кобол программ в современные языки (С, JAVA и др.) занимаются огромные коллективы программистов  из третьих стран и  СНГ. 

Эффективность разработчиков в зависимости от квалификации колеблется в отношении 20:200, отсюда требуется повышать уровень их знаний. На сегодня ядро стабильных знаний по программной инженерии составляет 75% от тех знаний, что используются в практической программисткой деятельности.

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

Знания разработчиков ПО отличаются большим разнообразием, являются не согласованными и разнородными, ориентированными на разные предметные области, поэтому мировая компьютерная общественность пришла к необходимости систематизировать знания в области программной инженерии, создав   ядро знаний  SWEBOK  (Software Engineering Body Knowledge). 

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


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

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

 

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

–        менеджеры, которые планируют и управляют проектом, отслеживают  сроки  и  затраты;

–        инженеры службы хранения готовых компонентов;

–        технологи, которые определяют инженерные методы и стандарты, регламентирующие  и регулирующие  процесс построения программных проектов;



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

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

Таким образом,  возникновение программной инженерии определено следующими факторами:

– появление разнообразных сложных методов анализа и моделирования ПО;

– большое количество ошибок в ПО;

– необходимость в эффективной организации работы коллективов разработчиков ПО;

– повторное использование готовых программных компонентов и высокотехнологических средств разработки и управления ПО;



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

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

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

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

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


Содержание раздела