Fundamentos de Software e Gerenciamento de Projetos
Fundamentos de Software e Gerenciamento de Projetos
Fundamentos de Software e Gerenciamento de Projetos
PROPÓSITO
Compreender a importância do processo de desenvolvimento de software e do Gerenciamento
de Projetos no contexto da Engenharia de Software.
OBJETIVOS
MÓDULO 1
Reconhecer os conceitos básicos relacionados com o desenvolvimento de software
MÓDULO 2
MÓDULO 3
MÓDULO 4
INTRODUÇÃO
Nos dias atuais, a importância do software é facilmente perceptível em função dos inúmeros
serviços digitais disponíveis na nossa Sociedade da Informação. Em outros cenários, o
software também está presente em sistemas de controle de veículos, aviões, refinarias entre
outros.
Podemos afirmar que o “produto” software tem que ser projetado aplicando-se as melhores
práticas da engenharia, pois quais seriam as consequências de um defeito de software em uma
aeronave com 500 pessoas ou na falha de um sistema de controle de tráfego aéreo?
Realmente, o software necessita das melhores práticas da engenharia no seu projeto.
Neste contexto, destaca-se a disciplina Engenharia de Software, que trata dos aspectos
técnicos que permitem a geração do “produto” software. De uma forma geral, a engenharia,
qualquer que seja, necessita de processos. Em função dessa premissa, podemos afirmar que
não existe engenharia sem processo.
O processo de desenvolvimento de software inclui algumas etapas básicas, cujo momento de
aplicação depende do modelo adotado pelo engenheiro de software.
MÓDULO 1
Reconhecer os conceitos básicos relacionados com o desenvolvimento de software
SOFTWARE
Seria possível a sua vida hoje sem o smartphone?
Acredito que a maioria em uma pesquisa iria responder um enfático “não”!
O que você acha que torna o telefone móvel tão atrativo? O software?
É provável, pois, não descartando a importância do hardware, o software permite uma relação
de usabilidade interativa e intuitiva, gerando um uso intensivo. Essa competência é resultado
de trabalho multidisciplinar árduo de engenheiros de softwares, administradores de banco de
dados, web designers, entre outros profissionais.
Neste contexto, vamos iniciar nosso estudo sobre a extraordinária área de conhecimento
Engenharia de Software, que tem como principal produto o software.
ATENÇÃO
Destacamos que a bibliografia Pressman (2016) é uma referência mundial nessa área.
(DIJKSTRA, 1972).
Vamos enfatizar uma das principais finalidades do software: a geração de informação. A figura
1 ilustra de forma implícita os principais componentes tecnológicos de um Sistema de
Informação, i.e., hardware, software, sistema gerenciador de banco de dados, redes de
comunicação e serviços, sendo os referidos componentes interdependentes. O ambiente
empresarial está representado pela respectiva pirâmide funcional, cabendo ao componente
software, o importante papel de agregar valor aos dados quando da geração de informações
aos diferentes níveis de gestão – operacional, gerencial e estratégico, pois essa pode ser
utilizada em um processo de tomada de decisão ou no controle de funções empresariais, tais
como financeiro, recursos humanos e outras.
Fonte: O autor.
Figura 1 – Sistema de Informação x Software.
Vamos imaginar o que seria do piloto sem as informações do voo no painel de controle.
Em ambos exemplos, observamos que o software apresenta dois papéis distintos, o primeiro
como um produto a ser utilizado pelos usuários, o segundo como veículo que distribui o
produto, pois a comunicação entre os diversos componentes de um sistema de informação
ocorre por meio de sistemas operacionais, software de comunicação entre outros. O software
distribui o produto mais importante da nossa era – a Informação (PRESSMAN, 2016).
SOFTWARE DE SISTEMA
Camadas de software que atendem a outros softwares, tais como, sistemas operacionais,
drivers e outros.
SOFTWARE DE APLICAÇÃO
Inclui software com escopo específico, tais como, sistemas de gestão empresarial (ERP).
SOFTWARE DE ENGENHARIA/CIENTÍFICO
Inclui software aplicado às áreas de engenharia e científica, tal como, software para cálculo
estrutural na área de engenharia civil ou processamento de imagem.
SOFTWARE EMBARCADO
Instalado em produtos com funções específicas, tal como, o controle de um veículo com
informações disponíveis no painel digital.
ENGENHARIA DE SOFTWARE
Vimos nos exemplos do software embarcado em uma aeronave ou controlando o tráfego aéreo
uma característica comum: a complexidade. A melhor tratativa para a complexidade é a
aplicação de metodologia que permita a decomposição do problema em problemas menores de
forma sistemática, cabendo à engenharia essa sistematização.
Uma premissa básica é que a engenharia permite a solução de problemas e, quanto mais
complexo um produto a ser gerado, mais a engenharia faz-se necessária.
Fonte: KorArkaR/Shutterstock
Vamos ver no caso da construção de uma simples casa, talvez um engenheiro resolva o
problema; e no caso de um edifício inteligente com vários andares? Neste caso, o problema
tornou-se multidisciplinar, ou seja, serão necessários vários profissionais de várias áreas, e.g.,
arquiteto, engenheiros civis, mecânicos, elétricos, de software etc. A construção do prédio
torna-se inviável caso não haja uma tratativa sistemática por meio da aplicação das melhores
práticas da engenharia.
A mesma correlação pode ser aplicada quando o produto a ser gerado é o software. No caso
do software, aplica-se a Engenharia de Software.
Fonte: KorArkaR/Shutterstock
TECNOLOGIA EM CAMADAS
A Engenharia de Software é uma tecnologia em camadas, como ilustra a figura 2. Vejamos as
descrições das referidas camadas:
CAMADA DE QUALIDADE
Garante que os requisitos que atendem às expectativas do usuário serão cumpridos.
CAMADA DE PROCESSO
Determina as etapas de desenvolvimento do software.
CAMADA DE MÉTODOS
Define, por exemplo, quais as técnicas de elicitação de requisitos, os artefatos gerados em
função da técnica de modelagem adotada, tal como, modelo de casos de uso ou de classes.
CAMADA DE FERRAMENTAS
Estimula a utilização de ferramentas “CASE” (Computer-Aided Software Engineering) no
desenho dos diversos artefatos ou mesmo na geração automática de código, entre outras
aplicações; a tecnologia CASE está disponível para uso em todas as etapas do processo de
desenvolvimento de software.
Fonte: O autor
Figura 2 - Camadas da Engenharia de Software.
Considerando um produto tangível para todos nós, você poderia imaginar que um dia
construirá sua casa própria? Vamos imaginar que sim. O que você precisaria para levar em
frente esta construção? Um processo?
Certamente, pois terá que organizar as etapas da construção: fundação, estrutura, cobertura,
alvenaria, instalações etc. Agora a construção da casa fica mais fácil.
PROCESSO DE SOFTWARE
Processo é uma sequência de etapas que permitem a geração de um produto, no nosso caso,
o software. O processo permite uma melhor tratativa em relação à complexidade de obtenção
de um determinado produto, pois, na maioria das vezes, é um trabalho multidisciplinar
realizado por analistas, programadores, gerentes de projeto, gerentes de teste e outros
profissionais.
Fonte: O autor
Figura 3 - Metodologia do Processo.
COMUNICAÇÃO
As primeiras atividades de um processo de software requerem uma comunicação intensiva
com os usuários, buscando o entendimento do problema, a definição de objetivos para o
projeto, bem como a identificação de requisitos.
PLANEJAMENTO
Destaca-se nesta atividade a área de conhecimento Gerenciamento de Projeto, que permitirá a
elaboração de um Plano de Gerenciamento do Projeto de forma sistemática, tendo como
entrega importante o cronograma que inclui as atividades a serem desenvolvidas no referido
projeto, contemplando diferentes áreas de conhecimento.
O processo de desenvolvimento de software disponibiliza as principais atividades que irão
compor o Plano de Gerenciamento do Projeto, sendo esse plano executado e monitorado.
MODELAGEM
A engenharia tem como melhor prática a geração de modelos, tal como a planta baixa de uma
casa. A maioria desses modelos gráficos, denominados de diagramas na Engenharia de
Software, podem ser complementados por descrições textuais. Como exemplo, apresentamos
o modelo de casos de uso que inclui diagramas de casos de uso, artefatos gráficos e
descrições de cenários dos casos de uso, artefatos textuais.
CONSTRUÇÃO
A partir dos modelos gerados, é realizada a construção ou implementação do software,
portanto, os modelos determinam o comportamento do software. Essa atividade inclui a
codificação e os testes de software de acordo com o planejado.
ENTREGA
Ao final, ocorre o objetivo de um plano de projeto de software, i.e., a entrega do produto em
produção de acordo com o planejado.
Dentro do princípio de que “não se controla o que não se mede”, a etapa do Gerenciamento de
Projeto Monitoramento e Controle permite verificar se a execução está de acordo com o
planejado, pois, caso seja identificada alguma não conformidade, ações corretivas devem ser
implementadas.
ADMINISTRAÇÃO DE RISCOS
Ênfase à área de Gerenciamento de Risco, de modo que qualquer evento, positivo ou negativo
que possa impactar o desenvolvimento do projeto, seja tratado.
REVISÕES TÉCNICAS
Atividade intrínseca da qualidade, pois todos os artefatos devem ser testados, inclusive,
processos, modelos, código do software e outros.
MEDIÇÃO
Outra atividade da qualidade que permite a definição de métricas para avaliar as várias
atividades durante o desenvolvimento do software.
GERENCIAMENTO DA CONFIGURAÇÃO DE
SOFTWARE
O reuso de software deve ser um objetivo persistido por quem desenvolve o software. No
paradigma estruturado, existiam as bibliotecas de funções que permitiam a reutilização de
código em várias aplicações com possibilidades bem limitadas e com o advento do paradigma
orientado a objetos, o reuso ficou mais sofisticado em função de mecanismos, e.g. herança,
que possibilitam uma melhor componentização do software.
Um processo de software encadeia uma série de atividades, sendo que estas atividades
possuem métodos próprios para a geração de artefatos que necessitam ser documentados,
e.g., modelo de casos de uso.
Cabe ao engenheiro de software documentar cada atividade que será aplicada no processo de
desenvolvimento de software em função da natureza do problema (complexidade), das
características das pessoas que realizarão o trabalho e dos usuários envolvidos.
RESUMINDO
Neste módulo, podemos destacar a importância do software atualmente, bem como da
complexidade no seu desenvolvimento. A aplicação da Engenharia de Software permite lidar
com a referida complexidade, pois melhores práticas podem ser aplicadas de forma a gerar um
produto “software” que atenda às necessidades para as quais foi projetado.
Destacamos que a Engenharia de Software é uma tecnologia em camadas, ou seja, com foco
na qualidade, processo, métodos e ferramentas. Cabe enfatizar que a base da Engenharia de
Software é a camada de processo, por isso foram descritas as principais atividades genéricas
que devem compor um processo de software: comunicação, planejamento, modelagem,
construção e entrega.
VERIFICANDO O APRENDIZADO
B) II e III, somente.
C) I, II e IV, somente.
GABARITO
O software tem como um dos principais objetivos agregar valor ao negócio, permitindo a
automação de rotinas comumente associadas ao controle administrativo ou em apoio ao
processo de decisão. A Engenharia de Software permite o fornecimento dessa estrutura
disponibilizando processos, métodos e ferramentas.
MÓDULO 2
Descrever as etapas essenciais de um processo de desenvolvimento de software
Você sabe por que se aplica de forma intensa o conceito de abstração no desenvolvimento de
software?
Porque o processo de software é iniciado com especificações e modelos com alto nível de
abstração e, à medida que o desenvolvimento de software se aproxima da codificação, o nível
de abstração diminui, de modo que o código representa o nível mais baixo da abstração ou de
maior detalhamento na especificação do software.
FIGURA 3
Fonte: O autor
Figura 3 - Metodologia do Processo.
PROCESSO DE DESENVOLVIMENTO DE
SOFTWARE
O engenheiro de software deverá definir qual o processo de desenvolvimento a ser aplicado
em um determinado projeto de software como especificação de requisito não funcional.
Inicialmente, terá que identificar quais as atividades que irão compor o desejado processo e,
em seguida, definir o sequenciamento das referidas atividades, ou seja, o fluxo do processo.
Fonte: O autor
Figura 4 - Atividades típicas de um processo de desenvolvimento de software.
Fonte: puhhha/Shutterstock
Realmente, o desafio é grande, pois o referido engenheiro, normalmente, não entende do
ambiente de negócio que o software será implementado. Portanto, terá que se comunicar com
diferentes usuários que, muitas vezes, entendem de somente parte do problema; para tal,
deverá utilizar diferentes técnicas de levantamento de requisitos, tais como, entrevistas,
questionários, leituras de documentos, etnografia e outros.
Nesta etapa, são identificados os requisitos que serão implementados no software projetado. O
grande desafio é que o engenheiro de software tenha o mesmo entendimento do negócio que
os usuários.
SOMMERVILLE, 2007.
REQUISITOS FUNCIONAIS
Estão relacionados com os serviços fornecidos pelo sistema, ou seja, as funcionalidades que
estarão disponíveis no software, tal como, a geração de um histórico escolar em um sistema de
gestão acadêmico ou geração de uma nota fiscal em um sistema de vendas.
REQUISITOS DE DOMÍNIO
Também são conhecidos como “regras de negócio”, que, normalmente, apresentam-se como
restrições ao requisito funcional. Como exemplo, temos o cálculo da média para aprovação em
uma determinada disciplina, a contagem de pontuação de multas para computo da perda de
uma carteira de motorista ou o cálculo dos impostos quando da geração de uma nota fiscal. O
não cumprimento de um requisito de domínio pode comprometer o uso do sistema.
Cabe destacar que Sommerville (2007) apresenta uma classificação relativa aos níveis de
abstração aplicados na descrição dos requisitos, utilizando o termo requisitos de usuários,
para especificação com alto nível de abstração, e requisitos de sistema, para especificação
com descrições detalhadas, ou seja, com baixo nível de abstração. Realizada essa primeira
classificação, os requisitos de sistema são tipificados em funcionais, não funcionais e de
domínio, como anteriormente apresentados.
Muitos estudos destacam a importância desta etapa, pois o mau entendimento de um requisito
é propagado nas próximas etapas no processo, ilustrado na figura 4, refletindo de forma
negativa no produto software.
A partir desse documento, inicia-se a rastreabilidade dos requisitos, ou seja, a relação com os
produtos gerados, e.g. modelos, a partir dos mesmos.
EXEMPLO
Ainda no contexto da construção de uma casa, quais seriam os requisitos iniciais para que
essa construção ocorresse?
Poderíamos imaginar uma descrição especificando que você quer uma casa com uma sala,
três quartos, uma suíte, cozinha, piscina, churrasqueira e com aproximadamente 120 m2.
Textualmente, temos um documento de requisitos.
Fonte: Kanghophoto/Shutterstock
Podemos contratar um arquiteto para desenhar uma planta baixa que atenda aos requisitos
descritos. Essa planta é o que chamamos de modelo, que representa parte da solução do
problema “construir a sua casa”.
A engenharia tem como boa prática a construção de modelos que permitem uma melhor
tratativa da complexidade em função de abstrações aplicadas, e.g., o diagrama de casos de
uso enfatiza a abstração funcional e o diagrama de sequência, os aspectos dinâmicos do
sistema, ou seja, a comunicação entre objetos na realização de um caso de uso. O modelo
permite, também, a comunicação entre as partes interessadas do projeto, pois podemos
considerar que um diagrama de caso de uso permite uma comunicação, por exemplo, entre
analistas e usuários ou entre analistas e gerentes de projeto. Os modelos permitem, ainda,
uma economicidade no projeto, pois uma correção em um modelo de classes na etapa de
análise por um erro no entendimento de um determinado requisito evita a propagação desse
defeito no código em produção, manutenção essa que seria bem mais custosa. Uma última
colocação: os modelos determinam a forma da solução do problema, ou seja, se o diagrama de
componentes estabelece três camadas de software, o software implantado deverá refletir a
referida especificação.
Fonte: O autor
Figura 5 - Exemplo de Diagrama de Casos de Uso.
Nesta etapa, o engenheiro de software aplica um alto nível de abstração de modo a definir “O
QUE” o sistema deverá implementar, ou seja, nenhum tipo de restrição tecnológica é
considerado, e.g., como ocorre a comunicação entre os objetos que permitirão implementar o
caso de uso “Agendar consulta”.
A entrega da referida etapa inclui os modelos denominados “modelos de análise” com alto nível
de abstração.
A figura 6 ilustra um diagrama de classes, sendo este um artefato do Modelo de Classes que
permite identificar os objetos do domínio do problema que serão utilizados na implementação
dos casos de uso. Cabe ao engenheiro de software, verificar a correção do modelo e a
consistência com o Modelo de Casos de Uso.
Fonte: Wikipedia
Figura 6 - Exemplo de Diagrama de Classes.
ETAPA DE PROJETO
A fase de Projeto permite os refinamentos dos modelos gerados na análise, bem como a
construção de novos modelos gerando especificações com menor nível de abstração e que
permitam definir “COMO” implementar a solução especificada, ou seja, ao final desta etapa, o
nível de detalhamento da especificação permite a implementação da solução.
Desenho dos componentes do sistema e dos nós computacionais necessários para a sua
implantação, gerando modelos que determinam a arquitetura do sistema.
ETAPA DE IMPLEMENTAÇÃO
Nesta etapa, ocorre a codificação do software de acordo com os requisitos definidos na etapa
de Projeto. Os padrões de projeto devem ser considerados por representarem melhores
práticas de implementação do software.
Fonte: whiteMocca/Shutterstock
ETAPA DE TESTES
Nesta etapa, são aplicados os denominados testes de software ou testes de validação que
permitem verificar se o produto certo está sendo construído.
RECOMENDAÇÃO
Nesta etapa, é fundamental a geração de um Plano de Teste a partir dos casos de testes, que,
por sua vez, estão vinculados aos cenários descritos na descrição de cada caso de uso.
Outro aspecto importante é a automação dos testes em função da provável repetição destes
em um ciclo iterativo e incremental, onde o software é implementado em versões e, a cada
nova versão, os testes anteriores necessitam ser refeitos.
ETAPA DE IMPLANTAÇÃO
Nesta etapa, o software é migrado para o ambiente de produção, de acordo com o aval da
equipe de qualidade.
Esta etapa pode exigir a geração de manuais de utilização, a migração de dados do ambiente
de homologação para o de produção, treinamento de usuários, ou até mesmo a implantação de
um call center em caso de sistemas complexos assim o exigirem.
FLUXO DE PROCESSO
A especificação de um processo de desenvolvimento de software, lembrando ser este um
requisito não funcional, requer a definição de quais atividades irão compor o respectivo
processo e como as referidas atividades serão encadeadas, também denominada de Fluxo de
Processo ou Ciclo de Vida.
Fonte: O autor
Figura 7 - Fluxo de Processo Linear.
Fonte: O autor
Figura 8 - Fluxo de Processo Iterativo.
Fonte: O autor
Figura 10 - Fluxo de Processo Paralelo.
Fonte: O autor
Figura 11 - Modelo de Ciclo de Vida Iterativo e Incremental.
RESUMINDO
Neste módulo, podemos avaliar a importância do processo de desenvolvimento de software.
Cabe destacar que processo é a principal camada da Engenharia de Software.
VERIFICANDO O APRENDIZADO
C) Ambas as afirmativas são verdadeiras, mas a (2) não é uma sequência correta de (1).
GABARITO
Após a realização da etapa de levantamento dos requisitos, temos a etapa de análise, onde o
engenheiro de software gera os modelos, tal como, o modelo de casos de uso. Após essa
etapa, ocorre a validação dos requisitos pelos usuários do sistema.
MÓDULO 3
Relacionar as etapas de um processo de desenvolvimento de software com as etapas
de Gerenciamento de Projeto
GERENCIAMENTO DE PROJETO
Agora que você tem uma boa compreensão das atividades genéricas que compõem um
processo e as possibilidades de fluxos de processos, ou seja, os encadeamentos possíveis das
referidas atividades, temos agora que compreender como aplicar de forma sistemática uma
metodologia que lhe permita, a partir de uma necessidade de um determinado usuário, gerar o
produto software desejado.
A sigla PMI lhe diz algo? O PMI, Project Management Institute, é uma organização que visa
disseminar as melhores práticas de Gerenciamento de Projetos em todo o mundo e que tem
como premissa o fato de ser esse gerenciamento uma profissão.
DICA
Retornando ao nosso tema PMI, este publica um conjunto de melhores práticas denominado de
Guia de Conhecimento em Gerenciamento de Projetos – PMBOK, ou Project Management
Body of Knowledge, em inglês. O Guia PMBOK é uma base sobre a qual podemos criar uma
metodologia para obtenção do nosso produto, i.e., o software.
(PMI, 2017)
Podemos inferir do conceito que todo projeto tem início, meio e fim, por isso é temporário,
sendo o mesmo fator impulsionador de mudança nas organizações.
Fonte: Wikipedia
Fonte: O autor.
Figura 12 – Ciclo de vida do projeto.
FIGURA 11
Fonte: O autor
Figura 11 - Modelo de Ciclo de Vida Iterativo e Incremental.
Fonte: O autor
Figura 13 – Processo de Gerenciamento de Projeto.
Fonte: Shutterstock
Figura 14 – Grupos de Processos.
Temos que considerar que cada etapa possui um conjunto de processos, conjunto este
denominado de Grupo de Processos de Gerenciamento de Projetos.
De uma forma simplificada, o gerente de projetos tem que considerar as etapas de gestão, por
exemplo, para a etapa INICIAÇÃO:
Em seguida, aplica os passos de 1 a 4 anteriores para cada etapa do ciclo de vida do projeto:
Planejamento, Execução, Monitoramento e Controle e Encerramento. Em projetos complexos,
as etapas podem ocorrer de forma iterativa.
Grupo que inclui os processos que permitem monitorar e controlar o progresso e desempenho
do projeto. Caso alguma atividade não ocorra de acordo com o planejado, terá que ser avaliada
uma ação corretiva a fim de que essa não conformidade seja tratada por meio de um
gerenciamento de mudanças.
Grupo que inclui os processos que permitirão a conclusão ou encerramento do projeto, tais
como, a entrega e aceitação do produto, a dispensa da equipe de projeto ou avaliação geral
dos resultados.
ÁREAS DE CONHECIMENTO EM
GERENCIAMENTO DE PROJETOS
Assim como a complexidade é um fator determinante na definição de um processo de software,
também é inerente ao Gerenciamento de Projeto, de modo que, quanto maior o problema, mais
multidisciplinar este se torna.
Em função dessa complexidade, qual seria a sua equipe técnica para desenvolver um projeto
de software?
Fonte: REDPIXEL.PL/Shutterstock
Mas essa equipe seria capaz de realizar a “GESTÃO” de um projeto de software? Podemos
considerar que uma equipe de Gerenciamento de Projeto deve ser composta por especialistas
em custos que realizem orçamentos realistas; especialistas em aquisições que tenham
capacitações na realização de contratações ou licitações; especialistas em recursos humanos,
a fim de gerenciar os direitos trabalhistas da equipe de projeto; e outros.
É possível que essa equipe técnica resolva parte do problema em função da complexidade na
área de gestão que um projeto de software possa requerer.
Você poderia perguntar como gerente de projeto: qual a minha equipe então?
FIGURA 15
Fonte: O autor
Figura 15 – Áreas de conhecimento x Grupos de processos.
Conheça no vídeo a seguir as Áreas de Conhecimento e Grupos de Processos do PMBOK
aplicados ao Desenvolvimento de Software.
GERENCIAMENTO DA INTEGRAÇÃO DO
PROJETO
Área que inclui os processos que permitem a integração das diferentes áreas de conhecimento,
estando essa área sob controle direto do gerente de projetos.
Podemos dizer que o gerente de projeto atua como um maestro, pois não precisa ter
conhecimento específico de cada área de conhecimento. Este combina os resultados em todas
as outras áreas de conhecimento e tem a visão geral do projeto, pois é o único responsável
pelo projeto como um todo.
Observe na figura 15 que a única área com processos em todos os grupos de processos é a
Integração. Isso significa que o gerente de projetos está presente em todas as etapas de
gestão.
Cabe destacar, mais uma vez, que o Termo de Abertura do Projeto é o documento que autoriza
a alocação de recursos ao projeto.
GERENCIAMENTO DO ESCOPO DO PROJETO
Área que inclui os processos necessários para assegurar que o projeto contemple todo e
somente o trabalho necessário para que este termine com sucesso. Nesta área, são
especificados e detalhados os requisitos de software.
A figura 16 ilustra um exemplo de EAP, onde cada elemento constitui uma entrega e as
entregas que não são decompostas são chamadas de pacotes de trabalho ou workpackages.
Os pacotes de trabalho são conjuntos de tarefas ou ações que, efetivamente, serão
executadas no projeto.
Fonte: O autor
Figura 16 – Exemplo de EAP.
GERENCIAMENTO DO CRONOGRAMA DO
PROJETO
Área que inclui os processos necessários para gerenciar o término pontual do projeto, tendo
como principal entrega no planejamento o cronograma (físico) do projeto.
O cronograma do projeto é gerado na etapa de planejamento do projeto. Inicialmente, são
identificadas as atividades, a partir dos pacotes de trabalho da EAP e, para cada atividade,
devemos especificar a duração e os respectivos insumos. Em seguida, é elaborado o diagrama
de rede do cronograma do projeto, que determina as interdependências entre as atividades, tal
como ilustrado na figura 17.
Fonte: O autor
Figura 17 – Diagrama de Rede do Cronograma do Projeto.
Fonte: Hermin/Shutterstock
Figura 18 – Exemplo de Cronograma Detalhado do Projeto.
RESUMINDO
Neste módulo, podemos avaliar a importância do relacionamento entre o fluxo de processo de
software com o ciclo de vida de Gerenciamento do Projeto.
Ambos os ciclos têm como base o conceito processo, pois, como vimos, processo é a principal
camada da Engenharia de Software e o gerenciamento de projeto é orientado a projeto em
função dos grupos de processos. Importante destacar que um processo no Gerenciamento de
Projetos tem duas dimensões: a primeira, como parte de um grupo de processos; e a segunda,
como parte de uma das 10 (dez) áreas de conhecimento.
VERIFICANDO O APRENDIZADO
D) Após a criação da EAP, o engenheiro de software poderá iniciar os processos que permitem
o estabelecimento do cronograma do projeto.
GABARITO
RISCO
As melhores práticas desenvolvidas neste módulo têm por fundamento o PMBOK, cujos
processos estão definidos na figura 15, vista no módulo 3.
Fonte: kitzcorner/Shutterstock
Imagine você realizando um planejamento de uma viagem ao exterior nas próximas férias.
Considerando que o roteiro está definido, bem como as reservas dos hotéis realizadas, as
passagens reservadas e uma quantidade de dólares adquiridos, podemos, intuitivamente,
aplicar uma abstração denominada risco, ou seja, o que pode ocorrer de errado na minha
viagem?
Vamos, então, gerar uma pequena lista de possíveis eventos negativos para entendermos os
conceitos:
Ocorrência de um problema de saúde, por causa de um acidente ou ter contraído alguma
doença.
Observe que a avaliação de risco gera uma preocupação que o conduz ao futuro, inserindo um
grau de incerteza – ele pode ou não ocorrer. Ao mesmo tempo, espera-se que fique clara a
importância de sua avaliação, pois, caso ocorra algum dos eventos listados durante a sua
viagem, essa pode estar seriamente comprometida.
(PMI, 2017)
O risco não trata de efeitos negativos ou coisas que podem dar errado? Realmente, o mais
comum é associar risco a algo negativo, mas, conceitualmente, pode ser algo positivo. Vamos
exemplificar.
Imagine uma empresa exportadora de minério que elabora o seu plano de investimento para o
próximo ano e que identificou o seguinte risco: variação cambial do dólar, sendo essa a moeda
padrão da comercialização de commodities. O planejamento inclui aplicar os recursos de
investimentos em novos projetos de prospecção de minas.
Neste momento, faz-se necessário realizar uma projeção do valor do câmbio para o próximo
ano, pois, como apresentado, o faturamento da empresa está atrelado à referida moeda –
vamos imaginar que o valor projetado para o dólar foi de R$ 5,50 (reais). Temos então dois
cenários possíveis:
Fonte: Porcupen/Shutterstock
CENÁRIO NEGATIVO
O dólar chega a valer R$ 4,00, ou seja, a empresa terá que reduzir o seu portfólio de projetos
em função da redução do capital de investimento, pois a empresa irá faturar menos com a
mesma quantidade de produtos exportados. Esse cenário é um obstáculo para a consecução
dos resultados esperados.
Fonte: Porcupen/Shutterstock
CENÁRIO POSITIVO
O dólar chega a valer R$ 7,00, ou seja, a empresa poderá incrementar o seu portfólio de
projetos em função do aumento de capital de investimento, pois a empresa irá faturar mais com
mesma quantidade de produtos exportados. Esse cenário é uma oportunidade para a
consecução dos resultados esperados.
ATENÇÃO
Lembrando que nosso contexto é a Engenharia de Software, a melhor prática é focar nos
cenários negativos.
Como citado anteriormente, o risco permite planejar o futuro e evitar que empresas tenham
“sustos” nos seus projetos em função de eventos inesperados e, a partir destes, iniciar as
devidas tratativas. Em síntese, a área de Gerenciamento de Risco permite a sistematização
dessas tratativas em forma de plano.
Veja, na figura 15, os processos que fazem parte da área de conhecimento Gerenciamento de
Riscos. Os referidos processos permitem a sistematização da identificação, da análise e das
respostas aos riscos de um projeto.
IDENTIFICAÇÃO DE RISCOS
Fonte: Wikipedia
Figura 19 - Extrato de um exemplo de EAR.
Segundo Pressman (2016), uma proposta para identificação de categorias genéricas de risco
relacionadas com o software inclui:
TAMANHO DO PRODUTO
Riscos associados ao tamanho do software.
IMPACTO NO NEGÓCIO
Riscos oriundos de restrições impostas pelo cliente ou pelo mercado.
CARACTERÍSTICAS DO ENVOLVIDO
Riscos relacionados com a comunicação oportuna, por exemplo, entre engenheiro de software
e um determinado cliente.
DEFINIÇÃO DO PROCESSO
Riscos relacionados com a auditoria de processos por parte da equipe de qualidade.
AMBIENTE DE DESENVOLVIMENTO
Riscos associados às ferramentas disponíveis para criar o software, tais como, ferramentas
case disponíveis.
O processo de identificação de riscos é iterativo, pois novos riscos podem aparecer durante o
projeto. Uma técnica muito comum a ser utilizada na identificação de riscos é a técnica
denominada de Brainstorming. Esta inclui uma reunião com um conjunto multidisciplinar de
especialistas com a finalidade de obter uma lista abrangente de cada risco de projeto e as
fontes do risco geral do projeto, sendo as ideias geradas sob a orientação de um facilitador.
Fonte: Boophuket/Shutterstock
Uma segunda técnica é conhecida como Lista de Verificação ou Check List, ou seja, uma lista
de riscos baseada em informações históricas e conhecimentos acumulados de projetos
semelhantes e outras fontes de informações. Essas listas ajudam a identificar pontos fracos no
projeto atual a partir de experiências passadas.
Fonte: djile/Shutterstock
A seguir, vamos explorar um exemplo da aplicação dessa técnica com experientes gerentes de
projeto de software, que levantaram as seguintes questões e foram apresentadas por
Pressman (2016).
Caso alguma questão seja respondida negativamente, insira o risco, ou riscos, na sua
lista de riscos.
Vamos imaginar que tenhamos uma longa lista. Isso, intuitivamente, nos leva a considerar a
necessidade de determinarmos a importância relativa entre os referidos riscos, a fim de que
possamos saber quais os riscos prioritários.
No início deste módulo, definimos três eventos, a título de exemplo, no projeto de uma viagem
ao exterior. Vamos agora aplicar a Análise Qualitativa de Riscos nesses eventos.
PROBABILIDADES
Temos que definir as probabilidades que serão adotadas:
GRAUS DE IMPACTO
Definir os graus de impacto:
Muito grande 5
Grande 4
Moderado 3
Pequeno 2
Muito pequeno 1
APLICAÇÃO
Podemos, então, aplicar os valores a cada evento:
Probabilidade
Evento Probabilidade Impacto
x Impacto
1) Ocorrência de um problema
de saúde, por causa de um
0,75 5 3,75
acidente ou ter contraído alguma
doença
1) Cancelamento da passagem
0,50 3 1,5
pela companhia aérea
3) A quantidade de dólar
0,50 4 2,0
adquirida não ser suficiente
Temos agora prioridades! De acordo com a tabela, o evento mais crítico está relacionado com
a saúde, em seguida, com a quantidade de dólar e, finalmente, com a passagem.
SAIBA MAIS
A Força Aérea Americana determina em seus projetos de software os seguintes componentes
de risco: desempenho, custo, suporte e cronograma. As categorias de impacto incluem:
catastrófico, crítico, marginal e negligenciável.
Você pode questionar: como determino a probabilidade e o impacto, valores que agregam
incertezas? Lembre-se de que a área de conhecimento Gerenciamento de Risco do Projeto
requer, como as demais áreas, especialistas na respectiva área. Os profissionais que
trabalham com risco têm a expertise necessária no trato desses números que representam
incertezas, principalmente, por experiências em projetos passados semelhantes.
Vamos agora dar continuidade ao nosso pequeno exemplo. A tabela a seguir, considerando a
simplicidade do cenário adotado, ilustra o resultado da análise quantitativa:
Custo
Prioridade Evento
(R$)
Retornando ao nosso pequeno exemplo, temos uma proposta de respostas aos riscos
identificados na tabela a seguir:
A identificação dos riscos pode ser facilitada pela definição de uma Estrutura Analítica de
Riscos (EAR), pois essa permite a categorização dos riscos.
Definidos os riscos, surge a necessidade de priorização destes, pois a tratativa dos riscos
poderá impactar o orçamento final do projeto. O processo de análise qualitativa permite a
referida priorização definindo para cada risco a sua probabilidade de ocorrência e o grau de
impacto, caso ocorra, nos resultados do projeto. Obtidos os dois valores numéricos, pode-se
então priorizar os riscos.
Priorizados os riscos, o próximo processo inclui a realização da análise quantitativa dos riscos,
permitindo, de acordo com a priorização realizada anteriormente, quantificar os impactos sobre
os custos do projeto em função dos riscos.
VERIFICANDO O APRENDIZADO
A) O gerente de riscos agiu corretamente, gerando uma evidência de tratativa dos riscos, ou
seja, o plano de respostas aos riscos.
C) O gerente de riscos deveria ter realizado a análise quantitativa antes da geração do plano
de respostas aos riscos.
B) Uma matriz de probabilidade e impacto deve considerar, também, fatores qualitativos como
o agente responsável e o plano de ação a ser tomado.
C) Os riscos devem ser previstos e documentados livres de contexto, isto é, da forma mais
objetiva possível.
GABARITO
1. Um engenheiro de software, responsável pelo gerenciamento de riscos, detectou um
risco relacionado ao uso de uma nova tecnologia de persistência de dados nunca
utilizada na empresa. Em uma reunião de Brainstorming, participantes do projeto
apresentaram outros riscos do projeto em desenvolvimento. Ao final da reunião, cada
risco foi priorizado em função das respectivas ameaças ao projeto, sendo gerada uma
ata da reunião com o plano de respostas a todos os riscos. No contexto do
gerenciamento de risco, analise o final da referida reunião e assinale a opção correta:
A elaboração do plano de respostas a riscos ocorre após a análise quantitativa, pois essa
permite a análise numérica dos riscos que serão inseridos no referido plano.
A Análise qualitativa dos riscos permite definir, para cada risco identificado, uma probabilidade
e um grau de impacto, o que permite priorizar os riscos em função de seu efeito sobre os
resultados do projeto.
CONCLUSÃO
CONSIDERAÇÕES FINAIS
Apresentamos os principais conceitos da Engenharia de Software relacionados com processo
de desenvolvimento de software e Gerenciamento de Projetos.
REFERÊNCIAS
BEZERRA, E. Princípios de Análise e Projeto de Sistemas com UML. 3. ed. Rio de Janeiro:
Elsevier, 2014.
PRESSMAN, Roger S.; MAXIM, B. R. Engenharia de Software. 8. ed. Porto Alegre: Amgh
Editora, 2016.
SOMMERVILLE, I. Engenharia de Software. 8. ed. São Paulo: Pearson Prentice Hall, 2007.
EXPLORE+
Para aprofundar seus conhecimentos sobre os assuntos explorados neste tema, leia:
Os capítulos 1, 2, 3, 31 e 35 de:
PRESSMAN, R. S.; MAXIM. B. R. Engenharia de Software. 8. ed. Porto Alegre: Amgh
Editora, 2016.
Os capítulos 1, 4 e 5 de:
O capítulo 1 de:
CONTEUDISTA
Alberto Tavares da Silva
CURRÍCULO LATTES