Программирование — теоретическая и практическая деятельность, связанная с созданием программ.
Программирование является собирательным понятием и может рассматриваться и как наука, и как искусство.
В любой программе присутствует индивидуальность ее разработчика.
Вместе с тем программирование предполагает и рутинные работы, которые могут и должны иметь строгий регламент выполнения и соответствовать стандартам.
В настоящее время наблюдается развитие технологии создания ПО. Это обусловлено переходом на промышленную технологию производства программ, стремлением к сокращению сроков, трудовых и материальных затрат на производство и эксплуатацию программ, обеспечению гарантированного уровня качества программ.
Реально при разработке программного обеспечения часто происходит превышение отпущенного времени, бюджета, несогласованное изменение требований и низкое качество. Поэтому необходимо уметь правильно организовывать процесс разработки ПП и постоянно совершенствовать его.
Отрасль знаний, в рамках которой изучается процесс создания программного обеспечения и разработка моделей оценки его стоимости, называется инженерным программированием (проектированием) программного обеспечения (Software Engineering).
Иначе это направление называют программотехникой.
Программотехника — технология разработки, отладки, верификации и внедрения ПО.
Инженерное программирование – это такое применение естественных и математических наук, в результате которого потенциальные возможности компьютеров реализуются на пользу человеку с помощью компьютерных программ, организационных процедур и соответствующей документации.
При этом под полезностью следует понимать удовлетворение некоторой человеческой потребности за счет затрат, которое общество может себе позволить.
В основе инженерного программирования лежит фундаментальная идея: создание ПО является формальным процессом, который можно изучать и совершенствовать. Освоение и правильное применение методов и средств создания ПО позволяет повысить качество ПО, обеспечить управляемость процесса создания ПО и увеличить срок его жизни.
Требования повышения экономичности разработки и сопровождения обусловливают цели инженерного программирования, такие как:
1) получение качественного ПО;
2) реализация эффективного процесса разработки и сопровождения ПО, в том числе:
понижение:
- затрат труда;
- сроков разработки ПО;
- числа операторов программы;
- объема требуемой памяти и т. п.;
повышение:
- ясности программы;
- четкости представления выходных данных программы.
Различные цели инженерного программирования в действительности на практике противоречат друг другу. например, стремление любым способом уменьшить затраты труда и сроки разработки ПО оказывает неблагоприятное влияние на затраты, сроки и эффективность всего цикла создания и использования ПО, в частности внедрения, сопровождения, т.е. за достигнутые результаты придется расплачиваться по другим статьям расходов на ПО.
С другой стороны, за счет увеличения затрат времени для более тщательного проектирования ПО можно снизить сроки кодирования, уменьшить число ошибок в программном коде, значит и отладка пройдет быстрее.
Потратив время и ресурсы на определение большей части тестовых данных еще на этапе проектирования, можно сократить сроки тестирования и увеличить его эффективность.
Поэтому для успешного применения инженерного программирования ко всему циклу создания и использования ПО необходимо непрерывное разрешение противоречий между существующими целями.
"Наиболее важным в инженерном программировании является знание методов достижения разнообразных, возможно, противоречащих друг другу целей и согласо-вания разнообразных применяемых средств, каждое из которых в зависимости от ситуации в различной степени помогает или мешает достижению конкретной цели" — Б.У. Боэм /7/.
Хороший инженер-программист должен уметь:
- разрабатывать набор требований (спецификаций) к программам;
- разрабатывать правильные машинные программы, удовлетворяющие набору требований;
- создавать качественную документацию, базы данных и разрабатывать процедуры работы с вычислительными системами.