Software engineering) в систематизированном виде
Цель данного учебника – представить методы и средства программной инженерии ( Software engineering) в систематизированном виде для их применения на процессах проектирования, тестирования и оценки качества программных систем.
Современные университетские курсы по информатике предусматривают обучение основам программирования, объектно-ориентированному подходу, UML–моделированию, параллельному программирования и др. Больше уделяется внимание современным языкам программирования (С++, JAVA) для современных компьютеров. В результате студенты получают подготовку по этим методам и средствам и недостаточные знания по инженерии проектирования и управления проектами, качеству, конфигурации и соответствующим стандартам.
В некоторых университетах проводятся лекционные курсы по теория алгоритмов, автоматов, математической логике, дискретной математике и другим формальным дисциплинам. Эти курсы основываются на математических дисциплинах (логика, алгебра, комбинаторика) и способствуют развитию математического мышления при проведении анализе предметной области, осмыслении постановок задач и разработке программ для получения на компьютере математического результата.
Производство и использование компьютерных программ в настоящее время является массовой деятельностью, разработкой программ занимаются почти семь миллионов человек, а их используют в своей профессиональной деятельности по специальности десятки миллионов. В связи с постоянно возрастающими объемами программных разработок требуется готовить кадровый потенциал, способный решать проблемы создания новых программных продуктов на инженерной основе, используя накопленный запас знаний в области программирования и управления системами.
Сложившуюся структуру и содержание подготовки специалистов надо расширить методами управления, планирования и регулирования работ, адаптируя их к условиям коллективной разработки программных систем с гарантированным качеством. Предпосылками этого является становление новой специальности, получившей название программной инженерии или инженерии программного обеспечения (Software Engineering), впитавшей в себя накопленный запас знаний в практике и теории программирования за последние десятилетия, а также обогатившейся инженерной дисциплиной выполнения процессов ЖЦ программного обеспечения.
В связи с этим предметом обучения современных студентов, будущих разработчиков программного обеспечения, менеджеров программных проектов, тестировщиков, верификаторов, контролеров качества и др. должны стать не только теоретические и прикладные методы проектирования, а и инженерные методы управления коллективом, планирования и оценивания качества выполняемых работ и укладывания в заданные сроки и стоимость проекта.
Данный учебник посвящен систематическому описанию накопленных знаний в области программирования, отражает аспекты теории и практики программирования. Для применения в лекционных курсах окажется полезным представленное в учебнике изложение современных методов программирования и обеспечения правильности программ, а также инженерии программирования (планирование, управление и оценка продуктов и процессов), сформировавшейся под влиянием развития программной инженерии – SE (Software Engineering) и стандартизации процессов программирования. В нем также представлены современные средства и инструменты поддержки процессов создания проектов (Project Management, Rational Rose, MSF, RUP, CORBA, DCOM и др.).
Авторы надеются, что учебник поднимет уровень знаний разработчиков ПО, поможет им овладеть не только представленными знаниями в области теории и практики программирования, но инженерным программированием, включая методы планирования, управления и оценивания результатов своей деятельности.
Материал учебника апробирован при чтении лекций в Киевском национальном университете имени Тараса Шевченко (1985-1997 гг.) и в МФТИ (2000-2006 гг.), а также на международных конференциях и семинарах.
Авторы