Library
|
Your profile |
Software systems and computational methods
Reference:
Tikhanychev O.V.
Development Management and Project Management: Contrast or Complement?
// Software systems and computational methods.
2020. № 2.
P. 53-68.
DOI: 10.7256/2454-0714.2020.2.29603 URL: https://en.nbpublish.com/library_read_article.php?id=29603
Development Management and Project Management: Contrast or Complement?
DOI: 10.7256/2454-0714.2020.2.29603Received: 24-04-2019Published: 15-07-2020Abstract: The subject of this research is the process of developing software for automated control systems. The object of research is the means of organizing software development. A generally recognized promising direction for increasing the efficiency of the use of organizational and technical systems is the automation of their management. A significant share of the effectiveness of any complex technical system is provided by its software. This primarily applies to the application software. The development of application programs is fraught with certain difficulties, primarily of an organizational nature. The generalized analysis showed that in world practice there is a fairly wide range of tools for organizing the program development process. These tools are proposed to be divided into two large groups with respect to the attitude to the process and the degree of detail on "project management tools" and "development controls". Each of the tools is effective for certain conditions of software development. The review article analyzes the factors affecting the effectiveness of the use of a particular tool, synthesized proposals on the expediency of using various control systems in different conditions of the development process. The analysis showed that for the conditions of the development of applied software for automated decision support systems, the most effective is the integrated use of process control automation tools. Keywords: process management, development management, development process organization, software development technologies, software, automated systems, decision support, control automation, optimization of the development process, clarification of terminologyВведение Одной из составляющих современных сложных технических систем является программное обеспечение (ПО). В постиндустриальную эпоху, роль этого компонента постоянно растёт, увеличивается объём разрабатываемого ПО, ужесточаются требования к срокам и качеству разработки. Для повышения эффективности разработки ПО в настоящее время используются различные методологии: «гибкие» Agile, «каскадные» Waterfall, их варианты [1]. Под «гибкими» технологиями принято понимать обобщающий термин для целого ряда подходов и практик, основанных на последовательной доработке разрабатываемого продукта в соответствии с постоянно уточняемыми требованиями заказчика. Сущность «гибкого» подхода - минимизация рисков путём сведения разработки к серии коротких циклов [2,3]. Каскадная модель разработки основана на том, что процесс разработки выглядит как поток, последовательно проходящий типовые фазы работы: анализ требований, проектирование, реализация продукта, тестирование, внедрение и поддержка функционирования [4]. На практике указанные методологии применяются через систему прикладных технологий и набор реализующего их инструментария. В рамках этих технологий, как в программировании, так и в других областях деятельности, для повышения эффективности рабочих процессов в практике управления принято использовать различные средства автоматизации управления коллективами разработчиков (Team Foundation Server - TFS, Jira, Gemini, Savana, Redmine, Trac, TaskJuggler, Toyota Kanban, Microsoft Project, Wrike, Confluence). Большинство специалистов перечисляют и описывают эти средства как альтернативные между собой, выбирая и оценивая качества и возможность использования каждого из них преимущественно автономно [5,6]. В первом приближении, это кажется логичным: функционал данных систем похож – управление группами разработчиков, координация их деятельности с целью оптимизации достижения конечного результата. С другой стороны, такое приближение не совсем корректно, перечисленные системы имеют определённые различия и похожие черты, не в полной мере заменяя друг друга. Как представляется, проблема находится в области классификации систем управления технологическими процессами относительно их функционального назначения. Проблема является новой и, в сформулированной постановке, ранее не обсуждалась. Таким образом, существующий подход порождает проблемы использования средств автоматизации управления разработкой ПО, снижая возможности и эффективность применения средств организации процесса. Возникает научно-практическая задача уточнения классификации методов управления коллективами разработчиков, попытка чего предпринята в данной статье.
1.Особенности средств управления проектами и разработкой программ Как показывает опыт применения средств автоматизации управления коллективами разработчиков, в том числе лично автором, при одинаковом функционале они могут различаться областью применения. Например, TFS или Jira применяются при управлении разработкой программных продуктов [7,8], Toyota Kanban – при разработке машиностроительной продукции [9]. А Microsoft Project, Wrike, Confluence или «Адванта» реализуют более широкий, но менее специализированный функционал и обеспечивают управление работой коллектива в целом. Конечно, есть отличия и внутри классов, например, между средствами управления разработкой программной продукцией и продукцией машиностроения. Наиболее заметное: при разработке промышленной продукции существенная роль возлагается на системы подбора по каталогам готовых деталей и типовых сборочных единиц, соответствующих требованиям к разрабатываемому изделию [10,11]. При управлении разработкой программного продукта эти системы не используются по крайней мере, пока. Но перечисленные отличия определяются подходами к требуемому результату, да и то только в текущей ситуации. С переходом к промышленным методам разработки программного обеспечения, внедрением фондов типовых алгоритмов и программ, могут измениться и указанные функции. Указанные факты подтверждают актуальность проблемы уточнения классификации средств управления коллективами разработчиков. Сравнивая особенности вышеперечисленных систем, можно сделать вывод, что многие проблемы выбора для использования тех или иных систем возникают из-за используемой в настоящее время терминологии их описания. Все системы управления коллективами разработчиков, принято обозначать термином, сформулированным на основе прямого перевода английского понятия «project management» (управление проектами). Формально это правильно. В то же время, исходя из функционала, логичнее часть из них назвать не системами управления проектами, а системами управления разработкой (development management). В данном случае речь идёт о средствах типа TFS и Jira, обеспечивающих не только управление самим процессом разработки, но и реализацию части технологических функций: тестирование, сборка программного продукта и т.п. [12–14]. Уточнение терминологии позволит разделить и области применения инструментария, определив рациональность его выбора для реализации тех или иных функций и этапов жизненного цикла программной продукции [15]. Такой вывод позволяет сделать обобщение опыта автора по разработке программной продукции специального назначения в нескольких крупных проектах, включая разработку системы «Безопасный город», с использованием таких средств организации процесса как TFS, Jira и Confluence. Уточнённая классификация систем управления коллективами разработчиков может быть обоснована на основе сравнительного анализа характеристик различных средств автоматизации управления разработкой. И синтезом на основе данных анализа предложений по классификации таких систем. В качестве первого этапа анализа предлагается проанализировать управляющие компоненты подобных систем: входные и выходные формы программ, которые их реализуют. Как показывает анализ, внешне формы, функции и даже управляющие элементы средств управления разработкой похожи. Методы представления и управления списком задач, «доской» работ, виджеты отображения хода выполнения проекта аналогичны и в TFS, и в Jira, и в других системах управления разработкой ПО. Похожи между собой и экранные формы различных систем управления проектами, их основные функции. А вот между формами программ управления проектами и управления разработкой внешнее сходство встречается реже. И даже в случае сходства, компоненты существенно различаются по реакции и содержанию функций (рисунки 1–3). Рис.1. Внешний вид форм панелей задач систем управления разработкой TFS (наверху) и Jira (нижний рисунок) Рис.2. Внешний вид форм «досок» задач систем управления разработкой TFS (сверху) и Jira (нижний рисунок) Рис.3. Внешний вид аналогичных форм средства управления проектами Wrike Таким образом, даже внешне между программами, реализующими разные по функционалу системы одного назначения, различий больше, чем сходных черт. Второй этап анализа предлагается реализовать через сравнение функционала систем управления коллективами разработчиков. Несмотря на аналогичное целевое назначение, различия в функционале систем такого типа существенно различаются: - по уровню формализации задач исполнителям проекта; - по возможности взаимодействия со сторонними системами; - по наличию встроенных средств автоматизированного тестирования и сборки программ. По факту, хотя и те, и другие системы управляют работой персонала, оптимизируя использование наличных ресурсов и времени, системы управления разработкой в большей степени обеспечивают управление разработчиками и технологическими процессами, а системы управления проектами – руководство коллективами и маркетинговыми процессами [16,17,18].
2.Функциональные особенности средств управления разработкой и управления проектами Процесс разработки ПО, в соответствии с требованиями нормативной документации, состоит из тех же этапов, что и создание автоматизированных систем управления, в составе которого оно реализуется: - формирование требований, разработка концепции автоматизированной системы; - формализация и детализация требований, разработка технического задания на работу по созданию системы; - разработка проектных решений по созданию системы в рамках эскизного и технического проектов; - разработка опытного образца и рабочей конструкторской документации, приёмо-сдаточные испытания и сертификация системы; - производство, ввод в действие; - сопровождение эксплуатации системы. Работа по каждому из этих этапов организуется в соответствии с типовым циклом управления: от целеполагания до постановки задач и контроля их выполнения. Для реализации тех или иных функций типового цикла управления, на практике используется достаточно широкий перечень систем различного назначения: ERP (Enterprise Resource Planning), CRM (Customer Relationship Management), BI-системами (Business Intelligence) графического представления данных, средствами командно-сетевого планирования (КСП-системы), PLM-систем (Product Lifecycle Management), систем автоматизированного тестирования (Automation Testing System – ATS), средствами интеграции приложений (EAI – Enterprise Application Integration) и других [19–21]. Наличие EAI является достаточно важным фактором, учитывая, что системы управления производством редко разрабатываются под конкретный проект, чаще используются готовые системы, имеющиеся в активе предприятия [22, 23]. С учётом стандартной структуры типового цикла управления и решаемых в нём задач различной направленности, часть функций этих систем пересекается. Вполне вероятна такая ситуация и для систем классов «управление проектами» и «управление разработкой». Причём, как в части пересечения отдельных функций с внешними системами, так и между собой. Сравнительный анализ функционала типичных представителей классов систем управления разработкой и управления проектами относительно пользовательских свойств систем различного целевого назначения позволил сформировать оценки, приведённые в таблице 1.
Таблица 1 – Соответствие функционала систем управления процессами и разработкой возможностям других систем автоматизированного управления
Анализ указанных различий позволил определить, пусть в первом приближении, возможность и целесообразность использования компонентов перечисленных систем в тех или иных ситуациях работы над проектами по разработке ПО (см. таблицу 2).
Таблица 2 – Возможности использования средств управления процессами и управления разработкой
В таблице: ++ означает высокую эффективность использования; + приемлемая эффективность; - означает низкую эффективность применения технологии в данных условиях; +/- эффективность применения варьируется в зависимости от особенностей использования.
Стоит пояснить, что под небольшими коллективами в таблице понимаются команды разработчиков, работающие в условиях визуального и вербального взаимодействия. Остальные описанные в таблице параметры зависят от количества коллективов разработчиков, участвующих в проекте, степени детализации документов, описывающих проект и используемых инструментальных средств. Разумеется, таблица в реальности, должна быть не «плоской», а многомерной матрицей, так как многие учитываемые в ней факторы коррелируются в разных плоскостях. Кроме того, в таблице намеренно не отмечен уровень обученности коллективов использованию конкретных средств управления проектами, учитывая, что этот фактор переменный. Более того, всё это сделано намерено, чтобы упростить описание проблемы на этапе постановке задачи, которая может детализироваться по мере исследования. В представленном варианте таблица заполнена данными на основе обобщения личного опыта автора, по обобщению результатов разработки около десяти проектов различной сложности, и может позиционироваться как «опорный план» для дальнейшего уточнения, по мере накопления статистики, классификации систем на системы управления разработкой и системы управления проектами.
3.О практическом использовании средств управления проектами Анализ данных таблицы 2 позволяет сделать вывод о целесообразности уточнения классификации систем управления коллективами разработчиков и разделения их на: - системы управления проектами (project management); - системы управления разработкой (development management). С учётом такой классификации, предполагается преимущественное использование средств управления проектами для крупных составных проектов (в первую очередь – слабоформализованные проекты с неявно выраженными задачами, преимущественно ветвящейся распараллеленной структуры и содержащие множество однотипных задач на разных «ветках», а также при разработке изделия несколькими слабосвязанными организационно коллективами), а средств управления разработкой – для автономных проектов. В ряде случаев может потребоваться комплексное использование указанных средств (рисунок 4). Рис.4. Организация комплексного использования средств управления проектами и разработкой Практика показала, что средства управления проектами и средства управления разработками – это эффективным инструменты как каждый в своей области, так и при совместном применении. Но, как всякие инструменты, они имеют границы применимости, в рамках которых они выдают ожидаемую эффективность. С другой стороны, при использовании вне указанных рамок (таблица 2), эти средства не просто показывают нулевой прирост эффективности, они мешают выполнению проекта, заставляя разработчиков выполнять лишнюю работу. Данный вывод сделан автором на основании практического опыта: когда в небольших коллективах на коротких проектах прямая постановка задач начинает дублироваться работой в TFS или Jira, аналитики, описав программисту процесс, вместо перехода к следующему этапу вынуждены повторно описывать уже выполняемые задачи. Что увеличивает затраты времени, практически не влияя на качество работы. И то, что результаты постановок задач фиксируются в электронной форме, служит слабой компенсацией потерянного времени. Ну а наиболее эффективным является, как показывает практика, комплексное использование подобных инструментов по секторам, соответствующим их целевому назначению. Когда данные средства не вступают в противоречие и не дублируют, а эффективно дополняют друг друга. Наиболее явное преимущество совместного использования средств управления проектами и управления разработкой и, пожалуй, одно из самых существенных – возможность создания тематических слоёв отображения состояния управляемого процесса. На профессиональном сленге разработчиков такие слои называют «стейкхолдерами» (stakeholders), от английского понятия, обозначающего причастных к процессу лиц или организаций, непосредственно заинтересованных в его результате. Организация таких слоёв позволит управленцам всех уровней оперативно оценивать реализацию требований относительно разрабатываемой системы или её свойств, удовлетворяющих их потребностям и ожиданиям (стандарты ISO/IEC 15288:2015, ISO/IEC 29148:2011). Повышая тем самым эффективность контроля процесса разработки, как одного их важнейших этапов цикла управления. И, соответственно, обеспечивая оперативное реагирование на изменения в динамике производственного процесса, сокращая время и затраты. В то же время, в использовании указанных средств могут возникать определённые проблемы. Определяются они тем, что системы управления проектами и разработкой реализуются, преимущественно, программными средствами зарубежной разработки. Для их эффективной работы необходим сетевой режим, периодическое обновление рабочих модулей. В той ситуации, когда разрабатываемый проект содержит конфиденциальную информацию, данный факт может стать критичным. Занесение в сетевой проект требований к разрабатываемой системе, описания её архитектуры, может вызывать определённые опасения. Впрочем, проблема решаема. Существует достаточно широкий средств управления проектами, включённых в «Единый реестр российских программ для электронных вычислительных машин и баз данных» [24,25], в том числе систем отечественной разработки: 1С-Битрикс24, «Адванта» (А2), «Rubius Project Manager», «Яндекс.Трекер» и множества других. Остаётся только выбрать средство, отвечающее требованиям конкретного проекта или организации по функционалу. После этого выбора остаётся организовать комплексное применение средств управления проектами и разработкой, которое, как показала практика, обеспечивает оптимизацию использования перманентно ограниченных сил и средств для решения ресурсоёмких задач. Оптимизацию, как по распределению ресурсов, так и времени на разработку программного продукта. Более того, эта оптимизация, само комплексное использование инструментов управления проектами и управления разработкой обеспечит, в том числе, распределённую работу или работу распределённых команд по созданию программного продукта. А такой подход, уже шаг к запуску полноценной «цифровой» экономики, как одного из перспективных методов организации производства.
Заключение Таким образом, как показывает анализ предметной области, для обеспечения эффективного и комплексного использования средств автоматизированного управления проектами и разработкой требуется уточнить классификацию инструментария, использующего данные средства и определить возможность его совместного или автономного использования. Первый шаг к этому сделан в настоящей статье, предложено разделить системы управления коллективами разработчиков по их функциональному назначению: на средства управления проектами и средства управления разработкой. В дальнейшем, вероятно, потребуется актуализация терминологии предметной области на основе предложенной классификации и уточнение применяемой нормативно-технической документации [26,27]. Это достаточно объёмная задача, но её решение обещает определённый прирост эффективности разработки ПО. Которое, в настоящее время, является неотъемлемой и очень важной частью практически любой сложной технической системы. Исходя из этого, решение сформулированной в статье научно-практической задачи является актуальным и требующим скорейшей реализации. References
1. Ivanova. G.S., Nichushkina T.N. Proektirovanie programmnogo obespecheniya. – M. : Izd-vo MGTU im. N.E. Baumana, 2002. – 74 s.
2. Maik Kon. Scrum: gibkaya razrabotka programmnogo obespecheniya. Succeeding with Agile: Software Development Using Scrum (Addison-Wesley Signature Series). — M.: Vil'yams, 2011. — 576 s. 3. Robert S. Martin, Dzheims V. N'yukirk, Robert S. Koss. Bystraya razrabotka programm. Printsipy, primery, praktika – M. : Vil'yams, 2004. — 752 s. 4. Royce W. W.Managing the development of large software systems: concepts and techniques. Proceeding. ICSE '87 Proceedings of the 9th international conference on Software Engineering. The Institute of Electrical and Electronics Egineers Inc., 1970. - pp. 328-328. 5. Tikhanychev O. V. O «gibkikh» tekhnologiyakh v razrabotke programmnogo obespecheniya sistem podderzhki prinyatiya reshenii // Programmnye sistemy i vychislitel'nye metody. – 2018. – № 2. – S. 51–59. 6. Dzheff Sazerlend. Scrum. Revolyutsionnyi metod upravleniya proektami-Scrum. The art of doing twice the work in half the time. – Mann, Ivanov i Ferber, 2016. - 288 s. 7. Maik Kon. Pol'zovatel'skie istorii: gibkaya razrabotka programmnogo obespecheniya (Signature Series). – M.: «Vil'yams», 2018. – 256 s. 8. Rybina G.V. Problemy integratsii i osobennosti razrabotki programmnogo obespecheniya sovremennykh intellektual'nykh sistem // Prikladnaya fizika i matematika. 2013. – № 3. – S. 41-63. 9. Shonberger R. Yaponskie metody upravleniya proizvodstvom. — M. : Ekonomika, 1988. – 199 c. 10. GOST 7.22-2003"Sistema standartov po informatsii, bibliotechnomu i izdatel'skomu delu. Promyshlennye katalogi. Obshchie trebovaniya"(vveden v deistvie postanovleniem Gosstandarta RF ot 29 maya 2003 g. N 167-st). M.: Izdatel'stvo standartov, 2003. - 7 s. 11. Katalog detalei i sborochnykh edinits. Tsentr katalogizatsii i informatsionnykh tekhnologii "Katalit". Ofitsial'nyi sait. URL: http://katalit.ru/index.php?option=com_content&view=article&id=65&Itemid=144 (data obrashcheniya: 17.09.2019). 12. Tikhanychev O.V., Makartsev L.V., Gakhov V.R. Ratsional'naya organizatsiya protsessa razrabotki prikladnogo programmnogo obespecheniya kak predposylka uspeshnoi avtomatizatsii podderzhki prinyatiya reshenii // Programmnye produkty i sistemy. 2017. – №4. – S. 706-710. 13. Rekomendatsii po prepodavaniyu programmnoi inzhenerii i informatiki v universitetakh. – M. : INTUIT.RU, 2007. – 462 s. 14. Vypasnyak V. I., Tikhanychev O. V. Avtomatizirovannye sistemy upravleniya voiskami (silami): tendentsii, metody i perspektivy razvitiya // Vestnik Akademii voennykh nauk. – 2009. – № 4. – S. 61–68. 15. Lukinova O.V. Metodologicheskie aspekty upravleniya zhiznennym tsiklom informatsionnoi sistemy na osnove instrumentov funktsional'noi standartizatsii // Programmnye produkty i sistemy. – 2016. – № 4. – S. 27–35. 16. Khenrik Kniberg. Scrum i XP: zametki s peredovoi-Scrum and XP from the trenches. C4Media, 2007. – 140 s. 17. Letbridzh T. [i dr.]. SE2004: rekomendatsii po obucheniyu spetsial'nosti «Programmnaya inzheneriya» // Otkrytye sistemy. SUBD. 2006. № 10. URL: http://www.osp.ru/os/2006/10/ 3910113 (data obrashcheniya: 10.04.2017). 18. Kennet Rubin. Osnovy Scrum: Prakticheskoe rukovodstvo po gibkoi razrabotke PO = Essential Scrum: A Practical Guide to the Most Popular Agile Process. – M.: «Vil'yams», 2016. – 544 s. 19. Snytkin T. I., Polyakov A. E., Rudenko G. A. Sistemnoe proektirovanie avtomatizirovannoi sistemy voennogo naznacheniya s ispol'zovaniem notatsii Archimate 2.1. // Dinamika slozhnykh sistem-XXI vek. 2018. T. 12. – № 2. – S.44-55. 20. Shtrik A.A. Tekhnologii i instrumental'nye sredstva sozdaniya programmnogo obespecheniya: sostoyanie i perspektivy // Programmnye produkty i sistemy. 1991. – №2. – S.57-64. 21. Vichugova A. A. Etapy, metody i sredstva konfigurirovaniya informatsionnykh sistem // Prikladnaya informatika. 2015. – №3(57). – S.88-99. 22. Gauch S., Chaffee J., Pretschner A. Ontology-based personalized search and browsing // Web Intelligence and agent systems. – 2003. – Vol. 1. – P. 219–234. 23. McAvoy, L. M., Chen, L., & Donnelly, M. (2012, September). An ontologybased context management system for smart environments. The Sixth International Conference on Mobile Ubiquitous Computing, Systems, Services and Technologies, UBICOMM 2012, – pp. 18–23. 24. Postanovlenie Pravitel'stva RF ot 16.11.2015 N 1236 (red. ot 20.11.2018) "Ob ustanovlenii zapreta na dopusk programmnogo obespecheniya, proiskhodyashchego iz inostrannykh gosudarstv, dlya tselei osushchestvleniya zakupok dlya obespecheniya gosudarstvennykh i munitsipal'nykh nuzhd" URL: https://reestr.minsvyaz.ru/upload/iblock/c00/2020_12_2017.pdf (data obrashcheniya 19.04.2019). 25. O vnesenii izmenenii v Federal'nyi zakon "Ob informatsii, informatsionnykh tekhnologiyakh i o zashchite informatsii" i stat'yu 14 Federal'nogo zakona "O kontraktnoi sisteme v sfere zakupok tovarov, rabot, uslug dlya obespecheniya gosudarstvennykh i munitsipal'nykh nuzhd". 188-FZ ot 29.07.2015 g. URL: http://base.garant.ru/71108368/ (data obrashcheniya 19.04.2019) 26. Barkovskii S.S., Yanin D.M. Osobennosti informatsionnogo obespecheniya avtomatizirovannykh sistem upravleniya voenno-nauchnoi rabotoi // Trendy i upravlenie. – 2015. – №4. – C. 441-449. 27. Grakova N.V. Postroenie semanticheskoi modeli upravleniya proektami // Kibernetika i programmirovanie. – 2012. – №1. – C.7 -15. |