Марина Середа Профессионал

Кто создает компьютерные программы?

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

Начинается все с… — нет, не с программиста! И даже не с его начальника. Начинается все с заказчика. Но поскольку для нас эта сторона сейчас не важна, перейдем сразу к посреднику между заказчиком и программистом — он называется аналитик.

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

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

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

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

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

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

Опубликовано 24.05.2007
Дата первой публикации 03.05.2007

ШколаЖизни.ру рекомендует

Комментарии (29):

Чтобы оставить комментарий зарегистрируйтесь или войдите на сайт

Войти через социальные сети:

  • Олег Антонов Олег Антонов Аксакал 10 марта 2008 в 13:26

    Все хорошо описано.Только учатся этому, в 95% случаев, уже в фирме, куда приходят на работу.
    При обучении программистов у большинства не складывается в единую картину "Программирование на ЯВУ", "Базы данных", "Проектирование информационных систем", "Эргономика ПО" и прочие осколки общего массива разработки ПО.
    И дипломы поэтому пишут так - сначала весь код, прикинув структуру БД в уме. Потом структура многократно переделывается и в конце напоминает дом с пристройками, где пристройки больше основного здания.
    Потом пишется записка, в которой вымучиваются диаграммы потоков данных, классов, развертывания и всего прочего, что следовало сделать еще до того, как сесть за компьютер.
    А потом, если останется время, причесывается интерфейс. Причем в соответствии со своими понятиями о "прекрасссном", а не требованиями инженерного дизайна.
    То, что получается - выкидывается прямо в день ГАКа, несмотря на акты внедрения...
    И работают большинство "программистов" точно также.

    А еще стоит добавить к списку специалистов разработчика документации. "Программисты" очень не любят ее писать.

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

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

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

      Оценка статьи: 4

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

     
  • А у нас в стране придерживаются стандартов, например ISO 9000, CMM в среде разработчиков ПО?

     
    • Мое очень осторожное мнение таково, что очень немногие компании в действительности соблюдают стандарты ISO, хотя сертифицированные компании есть. Что касается СММ, то в РФ, по читанным где-то мною данным, всего несколько компаний 3-го уровня зрелости.

       
  • Картинка хороша, эт точно! Об остальном мне судить нечем

     
  • Картинка очень интересная, статья понравилась

     
  • Все изложено правильно и в какой-то степени даже академично. Как в хороших учебниках образца 70-х (не советских конечно). Есть правда и другие работоспособные модели разработки ПО. Open Source, например, или Outsourcing. Хотя последнее не столько модель, сколько способ сэкономить.

     
    • Они применяются в промышленной разработке ПО?

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

       
      • О да (применяются)! Не так давно Sun Microsystems открыла Solaris и Java. И это не значит, что Sun не хочет на них заработать.

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

         
        • Насколько я понимаю они не собираются разрабатывать открытым способом. Они просто открыли коды, подчиняясь велению времени (или еще кого, не знаю).

           
          • Цитата с ru.sun.com:

            "Проект Open Solaris родился летом 2005 года, когда Sun Microsystems сделала код системы Solaris открытым. Цель проекта - расширить круг разработчиков Solaris, приобщить к процессу разработки всех, кто хочет вложить свои идеи и свое видение современной операционной системы в код Solaris. Многие разработчики программ уже присоединились к проекту, и это легко сделать каждому на странице проекта opensolaris.org...

            На основе кода, доступного с OpenSolaris.org уже созданы различные дистрибутивы системы: Solaris Express, BeleniX, NexentaOS, ShilliX и marTux. Все они доступны на странице http://opensolaris.org/os/downloads/"

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

             
            • Спасибо. Однако я сомневаюсь, что они выгнали своих внутренних разработчиков. А то что есть - просто развите. Вливание новых идей - хорошее решение. Не спорю. МОжет быть в дальнейшем они и откажутся от нормальной разработки. Но открытая разработка предполагает что-то типа лицензии ГНУ. А как она сочетается с коммерцией?

               
              • Более 1000 сотрудников, трудившихся над Solaris, продолжают над ней трудиться. Java действительно открыли под GPL. Для Solaris придумали новую лицензию - CDDL. По ней можно использовать код под CDDL в проприетарном ПО. Кроме кода, Вам передаются также сопутсвующие патенты (патенты не учитываются в GNUv2 вообще). Sun продолжает выпускать коммерческие версии Solaris с авторской поддержкой и документацией. Все довольны и счатсливы.

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

                   
  • Может быть стоит добавить по поводу тестировщика, который тестирует все-таки не "от балды", а по сценарию, который создают аналитики. Для людей, которые не связананы с производством ПО может сложиться впечатление, что тестировщик - это кто-то супер знающий.

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

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

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

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

    И спасибо Вам за статью!

    Оценка статьи: 5

     
    • Постановщик задач - это простонародное название аналитика.
      Довольно странно, что вы этого не знаете.

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

        Именно поэтому готовую программу часто потом приходится доводить непосредственно у заказчика.

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

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

        Оценка статьи: 5

         
        • Я не буду с вами спорить по поводу терминов, т.к. это моя работа, и мне безусловно известно, кто как называется и что он делает.

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

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

          Спасибо за комментарий.

           
          • Причем тут неприязнь? Пытался разъяснить то, что Вы, видимо, и без меня знаете, отсюда и излишние эмоции. Никак не хотел Вас обидеть.

            Оценка статьи: 5

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

               
              • Да, я слышала мнение, что RUP якобы передрали у русских. Не могу сказать, согласна ли я с ним, т.к. это мнение сродни тем, что вообще все, что разработали американцы, придумано русскими , а потому затрудняет объективное исследование...

                Что касается ГОСТов, то у каждого времени и ситуации свои требования.
                То, что годится для завода, не подходит для Центрального банка, но вместе с тем у них есть очень много общих моментов.

                 
                • Кто у кого - не в той плоскости разговор. Все заимствуют рациональные зерна у всех. Но у буржуев эти рациональные зерна появлялись чаще - у нас в это время инженеры, как правило, в подшефных колхозах работали. Дело в том, что создатели RUP не удосужились изучить эти зерна (это требует большого труда), а сделали свое что-то похожее, по мне - не везде удобное и практичное. По ГОСТам - для кого продукт: для внутреннего использования, для заказчика или коробочный вариант на продажу. Согласен - госты 89 года требуются только на госпредприятиях (по криптованию именно они сейчас и действуют)

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

                   
  • картинка очень улыбнула, напомнила мне разговоры с заказчиками на работе

    Оценка статьи: 4

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