Introdução
Software
 Programa de computador e documentação associada
 Produtos de software podem ser desenvolvidos para um cliente particular ou podem ser
desenvolvidos para um mercado geral
 Novos softwares podem ser criados desenvolvendo-se novos programas ou reusando softwares
existentes
Processo
 Uma série conectada de ações, com a intenção de satisfazer um objetivo
 Define quem está fazendo o quê, quando e como para atingir certo objetivo.
Processo de Software: Um conjunto estruturado de atividades para desenvolver um sistema de
software, que deve envolver obrigatoriamente, pelo menos as seguintes atividades:




Especificação
Projeto e implementação
Validação
Evolução
Disciplina de engenharia preocupada com todos os aspectos sobre a produção de software, incluindo:
 Processos: Racionalizam o desenvolvimento de Software
 Métodos: Conhecimentotécnico; “Como” fazer
 Ferramentas: Suporte automatizado para processos e métodos
Objetivos:




Obter software de qualidade
Com produtividade no seu desenvolvimento, operação e manutenção
Dentro de custos, prazos e níveis de qualidade controlados
Com o melhor custo-benefício entre Qualidade e Produtividade
Eng. de Software x Eng. De Sistemas
 Engenharia de Sistemas é algo maior: preocupa-se com todos os aspectos de sistemas baseados
em computador
 Software
 Hardware
 Processos
 Pessoas e outros sistemas, etc.
 Engenharia de Software é apenas parte deste processo
Questão
(TRE/BA – CESPE 2010)
[61] A engenharia de software está relacionada com todos os aspectos da produção de software, desde os
estágios iniciais de especificação do sistema até sua manutenção, depois que este entrar em operação. A
engenharia de sistemas diz respeito aos aspectos do desenvolvimento e da evolução de sistemas
complexos, nos quais o software desempenha um papel importante.
Gab. C
(IBGE – CONSULPLAN 2009)
[12] Segundo Pressman (1995), Engenharia de Software é o estabelecimento e uso de sólidos princípios
de engenharia para que se possa obter economicamente um software que seja confiável e que funcione
eficientemente em máquinas reais, abrangendo um conjunto de três elementos fundamentais (métodos,
ferramentas e procedimentos).
Assinale a alternativa INCORRETA:
A) Métodos de Engenharia de Software proporcionam os detalhes de “como fazer” para construir o
software.
B) As ferramentas proporcionam apoio automatizado ou semi-automatizado aos métodos.
C) Procedimentos constituem o elo de ligação dos métodos e das ferramentas e possibilitam o
desenvolvimento racional e oportuno de software.
D) Métodos envolvem um amplo conjunto de tarefas que incluem: planejamento e estimativa de projeto,
análise de requisitos de software e sistemas, projeto de estrutura de dados, arquitetura de programa e
algoritmo de processamento, codificação, teste e manutenção.
E) Ferramentas são roteiros para o desenvolvimento de software
Gab. E
Modelos de Ciclo de Vida
Cascata (Clássico / sequencial linear):




Recomendado para situações onde há requisitos estáveis e bem compreendidos.
É inflexível, sistemático e sequencial
É facilmente aplicável em equipes inexperientes
Atrasa a resolução dos riscos (falha tardia do projeto)
Pressman
Sommerville
Prototipagem:
 Evolucionária:
 Evolui o sistema a partir de uma especificação inicial resumida.
 Começa com os requisitos mais fáceis e bem compreendidos.
 Novas funcionalidades são adicionadas à medida que o cliente às propõe.
 Falta visibilidade do progresso (sempre evoluindo, nunca está terminado).
 Aplicável em sistemas pequenos ou médios.
 Descartável:
 Pequenas versões são disponibilizadas ao clientes para avaliação.
 Objetivo: clarificar e entender os requisitos do sistema.
 Começa com os requisitos mais difíceis e menos compreendidos.
 Descarta-se o protótipo e a implementação continua.
 Útil para sistemas grandes e complexos, quando o cliente não sabe o que quer.
 Podem ser aplicados no contexto de qualquer modelo de processo.
Métodos Formais:
- Modelo baseado em técnicas matemáticas para especificar, desenvolver e verificar software.
- O software é especificado usando técnicas formais(matemáticas), e após a “prova” da especificação é
transformado em código.
- Tem sido aplicados apenas a desenvolvimento de sistemas críticos (questões de segurança).
 Iterativos:
- Motivação: requisitos de sistema sempre evoluem durante o projeto.
- Duas abordagens:
 Incremental
 Desenvolver a entrega em incrementos, com cada um entregando parte da funcionalidade
requerida.
 Requisitos são definidos antes do desenvolvimento do incremento, sendo os mais críticos
priorizados.
 Os incrementos são avaliados e os desvios identificados, sendo possível replanejar as
próximas iterações de acordo.
 Espiral
 Cada volta na espiral representa uma fase no processo
 Nãoháfasesfixas
 Inicia de dentro para fora
 Acrescenta aspectos gerenciais ao desenvolvimento de software
 Planejamento
 Análise de riscos
OBS: O modelo espiral do ciclo de vida de software é iterativo e incremental, uma vez que a mesma
sequência de atividades relacionadas à produção de software é realizada a cada ciclo da espiral.
Falso, pois não há garantia de que a sequência de atividades será realizada em cada fase(ciclo), podendo
ocorrer até supressões de atividades.
^
PROCESSOS ÁGEIS
Valores:




Indivíduos e interações em vez de processos e ferramentas.
Software funcional em vez de documentação extensiva.
Colaboração com o cliente em vez de negociação de contrato.
Resposta à mudança em vez de seguimento de um plano.
Doze princípios do manifesto ágil:
 Nossa maior prioridade é satisfazer o cliente, através da entrega adiantada e contínua de software
de valor.
 Aceitar mudanças de requisitos, mesmo no fim do desenvolvimento. Processos ágeis se adéquam
a mudanças, para que o cliente possa tirar vantagens competitivas.
 Entregar software funcionando com freqüência, na escala de semanas até meses, com preferência
aos períodos mais curtos.
 Pessoas relacionadas ao negócio e os desenvolvedores devem trabalhar em conjunto e
diariamente, durante todo o curso do projeto.
 Construir projetos ao redor de indivíduos motivados. Dando a eles o ambiente e suporte
necessário, e confiar que farão seu trabalho.
 O Método mais eficiente e eficaz de transmitir informações para, e por dentro de um time de
desenvolvimento, é através de uma conversa cara a cara.
 Software funcional é a medida primária de progresso.
 Processos ágeis promovem um ambiente sustentável. Os patrocinadores, desenvolvedores e
usuários, devem ser capazes de manter indefinidamente, passos constantes.
 Contínua atenção à excelência técnica e bom design, aumenta a agilidade.
 Simplicidade: a arte de maximizar a quantidade de trabalho que não precisou ser feito.
 As melhores arquiteturas, requisitos e designs emergem de times auto-organizáveis.
 Em intervalos regulares, o time reflete em como ficar mais efetivo, então, se ajustam e otimizam
seu comportamento de acordo.
Vantagens:
 Entrega acelerada dos serviços ao cliente.
 Engajamento do usuário com o sistema (envolvimento).
Problemas na implantação:
 Problemas
 Problemas
 Problemas
 Problemas
Desvantagens:
de
de
de
de
gerenciamento (mudanças rápidas, documentação, tecnologias não conhecidas).
contrato (preço fixo?).
validação (TDD).
manutenção
 Envolvimento com o cliente (cadê ele?). Indisponibilidade do cliente para atuar continuamente no
projeto em conjunto com a equipe de desenvolvimento.
 Membros da equipe podem não interagir bem com outros membros da equipe.
 Priorização de mudanças pode ser bem difícil, principalmente onde existem muitos Stakeholders.
 Manter a simplicidade requer trabalho extra.
Extreme Programming(XP):
Características:
 Os programadores trabalham em pares.
 Testes são desenvolvidos antes da escrita do código
 Pequeno espaço de tempo entre as releases do sistema que apóia assim o desenvolvimento
incremental.
 Envolvimento do cliente apoiado pelo engajamento em tempo integral deste na equipe de
desenvolvimento sendo responsável pela definição de teste de aceitação do sistema.
 Dentro da tríplice restrição ele está focado no escopo. (?)
Princípios:
 Feedback rápido
 Presumirsimplicidade
 Mudançasincrementais
 Abraçarmudanças
 Trabalho de altaqualidade.
Valores:
 Comunicação.
 Simplicidade.
 Feedback.
 Coragem.
 Respeito.
Práticas:
 Utilização de metáforas: as funcionalidades do software são descritas em histórias, da forma mais
simples possível.
 Jogo de planejamento.
 Planejamento incremental: de acordo com a prioridade dos requisitos a serem implementados.
 Pequenas versões: entregas constantes de pequenos pedaços de software funcionando.
 Projeto Simples: o código na forma mais simples que atenda todos os testes.
 Testes de aceitação/Cliente on-site: cliente com conhecimento sobre o negócio deve estar
disponível em tempo integral, participando ativamente.
 Ritmo sustentável (trabalho motivado e hora extra quando trouxer vantagens).
 Posse coletiva (o código não tem dono): qualquer programador pode alterar o código.
 Programação em pares: validação mútua do trabalho realizado, 2 programadores em 1
computador.
 Desenvolvimento orientado a testes. (TDD, Test-first): testes unitários escritos antes da
funcionalidade ser implementada.
 Refatoração: melhorar o código sem alterar o comportamento externo.
 Integração contínua: os módulos são integrados imediatamente após sua conclusão.
 Padrões de codificação: estilo e formato consistentes.
 Reuniões em pé: rápidas e diárias para discutir o essencial.
Ferramentas:
 Template de Cartão de História: ator, meta, motivo.
 Plainning poker: dividir (a história) em tarefas e estimar esforços e recursos necessários.
 Priorização de histórias para implementação pelos clientes.
 TDD (Desenvolvimento dirigido por testes)
 Define interfaces e comportamentos para a funcionalidade (entrada, testes, saídas).
 Desenvolvimento incremental de teste a partir de cenários.
 Envolvimento do usuário no desenvolvimento e validação de testes.
 O uso de ferramentas de teste automatizadas: teste escrito como um componente executável
antes do código. Deve possibilitar a entrada e verificar se a saída atende.
SCRUM:
 É um processo iterativo e incremental para o desenvolvimento de produtos e gerenciamento de
projetos.
 Está mais para framework do que para uma metodologia.
 Ele não te dirá o que fazer, apenas te dará transparência para enfrentar os desafios do dia a dia,
a decisão é sua.
 Método ágil para gerenciamento de projetos baseado em times pequenos (5 a 9 pes.) e
auto-organizados.
 Apresenta forte-visibilidade e rápida adaptação a mudanças (Melhoria contínua).
Pilares:
 Transparência: os aspectos do processo que afetam o resultado devem ser visíveis para aqueles
que gerenciam os resultados.
 Inspeção: detecção de variâncias inaceitáveis no processo devem ser inspecionadas e detectadas.
 Adaptação: aspectos do processo que saírem dos trilhos devem ser ajustados.
PAPÉIS:
 Product Owner (PO):
o Faz o Macro Management
o Tem total decisão sobre o produto
o Responsável por garantir o ROI.
o Responsável por garantir as necessidades do cliente.
o Proxy de comunicação em ambientes com mais de um cliente.
o Precisa ter disponibilidade e não estar dentro do time.
 Scrum Master (SM):
o Responsável por remover os impedimentos do time.
o Garante o uso do Scrum.
o Protege o time de interferências externas.
o Não deve ser PO nem fazer parte do time.
 Time:
o Multidisciplinar.
o Auto-organizado.
o Dedicação Integral.
o Metascompartilhadas.
o É quem faz o micro-management.
FLUXO:
Product Backlog:

O Product Owner define a visão do produto.

Para tanto ele recolhe informações junto ao cliente, usuários finais, time, gerentes, stk, etc.

A visão define o que o PO espera que seja entregue como produto final do projeto e sabe-se
que ele foi finalizado quando a visão foi atendida.

Definição de Pronto.

Escopoaberto.

O PO cria uma lista inicial de necessidades (ProductBacklog) com o auxílio do Scrum Master.

O ProductBacklog contém os requisitos para o produto que a equipe está desenvolvendo.

O PO é o responsável pelo ProductBacklog: conteúdo, disponibilidade e priorização.

O ProductBacklog é um documento dinâmico. Nunca está completo.

Não existe um padrão para documentação técnica, pode ser UC, Use Stories.

Um item do backlog deverá sempre caber em uma sprint.

Quanto mais no topo do ProductBacklog,
automaticamente mais detalhada ela estará.

Quanto mais no fundo, menos prioritária será a necessidade e automaticamente menos
detalhada ela estará.

Cartão de Memória

Plainning Poker
mais
prioritária
será
a necessidade
e
Sprint Planning Meet:
 Planejamento da Iteração (tempo: 5% da Sprint)- A reunião ocorre dentro do Time Box da Sprint.
 Definição do Sprint Backlog
 Primeira metade: define-se o que vai ser realizado no Sprint.
 Segunda metade: como construir as funcionalidades do produto durante a Sprint (definição do
Pronto e Implementado). CaiuemProva !!
Sprint Backlog:
 Lista de tarefas a serem executadas durante a sprint.
 Deverá estar “definida” no final da Sprint Plannning Meeting.
 Iniciará com 70% das atividades definidas. O restante virá diariamente durante a Sprint.
 Conterá os itens de backlog selecionados, suas respectivas tarefas e as metas da Sprint.
 Relacionadas a atividades micro (até 8 h).
EX:
Sprint Burndown:
 É um gráfico do time, não do PO nem do SM.
 Tem como objetivo ajudar o time no micro-management.
 O gráfico só evolui quando o item está efetivamente pronto.
 Auxilia na mediação da velocidade da equipe por sprint.
Sprint:
 Ocorre em um período de 30 dias aproximadamente
 O tempo de duração inclui o planejamento e a revisão.
 O SM facilita o trabalho do time removendo os impedimentos encontrados e garantindo a boa
aplicação do Scrum.
 O time pode consultar especialistas ou o PO.
Daily Meeting/Scrums (Reunião Diária):
 Duração de 15 minutos (O que fiz? O que fazer ? Qual impedimento ?)
 Visibilidade da situação atual dentro do planejamento.
 SM comofacilitador.
 Micro- Management. Reunião para o time.
 Inclusão/exclusão de tarefas para cumprir a meta da Sprint.
 Inserção de impedimentos (relacionados às tarefas já previstas)
Sprint Review (Reunião de Revisão da Sprint)
 Realizada ao final do Sprint (4h p/ sprints de 1 mês)
 Identifica o que foi feito, problemas encontrados e soluções.
 O time demonstra o que foi feito e responde a questionamentos.
 O PO discute o ProductBacklog atual.
 Todos discutem melhorias que poderão ser implementadas (melhoria do produto).
Retrospectiva:
 Foco na inspeção-adaptação (duração: 3h).
 O time é encorajado a revisar o processo de trabalho (melhoria do processo).
 Finalidade: inspecionar o último sprint (aspectos: pessoas, relacionamentos, processos e
ferramentas).
 Identificação de melhorias para as próximas sprints.
Stories, Temas e Epics:
 Epics são grandes user stories, que ainda estão em formato bruto.
 Temas são pacotes de user stories (decompostos ou não) relacionadas por algum grande objetivo
de negócio. (= package de um caso de uso)
 Uma release pode ter 1 ou mais temas.
 No planning poker passou de 40 é um Epic.
Sprints x Release:
 Sprint: entrega um incremento do produto.
 Release: entrega de um “produto” que entrará em produção.
P.S: Uma release pode conter várias sprints.
Mudanças Durante a Sprint:
 As mudanças ocorrem desde que não atrapalhem a meta das Sprint.
 Time-box é fixo. Mudanças não impactam o timer da sprint.
Feature Driven Development (FDD):
Características:
 Focada na entrega regular de funcionalidades valiosas para o cliente.
 Que possam ser entregues em até 2 semanas.
 Equipes podem variar de 10 a 250 programadores.
 Nãonecessita de tantadocumentação
Papéis: Existem papéis chave e papéis de apoio, abaixo seguem os papéis chave:
 Project Manager
 Líderadministrativo do projeto
 Planeja orçamento, elabora relatórios e protege a equipe de distrações externas.
 Chief Architect
 Responsável pelo projeto geral do sistema
 Tem a palavra técnica final sobre o software e sua arquitetura
 Development Manager
 Lidera as atividades diárias de desenvolvimento
 Lidera a equipe de desenvolvimento através de desafios técnicos
 Chief Programmers
 Desenvolvedoresexperientes
 Lideram pequenas equipes de desenvolvedores individuais
 Class Owners
 São os desenvolvedores individuais
 Projetam, codificam, testam e documentam as funcionalidades
 Domain Experts
 Usuários, clientes, patrocinadores...
 A base de conhecimento para os desenvolvedores
Processos:
 Desenvolver um modelo abrangente (geral)
 Construirumalista de funcionalidades
 Planejarporfuncionalidade
 Projetar (detalhar) porfuncionalidade
 Implementarporfuncionalidade
Benefícios:
 Qualidade de software
 Maiorprodutividade
 Maiorprevisibilidade
 Maior controle sobre custos e prazos
Ferramentas CASE
- São ferramentas que auxiliam o engenheiro de swnas atividades associadas ao desenvolvimento de sw.
- Utilizada por Gerentes de projeto e engenheiros de sw.
- Reduzem o esforço necessário para produzir artefatos e alcançar metas
- Aumentam a qualidade do sw.
-Ferramentas CASE são usadas em conjunto com o modelo de processo adotado. Se for escolhida uma
ferramenta completa, pode passar por quase todos os passos do desenvolvimento de SW.
- São usadas como complemento às boas práticas de Engenharia de Software. Ferramentas CASE não
substituem uma metodologia de desenvolvimento de software sólida.
Categorização:
Terminologia I:
 Horizontais: são utilizados durante todo o processo de des. de soft.
 Verticais: são específicas para uma disciplina de soft.
 Por funções: processos de negócio, análise de risco...
Terminologia II:
 Front-end ou Upper CASE: apoiam etapas iniciais da criação dos sistemas; planejamento, análise
e projeto de aplicação.
 Back-end ou Lower CASE: dão apoio à parte física, código, testes e manutenção.
 I-CASE ou Integrated CASE: cobrem todo o ciclo de vida do início ao fim.
RUP
Características:
 Iterativo e Incremental: O ciclo de vida do produto é dividido em iterações, cada uma entregando
incrementos/releases (partes acabadas) do software.
 Guiado por casos de uso: Os casos de uso conectam todas as fases e visões, sendo utilizados por
todos os stakeholders.
 Centrado na arquitetura: Evolui a partir das necessidades do produto.
 Orientado a objetos: Componentes são construídos através de Objetos e estes colaboram entre si
para realizar os casos de uso.
 Planejado por riscos: Os riscos são analisados continuamente e os de maior criticidade são
tratados prioritariamente.
- O RUP tem duas dimensões:
 A primeira dimensão representa o aspecto dinâmico do processo (Eixo horizontal)
 Expresso em termos de fases, marcos e iterações
 A segunda dimensão representa o aspecto estático do processo (Eixo vertical)
 Expresso em termos de componentes, disciplinas, atividades, artefatos, papéis
Perspectivas:
 Dinâmica: são as fases do modelo.
o Concepção: estabelecer um business case para o sistema (escopo).
o Elaboração: domínio do problema, identificar os riscos do projeto, elaborar um plano de
projeto.
o Construção: projeto, programação e teste de sistema.
o Transição: implantação. Fase onerosa e problemática.
 Estática: são as disciplnas, fluxos ou workflows.
PRINCIPAIS (realizadas no projeto)






Modelagem de negócios
Requisitos
Análise e projeto
Implementação
Teste
Implantação
AUXILIARES (acompanham o projeto)
 Gerenciamento de configuração e mudança
 Gerenciamento de Projeto
 Ambiente
Disciplinas (MRAITIGGA)
 São um conjunto de atividades (fluxo de trabalho) relacionadas a uma “área de interesse” do
projeto
 Ajudam a compreender o projeto a partir de uma perspectiva em cascata
OBS: teste unitário está incluso na disciplina de implementação.
Obs: Cada passagem pela sequência de disciplinas do projeto se chama iteração, não passando
obrigatoriamente por todas.
Critérios de Avaliação dos Marcos:
 Objetivos do ciclo de vida:




Casos de uso definem claramente o escopo?
Foi possível fazer um protótipo da arquitetura?
Todos os riscos críticos foram encontrados? Forammitigados?
Há condições de realizar o projeto?
 Arquitetura do ciclo de vida: Baseline
 A arquitetura é estável e robusta, comportando requisitos atuais e futuros?
 Riscoscríticosforamresolvidos?
 Cronograma, orçamento e níveis de qualidade estão bem definidos?
 Devemosfechar o contrato?
 Capacidade operacionalinicial:
 O produto está estável para ser implantado?
 O resultado está coerente com o planejado?
 Os envolvidos estão prontos para a Transição?
 Release do produto:
 As despesas reais com recursos são aceitáveis se comparadas às planejadas?
 O usuárioestásatisfeito?
- Papéis executam Atividades que geram Artefatos.
Práticas: boas práticas durante o processo.
 Desenvolver o software iterativamente.
 As táticas e os requisitos variáveis são acomodados
 Os riscos são reduzidos mais cedo, pois os elementos são integrados progressivamente.
 A melhoria e o refinamento do produto são facilitados, tornando-o mais robusto.
 As organizações podem aprender a partir dessa abordagem e melhorar seus processos.
 Identificar partes comuns quando estão parcialmente projetadas ou implementadas é mais
fácil que identificar todas as semelhanças no começo.
 Gerenciar Requisitos (documentação e mudanças).
 Requisitossãoalterados.
 Entenda as necessidades das partes interessadas.
 Defina o sistema e seu escopo.
 Garanta que os requisitos sejam facilmente atualizáveis.
 Casos de uso guiam o desenvolvimento
 Arquiteturabaseadaemcomponentes.
 Grupos coesos de código fonte ou executável com interfaces e comportamentos bem
definidos.(substituíveis)
 Permitereusoemgrandeescala
 Visões Arquiteturais(4+1):
 De casos de uso (externa)
 Queabrangemcomportamentossignificativos
 Visão obrigatória do documento de arq. de soft.
 Lógica (interna)
 Classes de projetos mais importantes e sua organização
 Visãoobrigatória
 De processos
 Descreve as tarefas envolvidas e suas interações
 Só precisa ser utilizada quando em alto grau de paralelismo
 Visãoopcional
 De implementação
 Detalhes(físicos) dos pacotes e módulos da visão lógica
 Visãoopcional
 De implantação
 Descrição dos vários nós físicos do sistema e suas tarefas.
 Visãoopcional
 Modelar Visualmente(UML).
 Notação gráfica e visual para capturar o projeto de software
 Capturarrequisitos com precisão
 Melhorcomunicação, diminuindo a ambiguidade
 Verificar a qualidade do software.
 Foco nos processos e como eles são executados (garantia)
 Foco no produto, em encontrar defeitos específicos (controle)
 Controlar as mudanças (SGM).
 Apenasmudançasaprovadassãoimplementadas
 Coordenação de atividades e artefatos
 Coordenação de iterações e releases
 Controle de mudanças no software
OBS: No RUP a qualidade representa “a característica de
ter demonstrado a realização da criação de um produto que
atende ou excede os requisitos acordados, conforme
avaliado por medidas e critérios acordados, e que é criado
em um processo acordado”
FASES do RUP
INICIAÇÃO(Concepção):
 Compensa/é possível realizar o projeto?
 Meta principal: atingir o consenso sobre os objetivos do ciclo de vida do projeto.
 Escopo
 Custos
 Tempo (cronograma)
 Riscos
 Identificarcasos de usocríticos
 Propor pelo menos uma opção de arquitetura para cenários básicos.
Ênfases:
Modelagem de Negócios:
 Entender a estrutura e a dinâmica da organização-alvo
 Analista de Processo de Negócios:
 Identificaosprocessosnaorganização
 Descreveosprocessos
 Definir o que pode e deve ser melhorado
 Artefatos:
 Modelo de Domínio: captura os tipos mais importantes de objetos de negócio.
 Modelos de negócio subsidiam os requisitos de sistema
 Entidades de negócio identificam classes de entidade
Requisitos:
 Estabelecer o que o sistema deve fazer
 Definir o escopo do sistema
 Analista de Requisitos
 Levantarrequisitos do sistema
 Estruturar modelo de Casos de Uso
 Especificador de Requisitos
 Detalhar especificação de Casos de Uso
 Artefatos:
 Visão
o Documento da visão em alto nível do produto a ser desenvolvido.
o Contém as necessidades e características mais importantes.
 Glossário
o Modelo de Casos de Uso: serve como contrato entre cliente e desenvolvedores.
ELABORAÇÃO:
Fornecer uma base estável para o esforço de Construção
Arquitetura é desenvolvida a partir dos requisitos que tem maior impacto na arquitetura.
Tratar todos os riscos significativos do ponto de vista da arquitetura do projeto.
Selecionar componentes(reuso) e criar planos de iterações detalhados para a fase de construção.
Artefatos:
 Protótipos: reduzir o risco e elicitar requisitos significativos
 Doc. de Arquit. de Soft.: visão geral, usando diversas visões para descrever diferentes
aspectos do sistema.
 Modelo de projeto: descreve a realização dos casos de uso críticos.
 Modelo de dados: descreve a representação física e lógica dos dados persistentes no
sistema.
Ênfases:





Análise e Design/projeto:
 Transformar os requisitos em projeto a ser criado
 Desenvolver uma arquitetura refinada (estabilizada)
 Adaptar o projeto às restrições de tecnologia
 Arquiteto de Software
 Projetararquitetura, visãoampla.
 Designer(projetista)
 Analisar e projetar casos de uso
 Projetarsubsistemas
 Projetista de Banco de Dados
 Projetar base de dados
 Implementa as funcionalidadescríticas
OBS: Segundo o manual RUP, as atividades de Análise são opcionais. Apesar de na prática não ser
muito interessante pular essas atividades.
CONSTRUÇÃO:
Esclarecerosrequisitosrestantes
Concluir o desenvolvimento com base na arquitetura estável
Gerenciamento de recursos e controle de operações para maior produtividade e qualidade.
Otimizarrecursos e evitarretrabalho
Definir se o software está pronto para ser implantado
Artefatos:
 Sistema: pronto para iniciar os testes Beta.
 Plano de Implantação: versão inicial desenvolvida, analisada e com baseline.
 Conjunto de testes: testes implementados e executados para validar a estabilidade dos
releases.
 Modelo de projetocompleto
OBS: testes Alfa são executados na fase de construção, já os testes Beta são realizados na fase de
transição.






Ênfases:
Implementação:
 Definir o código em subsistemas e camadas
 Implementar classes e objetos em termos de componentes
 Realizar testes unitários
 Integra os componentes individuais ao sistema executável.
 Implementador (II e III)
 Integrador (IV)
 Implementa o que foi definido na disciplina de Análise e Design
Teste:
 Localizar e documentar defeitos na qualidade do software
 Validar as funções do software conforme projetadas
 Verificar se os requisitos foram implementados de forma adequada
 Analista de teste: elaborar plano de testes.
 Projetista de teste: projetar testes (a partir dos casos de uso).
 Testador: implementar e executar testes.
Plano de testes:
 Define metas e objetivos dos testes no escopo da iteração (ou projeto)
 Explicita a abordagem adotada, os recursos necessários e os produtos liberados.
Caso de teste:
 Descrição do objetivo e do escopo do teste
 É desenvolvido caso de teste para cada cenário do caso de uso, prevendo caminhos para o fluxo
básico, alternativo e de exceção.
 Define:
o Entradas de teste
o Condições de execução
o Resultadosesperados
OBS: testes unitários são executados na disciplina de implementação, e não na disciplina de teste.
TRANSIÇÃO:
 Disponibilizar o software aos usuários finais
 Testar os releases e ajustar pequenos defeitos com base no feedback do usuário
 Feedback prioriza apenas ajustes finos, todos os problemas estruturais já devem ter sido
trabalhados anteriormente.
 Teste Beta para validar o novo sistema
 Treinamento de usuários e equipe de manutenção
 Artefatos:
 Notas de Release
 Artefatos de instalação
 Material de treinamento
Ênfase:
Implantação:
 Coordenar e gerenciar os testes Beta e de aceitação
 Desenvolver artefatos de instalação e materiais de treinamento
 Liberar para fabricação
 Tipos de Instalação:
 Personalizada/customizada
 Compacta (cd, dvd)
 Internet
 Gerente de implantação
 Desenvolverplano de implantação
 Escrevernotas de releases
 Desenvolvedor do curso
 Desenvolvermateriais de treinamento
 Implementador
 Desenvolverartefatos de instalação
Disciplinas Auxiliares
Gerenciamento de configuração e mudança:
Controla as mudanças feitas nos artefatos de um projeto e mantém a integridade entre eles
Identificar e controlar itens de configuração
Restringir as mudanças nesses itens e auditá-las
Trilha de auditoria indicando a razão, por quem e quando um artefato foi alterado
Gerente de Configuração
 Configurar ambiente de CM
 Estabelecer políticas de CM
 Garantir a integridade dos artefatos
 Gerente de Mudanças
 Estabelecer processo de controle de mudanças
 Confirmar ou recusar solicitações de mudança
 Artefatos:
 Repositório do projeto
 Solicitações de mudanças
Gerenciamento de Projeto:





Gerenciar pessoas, equipes, fases e iterações.
Planejar o cronograma do projeto
Gerenciar a qualidade e realizar revisões
Gerenciar os riscos
Artefatos:
 Plano de desenvolvimento de software
 Planos de iteração
 Lista de riscos
Ambiente:





Oferecer o ambiente de que dará suporte à equipe de desenvolvimento.
Configurar/ajustar o processo para o projeto
Selecionar e adquirir as ferramentas que serão utilizadas
Desenvolver/adaptar guias de atividades
Engenheiro de processo
 Configurar o processo
 Iniciar caso de desenvolvimento
 Especialista em ferramentas
 Selecionar, adquirir e configurar ferramentas
 Artefato:Caso de desenvolvimento
 Descreve o processo escolhido para ser seguido no projeto
 É o documento que configura o próprio processo de desenvolvimento





Requisitos de Software
Requisitos: definem o que o sistema deve fazer e sob quais limitações ele é requisitado a operar.
- O sucesso das etapas posteriores depende da qualidade dos requisitos gerados.
Tipos de Requisitos:
No desenvolvimento
 Funcionais: definem as funcionalidades do sistema, é o que ele deve fazer. Depende dos usuários
e do contexto de utilização.
 Não
Funcionais:
são
qualidades,
atributos,
restrições,
características
do
sistema.Possuemrelação com as funcionalidades do sistema.
 Do produto: eficiência, confiabilidade, usabilidade, portabilidade.
 Organizacionais: obedecem a políticas, padrões, processos.
 Externos: legislação, interoperabilidade, privacidade
 De domínio: refletem características do domínio, são transformados posteriormente em
funcionais ou não funcionais.
 São expressos na linguagem do domínio da aplicação.
 Conhecimentotácito
Na evolução e manutenção






OBS:
Permanentes: relativamente estáveis, pois são derivados da atividade principal da organização.
Voláteis:
Mutáveis: são modificados por conta do ambiente do sistema.
Emergentes: surgem durante o desenvolvimento à medida que o cliente compreende o sistema.
Consequentes: resultam da introdução do sistema no ambiente do usuário.
Compatibilidade: que dependem de outro processo, mudam conforme o outro muda.
Requisitos não funcionais devem ser verificáveis(mensuráveis) de forma objetivamente testada.
Elicitação e Análise de Requisitos:
 Entendimento do domínio da aplicação
 Descoberta/levantamento dos requisitos
OBS: JAD- Técnica de elicitação de requisitos.(IBM) - ler sobre
Técnicas de Elicitação:
Entrevistas
Questionários
Leituras de documentos
Observações e análises sociais (etnografia):
 Fatores organizacionais importantes podem ser observados
 Analisar como as pessoastrabalham
 Requisitos são derivados da cooperação e compreensão das atividades.
 Workshops de requisitos
 Stakeholders são reunidos por um período intensivo
 Reunir informações para atributos de requisitos aplicáveis
 Resumir a sessão e elaborar conclusões
 Prototipagem
 Cenários (casos de uso)
 Utilizados para mostrar quais funcionalidades o sistema oferece e que usuários se
comunicam com ele.
 Atores são sempre entidades externas ao ambiente do sistema.
 Tipos:
. Concreto: iniciado por um ator, constitui um fluxo completo de eventos.
. Abstrato: nunca são instanciados diretamente, são includes, extends ou
generalizações de um caso de uso concreto. São escritosemItálico.




Relacionamentos:
 Include: após um caso de uso “base” a inclusão de outro caso de uso é obrigatória.
 Extend: modela partes opcionais da execução de um caso de uso.
 Generalização: relaciona um caso de uso especializado a um mais geral.
 Modelo de Caso de Uso: comunica o comportamento do sistema ao usuário final.
Análise de Requisitos:
 Agrupar requisitos relacionados e organizá-los em conjuntos coerentes
 Checagem de consistência, ambigüidade, omissão e relacionamentos entre requisitos.
 Priorizar requisitos e negociar conflitos
 É papel do analista de requisitos balancear todas as demandas
 Requer grande capacidade de integração social
Especificação de Requisitos:
 A abordagem utilizada depende da necessidade específica de cada projeto
 Podeabordar:
 Documento escrito
 Modelo gráfico
 Modelo matemático formal
 Coleção de cenários de uso
 Especificação do Sistema:
 É o produto final produzido pelo engenheiro de requisitos
 Descreve a função do sistema e suas restrições
 Descreve informações que entram e saem do sistema
Validação de Requisitos:
Objetivos: Assegurar que...
 Os requisitos definem o sistema que o usuário realmente deseja
 Requisitos são consistentes e de alta qualidade
 Documento de requisitos provê uma base adequada para Projeto e Implementação
 Aprovar o Documento de Requisitos
Técnicas:
 Revisões(inspeções)
 Prototipagem
 Geração de Casos de teste
Gerenciamento de Requisitos:
 A preocupação é manter os requisitos e controlar suas evoluções.
 Gerencia as mudanças nos requisitos. Requisitos sempre mudam!
 Rastreabilidade: relacionam os requisitos e avaliam seus impactos
 De fonte: liga o requisito a quem propôs, e sua necessidade original.
 De Requisitos: liga os requisitos que dependem entre si.
 De projeto: ligação entre o requisito e o projeto do software.
 É impossível rastrear requisitos sem uma ferramenta CASE adequada.
Análise e Projeto OO
Análise OO:
 Gerar um primeiro modelo do sistema a partir dos casos de uso (Modelo de Análise/Domínio)
 Entender o problema a ser tratado antes de partir para a solução. Estruturando por classes e
objetos.
 Escrita na linguagem dos desenvolvedores.
 Encontrar os objetos que vão compor o software, suas funções, dados e relacionamentos.
 Não depende de tecnologia
 Segundo o RUP, é atividade opcional.
Modelo de Análise/Domínio:
 Modelo de objetos que descreve a realização dos casos de uso, é uma abstração do Modelo de
Design.
 Contém as classes e qualquer artefato associado.
 O modelo evolui durante as iterações do projeto, incrementando detalhes às classes.
 Desenhar diagramas de classes conceituais
 Identificar persistência
 Classes de Fronteira: fazem a interação Ator x Sistema. Apresentam dados aosusuários.
 Classes de Controle: controlam a lógica de execução correspondente a cada caso de uso.
 Classes de Entidade: representam a informação que é manipulada pelo caso de uso.
Armazenam informações persistentes. Contém as regras de negócio.
 Identificar responsabilidades: qual operação é fornecida por cada classe.
 Identificar atributos: sem identificar o tipo.
 Identificar relacionamentos: associações, dependências.
Projeto OO:
 Criamos o Modelo de Projeto, no qual definimos como o software atenderá os requisitos
analisados.
 Dependente da tecnologia a ser utilizada na implementação.
 Unificar os modelos de caso de uso em um modelo único, mais detalhado.
 Projetar detalhadamente a estrutura e o comportamento interno de cada subsistema (módulo).
 Projetar a arquitetura, em camadas.
Tipos de Herança:
Simples: novas classes são criadas a partir de uma classe existente.
Múltipla: uma classe pode herdar de várias outras classes.
 Deve ser evitada. Pois pode causar vários problemas:
 Difícil de entender
 Codificaçãoconfusa
 Ambiguidade e duplicação de atributos
 Algumas linguagens(Java e Smalltalk) não suportam herança múltipla
Tipos de generalização:
 Incompleta: outros subtipos(objetos) podem ser
adicionados no futuro
 Completa: todas as subclasses já foram especificadas.
 Disjunta(disjoint): não pode ocorrer herança múltipla
 Sobreposta(Overlapping): pode ocorrer herança
múltipla
Classe Abstrata:




Representa um conceito abstrato e é utilizada para organizar uma hierarquia de generalização
Não é projetada para gerar instâncias. O nome estará sempre em Itálico
A “superclasse” será herdada por outras, e estas é que gerarão instâncias concretas.
Caso exista um método abstrato, a classe precisará ser abstrata, mas o contrário não pode se
afirmado. Se a classe é abstrata, não obrigatoriamente eu preciso ter um método abstrato.
Interface:
 Define um conjunto de comportamentos(operações) oferecidos para uma classe ou componente.
 Pode ser interpretada como um contrato de comportamento entre um objeto cliente e o fornecedor
de serviços.
 É dito que classes realizam interfaces.
Arquitetura do Sistema: é a estrutura dos componentes significativos do sistema que interagem por
meio de interfaces.
Composição:



OBS:
Componentes de software
Propriedades visíveis externamente
Relacionamento entre componentes
Uma boa arquitetura deve ter componentes projetados com baixo acoplamento e alta coesão.
Acoplamento:
 Grau de dependência de um módulo em relação aos demais.
 Acoplamento forte significa que uma classe precisa conhecer detalhes internos das outras.
 Quanto menos acoplamento melhor. Menor complexidade.
Coesão: é o grau de entendimento das responsabilidades de um determinado módulo/classe.
Queremos classes:
 Com menor complexidade possível
 Com responsabilidades claramente definidas
 Que não executam um grande volume de trabalho
Arquitetura em Camadas:
 Cada camada provê um conjunto de funcionalidades em determinado nível de abstração
 Camadas de mais alta abstração dependem das de mais baixa abstração
Vantagens:
 Separação de responsabilidades
 Decomposição de complexidade
 Maiorreuso e extensibilidade
Desvantagens:
 Pode penalizar o desempenho do sistema
 Aumento do esforço e complexidade de desenvolvimento
Padrões:
Arquitetura em 3 camadas(clássica):
 Camada de apresentação: entrada e saída de dados
 Camada da lógica do negócio: processa comandos, faz avaliações e implementa regras de
negócio.
 Camada de acesso a dados: contém o código responsável por armazenar e recuperar dados de
uma base de dados.
 Normalmente há uma interface(sub-camada) dentro dessa camada, o DAO (Data Acess Objetct),
que abstrai o mecanismo de persistência, facilitando a integração de múltiplas fontes de dados.
Model-View-Controller (MVC):
View (Visão):
 É a camada de interface com o usuário.
 Entrada e saída de dados, apresenta os resultados.
 Pode requerer dados diretamente da camada Modelo
Controle:
 Atualiza o modelo
 Seleciona a visão
 Controla e mapeia as ações do usuário
Modelo:
 Modela os dados e o comportamento por trás das regras de negócio
 Armazena, manipula e gera os dados
Observações:




Nem toda comunicação passa pelo controlador
A visão despacha atualizações para o controlador
O controlador atualiza o modelo
A visão é atualizada diretamente pelo Modelo
Arquitetura MVC na WEB(Model 2)
Prova: A camada Controller geralmente possui um componente controlador padrão criado para atender
a todas as requisições do cliente.
Arquitetura WEB:





Browser utilizadocomocliente universal
Camadas de 3 a N
Em projetos simples podemos ter as camadas WEB e Aplicação no mesmo local.
Quanto mais camadas, maior a flexibilidade.
A lógica de negócio fica no servidor de aplicação.
N Camadas
Testes e Qualidade de Software
Tipos de Manutenção:




Corretiva: posterior ao encontro dos erros na verificação/validação.
Adaptativa: para adaptar-se a mudanças externas.
Melhoria (Perfectiva): para atender a requisições posteriores.
Preventiva (reengenharia): abordagem pró-ativa, foco na melhoria contínua.
Falta: Causa de uma falha, é o defeito / causa raiz.
Erro: instabilidade causada ao tentar processar determinada informação, estado intermediário.
Falha: incapacidade do software de realizar a função requisitada, fato observável.
Prevenção de Faltas:
 Especificaçãorigorosa
 Proteção de hardware
 Ambientes e linguagensapropriados
Tolerância a Falhas:
 Replicação/Redundância
 Isolamento do componentefaltoso
 Hot swapping
Verificação:
 Garantir que o software implementa as funções especificadas. Corretaconstrução do produto.
 Verificações estáticas (inspeções)
 Verificações dinâmicas (testes). Foco mais interno.
Inspeção de Software:









Análise estática dos artefatos do sistema
Checa a conformidade com as funções especificadas
Não checa requisitos não funcionais (desempenho, usabilidade)
Podem ser aplicadas a qualquer artefato do sistema
Podem ser aplicadas antes da implementação, pois não precisam da execução do sistema.
Erros são apenas detectados e nunca corrigidos durante a inspeção
Podem ser manuais e com auxílio de ferramentas CASE
Padrões organizacionais devem ser bem definidos
As equipes devem ser bem informadas e ter acesso a especificações precisas
OBS: Walkthroughs são inspeções informais, rápidas que podem ocorrer a qualquer momento no
desenvolvimento, exigindo uma menor formalidade.
Validação:
 Garantir que o software atende às reais necessidades do cliente. Construção do produtocerto.
 Homologação
 Testes de aceitação (Beta). Foco mais externo, no cliente.
Testes:





O objetivo é encontrar erros. Ocorre sucesso quando encontra um erro não conhecido.
Não garante que está livre de erros, apenas mostra os erros presentes.
Devem ser planejados muito antes da execução, com base nos casos de uso.
Aplica-se o princípio de Pareto, pois testes exaustivos são impossíveis.
Preferencialmente conduzidos por terceiros.
Abordagens:
Caixa preta(funcional): foca nas entradas e saídas especificadas. Técnicas:
 Grafos:
 Toda aplicação é constituída por objetos
 Todos eles são identificados e representados em um grafo.
 Os relacionamentos definidos são utilizados para descobrir comportamentos inesperados.
 Particionamento de equivalências:
 As entradas utilizadas são organizadas em “classes de dados”, válidas e inválidas.
 Casos de teste são gerados através dessas classes.
 Análise de valoreslimítrofes:
 Os testes devem ser gerados com valores limítrofes, pois é sabido que a maioria dos erros
ocorre nos limites do domínio.
 Utilizada em conjunto com o partic. de equiv.
 MatrizOrtogonal:???
Caixa Branca(estrutural): foca nas estruturas internas dos procedimentos do sistema.
 Testes são gerados a partir de uma análise dos caminhos lógicos possíveis de serem executados.
 Objetivos:
 Garantir que todos os caminhos sejam executados pelo menos uma vez.
 Realizar as decisões lógicas para valores falsos e verdadeiros
 Executar laços dentro dos valores limites
 Avaliar as estruturas de dados internas
 Técnicas:
 Testes de caminhos
 Testes de estruturas de controle (if, while...)
 Complexidade ciclomática: nos dá uma idéia do limite superior de caminhos necessários.
Caixa cinza(mista): são testes que utilizam algum conhecimento sobre a estrutura interna.
Estágios(estratégias):
Teste de Unidade(unitáro):
 Os componentes individuais são testados para assegurar sua operação individualmente.
 Componentes precisam possuir a estrutura interna bem conhecida
 Ferramenta mais utilizada: JUnit (Java) Pesquisar depois de ver Java
Teste de Integração:
 Sistemas devem ser integrados gradualmente(boa prática)
 Top-down: desenvolve o esqueleto do sistema e o preenche com os componentes
 Bottom-up: integra os componentes de infraestrutura e depois adiciona componentes
funcionais.
Exemplos:
 Teste de Regressão:
 Execução de baterias de testes já executadas antes, toda vez que um módulo é adicionado
ao sistema.
 Garantir que os módulos anteriores não “quebraram” com a inserção do novo.
 Teste de Fumaça(smoketest):
 Aplicado após cada montagem do produto(build) para verificar funcionalidades básicas.
 Normalmente é o primeiro teste realizado depois de integrar os componentes.
Testes de Aceitação(validação):
 São realizados após os testes de integração
 Finalidade de demonstrar a conformidade com os requisitos de software
 Ambiente deve ser o mais próximo possível do ambiente real.
Teste Alfa:
 Testes conduzidos pelo cliente, nas instalações do desenvolvedor(ambiente controlado)
 Desenvolvedor toma nota dos erros e problemas que ocorrem
Teste Beta:
 Conduzido pelo usuário final, ocorre no ambiente real/de produção.
 O usuário anota os problemas e reporta ao desenvolvedor
Teste de Sistema:
. Conduzidos em um ambiente completo e integrado, por várias pessoas.
. Considera hardware, pessoas, processos, informações e outros sistemas.
Exemplos:
 Teste


 Teste





Qual
de Recuperação:
Força o software a falhar de várias formas e verifica a adequada recuperação.
Recuperação pode ser automática ou manual.
de Segurança:
Tentativas de penetrar no sistema, até penetrar.
O papel do desenvolvedor é assegurar que isto custe mais caro que os ganhos com a
invasão bem sucedida.
Teste de Carga(estresse):
 Visam confrontar programas com situações anormais, de caráter destrutivo, para saber até
onde ele aguenta.
 Pode estressar memória, disco, processamento etc.
Teste de Desempenho:
 Visa garantir que o sistema atenda os níveis de desempenho e tempo acordados.
 Pode ocorrer durante todos os estágios de testes.
Teste de Usabilidade:
 Avalia a facilidade de uso pelo usuário.
a diferença de teste beta x teste de sistema ?
OBS: Verificação e validação podem utilizar as mesmas técnicas, o que muda é apenas o foco, se para
checar problemas com especificações ou se é para checar o atendimento ao propósito do cliente.
Debugging
- É o processo que resulta na remoção de um erro encontrado.
- Envolve formular hipóteses sobre o comportamento do sistema e testar essa hipótese para achar os
erros.
Tipos:
 Força Bruta:espalha no sistema escritas de identificação, mapeando a execução do sistema
 Backtracking: rastreia-se manualmente a partir de onde o erro ocorreu até sua fonte.
 Eliminação de causa: elabora-se uma hipótese de causa, e os dados do erro são utilizados para
provar a hipótese.
Questões
- A metodologia de prototipagem evolutiva é uma abordagem que visualiza o desenvolvimento de
concepções do sistema conforme o andamento do projeto, por meio de protótipos visuais.
- No modelo de desenvolvimento prototipagem, um protótipo é desenvolvido para ajudar no
entendimento dos requisitos do sistema. (descartável)
- O modelo de desenvolvimento em espiral permite repensar o planejamento diversas vezes durante o
desenrolar do projeto.
- O modelo iterativo e o modelo em espiral possuem características semelhantes: ambos permitem que as
atividades do processo sejam planejadas e avaliadas ao longo do ciclo de vida.
- Uma vantagem do ciclo de desenvolvimento iterativo em relação ao ciclo clássico está na receptividade
às mudanças inerentes ao desenvolvimento de software.
- O Scrum é utilizado, como função primária, para o gerenciamento de projetos de desenvolvimento de
software, mas também tem sido usado como extreme programming e outras metodologias de
desenvolvimento. Teoricamente, o Scrum pode ser aplicado em qualquer contexto no qual um grupo de
pessoas necessite trabalhar juntas para atingir um objetivo comum.
- Um princípio chave do Scrum é o reconhecimento de que desafios fundamentalmente empíricos não
podem ser resolvidos com sucesso utilizando-se uma abordagem tradicional de controle. O Scrum adota
uma abordagem empírica, aceitando que o problema não pode ser totalmente entendido ou definido,
focando na maximização da habilidade da equipe de responder de forma ágil aos desafios emergentes.
- A metodologia Scrum é facilitada por um scrum master, que atua como um mediador entre a equipe e
qualquer influência desestabilizadora, além de assegurar que a equipe esteja utilizando corretamente as
práticas de Scrum, motivando e mantendo o foco na meta da sprint.
- Na engenharia de software, um processo iterativo denominado sprint, que segue o ciclo PDCA para
entregar, num período de 30 dias aproximadamente, um incremento do software pronto, caracteriza a
metodologia ágil Scrum.
- O RUP foi projetado em conjunto com a UML e os processos de negócios são modelados usando casos de
uso que, posteriormente, serão desenvolvidos para modelar os requisitos de sistema.
- O processo unificado de software é centrado na arquitetura e orientado por casos de uso, o que sugere
um fluxo de processo iterativo e incremental.
- As atividades fundamentais relacionadas ao processo de construção de um software incluem a
especificação, o desenvolvimento, a validação e a evolução do software.
- Ao contrário do modelo em cascata, no qual as fases coincidem com as atividades do processo, o RUP
compreende as fases de concepção, elaboração, construção e transição.
- O Processo Unificado é iterativo e incremental. Ao final de cada iteração, a qual é um miniprojeto, os
modelos que representam o sistema encontram-se em um determinado estado, denominado baseline. As
atividades de cada fase de um ciclo de vida podem ser distribuídas entre várias iterações.
- No Processo Unificado, atividades são organizadas em fluxos de atividades. Algumas atividades
produzem artefatos, que podem ser de engenharia ou gerenciais. Entre os artefatos criados, há modelos
que visam especificar o sistema a partir de certos pontos de vista e níveis de abstração.
- Uma das principais características do RUP é o uso da iteração, que, por meio de refinamentos
sucessivos, melhora o entendimento do problema.
- No modelo RUP, a primeira linha de base da arquitetura de um software é produzida ao final da fase de
elaboração.
- Na fase de construção, muitos componentes do sistema são implementados, testados e integrados.
Essas atividades, que partem de uma arquitetura definida, validada e implementada em fases anteriores
do ciclo de desenvolvimento, produzem um sistema operacional pronto para ser instalado em um
ambiente em que serão feitos testes beta.
- A manipulação dos riscos está relacionada, na fase de elaboração, a questões técnicas, envolvendo a
arquitetura escolhida.
- A fase de elaboração tem os seguintes objetivos: detalhar casos de uso e requisitos do software; refinar
a arquitetura proposta e demonstrar que essa arquitetura suporta os requisitos do sistema; testar e
avaliar protótipos visando demonstrar que os principais riscos foram avaliados; e construir protótipos
executáveis para a avaliação da arquitetura proposta.
- No RUP, o planejamento de projeto ocorre em dois níveis: planos de fase, que descrevem todo o
projeto; e planos de iteração, que descrevem os passos iterativos.
- Elaboração, no contexto do RUP, é uma fase que visa criar a baseline para a arquitetura do sistema a ser
desenvolvido e, no contexto de engenharia de requisitos, a elaboração consiste em atividade cujo
objetivo é o desenvolvimento de um modelo técnico refinado das funções, características e restrições do
sistema.
- A área de atividade de requisitos de software apresenta maior interface com a engenharia de sistemas
quando comparada à área de análise e projeto de software.
- Requisitos descrevem um acordo ou contrato entre duas partes, especificando, entre outros aspectos, o
que o sistema de software deve fazer para ser aprovado em um teste de aceitação.
- Requisitos funcionais declaram as funções que o sistema deve fornecer, seu comportamento, e ainda, o
que o sistema não deve fazer.
- A etnografia é uma técnica utilizada para a descoberta de requisitos de sistemas de software na qual,
por meio de observações, procura-se compreender os requisitos sociais e organizacionais do ambiente
onde o sistema será usado.
- A descrição dos cenários de uso com informações acerca da utilização do sistema sob diversos pontos de
vista e formas de operação deve fazer parte do levantamento dos requisitos.
- A construção de um modelo de casos de uso é um meio para capturar requisitos funcionais com foco no
valor dos requisitos para os usuários. Um caso de uso especifica uma seqüência de ações que o sistema
pode realizar e que produzem resultados observáveis e de valor para os atores.
- Em um modelo de casos de uso, pode haver diferentes tipos de usuários representados por atores. Além
de tipos de usuários, atores podem representar outros sistemas ou hardwares que interagem com o
sistema a ser desenvolvido. Atores se comunicam com o sistema via casos de uso.
- Revisão de requisitos, prototipação e geração de casos de teste são exemplos de técnicas de validação
de requisitos.
- Uma das formas de resolução de ambigüidades de requisitos consiste em realizar a prototipação de
partes do sistema, antes de se adotar uma solução.
- A rastreabilidade de requisitos é essencial para que o controle de mudanças possa avaliar o impacto de
uma solicitação de Mudança.
- A gerência de requisitos tem como objetivo principal controlar a evolução dos requisitos, seja por
constatação de novas necessidades, seja por constatação de deficiências nos requisitos registrados até o
momento.
- O gerenciamento de requisitos deve compreender e controlar mudanças nos requisitos de sistema, além
de avaliar os seus impactos. Para atingir esse propósito, podem ser mantidas informações de
rastreabilidade a serem usadas para avaliar quais outros requisitos seriam afetados por uma mudança,
bem como o impacto da mudança de requisitos no projeto e na implementação do sistema.
- Um modelo de análise pode realizar casos de uso. A realização de um caso de uso descreve interações
entre objetos. Na UML, essas realizações podem ser documentadas via diagramas de colaboração (v 2.0
=comunicação).
- O conceito de herança possibilita a especialização de comportamentos pré-existentes em classes
ancestrais.
- Uma das desvantagens da herança é a criação de dependência entre as classes envolvidas.
- De acordo com a ideia do encapsulamento, é desejável, do ponto de vista de um objeto, que seus
atributos internos estejam protegidos contra modificações diretas e que o acesso seja realizado por meio
de métodos específicos (setters e getters).
- Polimorfismo está relacionado à vinculação dinâmica de mensagens e sobrescrita de métodos, sendo
que o método correto a ser chamado só será definido em tempo de execução e dependerá do tipo da
instância do objeto referenciado pela mensagem.
- Em um modelo de análise, as classes de fronteira modelam interações entre o sistema e os atores. Cada
classe de fronteira deve estar relacionada a um ou mais atores. Pode-se também ter classes de entidade,
as quais tipicamente modelam dados persistentes.
- Se uma classe criada por meio de herança tiver uma única classe- pai, o processo chama-se herança
simples. Se tiver mais de uma classe- pai, o processo chama-se herança múltipla. Uma classe derivada
pode acrescentar variáveis e métodos, possibilitando que certas operações sejam fornecidas apenas aos
objetos da classe derivada.
- Ao longo do desenvolvimento, artefatos produzidos podem ser revisados, objetivando garantir que os
mesmos apresentem, pelo menos, a qualidade mínima especificada. Não apenas o código, mas também
outros artefatos podem ser revisados. Os defeitos encontrados pelas revisões referem-se à faltas (fault),
enquanto os defeitos encontrados por testes são falhas do software, pois testes avaliam a qualidade
comparando o comportamento esperado com o observado.
- A validação assegura que o produto, como fornecido, irá atender o seu uso pretendido, ou seja, que se
está construindo o produto certo. E a verificação confirma que os produtos de trabalho refletem de forma
apropriada os requisitos que foram especificados, ou seja, que se está construindo o produto
corretamente.
- A diferença entre verificação e validação reside no fato de que a primeira se refere ao conjunto de
atividades que garante que o software realiza corretamente uma função específica, enquanto a segunda
refere-se a um conjunto diferente de atividades que garante que o software que foi construído é
rastreável às exigências do cliente.
- O processo de validação tem por objetivo estabelecer com os clientes confiança quanto ao
funcionamento adequado de um software. Enquanto inspeções de software ou revisões por pares são
consideradas validação estática, o teste consiste em uma técnica dinâmica de validação de software. Os
termos estático ou dinâmico são relativos à necessidade ou não do software ser executado.
- Teste funcional é uma técnica para se projetar casos de teste na qual o programa ou sistema é
considerado uma caixa-preta e, para testá-lo, são fornecidas entradas e avaliadas as saídas geradas.
- Entre os tipos de testes de caixa preta, encontram-se o teste baseado em grafos; o particionamento de
equivalência; a análise de valor-limite; e o teste de matriz ortogonal.
- O aumento na medida de complexidade ciclomática de um programa introduz mudanças significativas
no refinamento de uma abordagem do tipo caixa-branca.
- À medida que avança o nível de integração dos módulos de um software, mais viável se torna a adoção
do método de caixa-preta para desenho do teste de software.
- Para aderência à abordagem de software caixa-branca, podem ser empregados testes de fluxo de
controle e de dados, que não são apoiadores diretos em testes de caixa-preta.
- O teste estrutural é uma estratégia que se baseia na análise da especificação de um programa para
ajudar na seleção de casos de teste.
- A atividade de teste unitário de software é, conforme os modelos de ciclo de vida de software vigentes,
realizada de forma mais eficaz no escopo de implementação e da construção de software - nas quais a
codificação de uma unidade executável de software é feita -, quando comparada à situação em que o
teste unitário é realizado simultaneamente ao teste de integração.
- Os testes de integração verificam se os componentes do sistema funcionam em conjunto, se os
componentes são chamados corretamente e se os componentes transferem dados corretos via suas
interfaces. Nesses testes, os componentes são testados interligados; podem ser necessários drivers e
stubs para simular componentes ainda não implementados; e, em sistemas de software orientados a
objeto, os stubs podem ser classes.
- Há um tipo de teste que vislumbra a “destruição do programa” por meio de sua submissão a
quantidades, frequências ou volumes anormais que é o teste de estresse.
- Ao se inspecionar o conteúdo de um plano de testes, devem-se encontrar, entre outras, as seguintes
descrições: escopo de testes, abordagens de teste, recursos para realização dos testes e cronograma das
atividades de teste a serem realizadas.
Referência Bibliográfica:

Aulas do curso Engenharia de Software do Prof. Fernando Pedrosa 01 a 05

Módulo 01:
http://www.provasdeti.com.br/index.php/por-disciplina/engenharia-de-software/
esw01-para-concursos.html

Módulo 02:
http://www.provasdeti.com.br/index.php/por-disciplina/engenharia-de-software/
esw02-para-concursos.html

Módulo 03:
http://www.provasdeti.com.br/index.php/por-disciplina/engenharia-de-software/
esw03-para-concursos.html

Módulo 04:
http://www.provasdeti.com.br/index.php/por-disciplina/engenharia-de-software/
esw04-para-concursos.html

Módulo 05:
http://www.provasdeti.com.br/index.php/por-disciplina/engenharia-de-software/
esw05-para-concursos.html
Download

Eng. de Soft. Recuperado