9. ОРГАНИЗАЦИОННО УПРАВЛЕНИЕ
Литература
-
Schulmeyer G.G. Zero Defect Software. New York, McGraw-Hill, 1990.
-
Humphrey W.S. Characterizing the Software Process: A Maturity Framework. IEEE Software,
Marchl988,p.73-79.
-
Humphrey W.S. (ed.). Managing the Software Process. SEI (USA), Addison-Wesley,New York,
1989, 489 pp.
-
Paulk M. C., Weber C.V, Garcia S.M., Chrissis M.B., Bush M., Key Practices of the Capability
Maturity Model for Software, Version 1.1, TR CMU/SEI-93-TR-025, Software Engineering
Institute (USA), Carnegie Mellon University, Pittsburgh, 1993.
-
Jones C. Assessment and Control ofSoftware Risks, Prentice-Hall, Englewood Cliffs, 1994.
-
BOOTSTRAP Team, „BOOTSTRAP: Europe's Assessment Method", IEEE Software, July
1993, pp. 93—95.
-
Brown B.J., Assurance ofSoftware Quality, SEI Curriculum Module SEI-CM-7-1.1, Carnegie
Mellon University, Software Engineering Institute, 1987.
-
Jones C., Applied Software Measurement, McGraw-Hill, New York, 1997.
110
9.1.Bъведение
Според Б. Боем целта на софтуерните технологии е осигуряване на ефек-
тивен процес на разработване на висококачествен софтуер. Основна тех-
ника за преодоляване на стихийността в създаването на ПП е мениджърският
подход. Разглеждането му е актуално заради все още тревожните данни за
незавършване (изобщо или в срок) на софтуерните проекти, на превишаване
на предварително определените ресурси за разработване или за разпростра-
нение на ПП, които затрудняват потребителите със сложността и ненадежд-
ното си функциониране. По публикувани данни през 1998 г. 26% от софтуер-
ните проекти са преустановени, а 46% са завършили с превишаване на плани-
раните ресурси за разработване.
За съжаление не е възможно автоматично пренасяне в софтуерното произ-
водство на полезни мениджърски практики от материалното производство или
други области поради:
-
същността на софтуера. Програмните продукти не са чисто материални,
а са продукт на интелектуални усилия, професионални умения, прилагане на
научни знания и др.
-
уникалността на всеки софтуерен проект, която се обуславя от естест-
вото и сложността на конкретно решавания проблем. Затова могат да се опре-
делят само най-общите рамки, а реалното протичане на проекта се управлява с
избирани според случая (ad hoc) техники. Опитът от предишни проекти е поле-
зен, но не може да бъде директно използван.
9.2. Основни понятия
Извършваните в една организация дейности могат да се разделят в две гру-
пи: продължителни, повтарящи се, стандартни и рутинни дейности или еднок-
ратни за създаване на нещо ново, уникално. Вторият вид дейности се реализи-
рат чрез проекти. Всеки проект има определена цел, която трябва да се пос-
тигне с крайни и ограничени ресурси (време, финансови средства, екип от спе-
циалисти). Обикновено изискванията се уточняват постепенно и поради уни-
111
калността на проекта участниците в него могат да разчитат на опита си, но тряб-
ва да са в състояние да разрешават и нововъзникнали проблеми, които е трудно
да се предвидят отнапред. Целта на управлението на проекти е те да се осъ-
ществяват систематично и контролирано чрез постъпкови процедури. Ефек-
тивни проекти са тези, които водят до повишаване на производителността на
участниците и осигуряване на качествени крайни продукти и услуги. Резулта-
тите от тях са постигнати в определен срок и с оптимално използване на ресур-
сите. Предпоставки за ефективни проекти са [1]:
-
създаване на благоприятна среда за работа (техническа осигуреност,
подходящ психологически климат, ергономичност);
-
формулиране на ясни, точни и непротиворечиви изисквания за работа-
та, която трябва да се свърши;
-
управляване на проекта чрез планиране и контрол;
-
прилагане на ефективни, проверени (теоретично или експериментално)
и стандартизирани процедури;
-
осигуряване на адекватни ресурси, определени след предварителна оцен-
ка и прогнозиране;
-
мотивиране на участниците в проекта. Задачите, които се възлагат, да
бъдат точно определени, съобразени със знанията, квалификацията и опита на
конкретния изпълнител. Да има свободни и добре организирани комуникации,
регламентирани поощрения и възможности за личностна изява.
9.3. Управление на софтуерни проекти
9.3.1. Методология на управлението на проектц
Управлението на софтуерните проекти може да се декомпозира на управле-
ние на четири основни обекта (т. нар. four P's: people, product, process and project).
Управлението на човешките ресурси е преди всичко признаване на роля-
та на човешкия фактор в разработването и използването на софтуера (вж. глава
14.). С развитието на софтуерната психология в последните години стандартна-
та за софтуерните системи двойка „хардуер-софтуер" се разшири с трети еле-
мент, наречен peopleware. От гледна точка на мениджмънта това са дейностите
по подновяване и подбор на кадрите, повишаване на квалификацията, атести-
ране и професионално развитие, организация на работата и на работното мяс-
то, обучение за работа в екип и т. н.
Управлението на продукта е преди всичко определяне на предназначение-
то, основните функции и изисквания към новия продукт още в началото на про-
екта, за да се оценят предварително необходимите ресурси за реализацията му.
Управлението на процеса на разработване включва планиране и ефек-
тивно осъществяване на всички дейности. В зависимост от предназначението,
обхвата и начина на организирането им дейностите могат да бъдат основни
(проектиране, програмиране, тестване) или допълнителни (осигуряване на ка-
чеството, управление на софтуерните конфигурации и измерване). Избраният
в софтуерната организация модел на жизнения цикъл определя осъществява-
нето на основните дейности, общите характеристики на които се настройват за
отразяване на специфичните особености на всеки проект. Глобалните дейности
112
са едни и същи за всички проекти и за организирането им могат да се прилагат
общоприети стандартни методики.
Основната цел на управлението на проекта е да се държат нещата под кон-
трол. Всеки проект има определена начална и крайна дата, цел и обхват, опреде-
лено и документирано съотношение цени-ползи, добре дефиниран краен резул-
тат, ясни и точни критерии за завършване. Управлението на проекти е в съответ-
ствие с избрана методология — съвкупност от принципи, подходи, методи, про-
цедури, правила и указания, изясняващи как се осъществява определен проект и
какви са взаимоотношенията му с други обекти и субекти. Методологията е фор-
мална, ако е представена в писмен вид и се прилага систематично в дадена орга-
низация. Преимуществата на прилагане на формална методология са, че тя:
-
подпомага избирането на проекти;
-
позволява разпределение на ресурсите и контролирането на риска;
-
управлява проекта чрез дефиниране на контролни точки;
-
улеснява комуникациите между участниците чрез стандартизирани про-
цедури и терминология;
-
подпомага счетоводно-финансовите дейности;
-
осигурява създаване на необходимата документация по време на проек-
та, а не след завършването му;
-
подобрява качеството на създавания ПП чрез специфициране на про-
верки и задължително спазване на определени стандарти;
-
намалява разходите за разработване чрез стандартизиране на основни-
те процедури;
-
улеснява натрупването на статистическа информация, която да се из-
ползва за прогнозиране на разходите и усъвършенстване на някои процедури
при реализация на следващи проекти;
-
дава възможност за сравнителен анализ на различни проекти;
-
осигурява систематичност и управляемост на проектите.
9.3.2. Управленска структура
Традиционната управленска структура е йерархична, като нивата на йе-
рархията, видът и броят на ръководителите на всяко ниво зависят от големината
на софтуерната фирма и размаха на дейностите в нея. В общия случай се разг-
раничават две нива: ръководители на фирмата (senior managers) и ръководите-
ли на проекти {project managers). Ръководителите на фирмата отговарят за:
-
определяне на дългосрочните и краткосрочни бизнеспрограми, т. е. кои
проекти ще се осъществяват и при какви условия;
-
сключване на договори за разработване;
-
назначаване на ръководители на проекти;
-
ръководство на основни фирмени дейности, като фирмено планиране,
маркетинг, научноизследователска и развойна дейност, подбор и развитие на
кадрите и др.
Ръководителите на проекти отговарят за:
-
подготовката и съставянето на офертата за разработката;
-
оценка на стойността и продължителността на проекта и необходимите
за осъществяването му ресурси;
113
-
сформиране на екип(и) за проекта и оценяване на работещите;
-
съставяне на планове (бюджет, индивидуални планове) и графици за
проекта;
— текущо управление на проекта (проследяване, отчитане в контролни
точки);
— представяне на проекта и развитието му пред външни или горестоящи
инстанции.
Практиката показва, че успехът на проекта зависи в голяма степен от ка-
чествата на ръководителя му. Затова са разработени и специални процедури за
подбор на ръководителите на проекти. Обикновено се предпочитат лица с ин-
форматично или бизнесобразование с допълнителна специализация в областта
на софтуерните технологии. Практическият опит в разработването на софтуер
е съществено предимство. Професионалните изисквания се допълват от изиск-
вания за лидерски качества, комуникационни умения и индивидуални характе-
ристики, като сговорчивост, способност за оценяване на нови идеи и създаване
на подходящ микроклимат в екипа и т. н. Личната мотивация за превръщане на
разработчик в ръководител на проект е освен по-високото заплащане приема-
нето на предизвикателствата и отговорностите на нов проект, издигане в йерар-
хията на софтуерната организация, чувството на удовлетворение от вземане на
решения, водещи до успешно завършване на проекта, и не на последно място
— упражняване на власт.
9.4. Планиране
Планирането обхваща дейностите по съставяне и проследяване на всички
видове планове, т. е. разработване на планове и процедури за реализирането
им, възлагане на задачи и проверка на изпълнението им. Планирането е основ-
на управленска функция и не е предсказание, какво ще стане, а какво бихме
искали да стане. Ръководството на фирмата определя дали и какво да се плани-
ра. Основни възражения срещу планирането са, че отнема много време, че е
скъпо и ограничава гъвкавостта; че се основава на предположения, които може
и да не са верни, че потиска творческия подход и доколкото всеки проект е
уникален, не може да се използва рационално опитът от предишни проекти. В
подкрепа на планирането се посочва, че то:
-
подпомага осъществяването на интегрирани, целенасочени действия и
резултати;
-
служи за координация и контрол на всички дейности;
-
увеличава ефективността, като предотвратява повторно извършване на
определени действия;
-
осигурява ,прозрачност" на управлението на проектите.
В зависимост от целите и предназначението си плановете се делят на общи
и конкретни.
Общите планове се отнасят до софтуерната организация като цяло и са
целева програма, стратегически и тактически план.
Целевата програма (The Mission) отговаря на въпроса, защо съществува
софтуерната организация. Най-често целта е разработване на софтуер, който
да се разпространява с цел да се реализира печалба. Но съществуват и софту-
114
ерни организации с идеална цел (например софтуерни отдели на научни инсти-
тути), които разработват софтуер за популяризиране на нови научни постиже-
ния, създаване Ha freeware или shareware за издигане на авторитета на съответ-
ния научен институт и др. Специални са целите на разработване на софтуер за
военните, за космическите изследвания и др.
Стратегическият план отговаря на въпроса, какво да създава софтуер-
ната организация. Този план се създава за относително по-дълъг период от вре-
ме (обикновено за 5 години) и определя в какви приложни области ще бъдат
разработваните ПП, дали и как ще се разширява дейността на организацията,
какви ще са нейните основни и странични дейности (например съпровождане,
сертифициране, документиране на софтуер и др.).
Тактическият план отговаря на въпроса, как ще се осъществяват плани-
раните софтуерни проекти (в каква последователност, с какви ресурси, в каква
среда на разработване). Той обикновено се съставя за една календарна година.
Конкретните планове се отнасят до отделен софтуерен проект. Освен
плана за проекта се съставят бюджет, календарни планове и графици за групи-
те, реализиращи проекта, както и индивидуални планове за всеки участник.
Съществен конкретен план е бюджетът, описващ разпределението на средст-
вата за разработване. Съставянето на бюджета се подчинява на следните правила:
-
съставя се от ръководителя на проекта със съдействието на финансист,
запознат с действащата нормативна уредба;
-
представлява писмен документ, който се утвърждава от ръководството
на фирмата и спазването му е задължително. Препоръчва се регламентирането
на процедура за внасяне на изменения, защото реалните проекти понякога са
толкова големи и сложни, че е невъзможно в началото на проекта да се извърши
прецизно определяне и разпределяне на финансовите средства.
-
бюджетът описва необходимите средства и начина на осигуряването
им. Разходите са описани по видове, наречени пера. Основни пера са: за трудо-
ви възнаграждения (заедно с дължимите социални и здравни осигуровки и да-
нъци), за закупуване или наемане на техника, за поддържане на средата за раз-
работване (наем за помещенията, ток, парно, вода, чистене и поддръжка), за
консумативи (дискети, хартия, тонер), за командировъчни (в случаите, в които
възложителят или внедрителят са в друго населено място), за допълнителни ус-
луги (въвеждане на начални данни, съставяне, превод и/или редактиране на до-
кументация, наемане на външни експерти). Обикновено средствата са „бояди-
сани" и не се допуска безконтролното им прехвърляне от едно перо в друго.
-
ако проектът се осъществява в условия на инфлация и ще продължи
повече от година, се препоръчва съставянето му в някакви условни единици,
които са сравнително постоянни или добре регламентирани — например в до-
лари или евро, в минимални заплати и т. н.
-
препоръчва се да се предвидят контролни точки от проекта, в които да
се анализира изпълнението на бюджета и ако е необходимо, да се актуализира.
9.5. Анализ и управление на риска
Под риск се разбира потенциален проблем, който може да възникне и да
застраши успешното завършване на проекта. Всеки риск се характеризира с
115
неопределеност (може да се появи или не) и вредност ■— винаги има нежела-
ни последици или загуби. В зависимост от това, какво засягат, рисковете се
делят на рискове на проекта, технически или бизнесрискове. В [3] е дадена и
класификация на рисковете в зависимост от степента на прогнозируемост. Очак-
вани са рисковете, които могат да се идентифицират чрез анализ на проекта;
предвидими са рисковете, които могат да се опишат въз основа на опита от
предишни проекти, и непредвидими са рисковете, които просто се случват.
Основната идея на управлението на риска е да се анализират някои от най-
вероятните рискови ситуации и да се направят опити за избягването им или за
намаляване на последиците от тях. Допълнителните разходи за изследване на
рисковите фактори се компенсират с предотвратяването на значителните щети,
които биха се получили, ако рискът е действителен. Управлението на риска се
осъществява в три стъпки: идентифициране, оценяване и ограничаване на въз-
можните последици. За всеки риск тези стъпки са последователни, но дейности-
те за управление на различните рискове се преплитат (например някои рискове
се контролират, докато нови рискове се идентифицират и оценяват).
Идентифицирането на риска е систематичен опит да се установи какво мо-
же да застраши успешната реализация на проекта. Рисковите фактори могат да се
разделят на две групи: общи за всички софтуерни проекти и специфични за даден
проект. Основна техника за идентифициране на риска е съставянето на въпросни-
ци, свързани с характеристики на основните застрашени обекти. Например за обекта
проект въпросите се отнасят до характеристиките обхват, размер и продължител-
ност; за обекта продукт — спецификации, сложност, уникалност и специални изис-
квания; за обекта персонал — организация, състав и мотивираност на работната
група, качества на ръководителя на проекта; за обекта процес на разработване —
процедура за избор на проекти, методология и стандарти за работа и др. За всеки
риск се определя и степента му на влияние върху проекта.
Оценяване на риска — данните за риска се систематизират и се преобра-
зуват в информация за вземане на решения. За всеки риск се определя вероят-
ността и последиците от риска [3], въз основа на които се определя и приорите-
тът му.
Предотвратяване на последиците от риска изисква планиране на уп-
равлението на риска — определянето на рисковете с най-висок приоритет, ко-
ито ще се наблюдават, и свързаните с тях действия за предотвратяването им. По
време на разработването се следят идентифицираните рискови фактори и се
натрупва информация за всеки от тях, за да се установи дали и как се променя
вероятността за настъпване на рисковата ситуация.
Управлението на риска е свързано с допълнителни ресурси, но някои проб-
лемни ситуации могат да се избегнат, като се спестят средствата за възстановя-
ване на щетите след настъпването им. Политиката на следене на риска поддър-
жа увереността на ръководителя, че всичко е под контрол, и увеличава шансо-
вете за успешно завършване на проекта.
9.6. Организация на софтуерните проекти
След изясняване на основните параметри на проекта — съдържание, тру-
доемкост, продължителност и рискове — работата по проекта трябва да се op-
116
ганизира така, че той да се вмести в определените срок и ресурси [4]. За тази
цел се съставя и се следи изпълнението на календарен план-график, представящ
разработването на ПП във времето.
Съставянето на графици преминава през следните етапи:
-
Декомпозиране на всички дейности, необходими за реализацията на про-
екта, на множество от задачи.
-
Определяне на зависимостите между задачите. Някои задачи могат да се
изпълняват само последователно, защото междинният продукт, създаван от ед-
на задача, е необходим за започването на друга задача. Други задачи са незави-
сими и могат да се изпълняват паралелно, т. е. едновременно.
-
Определяне на трудоемкостта на всяка задача в избрана мерна единица
(например в човекодни) и дефиниране на начална и крайна дата за извършване-
то й.
-
Разпределяне на работата между членовете на групата така, че във всеки
момент ресурсите за извършване на провеждащите се в този момент задачи да
не надвишават отпуснатите за проекта ресурси.
-
Определяне на персонални отговорници за всяка задача.
-
Определяне на получаваните изходи от всяка задача.
-
Дефиниране на контролни точки, при достигането на които ще се анали-
зират и оценяват получените междинни продукти.
Като пример ще разгледаме съставянето на график за дадена фаза на соф-
туерен проект. Нека за тази фаза да са определени три стандартни задачи, изис-
кващи едни и същи умения и квалификация на разработчиците. Въз основа на
информация от предишни проекти е определена трудоемкостта на всяка от за-
дачите. Данните от предишни проекти показват, че около 60% от усилията в
тази фаза са продуктивни. Следователно от 8 работни часа само 5 ще са про-
дуктивни.
Тези предварителни оценки са представени в таблицата на фиг. 9.1.
Задачи
|
Трудоемкост (човекочаса)
|
Задача 1
|
100
|
Задача 2
|
150
|
Задача 3
|
150
|
Фиг. 9.1.
Ръководителят на проекта оценява особеностите на проекта и планира след-
ната трудоемкост на задачите:
Алализирайки същността на задачите, ръководителят на проекта установя-
ва, че първите две задачи могат да се изпълняват паралелно, но третата може да
започне едва след завършването на първите две.
Задача
|
Трудоемкост (човекочаса)
|
Трудоемкост (човекодни)
|
Задача 1
|
90
|
18
|
Задача 2
|
165
|
33
|
Задача 3
|
170
|
34
|
Сподели с приятели: |