Buscar

Release Processo Desenvolvimento de Software


Continue navegando


Prévia do material em texto

Aula 01
Sistema -> É um conjunto de partes, que mesmo independentes entre si, e com cada 
qual com seu objetivo, todos pedem para um objetivo comum.
Informação - > Existe a diferença entre Dados(Que são os fatos isolados) e a 
informação, que são esses dados processados, o qual trazem valores agregados 
após este processamento.
Sistema de Informação -> É um conjunto de elementos inter-relacionados que 
coletam dados, manipulam estes dados(processam) e distribui estes dados 
processados(informação).
Elementos do Sistema de Informação
- Hardware (Componentes físicos - Desgastes)
- Software (Componentes lógicos)
- Banco de dados (Armazenamento)
- Telecomunicações (Rede, internet)
- Pessoas (Mais importante para tudo isso)
- Procedimentos e processos (organização)
Problemas que podem afetar um Sistema de Informação:
- Pessoas que não receberam qualificação para usabilidade do sistema
- Processo de negócios inadequados ao qual o sistema está inserido
- Deficiência do próprio sistema, como exemplo má qualidade de hardware, tecnologia 
adota inadequada, a linguagem que não era eficiente e até mesmo o software mal 
elaborado e construído.
Software:
É a porção lógica de um sistema de informação, que comanda a operação do 
computador.
Tipo de Software e sua natureza:
! -Software de Sistema: Controlam as operações básicas do computador 
! (hardware), como ! exemplo: Bios, Sistema Operacional, Linguagem de 
! Programação..
! - Software Aplicativo: Sãos as interfaces (comunicação e usabilidade) criada pra 
! ser diretamente usada pelo usuário.
Software hoje e sua administração:
- Grande e complexos, os software hoje exigem organização em todos o seu processo.
- Demandam rápidas mudanças para acompanhar a velocidade da comunicação e 
informação que circulam no mundo.
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
Software e sua importância:
É ele o responsável direto por trazer o maior bem pra sociedade moderna, que é a 
INFORMAÇÃO.
- Toda a melhoria feita nos últimos 50 anos em hardware, redes e banco de dados, 
aumentou a capacidade de processar as informações e diminuíram os custos do 
sistema, porém, o software não acompanhou essa evolução.
A diferença entre o desenvolvimento e o sucesso do Hardware para o Software:
HARDWARE SOFTWARE
Fabricado Manufaturado
Falhas Início e Fim Falhas ao ser alterado
Substitui peças Tem que ser alterado
Montagem: Componentes padrões Desenvolvido: Difícil padronizar para 
re-uso
- O desenvolvimento do Software depende muito do componente humano.
- Existe pouca automação no desenvolvimento 
- Visão de projeto inadequado
! ! * Histórico: Gestor de TI sem formação Administrativa.
! ! * Gestão: Planejamento, organização e controle de prazos e custos 
! ! ineficientes
!
! - Pressão dos usuários/clientes para rapidez na entrega do software
! ! * Daí vem os problemas de Prazos, custos e comunicação.
Ciclo de Vida de um Software:
O ciclo de vida de um software são todas as etapas do desenvolvimento
1 - Começo - > Percepção de necessidades
2 - Desenvolvimento -> Transformação dos conjuntos de itens a ser entregue ao usuário
3 - Operação -> Neste momento o software está em uso e está sujeito a manutenção
4 - Fim -> É retirado de operação ao final da vida útil, ou seja, enquanto trouxe valores 
para a organização.
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
Os Processos de Desenvolvimento
 
- Todo o processo de desenvolvimento precisa ter organização e normas determinadas, 
sistemáticas e não improvisadas. 
- As tarefas geram as atividades e as atividades compõem o processo como um todo.
As atividades do Processo:
- Concepção - A ideia do software
- Requisitos - O que o cliente pensa sobre o software
- Análise - Estudo pra saber a viabilidade do projeto
- Projeto - Saber quais tecnologia deve se usar
- Codificação - Programação do software
- Teste - Saber se está de acordo com o planejado
- Homologação - Documentar e efetivar o processo até aqui feito
- Implantação - A atuação operacional do software
- Manutenção - Que são as mudanças que podem acontecer durante a vida do software
A organização das fases do processo, estabelecendo:
- Quais são elas?
- Finalidade de cada uma das fases?
- Ordem e ligação entre elas?
- Funcionamento do Processo
- Documentação e modelos de cada fase
Conceitos Fundamentais do Processo:
Escopo -> É a abrangência 
! - O que será considerado para o desenvolvimento
! - Quanto maior for o escopo, maior será a complexidade e dificuldade de gerenciar 
! o desenvolvimento.
Requisitos = Necessidade do usuário
! -Compreender as funcionalidades que o sistema deve possuir pela visão do cliente
! - Problemas com erros de requisitos custam mais caros de resolverem
! - Quanto mais tempo passa, pior fica.. Então o foco tem que ser total aos requisitos 
! do sistema.
Fundamental -> Definir os requisitos que farão o parte do escopo.
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
Engenharia de Requisitos:
Engenharia 
! - Técnica de levantamento de requisitos
! - Documentação
! - Análise de Requisitos
Problema - Levantamento e documentação de Requisitos
! - Boa documentação - Boas chances de atender aos requisitos
- Boa especificação de requisitos - Fundamental para todo o processo
Gestão dos Requisitos:
Problemas: Instabilidade nos Requisitos
- Novos requisitos e alterações de requisitos com o desenvolvimento já adiantado.
- Alto custo, re-trabalho, perda de trabalho feito. É quase o mesmo que alterar uma 
planta estrutural de uma casa, após o início da construção.
- A boa engenharia de requisitos tende a reduzir a instabilidade, obtendo os 
requisitos no momento oportuno.
Prazos e Custos:
- Requisitos -> Prazos e Custos
- A quantidade e complexidade dos requisitos mandam na relação de causa e 
efeito sobre os prazos e custos e isso pode gerar insatisfação do cliente.
- A grande questão -> No início do processo só temos requisitos..
- Então é difícil medir os programas necessários com base em requisitos
- Após o projeto detalhado se conhece o melhor os detalhes. Porém, os usuários 
não sabem e nem querem esperar.
- É preciso -> Perceber que...
- Planejamento e controle de projetos são essenciais
! ! - Análise dos riscos(Probabilidade de sua ocorrência e ações corretivas, 
! ! caso seja preciso acontecer)
! ! - Acompanhamento de todo o processo do projeto e isso inclui a ! ! 
! ! renegociação de prazos e custos
! - Garantir a qualidade do processo
! ! - Garantir = Está em pleno acordo com os requisitos
! ! - Qualidade do produto é influenciada pela qualidade do processo
! ! - Quanto antes um problema for identificado e resolvido, será melhor pelo 
! ! fatos dos custos.
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
AULA 02
Estudo de Viabilidade - A Concepção do Software:
- Chamada de fase semente, necessidade do usuário ou cliente, nasce a ideia.
- O que é o sistema? Precisamos a partir da necessidade e as ideias, precisamos saber o 
que o sistema é..
- Ele é viável? Vale a pena ? Se for, entramos na fase de Estudo ou Análise de 
Viabilidade.
- Os benefícios vai superar os custos?
- Deve ser considerar a empresa e o tipo de negócio que a empresa trabalha.
Entrada:
1 - Quais são as necessidades levantadas para que se tenha o software.
2 - Descrever o que é, os objetivos, gerais e tudo que se quer sobre o software.
3 - Saber como e onde ele vai se inserir dentro da empresa.
Saída:
1 - Ocorrendo a Análise de Viabilidade e a saída vai dizer, se é viável de forma técnica, 
operacional e financeira.
! a) O Software contribuiu para a organização? Viabilidade Operacional.
! b) O Software pode ser implementado com TI atual? Viabilidade Técnica.
! c) Restrições de custos serão atendidas? Viabilidade Econômica.
! d) Restrições de prazos serão atendidas? Cronograma.
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
ViabilidadeEconômica:
- Apurar o retorno sobre o investimento (ROI) = Lucro Líquido/Investimento
- Quanto maior for o valor desse lucro, melhor é o ROI 
Engenharia de Requisitos:
- Elicitação -> Descobrir ou tornar explícito. Explicitando os Requisitos, onde se tem a 
descrições dos serviços fornecidos e restrições e características desses serviço.
- Tudo tende a Refletir as necessidades dos seus usuários.
Classificação - Requisitos:
- Requisitos de Usuários -> Abstração no nível mais alto e tem as seguintes definições:
- Descrição dos serviços esperados do sistema e restrições sobre as quais ele 
deve operar.
- EX: “O sistema deve controlar o bloqueio de exemplares pelo professor”
- Requisitos de Sistema -> É o detalhamento e tem as seguintes definições:
- Definir de forma estruturada e detalhada dos serviços e restrições operacionais.
- Ex: Detalhar as funções de bloqueio de exemplares.
Categorias de Requisitos:
- Funcionais -> Declarações de serviços que o sistema deve fornecer e como deve se 
comportar e pode estabelecer o que o sistema NÃO deve fazer. 
- Exemplo: Sistema deve informar melhor o aluno, sistema deve permitir incluir e 
excluir fornecedores.. Tipos de transações suportadas na conta..
- Não Funcionais -> Restrições sobre os serviços ou funções oferecidos pelo sistema e 
características ou qualidade.
- Exemplos: A impressão do boleto deve ser em no máximo 10 segundos, as 
dimensões dos relatórios devem ser configuráveis, além de restrições de 
hardware, ambiente e etc.. Tempo de resposta, facilidade de uso e tempo médio 
entre as falhas.. Confiabilidade.
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
Brainstorm
- Reunião onde participa todos os envolvidos.
Objetivos:
Permitir que todos expressem suas idéias de forma a obter um consenso.
Todos expressão de forma desorganizada mesmo, para depois organizar todas as idéias, 
identificar conflitos entre áreas e ideias e ter visões diferentes do requisito nas empresas.
Caso de Uso:
É na verdade um modelo da UML, usado para definir o escopo do sistema, identificar 
quem interage com o sistema (atores) e identificar os requisitos (casos de uso).
Usado apenas para Validar os requisitos com os usuários.
Não é em si uma técnica de levantamento de dados, mas o resultado é produzido após.
E esse resultado. que é o modelo(desenho) pode ser usado para validar os requisitos do 
usuário.
Os casos de uso nada mais é que as funções que o sistema tem.
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
AULA 03
As fases da Análise de Requisitos
Estudar, entender e modelar o problema. A modelagem é criar modelos como referência 
para apresentar os requisitos.
- Modelos = Abstração da realidade. Exemplo: maquetes, protótipos.
É uma fase Independente de tecnologia.
Ela é estrutural, ou seja, como será as divisões do sistema e comportamental, de como as 
coisas vão funcionar no sistema. 
Técnica de Análise
- Estruturada / Essencial (Essa está obsoleta)
- Foco no funcional apenas.
- Eventos afetam o sistema - Funções são requisitos do sistema
- 3 visões apenas: Funções, dados e controle
- O sistema era um conjunto de processos.
- Orientada a Objetos (A usada na atualidade)
- O mundo é composto por objetos.
- A diferença entre Estruturada/Essencial é que o enfoque era apenas em 2 opções, 
dados e funções em módulos que interagem. Já a Análise Orientada a Objeto, são os 
objetos que interagem e o enfoque está integrada em atributos e métodos.
- O motivo é que os objetos existem antes de existir aplicações dele no negócio. 
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
Objetos e Classes:
- Os objetos são os dados e as funções e podem ser encapsulados, ou seja, protegidos 
para acessos.
- As classes são formadas pelos objetos com as mesmas características.
- Os objetos trocam mensagens e os métodos/funções são os serviços que a classe 
presta tanto para ela mesma quando para o usuário.
- Com essa interação as mensagens trafegarão para a execução de uma tarefa.
A Análise em O.O serve para modelar o problema usando o conceito de objeto/classes e 
serve para mostrar para equipe de desenvolvimento com mais clareza os objetivos do 
sistema e para usuário, uma demonstração de como funciona e ele poder validar.
UML - Unified Modeling Language - Linguagem de Modelagem Unificada
É muito utilizada em engenharia de software e não é uma metodologia. Portanto, não diz 
para você o que fazer primeiro e em seguida ou como projetar seu sistema. Compreende 
uma série de diagramas 
 Diversos modelos de diagrama UML
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
Exemplo de um diagrama de caso de uso:
O diagrama de caso de uso é usado para entender como funciona as funções que o 
sistema vai representar. As funções que estão em amarelo correspondem aos 
casos de usos principais que interagem com os atores e as que estão em azul, são 
funções de caso de uso segundarias. Este diagrama precisa de um complemento 
para mostrar as especificações dos casos de uso. Onde se tem uma declaração 
textual dos procedimentos e esse procedimento é fundamental, detalhando cada 
caso de uso ou função que o sistema vai fazer.
 Exemplo de Especificação de Casos de Uso
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
DIAGRAMAS DE CLASSES - CONCEITUAL
No diagrama de classes é representado cada classe do sistema e as cardinalidades 
dos objetos. Uma das características de um diagrama de classes e que ele vai 
crescendo com o projeto. Neste exemplo temos um modelo conceitual, uma forma 
mais amplas do sistema e está voltado para o modelo de negócio, ou seja, na fase 
primária da análise de requisitos.
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
DIAGRAMA DE CLASSES - ESPECIFICAÇÕES
Neste modelo é possível entender outro nível de abstração para as classes e com 
mais especificações que no modelo conceitual. Portanto, está sendo acrescentado 
outros e mais outras classes.. Mostrando a características de que vai crescendo 
conforme o sistema.
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
DIAGRAMA DE CLASSES - SEQUÊNCIA
Este diagrama de Sequência forma junto aos outros (Conceitual e Especificações) o 
tripé para a Análise. Cada cenário de casos de uso se tem um diagrama de 
sequência. Serve para ajudar na elucidação ou descobrindo novos métodos para o 
diagrama de classes especificações, através das interações entre as classes.
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
Aula 04
DESENHO DO SOFTWARE
Fases:
- Atenção aos requisitos -> via modelos de análise
- Como a solução deve ser implementada
- Como Fazer com detalhamento o funcionamento interno.
Visões do Projeto
- Externa - Visão do usuário 
- Modelo de Interação -> Interface/comunicação
- Interna - Componentes do Sistema
- Relação entre os componentes acoplados
- Funcionamento do componente
- Interconexões com outros sistemas.
NÍVEIS DE DESENHO DE SOFTWARE
- Estratégico
- Modelo geral da Arquitetura. Forma do sistema. Partes e relacionamentos. 
Sistemas e sub-sistemas. Quais os controles que vai ter. Uma maneira geral da 
aplicação.
- Tático ou Desenho Lógico
- Decisões tomadas no nível estratégico.
- Reutilização ou não de componentes do sistema. (Ajuda na economia)
- Operacional ou Desenho detalhado
- O Comportamento do componente.
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
ARQUITETURA DO SOFTWARE
1) Estruturação do Sistema
- Estruturado em subsistemas e suas unidades independentes e a comunicação 
! entre os subsistemas
2) Modelagem de Controle
! -Modelo de relacionamento entre as partes de um sistema
3) Decomposição Modular
! - Cada subsistema é dividido em módulos.
- Modelo Orientado a Objetos
- Diagrama de classes
- Diagrama de componentes
- Interação com Diagrama de sequencia e diagrama de atividade.
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
DIAGRAMA DE COMPONENTES
Este diagrama é muitoimportante para mostrar os módulos do sistema. Ele tá 
relacionado a Linguagem de Programação (Já escolhida) a usar e determina 
como os componentes se interagem e as divisões desses componentes que 
estão além das classes. O ponto forte do componente é para criar a 
possibilidade de reutilização do sistema. Um componente representa um 
empacotamento físico de elementos relacionados logicamente entre as 
classes.
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
META - REUTILIZAÇÃO 
A ideia é usar o que já existe. Antes de fazer algo novo, é preciso saber se pode 
ser usado os componentes já existentes.
Isso reduz os custos e garante a segurança, pois os componentes já fora usados e 
testados.
NÍVEIS DE REUTILIZAÇÃO
Definições das demais atividades:
- Interface com usuário
- Arquitetura de Software e Sistema Operacional
- Linguagem de Programação
- Estrutura de Rede e comunicações
- SGBD - Banco de Dados
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
Aula 05
TESTES
1‘ DEFINIÇÃO DE FASE DE TESTES
A fase de teste tem como objetivo detectar possíveis defeitos ou erros que possam surgir 
na fase de implementação.
! Nesta fase teste, deve-se coletar os resultados e analisá-los e consertá-los antes 
! de sua implementação.
Fase fundamental, muitas vezes renegada a segundo plano ou mesmo esquecida. Essa 
fase ajuda na incrementação da qualidade, na medida que avaliamos sob várias óticas.
TESTE OBJETIVOS CRITÉRIO PROCEDIMENT
O
“Script” de 
teste
Processo 
definido com 
intenção de 
encontrar 
um erro.
Encontrar um 
erro que ainda 
não foi 
descoberto. 
Um teste bem 
sucedido 
corresponde à 
descoberta de 
um erro 
previsto.
Definição de 
uma métrica 
que, após 
análise do 
comportamento 
do sistema, 
atenda o 
critério.
Conjunto de 
instruções para a 
realização do 
teste.
É uma 
representação 
definida de um 
procedimento 
teste.
Objetivo: Encontrar erros ainda não descobertos. Teste bem sucedido é aquele que acha 
erros não previstos. Para isso, é preciso usar e muito o produto.
Análise e verificação de todos os componentes do sistema.
! - Validar se estão em conformidade com os requisitos anteriormente definidos.
! - Para uma melhor análise, o teste deve ser feito por uma equipe independente, 
! diferente da equipe desenvolvedora.
MODALIDADES DE TESTES
-Testes estáticos ou Verificações
! - Feito antes da implementação (Não tem software pronto)
! - Inspeções, revisões, auditorias
! - Testes na fases iniciais - qualidade
! - Qualidade no processo
- Testes Dinâmicos ou Validações
- Durante ou após a implementação
- Precisa de parte ou todo sistema formado
- Qualidade no produto final
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
Classificação quanto ao objetivo:
- Teste de Unidade (Programação o mesmo que implementação)
- Em unidades de programas
- Busca erros nos programas individuais
- Teste de Integração (Programação / testes)
- Identifica erros na integração dos diversos módulos, já testados individualmente.
- Teste de Validação (Testes)
- Realizado após a integração de todos os módulos
- Antes de Implantar o sistema.
Estratégias de Testes
Teste da Caixa Preta 
Não considera a forma como esta implementado - detalhes internos 
! Objetivos: 
! ! O software produz o resultado esperado?
! ! Os requisitos estão sendo atendidos também?
! Vantagens:
! ! Não requer conhecimento técnico da tecnologia emprega ou da
! ! implementação aplicada. Requer profissional menos capacitado.
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
Teste da Caixa Branca (Mais complexidade)
- Baseados na arquitetura interna do software com a verificação do código.
! - Objetivo:
! ! Identificar defeitos nas estruturas internas do software, através da simulação 
! ! que testem toda a estrutura usada na codificação.
! - Desvantagens:
! ! Requer conhecimento técnico da tecnologia emprega pelo software e 
! ! arquitetura interna da solução. São testes mais difíceis de serem
! ! implementados
! -Vantagens: 
! ! Eficiência na detecção de erros. 
! ! Em casos de testes que cubram todas as possibilidades de erro.
Testes de Unidades:
1° etapa do processo de validação
Teste Uma unidade: módulos/classes
Objetivo: 
Garantir a qualidade dos componentes do software individualmente avaliando:
! Estrutura interna -> Usar estratégia de caixa branca.
! Se a unidade atende aos requisitos -> Usar a caixa preta.
Teste de Integração:
- Natural continuidade dos testes de integração
- Verifica a compatibilidade da nova unidade com as demais, já prontas.
- Verifica se juntas e integradas, as unidades funcional e realizam o trabalho que o 
sistema precisa.
- Cuidado: Alteração de componentes.
- Geralmente. aplica-se estratégia da caixa preta, testando as interfaces entre as 
unidades. que se integram.
Teste de Sistemas ou chamado de Validação
- Estágio mais complexo da validação
- Validam a solução como um todo
- Aqui as falhas individuais já estão sanadas
- Ambiente (hardware, Sistema Operacional, rede etc) vem próximo da realidade da 
operação.
- Testar: integração com os sistemas externos, dispositivos físicos (Hardware)
- Dificuldade: Vislumbrar os vários cenários de uso
- Vários tipos: Stress, volume e performance do software.
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
Teste de Aceite:
- Homologação: (equipe)Interna e Externa(usuário)
- Último estágio do processo de validação _> último processo formal de detecção de erros 
no sistema.
- Uso por clientes e usuários -> validarem as funcionalidades
- Usuários interagem com o sistema completo
- Reduz o risco da entrega
IMPORTANTE
Planejar os testes
Documentar os testes
Validar ao longo do processo
Não queimar etapas de testes
Equipe especializada: Preferencialmente não ser equipe de desenvolvimento que façam 
os testes.
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
AULA 06
IMPLEMENTAÇÃO 
A de implementação ou codificação tem o objetivo de escrever o programa em uma 
linguagem de programação e segue normas e diretrizes da empresa. As empresas 
seguem padrões para desenvolvimento.
Na fase de implementação, o programador detalha e implementa o que foi definido na 
etapa de desenho. através dos componentes de código de programa e documentação 
detalhada deste.
AS LINGUAGENS DE PROGRAMAÇÃO
Os computadores têm sua própria linguagem que são os números. Os números binários 
que seguem suas sequência eletrônica. Passado o tempo, construíram linguagens que se 
comunicam em forma de registros(montagem) com o computador e uma delas foi o 
Assembly. Essa linguagem é conhecida como baixo nível, pois trata com o computador o 
mais próximo da linguagem que o computador conhece. Depois vieram as linguagens de 
alto nível; que facilitaram a compreensão humana e o desenvolvimento com 
produtividade.
Homem = Alto Nível - Máquina = Baixo Nível
2 processos fazem esse papel 
! -INTERPRETADOR (Interpretação) -> Que traduz o código a medida que executa
! ! Linguagens: Python, Pearl, PHP, Javascript, ASP e etc..
! - COMPILADOR (Compilação) -> Traduz e depois executa o código 
! ! Linguagens: C, C++, Delphi e etc..
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
INTERPRETADOR (Interpretação):
- A interpretação(O Interpretador) é a tradução do código em linguagem de máquina em 
tempo de execução. Pode ser mal comparada a um tradutor simultânea de conversas.
- Uma das característica marcante das linguagens interpretadas é que seus códigos são 
executados até o ponto em que não ocorre um erro. Acontecendo um erro, a execução 
do programa é interrompida. 
- Por acontecer em tempo de execução, tipicamente as linguagens interpretadas tem um 
desempenho um pouco menor que as compiladas.
Exemplo de funcionamento da Linguagem Interpretada
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
COMPILADOR (Compilação) 
- Primeiro faz a leitura completa do código fonte,identifica variáveis e outros elementos e 
montando uma tabela (de símbolos) com estas informações.
- No segundo passo, a tradução do código em linguagem de máquina (código objeto). 
Entretanto, a compilação difere da tradução porque ela faz alterações no código, de 
forma a torná-lo otimizado.
- Tende a ter menos linhas na tradução, pois o compilador faz a otimização para melhor 
desempenho e confiabilidade na execução.
- Compiladores mais modernos conseguem grandes otimizações em certos códigos. Com 
isso os executáveis ficam menores e seu tempo de execução mais rápido.
- O Compilador varia de acordo com a arquitetura das máquinas. Pois ele converte as 
linguagens de alto nível para a linguagem de máquina dependendo da sua arquitetura.
- Existem Compiladores Híbridos que independem da arquitetura da máquina, pois gera 
um código objeto (bytecode) que conversa com uma Máquina Virtual antes da execução. 
Usado para portabilidade dos programas.
Exemplo de funcionamento da Linguagem Compilada
(Compilador / Compilador Híbrido
 
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
Processo de Compilação em C (Compilador)
Todo esse processo é a compilação ou compilador..
1 - O Montador (Assembly) pega o código fonte e monta os objetos/módulos em 
linguagem de máquina
2 - o Link-Editor faz os links das bibliotecas utilizadas em linguagem de máquina e 
gera o código executável para a linguagem de máquina.
3 - O Loader carrega o programa para a memória.
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
Processo de Compilação em Java (Compilador Híbrido)
Neste processo o compilador ele gera um código comum para o interpretador gerar 
o bytecode para outras plataformas. 
Boas práticas de Programação:
- Documentação com comentários são essenciais para manutenção.
- Importante está datas e com assinatura de autoria dos componentes do código;
- Criar varáveis com nomes claros e coesos com sua utilização.
Programação em Par:
- Técnica usada nas metodologias ágeis (focado na programação e não na 
documentação).
- Onde 2 programadores trabalham em conjunto.
- 1 codifica e o outro verifica e eles se alternam nas tarefas.
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
Aula 07
MANUTENÇÃO:
- Início -> Quando o sistema é instalado no ambiente do usuário, para uso.
- Fim -> Quando o sistema torna-se obsoleto e é substituído.
- Motivos do fim do software e sua manutenção:
- Tecnologia ultrapassada
- Custo de manutenção supera benefícios.
O Ciclo de vida desse sistema = Ciclo de Vida de desenvolvimento + Manutenção. Logo, 
quando maior o tempo da fase de manutenção, maior a vida útil do sistema.
A qualidade da manutenção que implica no ciclo de vida do sistema, depende da 
qualidade do processo de desenvolvimento. 
Documentação atualizada e adequada, código eficiente e bem documentado.
 
Atividades da Manutenção:
- Temos o suporte ao uso, através de manuais, help desk, visitas e treinamento
- E temos também suporte ao desenvolvimento, como correção de erros que no início, 
pode ser alto o índice desses erros, que pode ter sido causada por ausência ou má 
qualidade dos testes.
- Temos também a melhoria das funções existentes no sistema.
- Podem ocasionar outros problemas como:
- O Efeito dominó - O mais comum, pois é quando uma arquitetura de 
software foi mal planeja e mexendo em uma função pode ocorrer erros em 
outras partes do problema.
- Soluções: Separação estática, que identifica o foco e isola para tratamento 
ou então refatoração, modificando a estrutura do software, sem alterar o 
comportamento dele.
- E a implementação de novas funções.
Afetam o tempo da Manutenção do software
- O tempo da manutenção define o tempo de vida do software
- Atentar sempre para o custo.
- Ter elementos altamente coesos (Funções próximas)
- Ter também elementos com baixo acoplamento. (Apartes devem ser independentes)
- Documentação completa e atualizada
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
fharaujo
Manutenção como Projeto:
Cuidado sempre com as novas versões, pois podem causar instabilidade no ambiente. O 
ideal é ter menos intervenção possível, acumular demandas que justifiquem a intervenção 
e tratar as demandas de manutenção com um projeto. Para que não tenhamos as 
dificuldades no controle da versão do software.
Como acumular Demandas:
Documentos de demandas dos usuários: 
- Data, Pedido, Tipo
- Tipo pode ser:
- Emergencial (imediato)
- E Melhoria - nova função 
Documentação para Suporte:
Manual do usuário:
- com linguagem clara e adequada ao perfil. Mostrar como o usuário usa as 
funcionalidades.
Manual de Introdução:
- Descreve as funcionalidades do sistema sob a ótica do uso
- Os pré requisitos necessários para operar as funcionalidades
Manual de Referência:
- Descreve as facilidades do uso do sistema;
- Informa os erros que podem ocorrer e como agir 
Documentação de Instalação:
- Descrição de como instalar o programa
- Plataforma de operação
- Pré-Requisitos necessários para instalação
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
Aula 08
Contexto 
Anos 70/80, não era usado processo de desenvolvimento.
- Programadores baseavam-se nas próprias experiências
- Não havia forma definida estruturada de trabalho
- Não haviam testes e os erros eram corrigidos após a implantação.
MODELO CASCATA (Processo de Desenvolvimento)
Surge o Ciclo de Vida do Projeto
- Atividade ordenadas(pré-definidas), com fluxo contínuo para auxiliar o acompanhamento 
do projeto.
- Atividades
- Fluxo de Informações
- Relacionamento entre atividades
1º Modelo de Engenharia de Software 
- Linear -> A atividade é concluída antes de iniciar a próxima. 
- Sempre sequencial e pra frente em passo a passo.
- Útil para pequenos projetos da época
- Ganho na fase de planejamento 
- O problema era durante o projeto, a fase de requisitos, está em constante evolução e 
mudança e como o modelo era sempre pra frente.. Sem padronização e documentação.
MODELO CASCATA
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
Características do Modelo Cascata
- Base para outros modelos
- Usado até hoje com suas fases
- Os processos não tem características sequências
- Sao desenvolvidos em porções de forma interativa-incremental 
- A questão: Se o processo somente pode ser seguido após a finalização de cada etapa 
anterior, este (projeto) nunca irá se encerrar..
- As vantagens: Fácil entendimento, permite pontos de controle bem definidos, o que 
facilita a gestão.
- Requer documentação em todas as fases do processo
- Em tese só se avança se o cliente aprova a fase atual
- Simples de implementar e gerir que é o seu maior vantagem.
- As desvantagens: Todos os requisitos devem ser descobertos no início, por não poder 
voltar a fase inicial depois da próxima etapa.
- Não é possível corrigir erros em fases completadas
- Projeto raramente segue o fluxo sequencial, pois as interações de vários ciclos são 
necessárias; coisa que o modelo não entendia como certo;
- Não se prevê manutenção.
- O usuário só vê os resultados ao final. O que é péssimo para o cliente.
- Dificuldade na visão de reutilização do sistema
- Se ocorrer um atraso, todo o processo é afetado
- Só o gesto tem visão do sistema como um todo
MODELO CASCATA COM RETROALIMENTAÇÃO
- Variante do Modelo “Cascata tradicional” que permite a realimentação do processo
- Este modelo permite a revisão de fases anteriores e a superposição entre fases
- Corrige-se os problemas que surgem durante outras fases passadas pelo processo.
- Porém, o custo dessa revisão/correção pode ser alto, dependendo da fase atual em que 
se encontra o processo e do quando se precisa retroceder.
- A grande vantagem desse modelo é de voltar para correção dos erros em outras etapas 
durante o processo de desenvolvimento do sistema e prevê a manutenção
- A desvantagem é quedependendo da quantidade de revisões e realimentações, o 
processo pode se tornar além de caro, difícil para se gerenciar.
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
fharaujo
fharaujo
fharaujo
Aula 09
 Modelo de Processo Iterativo
Seleção de uma parte do projeto que identifica, especifica, implementa, testa e implanta a 
iteração. Quando atende as especificações, passa-se a próxima iteração. A ideia é dividir 
o processo em partes e trazer o usuário para ir moldando a implementações. Modelo é 
baseado na ideia de aumento do âmbito do sistema.
Modelo de Processo Incremental
Este modelo é baseado na ideia de aumento do sistema. Sua característica é o 
desenvolvimento em partes, onde as partes podem ser desenvolvidas, na criação de 
novas versões e em paralelo e integradas quando completadas. Neste processo também 
se tem o usuário participando antes da implantação do sistema pronto.
Modelo Iterativo e Incremental
A junção dos dois modelos define que deve existir um subconjunto e a utilização o modelo 
em cascata para sua realização.
Cada porção do ciclo desenvolvimento segue o projeto de arquitetura inicial como guia, 
mas com uma abordagem bem menor.
Uma vez satisfeitos os requisitos e os objetos da iteração, o desenvolvimento seque para 
a próxima iteração(pedaço).
Modelo Prototipação 
É um modelo que ser para ser analisado e desenvolvido a partir do protótipo. Onde o 
Analista coleta informações para um mini projeto, concentrando-se nas entradas e 
saídas do software. Depois da criação e aceitação do protótipo, o produto final será 
desenvolvido. O protótipo ser como um mecanismo para identificar os requisitos.
Os Tipo de Protótipos:
- Em papel ou sistema: que retratam a interface e interação do software
! Quando em sistemas, ele implementa algumas funções:
! ! Como usar?
! ! - O cliente definiu um conjunto de objetivos gerais para o software, mas não 
! ! identificou requisitos de entrada, processamento e saída com muitos 
! ! detalhes.
! ! - O desenvolvedor não tem certeza da eficiência de algum algoritmo ou 
! ! forma de interação.
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
Características Principais da Prototipação
1 - Obtenção dos Requisitos
O desenvolvedor e o cliente definem os objetivos gerais do softwares, identificando quais 
os requisitos são conhecidos e as áreas que necessitam de definições.
2 - Projeto Rápido
É a representação dos aspectos do software que são visíveis ao usuário(entrada e 
formatos de saída)
3 - Construção do Protótipo
É a implementação do projeto rápido. Serve como o “primeiro sistema” e é recomendado 
que não seja usado como produto final, ou seja, como exemplo um janela e seus menus.
4- Avaliação do Protótipo 
Cliente e desenvolvedor avaliam o protótipo feito
5 - Refinamento dos Requisitos
Com base na avaliação, são definidos melhorias ou refinamento do produto.
Ocorre neste ponto o processo de iteração que pode conduzir para atividade 1 até que as 
necessidades do cliente sejam satisfeitas e o desenvolvedor compreenda o que precisa 
ser feito.
6 - Construção Final do Produto
A versão de produção deve ser construída considerando os critérios de qualidade que 
foram feitos na avaliação e refinamento. A partir daqui o protótipo já pode ser descartado.
Modelo Espiral
Neste modelo se assemelha com o protótipo, mas inclui um fator que é a análise de risco
Ele funciona de forma iterativa, incremental, mas com uma etapa onde pode ser tomada a 
decisão de interromper ou não o processo.
Cada volta do espiral representa uma fase do processo
Planejamento -> Definições e restrições 
Análise de Riscos -> Análise de alternativas e identificação dos riscos sob o ponto de vista 
técnico e de gerência.
Engenharia - > Desenvolvimento do produto.
Avaliação do Cliente -> Que é a avaliação dos resultados.
Não há fases fixas e as voltas na espiral são determinadas pelo que é requerido.
Todo o risco é avaliado e resolvido no processo.
Engloba as melhores características do ciclo de vida Clássico em Cascata e da 
Prototipação. Adicionando um novo elemento que é a Análise de Risco.
Usa principalmente a Prototipação em qualquer etapa da evolução do produto, como o 
mecanismo de redução de riscos.
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
As Vantagens do Modelo Espiral:
- Modelo evolutivo, possibilita a integração entre as fases e facilita a depuração e a 
manutenção do sistema
- Permite que o projetista e cliente possam entender e reagir aos riscos em cada etapa 
evolutiva.
As Desvantagens do Modelo Espiral:
- Avaliação dos riscos exige muita experiência
- O modelo é relativamente novo e não tem sido amplamente utilizado.
Tela Comparativas de Modelos
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
Aula 10
 Metodologia Ágeis 
Contexto do Estado da Arte do Desenvolvimento de Software
- Engenharias tradicionais valorizam o projetar antes de construir
- Ela não enxergam o processo de desenvolvimento de software como ele realmente é: 
Com mudanças sempre e o tempo todo
- Então surgiu a necessidade de mudanças na metodologia que permita alterações 
frequentes do software sem afetar sua qualidade.
- Um grupo de desenvolvedores passou a conceber a ideia de um processo menos 
burocrático e + prático. Da aí vai nascer a metodologia ágil.
Processo de Desenvolvimento Ágil:
- Ele é baseado em um manifesto criado por desenvolvedores experientes.
- Que visa o descobrimento de maneiras de melhor desenvolver software, fazendo nós 
mesmo e ajudando outros a fazerem.
- O Foco em pessoas e não em ferramentas
- Mudanças de valores.
Manifesto Ágil:
- Valoriza-se:
- Indivíduos e interação mais que o processo e ferramentas
- Software em funcionamento mais que documentação abrangente 
- Colaboração com o cliente mais que negociação de contratos
- Responder a mudança mais que seguir os planos
- A maior prioridade é satisfazer o cliente
- Mudanças nos requisitos são bem-vindas. mesmo que tardiamente no 
desenvolvimento
- Entregar frequentemente software funcionando - na menor escala de tempo 
possível.
- Pessoas de negócio e desenvolvedores devem trabalhar diariamente em conjunto 
por todo o projeto.
- Construir projeto em torno de indivíduos motivados. Dê a eles o ambiente e o 
suporte necessários
- O método mais eficiente e eficaz de transmitir informação para e entre uma 
equipe de desenvolvimento é através de conversa
- Software funcionando é a medida primária de progresso.
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
Modelo Ágil - Método XP (eXtreme Programming)
- Baseado em 5 valores:
- Comunicação
- Coragem para lidar com as mudanças de requisitos
- Feedback
- Respeito entre membros da equipe
- Simplicidade ao fazer o necessário
Práticas do Método XP:
- Reuniões em pé - Para não perder o foco do assunto.
- Programação em par - Um iniciante e outro instrutor, utilizando um computador e ambos 
aprovam o código.
- Testes de aceitação pelo cliente.
- Processo Coletiva - O código fonte pertence a ninguém e todos podem utilizá-lo.
- Pequenas Versões - Aceitas pelo cliente ajudam na aceitação do programa completo.
- Ritmo sustentável - Trabalho de até 40h semanais sem acréscimo.
- Padrão de Codificação - Com regras claras de código de programa.
Modelo Ágil - Método Scrum:
- O Scrum é um processo de desenvolvimento interativo e incremental para 
gerenciamento de projetos e desenvolvimento ágil de software.
- Uso: Trabalhos complexos, onde não há previsão exata o que se pretende desenvolver
- O projeto é dividido em ciclos(sprints)
- O sprint é a iteração em um modelo Scrum.
Práticas do Método Scrum
Product Backlog -> Lista com funcionalidades a serem implementadas.
Sprint Backlog -> Análise dos requisitos para informar a equipe como será 
implementado.
Sprint -> Período para finalização de cada requisito.
Scrum -> Reuniões diárias paraanálise de andamento do processo.
Scrum Master -> Coordenador do sistema - Não pode estourar o sprint.
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
fharaujo
fharaujo
RUP - Rational Unified Process ( Processo Unificado Rational de Desenv.)
- Processo proprietário de desenvolvimento de software, criado pela Rational, que 
foi adquirida pela IBM.
- Baseado em conceito Orientação a Objeto
- Processo Pesado - Rigidez 
- Uso de grandes projetos
- Desenvolver interatividade - Porções colocadas aos poucos.
- Gerenciar requerimentos - Uso de Casos de Uso
- Foca na arquitetura baseada em componentes
- Utiliza UML - Modelo Visual
- Qualidade durante todo o processo 
- Gestão e controle de mudanças
Práticas do Método RUP:
- Disciplinas são técnicas + em Fases + nas Interações
- Disciplinas
- Modelagem de negócios - Tem que se entender o negócio da empresa;
- Requisitos
- Análise e design
- Implementação
- Testes
- Configuração e mudanças
- Projeto(Gestão de pessoas, orçamento e contratos)
- Ambiente(Servidores, ferramentas, Bds..)
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE