Você está na página 1de 43

Engenharia de Software I

Processo de Software

Para tratar especificamente dos processos de software,


é muito importante localizá-los no contexto da
engenharia de software.
Como já foi visto, a engenharia de software estuda e
propõe soluções que abrangem todo o ciclo de vida de
um produto de software. Para isso, deve incluir diversas
facetas que se apresentam nesse contexto.
Engenharia de Software I

A figura a seguir apresenta uma visão holística, em forma de


pilares, do desenvolvimento de software, que abrange todos os
aspectos envolvidos nos modelos de engenharia de software.
Engenharia de Software I

Os pilares verticais apresentados na figura


representam os principais aspectos envolvidos com
o desenvolvimento e a manutenção de software,
obtidos a partir de livros e modelos da engenharia
de software.
Engenharia de Software I

Processos de software:

• são o estudo, os conhecimentos adquiridos e as


práticas que apoiam as atividades envolvidas com o
desenvolvimento e a manutenção de software
durante toda a vida de um determinado produto de
software;

• precisam ser descritos, normatizados e divulgados


para todas as pessoas da organização envolvidas
com software;
Engenharia de Software I

• têm como resultado do processo de software o produto


de software, constituído de códigos programados que
formam um sistema de informação, que é considerado o
elemento central, já que realiza estruturas complexas e
flexíveis que fornecem funções, utilidade e valor ao
sistema;

• incorporam as pessoas, os documentos e as regras de


execução de suas atividades, inclusive, determinando as
responsabilidades na sua execução.
Engenharia de Software I

Métodos e Técnicas:

• as atividades de um processo de software envolvem


conhecimento na sua execução, disciplina e padrões
predefinidos;

• para isso, a engenharia de software propõe um conjunto de


técnicas e métodos para que os desenvolvedores consigam
executar suas tarefas com o máximo de produtividade e
qualidade.
Engenharia de Software I

Ferramentas:

• ao longo de quarenta anos, e ainda em evolução, têm


surgido ferramentas de automação que dão suporte às
atividades do processo de software;

• ferramentas para desenho, descrições, testes de


software e, principalmente, para os trabalhos
colaborativos entre as equipes de desenvolvimento.
Engenharia de Software I

Qualidade:

• com a pressão cada vez maior pela qualidade nos


produtos de software, a engenharia de software vem
propondo e desenvolvendo diversos modelos para a
garantia da qualidade, tanto no nível dos processos
quanto no dos produtos desenvolvidos e mantidos
dentro das áreas de software das organizações.
Engenharia de Software I

Gerenciamento:

• são todas as propostas para a gestão da área de software e para os


projetos de software. A grande procura é pelo aumento da eficiência no
uso dos recursos e na eficácia na produção de sistemas de informação;
• atualmente a gestão ou o gerenciamento de software vem atuando,
também, no nível de governança, criando modelos e aplicando práticas
próprias ou oriundas de outras áreas da engenharia que têm sucesso
registrado e provado nos últimos tempos;
• diversos aspectos do gerenciamento são abrangidos por esse pilar:
gerência de equipe, gerência de projetos, gerência da qualidade,
governança de TI etc.
Engenharia de Software I
Esses pilares se inter-relacionam e trabalham juntos (ou de
forma paralela) na busca das melhores práticas nos processos de
software (figura).
Engenharia de Software I

Dominar o ciclo de vida de software significa conhecer todos os


pilares e suas funcionalidades. A complexidade está em trabalhar
ao mesmo tempo nos projetos executando os diversos papéis
que permeiam esse modelo.

Um aspecto importante a ser considerado é que o


desenvolvimento de software envolve empresas de todos os
tamanhos e quantidades de recursos disponibilizados.
Engenharia de Software I

Os modelos brasileiros têm, ao longo do tempo, dado especial


atenção às pequenas empresas de software, em virtude da
seguinte constatação: as pequenas empresas de
desenvolvimento de software possuem poucos recursos
financeiros para investir na utilização das melhores práticas do
mercado; diante disso, perdem competitividade no mercado
nacional e no internacional, e deixam de atender a padrões de
qualidade.
Engenharia de Software I

Uma das alternativas que o mercado vem implementando é o


uso de métodos ágeis que foram desenvolvidos exatamente para
atender aos pequenos projetos e para pequenas equipes de
desenvolvimento. Esses métodos procuram deixar os processos
de software mais simples, menos burocráticos, porém não
menos organizados, com o intuito de se construir softwares de
forma mais rápida e com grande qualidade. A garantia de que as
empresas praticam processos com qualidade tem advindo dos
processos de certificação, tanto nacionais como internacionais.
Engenharia de Software I

Existem diversas certificações, tanto para empresas quanto para


profissionais de software, tais como: certificação em teste de
software do Instituto IBQTS; certificações das normas ISO para as
empresas da ABNT em processos de qualidade de software,
como o CMMI-DEV, do SEI americano, e o modelo nacional de
melhoria de processos MPS.BR etc.

Todas essas organizações possuem portais disponibilizados na


internet, que podem ser acessados para busca de maiores
detalhes a respeito.
Engenharia de Software I

Etapas do processo de software

Como acontece com todo produto industrial, o software tem um


ciclo de vida que possui os seguintes elementos ou fases:

• é concebido a partir da percepção das necessidades de uma


área da organização ou de clientes- usuários, partindo de uma
realidade;
• é desenvolvido, transformando-se em um conjunto de itens
entregáveis ao cliente ou ao usuário final;
Engenharia de Software I

• entra em operação, sendo utilizado dentro de algum processo


de negócio, por um tempo indeterminado, e podendo sofrer
evoluções ao longo do tempo;
• é retirado de operação, ao final de sua vida considerada útil.

O esquema a seguir mostra uma visão do ciclo de vida de um


produto de software que segue os mesmos princípios do ciclo de
vida de qualquer produto da manufatura ou industrial.
Engenharia de Software I
Engenharia de Software I

• No ciclo criação ocorre o desenvolvimento de uma aplicação ou de


um sistema de informação. Existem diversas metodologias e
modelos para representar esse ciclo inicial de software. Este possui
um tempo predeterminado para ocorrer e é dependente do
planejamento do software a ser construído.

• No ciclo evolução ocorre a alteração de um produto de software


existente. Inclui melhorias, novas funcionalidades ou necessidades
de adaptação para novas tecnologias. Não existe um tempo
predeterminado para acontecer evolução em um produto de
software, e isso vai depender do tipo de sistema, das
funcionalidades às quais ele atende e/ou de eventos aleatórios que
acontecem ao longo do ciclo de vida do produto.
Engenharia de Software I

O ciclo decadência ocorre quando o produto de software atingiu


um ponto em que não existem mais possibilidades para sua
evolução. Ele entra em decadência por diversos motivos, tais
como: obsolescência da tecnologia, mudanças de regras de
negócio, mudanças radicais nas regras dos órgão públicos etc.

O ciclo de vida do software pode, ainda, ser dividido em diversas


etapas detalhadas, e cada modelo existente, norma certificadora
e/ou autor do mercado apresenta uma visão diferenciada dessas
divisões.
Engenharia de Software I

O quadro a seguir apresenta visão típica da estrutura do ciclo de vida de um


processo de software, mas que não necessariamente seria apresentada por
outros autores ou modelos existentes.
Engenharia de Software I

Algumas considerações devem ser feitas sobre o processo de


desenvolvimento de um produto de software:

• o desenvolvimento de software deve ser feito por


profissionais treinados e capacitados em engenharia de
software e deve ocorrer dentro do conceito de projetos;
• todo projeto de software deve ter uma data de início e uma
de fim, uma equipe alocada e outros recursos de apoio, tais
como arquitetos de sistemas, analistas de negócio,
administradores de banco de dados, testadores etc.;
Engenharia de Software I

• o cronograma do projeto deve ser feito a partir de métricas de


estimativas e representa a execução de um processo de
software;
• todo processo bem-definido tem subdivisões que permitem
avaliar o andamento de um projeto e corrigir seus rumos
quando ocorrerem problemas;
• todas as etapas e atividades do processo de software devem
ser terminadas por meio de marcos predefinidos. Esses marcos
são pontos de controle que representam estados significativos
do projeto;
Engenharia de Software I

• geralmente os marcos são associados a resultados concretos,


como documentos, modelos ou porções do produto, que
fazem parte do conjunto prometido ao cliente ou têm apenas
utilização interna ao projeto;
• o próprio produto final, o software propriamente dito, é um
resultado associado ao marco de conclusão do projeto.
Engenharia de Software I
Engenharia de Software I

O subprocesso de construção é apresentado em camadas que


indicam o nível de entendimento e abstração com relação aos
domínios da tecnologia envolvida no processo. Quanto mais se
desce nos níveis de conhecimento específico das tecnologias,
mais os desenvolvedores deverão ter entendimento, e quanto
mais alto nos níveis, maior será a necessidade de conhecimento
do negócio.
Engenharia de Software I

Modelos de Processo Pessoal e de Equipe

O melhor processo de software é aquele que se aproxima do


pessoal que fará o serviço. Se um modelo de processo de
software tiver sido desenvolvido no nível da empresa ou
organização, ele pode ser efetivo apenas se for suscetível a
adaptações significativas de modo a satisfazer às necessidades
da equipe de projeto que esta realmente fazendo o trabalho de
engenharia de software.
Engenharia de Software I

PSP (Personal Software Process – Processo Pessoal de Software)

Todo desenvolvedor usa algum processo para construir software de


computador. O processo pode ser aleatório ou ad hoc (ad hoc significa
para esta finalidade, para isso ou para este efeito), pode modificar-se
diariamente, pode não ser eficiente, efetivo ou mesmo, bem-sucedido,
mas existe um processo.

O PSP enfatiza a medição pessoal tanto do produto do trabalho que é


produzido quanto a qualidade resultante do produto do trabalho. Além
disso, o PSP torna o profissional responsável pelo planejamento do
projeto e dá poder ao profissional para controlar a qualidade de todos
os produtos do trabalho de software, por ele desenvolvido.
Engenharia de Software I

O modelo PSP define cinco atividades: planejamento, projeto de


alto nível, revisão do projeto de alto nível, desenvolvimento e
pós-conclusão.

• Planejamento: Essa atividade, isola os requisitos e, com base


neles, desenvolve estimativas tanto de tamanho quanto de
recurso. Toda métrica é registrada em planilhas e gabaritos.
Finalmente, as tarefas de desenvolvimento são identificadas e
um cronograma de projeto é criado.
Engenharia de Software I

• Projeto de alto nível: São desenvolvidas especificações


externas para cada componente a ser construído e é criado
um projeto dos componentes, protótipos são construídos
quando existe incerteza. Todos os itens são registrados e
monitorados.

• Revisão do Projeto de alto nível: Métodos de verificação


formal são aplicados para descobrir erros no projeto.

• Desenvolvimento: O projeto em nível de componentes é


refinado e revisado. O código é, revisado, compilado e
testado.
Engenharia de Software I

• Pós- conclusão: Usando as medidas e as métricas coletadas, a


efetividade do processo é determinada.

O PSP enfatiza a necessidade de cada engenheiro de software


identificar logo os erros, e igualmente importante, entender os
tipos de erros que ele tende a fazer. Isso é conseguido por meio
de uma atividade de avaliação rigorosa desenvolvida em todos
os produtos de trabalho produzidos pelo Engenheiro de
Software.
Engenharia de Software I

O PSP representa uma abordagem disciplinada, baseada na


métrica, da engenharia de software que pode levar a um choque
de cultura em muitos profissionais, quando o mesmo é usado
pela engenharia de software o aperfeiçoamento resultante na
produtividade e qualidade é significativo.
Engenharia de Software I

TSP (Team Process Software – Processo de Equipe de Software)

Como muitos projetos de software de nível industrial são


desenvolvidos por uma equipe de profissionais, as lições
aprendidas com a introdução do PSP e propôs o TSP. O objetivo
do TSP é construir uma equipe de projeto “autodirigida” que se
organize para produzir um software de alta qualidade.
Para isso foi definido os seguintes objetivos:
Engenharia de Software I

• Construir equipes autodirigidas que planejem e monitorem


seu trabalho, estabelecem metas, e possuam seus próprios
processos e planos;
• Mostrar aos gerentes como acompanhar e motivar suas
equipes, e como ajudá-las a manter seu desempenho de pico;
• Acelerar o aperfeiçoamento do processo de software
tornando o comportamento de nível 5 do CMMI normal e
esperado;
• Facilitar o ensino às habilidades de equipe de nível industrial.
Engenharia de Software I

O TSP define as seguintes atividades: lançamento, projeto de


alto nível, implementação, integração e teste, pós-conclusão.

Essas atividades permitem que a equipe planeje, projete e


construa softwares de modo disciplinado e, ao mesmo tempo,
meça quantitativamente o processo e o produto. A pós-
conclusão prepara o cenário para aperfeiçoamento do processo.

O TSP usa uma grande variedade de documentos, formulários e


normas que servem para guiar os membros da equipe em seus
trabalhos.
Engenharia de Software I

O TSP reconhece que as melhores equipes de software são as


autodirigidas. Os membros da equipe estabelecem objetivos do
projeto, adaptam o processo para satisfazer às suas necessidades, têm
controle sobre o cronograma e, por meio de medições e analise da
métrica coletada, trabalham continuamente para melhorar a
abordagem da equipe do ponto de vista da Engenharia de software.

O TSP é uma abordagem rigorosa de Engenharia e fornece benefícios


distintos e quantificáveis em produtividade e qualidade. A equipe deve
estabelecer um total comprometimento com o processo e deve passar
por treinamentos para garantir que a abordagem seja propriamente
aplicada.
Engenharia de Software I

MODELOS DE CICLO DE VIDA DE SOFTWARE

O ciclo de vida do desenvolvimento de sistemas (Systems


Development Life Cycle – SDLC), conhecido também como ciclo
de vida do software, refere-se aos estágios de concepção,
projeto, criação e implementação de um Sistema de Informação
(SI). Um desdobramento possível para SDLC é mostrado na figura
a seguir.
Engenharia de Software I
Engenharia de Software I

Levantamento de necessidades:

• essa atividade compreende diversas tarefas para o


entendimento e o levantamento das necessidades da área
de negócio, dos clientes ou dos usuários que precisam de um
software de automação de suas atividades;
• tem como resultados mais importantes a lista de requisitos
do sistema a ser construído, as informações que serão
tratadas e armazenadas e, se necessário, um protótipo das
interfaces entre os usuários e o sistema de software.
Engenharia de Software I

Análise de alternativas:

• essa atividade consiste na identificação e na avaliação de


alternativas sistêmicas que melhor atendam aos requisitos do
software a ser construído;
• seria interessante, para que essa atividade fosse padronizada
e a organização possuísse uma arquitetura de referência, que
a base fosse para todas as soluções de tecnologia de todos os
sistemas da empresa.
Engenharia de Software I

Projeto:

• trata da construção das especificações detalhadas para o


projeto selecionado;
• essas especificações incluem projeto das interfaces, banco de
dados, características físicas do sistema, tais como número,
tipos e localizações das estações de trabalho, hardware de
processamento, cabeamento e os dispositivos de rede; deve
especificar os procedimentos para testar o sistema completo
antes da instalação.
Engenharia de Software I

Desenvolvimento:
• inclui o desenvolvimento ou a aquisição do software, a
provável aquisição do hardware e o teste do novo sistema.

Implementação:
• ocorre após o sistema ter passado satisfatoriamente por
testes de aceitação. O sistema é transferido do ambiente de
desenvolvimento para o ambiente de produção;
• o sistema antigo (se existir) deve migrar para o novo.
Engenharia de Software I

Manutenção:

refere-se a todas as atividades relacionadas a um sistema depois


que ele é implementado, devendo incluir atividades como a
correção de software que não funcione corretamente, a adição
de novos recursos aos sistemas em resposta às novas demandas
dos usuários etc.
Engenharia de Software I

Não há modelo de SDLC uniformemente aceito. Alguns


combinam desenvolvimento e implementação em uma única
etapa. Outros combinam o levantamento e a análise das
necessidades, também, em uma única etapa. Alguns modelos
dividem o projeto em lógico e físico.

Você também pode gostar