Rozdz22

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 1

Zarządzanie personelem

Omówienie znaczenia

personelu w procesie

inżynierii

oprogramowania

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 2

Cele

Znać proste modele ludzkiej pamięci, rozwiązywania
problemów i motywacji oraz niektóre ich konsekwencje
dla menedżerów tworzenia oprogramowania.

Znać podstawowe kwestie pracy zespołowej, tzn. skład
zespołu, spójność zespołu, komunikację w zespole i
organizację w zespole.

Znać niektóre kwestie związane z wyborem i
zatrzymywaniem

personelu

firmy

budującej

oprogramowanie.

Znać podstawy P-CMM - modelu będącego zrębem
zwiększania umiejętności twórców oprogramowania w
firmie.

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 3

Zawartość

Ograniczenia myślenia

Praca zespołowa

Wybieranie i zatrzymywanie personelu

Model P-CMM

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 4

Personel

Personel

pracujący

dla

firmy

tworzącej

oprogramowanie to jej największy majątek.

Stanowi kapitał intelektualny i tylko od
menedżerów

zależy,

czy

firma

osiągnie

największy możliwy zwrot z inwestycji w ludzi.

W firmach i gospodarkach mających sukcesy
osiąga się to jedynie wówczas, gdy ludzie są
szanowani przez przedsiębiorstwo.

Ludziom

należy

przypisać

poziom

odpowiedzialności

i

wynagrodzenia

odpowiadający ich umiejętnościom.

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 5

Skuteczne zarządzanie

Polega

więc

na

zarządzaniu

personelem

przedsiębiorstwa.

Menedżerowie przedsięwzięć muszą rozwiązywać
problemy technologiczne i nietechnologiczne przy
pomocy ludzi w swoich zespołach w jak najbardziej
wydajny sposób.

Muszą ludzi motywować, planować i organizować ich
pracę oraz dbać o to, aby praca była wykonana
rzetelnie.

Złe

zarządzanie

personelem

to

jedna

z

najważniejszych

przyczyn

niepowodzeń

przedsięwzięć.

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 6

Ograniczenia myślenia

Indywidualne zdolności są bardzo różne. Te różnice

odzwierciedlają

różnice

w

inteligencji,

wykształceniu i doświadczeniu, ale większość z nich

prawdopodobnie wynika z pewnych podstawowych

ograniczeń naszego myślenia.

Są one konsekwencjami sposobu przechowywania

informacji w naszych mózgach. Nie trzeba

szczegółowo znać procesu poznawczego.

Znajomość ograniczeń sposobu naszego myślenia

jest przydatna. Pomaga w zrozumieniu, dlaczego

niektóre metody inżynierii oprogramowania są

skuteczne i daje wyobrażenie o interakcjach między

ludźmi w zespole tworzącym oprogramowanie.

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 7

Organizacja pamięci

Organizacja ludzkiej pamięci jest hierarchiczna. Ma trzy

odrębne, połączone ze sobą obszary.

Pamięć krótka o szybkim czasie dostępu i małej pojemności. Do

niej są przekazywane wejściowe bodźce do wstępnego przetworzenia.

Tę pamięć można przyrównać do rejestrów komputera. Służy do

przetwarzania, a nie do przechowywania danych.

Obszary pamięci roboczej o większej pojemności. Ten obszar

charakteryzuje się dłuższym czasem dostępu. Służy do przetwarzania

informacji, ale może też zatrzymać pewne informacje do dalszego

przetwarzania przez okres dłuższy niż w wypadku pamięci krótkiej. Nie

służy do przechowywania informacji przez długi czas. Kontynuując

analogie komputera, tę pamięć można by przyrównać do pamięci RAM,

w której przechowuje się informacje na czas obliczeń.

Pamięć długa. Ma wielka pojemność, dość długi czas dostępu i

zawodny mechanizm wyszukiwania (zapominamy o pewnych rzeczach).

Pamięć długa służy do „trwałego” przechowywania informacji. Tę

pamięć można by przyrównać do pamięci dyskowej komputera.

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 8

Pamięć krótka

Informacja o problemie trafia do pamięci krótkiej w wyniku

czytania dokumentów i rozmów z ludźmi. Jest następnie

integrowana z innymi istotnymi informacjami pobranymi z

pamięci długiej i pamięci roboczej.

Ograniczony rozmiar pamięci krótkiej ogranicza nasz proces

poznawczy. W swym klasycznym eksperymencie Miller (1957)

stwierdził, że pamięć krótka może przechowywać około

siedmiu kwantów informacji. Kwant informacji nie ma stałego

rozmiaru, ale jest spójnym bytem informacyjnym. Może to być

numer telefoniczny, przeznaczenie obiektu lub nazwa ulicy.

Jeśli do rozwiązania problemu trzeba więcej informacji, niż

mieści się w pamięci krótkiej, to konieczne jest przetwarzanie i

transferowanie informacji w procesie pobierania danych

wejściowych. Może to prowadzić do utraty informacji.

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 9

Organizacja ludzkiej
pamięci

Pamięć robocza

Pamięć robocza

Bodźce wejściowe

Pamięć krótka

Pamięć długa

(duża pojemność, powolny dostęp)

Pamięć długa

(duża pojemność, powolny dostęp)

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 10

Poznawcze “klocki” w
programie sortującym

Pętla (przetwórz całą tablicę)

Pętla (przetwórz nieposortowaną część
tablicy)

Porównaj sąsiednie elementy

Porównaj sąsiednie elementy

Przestaw je, jeśli jest to konieczne, aby
mniejszy był wcześniej

Przestaw je, jeśli jest to konieczne, aby
mniejszy był wcześniej

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 11

Pamięć długa

Po

ustaleniu

wewnętrznej

struktury

znaczeniowej programu, wiedza o niej jest
przenoszona do pamięci długiej. Jeśli się z
niej regularnie korzysta, to nie zapomni się
jej. Można ja bez większej trudności
przedstawić za pomocą różnych notacji.

Wydaje się więc, że uczymy się w
kategoriach abstrakcji wysokiego poziomu,
a nie szczegółów niskiego poziomu.

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 12

Klasy wiedzy

Wiedza znaczeniowa.

To wiedza o kwestiach takich jak działanie instrukcji

przypisania, o pojęciu klasy, sposobie działania metody

wyszukiwania w tablicy z haszowaniem i informacjach

o strukturach organizacyjnych. Te wiedzę zdobywa się

przez doświadczenie i naukę. Jest ona przechowywania

w sposób niezależny od reprezentacji.

Wiedza składniowa.

To szczegółowa wiedza o reprezentacji, np. jak napisać

opis obiektu w UML, jakie funkcje standardowe są

dostępne w pewnym języku oprogramowania, czy

przypisanie zapisuje się za pomocą symbolu „=” czy „-”

itd. Wydaje się, że ta wiedza jest przechowywana w

postaci nieprzetworzonej.

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 13

Wiedza składniowa i
znaczeniowa

Wiedza zadaniowa Wiedza komputera

Wiedza znaczeniowa Wiedza składniowa

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 14

Rozwiązywanie
problemów

Wymyślenie i napisanie programu to proces

rozwiązywania problemu.

Zbudowanie systemu oprogramowania wymaga

zrozumienia

problemu,

opracowania

strategii

rozwiązywania i następnie przekształcenia jej w

program.

W

pierwszej

fazie

sformułowanie

problemu

przechodzi z pamięci krótkiej do pamięci roboczej.

Tam jest integrowane z istniejącą wiedzą z pamięci

długiej i analizowane w celu wypracowania ogólnego

rozwiązania.

Na końcu to ramowe rozwiązanie jest udoskonalane i

przyjmuje postać wykonywalnego programu.

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 15

Rozwiązywanie
problemów

Pamięć długa

Pamięć długa

Nowa wiedza

Istniejąca wiedza

Nowa wiedza

Istniejąca wiedza

Pamięć
robocza

Rozwiązywanie

Rozwiązywanie

Problem

Częściowe
rozwiązani
a

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 16

Proces projektowania
programu

Zintegruj istniejącą wiedzę komputerową z
wiedzą zadaniową w celu utworzenia nowej
wiedzy, a więc zrozumienia problemu.

Zbuduj model znaczeniowy rozwiązania.
Sprawdź

go

względem

problemu

i

udoskonalaj do czasu, aż stanie się
satysfakcjonujący.

Przedstaw ten model za pomocą jakiegoś
języka

programowania

lub

notacji

projektowej.

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 17

Dobór personelu

Menedżerowie podejmujący decyzje, kogo przyjąć do

długotrwałego przedsięwzięcia, powinni wziąć pod uwagę

zdolność do rozwiązywania problemów i doświadczenie z

dziedziny zastosowania, a nie umiejętność programowania

w konkretnym języku.

Gdy

problem

jest

już

zrozumiany,

doświadczeni

programiści napotkają w przybliżeniu ten sam poziom

trudności

przy

pisaniu

programu

niezależnie

od

zastosowanego języka programowania.

Znajomość języka jest niezbędna, a jej udoskonalenie trwa

(zwłaszcza w wypadku złożonych języków takich jak C++).

Z doświadczeń wynika jednak, że nauczenie się nowego

języka

jest

znacznie

łatwiejsze

niż

opanowanie

umiejętności rozwiązywania problemów.

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 18

Pisanie programu

Przy przekształceniu modelu znaczeniowego w
program zwykle robi się mniej błędów, jeśli język
programowania obejmuje struktury pasujące do
struktur znaczeniowych najniższego poziomu,
które programista rozumie. Zależy to od
konkretnej osoby, ale najczęściej te struktury
odpowiadają pojęciom, takim jak przypisania,
pętle,

instrukcje

warunkowe,

ukrywanie

informacji, obiekty, dziedziczenie itd. Im lepiej
język programowania pasuje do tych pojęć, tym
łatwiej jest napisać program.

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 19

Języki wysokiego poziomu

Programy zapisane w językach wysokiego
poziomu, takich jak Java, powinny więc
zawierać mniej błędów niż napisane w
asemblerze, ponieważ struktury znaczeniowe
niskiego poziomu można w Javie zakodować
bezpośrednio jako instrukcje języka. Gdy miesza
się pojęcia obiektowe i funkcyjne, mogą się
pojawić kłopoty. Może to wystąpić na przykład
wówczas, gdy w firmie ustalono standard
funkcyjnej metody analizy (np. SADT), a proces
projektowania i programowania jest obiektowy.

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 20

Programowanie
strukturalne

Korzystając z tego modelu można także wyjaśnić,

dlaczego programowanie strukturalne jest najlepszą

strategią

organizowania

sterowania

programu.

Podstawą programowania strukturalnego są struktury

znaczeniowe, takie jak pętle i instrukcje warunkowe.

Pamięć krótka programisty nie jest więc przeciążania,

ma on zatem mniejszą szansę na popełnienie błędu.

Programy strukturalne są łatwiejsze do zrozumienia,

ponieważ można je czytać od początku do końca.

Abstrakcje tworzące klocki mogą być budowane bez

zaglądania do innych części programu. Pamięć krótka

może zająć się jedną częścią kodu. Nie ma potrzeby

pobieranie z pamięci roboczej informacji o innych

częściach programu, które maja wpływ na tę część.

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 21

Motywacja

Jedna z ról menedżerów przedsięwzięć jest motywowanie

osób, które z nimi pracują.

Maslow (1954) napisał, że ludzi motywuje się przez

spełnianie ich potrzeb.

Potrzeby te rozłożono na kilka poziomów. Najniższe

poziomy

tej

hierarchii

odpowiadają

potrzebom

podstawowym, takim jak jedzenie, sen itd. oraz potrzebie

bezpieczeństwa w swoim środowisku. Potrzeby społeczne to

potrzeby poczucia, że jest się członkiem grupy społecznej.

Potrzeby szacunku to potrzeby bycia respektowanym przez

innych, a potrzeby samorealizacji są związane z rozwojem

osobistym. Człowiek nadaje większy priorytet potrzebom z

niskich poziomów, takim jak głód i zaspokaja je przed

bardziej abstrakcyjnymi potrzebami z wyższych poziomów.

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 22

Hierarchia potrzeb
człowieka

Potrzeby
samorealiz
acji

Potrzeby
fizjologiczne

Potrzeby bezpieczeństwa

Potrzeby społeczne

Potrzeby
szacunku

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 23

W firmie

Zapewnienie spełnienia potrzeb społecznych, szacunku i

samorealizacji jest więc najistotniejsze z menedżerskiego punktu

widzenia.

Spełnienie potrzeb społecznych oznacza zgodę na spotykanie się

ze współpracownikami i zapewnienie miejsc na takie spotkania.

Nieformalne i łatwe w użyciu kanały komunikacyjne, takie jak

poczta elektroniczna, są bardzo ważne.

Spełnienie potrzeby szacunku wymaga pokazania ludziom, że są

wysoko oceniani przez firmę. Publiczne docenianie osiągnięć jest

prostym i skutecznym sposobem realizacji tego celu. Pracownicy

muszą mieć świadomość, że są wynagradzani na poziomie

odpowiadającym ich umiejętnościom i doświadczeniu.

Spełnienie potrzeby samorealizacji wymaga pokazania ludziom

odpowiedzialności za ich pracę, przydzielenie im trudnych (ale

nie niemożliwych do wykonania zadań) i zaoferowanie programu

szkoleń, który umożliwi im rozwijanie swoich umiejętności.

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 24

Trzy typy profesjonalistów

Nastawieni na zadania to ci, dla których motywacja jest

wykonywana przez nich praca. W wypadku inżynierii

oprogramowania są to technicy, których motywuje

wyzwanie

intelektualne

związane

z

tworzeniem

oprogramowania.

Nastawieni na siebie to ci, którzy są motywowani głównie

przez

swój

osobisty

sukces

i

sławę.

Tworzenie

oprogramowania jest dla nich środkiem umożliwiającym

osiąganie własnych celów.

Nastawieni na interakcję to ci, których motywuje obecność i

działania współpracowników. W miarę jak tworzenie

oprogramowanie jest coraz bardziej skoncentrowane na

użytkowniku, osoby poświęcone interakcji są coraz bardziej

ważniejsze w inżynierii oprogramowania.

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 25

Praca zespołowa

Większość profesjonalnego oprogramowana jest tworzona

przez zespoły składające się z dwustu do kilkuset osób. Nie

ma możliwości, aby wszyscy członkowie tak wielkiego

zespołu wydajnie pracowali razem nad jednym problemem.

Tak wielkie zespoły dzieli się więc na kilka grup.

Każda grupa odpowiada za przedsięwzięcie polegające na

budowie jakiegoś podsystemu. Przyjmuje się ogólną zasadę,

że grupy w przedsięwzięciu inżynierii oprogramowania nie

powinny mieć więcej niż ośmiu członków.

Stworzenie

małych

grup

umożliwia

ograniczenie

problemów komunikacyjnych. Cała grupa może zasiąść na

spotkaniu przy jednym stole. Jej członkowie mogą się też

spotkać w swoich pokojach. Żadne skomplikowane

struktury komunikacyjne nie są konieczne.

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 26

Tworzenie grupy

Utworzenie grupy, która będzie wydajnie pracować,

jest więc krytycznym zadaniem menedżera.

Ważne jest, aby w grupie panowała równowaga

umiejętności

technicznych,

doświadczenia

i

osobowości.

Udane grupy to jednak więcej niż po prostu zespól

osób o właściwej równowadze umiejętności.

W dobrej grupie panuje duch zespołu, tzn. jej

członkowie są zmotywowani sukcesem grupy na

równi z realizacja własnych celów.

Menedżerowie powinni więc zachęcać do jawnych

czynności „budowania zespołu”, aby wypracować

owe zasadnicze poczucie lojalności grupowej.

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 27

Czynniki wpływające na
pracę grupową

Skład grupy. Czy panuje w niej właściwa
równowaga umiejętności, doświadczeń i
osobowości?

Spójność grupy. Czy w grupie myśli się o niej jako
o zespole, czy też o grupie osób pracujących
razem?

Komunikacja w grupie. Czy członkowie grupy
skutecznie się ze sobą porozumiewają?

Organizacja grupy. Czy zespół jest zorganizowany
tak, że każdy czuje się dowartościowany i jest
zadowolony ze swojej roli w grupie?

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 28

Skład grupy

Grupa zawierająca uzupełniające się osobowości może

pracować lepiej niż grupa tworzona jedynie na podstawie

zdolności

technicznych.

Ludzie

motywowani

pracą

najprawdopodobniej będą najlepsi technicznie. Ludzie

nastawieni na siebie będą zapewne najskuteczniejsi w

posuwaniu pracy do przodu w celu jej ukończenia. Ludzie

zajmujący się komunikacją będą szczególnie ważni jako

pomoc w komunikacji w ramach grupy. Uważam, że

najważniejsze

jest

uwzględnienie

w

grupie

osób

zajmujących się komunikacją. Lubią oni rozmawiać z

ludźmi, są więc w stanie bardzo wcześnie wykrywać

napięcia i nieporozumienia. Mogą pomóc w rozwiązywaniu

problemów osobowościowych i związanych z odmiennością,

zanim będą miały poważny wpływ na grupę.

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 29

Spójność grupy

Członkowie spójnej grupy uważają ją za

bardziej istotną od osób do niej należących.

Członkowie dobrze prowadzonej, spójnej

grupy są wobec niej lojalni. Identyfikują się z

celami grupy i z innymi jej członkami. Starają

się chronić ja jako całość przed zewnętrznymi

wpływami. To sprawia, że grupa staje się

solidna i zdolna do radzenia sobie z

problemami i nieoczekiwanymi sytuacjami.

Grupa radzi sobie ze zmianami przez

oferowanie członkom wzajemnego wsparcia i

pomocy.

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 30

Zalety spójnej grupy

Można wypracować grupowy standard jakości. Standardy

są ustawiane jednogłośnie, a zatem grupowy standard

będzie prawdopodobnie lepiej przestrzegany niż standard

narzucony grupie z zewnątrz.

Członkowie grupy blisko ze sobą współpracują. Osoby

należące do grupy uczą się od siebie nawzajem.

Zahamowania wynikające z niewiedzy są zminimalizowane

przez zachętę do wzajemnego nauczania.

Członkowie grupy mogą nawzajem znać swoje prace. Gdy

członkowie opuszczają grupę, można zachować ciągłość.

Można

urzeczywistniać

programowanie

pozbawione

indywidualizmu. Programy są uważane za własność grupy,

a nie poszczególnych osób.

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 31

Komunikacja w grupie

Zasadniczą sprawą jest zapewnienie dobrej
komunikacji między członkami grupy
tworzącej oprogramowanie. Członkowie
grupy muszą wymieniać informacje o
stanie swoich prac, podjętych decyzjach
projektowych i koniecznych zmianach
poprzednich decyzji. Dobra komunikacja
wzmacnia także spójność grupy, ponieważ
jej członkowie poznają motywacje oraz
silne i słabe strony innych członków.

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 32

Podstawowe czynniki mające
wpływ na skuteczność
komunikacji

Wielkość grupy

Struktura grupy

Skład grupy

Fizyczne środowisko pracy grupy

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 33

Organizacja grupy

Małe grupy programistów są zwykle zorganizowane w

nieformalny sposób.

Lider grupy bierze udział w tworzeniu razem z innymi jej

członkami. Może wyłonić się lider techniczny, który skutecznie

zapanuje nad produkcją oprogramowania.

W nieformalnej grupie pracę do wykonania omawia się w

ramach grupy jako całości i przydziela zadania zgodnie ze

zdolnościami i doświadczeniem.

Projektowanie systemu na wysokim poziomie wykonują wyżsi

rangą członkowie grupy, ale projekty niskiego poziomu są

zadaniem osoby przydzielonej do konkretnego zadania.

Grupa nieformalna może osiągnąć powodzenie zwłaszcza

wówczas,

gdy

większość

jej

członków

jest

ludźmi

doświadczonymi i kompetentnymi.

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 34

Zespół wodza-programisty

Administrator

Administrator

Narzędziowiec

Narzędziowiec

Specjalista do SO

Specjalista do SO

Administrator

Administrator

Autor dokumentacji

technicznej

Autor dokumentacji

technicznej

Wódz-

-programista

Wódz-

-programista

Programista

zapasowy

Programista

zapasowy

Bibliotekarz

Bibliotekarz

Komunikacja
z
otoczeniem

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 35

Wybieranie i
zatrzymywanie personelu

Jedną z ról menedżera przedsięwzięcia jest

wybór personelu do pracy przy przedsięwzięciu.

W wyjątkowych wypadkach menedżerowie

mogą zatrudnić osoby najlepiej nadające się do

tej pracy, niezależnie od innych zobowiązań i

kwestii budżetowych.

Zwykle menedżer nie może swobodnie wybierać

personelu. Musi on wykorzystać tych, którzy są

dostępni w firmie, musi znaleźć ludzi szybko i

może mieć ograniczony budżet.

To ograniczenie budżetu może mieć wpływ na

liczbę (drogich) doświadczonych inżynierów,

którzy będą pracować przy przedsięwzięciu.

background image

Czynniki wpływające na wybór personelu

Czynnik

Wyjaśnienie

Doświadczenie Jeśli przedsięwzięcie ma doprowadzić do zbudowania udanego
systemu, to
w dziedzinie

jego twórcy muszą rozumieć dziedzinę zastosowania.

zastosowania
Doświadczenie

Może być istotne, jeśli prace obejmują programowanie na niskim

poziomie.
w pracy z platformą

W przeciwnym wypadku zwykle nie jest krytycznym

atrybutem.
Doświadczenie

Zwykle jest istotne jedynie w wypadku krótkotrwałych

przedsięwzięć, przy
w pracy z językiem

których nie ma czasu na naukę nowego języka.

programowania
Zdobyte

Może być podstawową wskazówką co do tego, co kandydat

powinien umieć,
wykształcenie

i o jego zdolności do uczenia się. Ten czynniki jest coraz mniej

istotny, gdy

inżynierowie zdobywają coraz więcej doświadczenia w wielu

przedsięwzięciach.
Zdolności

Są ważne, ponieważ personel przedsięwzięcia musi się

porozumieć ustnie
komunikacyjne

i pisemnie z innymi inżynierami, menedżerami i klientami.

Zdolność do

Tę zdolność można ocenić przyglądając się różnym rodzajom

doświadczeń
przystosowania się

zdobytych przez kandydata. To ważny atrybut, ponieważ

wynika z niego

zdolność do uczenia się.

Nastawienie

Personel przedsięwzięcia powinien być pozytywnie nastawiony do
wykonywanej pracy i chcieć zdobywać nowe umiejętności. To

bardzo

ważny atrybut, ale zwykle bardzo trudny do oceny.

Osobowość

To bardzo ważny atrybut, ale zwykle trudny do oceny, kandydaci

muszą być

racjonalnie zgodni z innymi członkami zespołu. Żaden konkretny

typ

osobowości nie jest bardziej lub mniej odpowiedni do

inżynierii

oprogramowania.

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 37

informacje dostarczane przez
kandydatów o ich przeszłości i
doświadczeniu (ich życiorys lub CV)

informacje zdobyte przez wywiady z
kandydatami

rekomendacje od innych osób, które
współpracowały z kandydatami.

Decyzję, kogo przyjąć do przedsięwzięcia,
zwykle podejmuje się na podstawie
informacji następujących trzech
rodzajów:

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 38

Miejsce pracy ma istotny wpływ na ludzką wydajność

i zadowolenie z pracy. Za pomocą eksperymentów

psychologicznych wykazano, że na zachowanie mają

wpływ

wielkość

pomieszczenia,

umeblowanie,

temperatura, wilgotność, jasność i jakość światła,

hałas, poziom postrzegania prywatności.

Zachowanie

grupy

zależy

od

organizacji

architektonicznej i udogodnień telekomunikacyjnych.

Komunikacja grupowa zależy od architektury

budynku i organizacji przestrzeni pracy.

Koszt braku dobrych warunków pracy jest realny i

znaczący.

Środowiska pracy

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 39

Najważniejsze czynniki
środowiskowe

Prywatność. Programiści potrzebują miejsca, w

którym mogliby się koncentrować i pracować.

Potrzebują miejsca, gdzie nikt by im nie

przeszkadzał.

Świadomość otoczenia. Ludzie wolą pracować przy

świetle naturalnym i z widokiem na otaczające ich

środowisko.

Dostosowanie do osobistych potrzeb. Ludzie

przyjmują różne style pracy i mają odmienne

opinie o wystroju wnętrza. Możliwość przebudowy

swojego miejsca pracy tak, aby pasowało do jej

stylu , oraz możliwość osobistego gospodarowania

swoim środowiskiem, są bardzo ważne.

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 40

Warunki pracy

Ludzie lubią indywidualne pokoje, które mogą sobie po

swojemu

urządzić.

Jest

tam

mniej

przerywania

i

przeszkadzania w pracy niż w otwartych przestrzeniach

biurowych.

W otwartych biurach ludziom odmawia się prywatności i

cichego środowiska pracy.

Zapewnienie inżynierom oprogramowania oddzielnych pokoi

może spowodować znaczący wzrost wydajności.

DeMarco i Lister (1985) porównali wydajność programistów w

różnych rodzajach biur. Zauważyli, że czynniki, takie jak

oddzielne pomieszczenia i możliwość wykluczenia przerywania

pracy, maja znaczący wpływ. Programiści mający dobre

warunki pracy byli ponad dwa razy bardziej wydajni niż równie

umiejętni programiści pracujący w gorszych warunkach.

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 41

Grupowanie pokoi osób
i pokoju spotkań grupy

Pokój

Pokój

Pokój

Pokój

Pokój

Pokój

Pokój

Pokój

Pokój
spotkań

Wspólna
przestrzeń

Dzielona
dokumentacja

Okno

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 42

Model P-CMM

Software Engineering Institute (SEI) ze Stanów

Zjednoczonych prowadzi długotrwały program

ulepszania procesu tworzenia oprogramowania.

Częścią tego programu jest CMM (Capability

Maturity Model- model dojrzewania zdolności),

tzn. model procesu tworzenia oprogramowania.

CMM dotyczy najlepszych praktyk inżynierii

oprogramowania.

W

celu

wspierania

tego

modelu

SEI

zaproponował także P-CMM (People Capability

Maturity Model- model dojrzewania zdolności

ludzi).

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 43

Poziomy modelu P-CMM

Początkowy. Doraźnie stosuje się nieformalne
metody zarządzania personelem.

Powtarzalny.

Ustalenie

strategii

rozwoju

zdolności personelu.

Zdefiniowany. Standaryzacja najlepszych praktyk
zarządzania personelem w całej firmie.

Zarządzany. Ustalono i wdrożono ilościowe cele
zarządzania personelem.

Optymalizowany.

Ciągła

koncentracja

na

zwiększaniu

indywidualnych

kompetencji

i

motywacji do pracy.

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 44

Cele P-CMM

Poprawa zdolności firmy programistycznej

przez

zwiększenie

zdolności

jej

siły

roboczej.

Upewnienie się, że zdolność do tworzenia

oprogramowania jest atrybutem firmy, a nie

kilku osób.

Dopasowanie motywacji poszczególnych

osób do motywacji firmy.

Utrzymywanie w firmie zasobów ludzkich

(tzn. osób z krytycznymi umiejętnościami i

wiedzą).

background image

Model P-
CMM

Ustawiczne odnawianie siły roboczej
Trenerzy
Rozwój kompetencji personelu

Ustawiczne odnawianie siły roboczej
Trenerzy
Rozwój kompetencji personelu

Optymalizowa
ny

Początkowy

Początkowy

Wynagrodzenie
Szkolenia
Zarządzanie wydajnością
Wybór personelu
Komunikacja
Środowisko pracy

Wynagrodzenie
Szkolenia
Zarządzanie wydajnością
Wybór personelu
Komunikacja
Środowisko pracy

Powtarzaln
y

Wprowadź
podstawową
dyscyplinę
do działań
siły roboczej

Wyrównanie wydajności w firmie
Zarządzanie kompetencjami w firmie
Praktyki zespołowe
Budowa zespołu
Mentorzy

Wyrównanie wydajności w firmie
Zarządzanie kompetencjami w firmie
Praktyki zespołowe
Budowa zespołu
Mentorzy

Zarządzany

Kultura uczestnictwa
Praktyka największej kompetencji
Rozwój zawodowy
Rozwój kompetencji
Planowanie sił roboczych
Analiza umiejętności i wiedzy

Kultura uczestnictwa
Praktyka największej kompetencji
Rozwój zawodowy
Rozwój kompetencji
Planowanie sił roboczych
Analiza umiejętności i wiedzy

Zdefiniowany

Ustawicznie poprawiaj
metody
zwiększania kompetencji
poszczególnych osób i całej
firmy

Zarządzaj ilościowo przyrostem
zdolności siły roboczej firmy
i utwórz zespoły zgodne
z kompetencjami

Rozpoznaj zasadnicze
kompetencje i dostosuj
do nich działania siły
roboczej

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 46

Główne tezy

Zarządzanie

tworzeniem

oprogramowania

to

głównie

zarządzanie ludźmi. Menedżerowie powinni więc rozumieć
naturę człowieka, aby nie stawiać sobie lub personelowi
nierealnych żądań.

Ludzie mają szybką pamięć krótką, pamięć roboczą i pamięć
długą. Wiedza może być nieuporządkowaną wiedzą
składniową lub głębszą wiedzą znaczeniową. Rozwiązywanie
problemów polega na integracji znaczeniowych z pamięci
długiej z nowymi informacjami w pamięci krótkiej.

Czynniki, które można wziąć pod uwagę przy wyborze
personelu, to m.in. Doświadczenie z dziedziny zastosowania,
zdolność do przystosowywania się i osobowość.

background image

©Ian Sommerville 2000

Inżynieria oprogramowania, Rozdział 22

Slide 47

Główne tezy

Grupy tworzące oprogramowanie powinny być małe i
spójne. Liderzy grup powinni być kompetentni technicznie.
Należy im zapewnić wsparcie administracyjne i techniczne.

Na porozumiewanie się w ramach grupy wpływają takie
czynniki jak status członków grupy, wielkość grupy, rozkład
płci, osobowość i dostępne kanały komunikacyjne.

Zapewnienie osobistego środowiska pracy z odpowiednimi
udogodnieniami komunikacyjnymi i komputerowymi może
zwiększyć wydajność i zadowolenie z pracy programistów.

P-CMM (People-Capability Maturity Model) stanowi zrąb i
powiązane z nim poradnictwo na temat poprawy zdolności
ludzi zatrudnionych w przedsiębiorstwie i zdolności firmy
do osiągania korzyści z jej zasobów ludzkich.


Document Outline


Wyszukiwarka

Podobne podstrony:
Rozdz20 (6)
Pedagogika Społeczna rozdz2
Dreamweaver 4 Dla Każdego, ROZDZ22, Szablon dla tlumaczy
Dreamweaver 4 Dla Każdego, ROZDZ22, Szablon dla tlumaczy
Rozdz23
KANT U.M.M. rozdz2, etyka(1)
Environmental Management Science dot. promieniotworczych, publikacje do mgr; transport w glebie, bio
Rozdz23
rozdz2
rozdz21, inne, Dreamweaver 4 dla kazdego, Dreamweaver 4 dla kazdego
Dreamweaver 4 Dla Każdego, ROZDZ23, Szablon dla tlumaczy
ROZDZ2B, Zbigniew Kosma Podstawy Mechaniki Płynów
rozdz20, inne, Dreamweaver 4 dla kazdego, Dreamweaver 4 dla kazdego

więcej podobnych podstron