• Nenhum resultado encontrado

Resumo - Tópicos Avançados de Engenharia de Software

N/A
N/A
Protected

Academic year: 2021

Share "Resumo - Tópicos Avançados de Engenharia de Software"

Copied!
13
0
0

Texto

(1)

ESAB – Pós-graduação em Engenharia de Sistemas Módulo: Tópicos Avançados de Engenharia de Software

RESUMO UNIDADE 1: SWEBOK

Engenharia de Software → área de interesse focada na criação e manutenção de aplicações de software, através de tecnologias e práticas da ciência da computação, gerência de projetos, engenharia, entre outros.

Objetivos do SWEBOK:

• visão consistente da engenharia de software;

• definir as fronteiras entre a engenharia de software e as outras áreas de interesse;

• caracterizar o conteúdo da disciplina de engenharia de software e classificá-la em tópicos; • prover base para desenvolvimento curricular, certificação individual e licenciamento de

material.

SWEBOK está divido em partes, as Áreas de Conhecimento (são dez):

• Requisitos de Software → levantamento, análise e validação para atender a expectativa do cliente;

• Design de Software → transformação de requisitos em termos relevantes ao domínio do problema, explicando como solucionar os aspectos do problema relacionados com o software;

• Construção de Software → codificação, validação inicial e teste unitário;

• Teste de Software → valida o comportamento dinâmico do programa através de casos de teste;

• Manutenção de Software → atividades de suporte (antes e depois) da entrega; • Gerência de Configuração de Software → identifica a configuração do sistema para

controlar suas mudanças e manter sua integridade e rastreabilidade durante o ciclo de vida; • Gerência de Engenharia de Software → cuida dos projetos de desenvolvimento de software; • Processo de Engenharia de Software → define, implementa, mede, gerencia e melhora o

processo;

• Métodos e Ferramentas de Engenharia de Software → para auxiliar e sistematizar o desenvolvimento e manutenção;

• Qualidade de Software → do produto (software) e do processo de desenvolvimento. UNIDADE 2: Estilos arquiteturais importantes da Engenharia de Software

• Arquitetura Centrada nos Dados (Repositório): tem a base central de dados, acessada pelos componentes (clientes e Ks – Knowledge Source) que executam operações nela. Os

componentes não possuem comunicação entre si;

• Arquitetura de Fluxo de Dados: os dados de entrada são transformados através de componentes computacionais em dados de saída;

• Arquitetura de Chamada e Retorno: muito usada na análise estruturada, caracteriza-se por um programa inicial (principal) que chama outros programas (sub-rotinas) em sequência preestabelecida (ao terminar a execução, o controle volta ao programa principal);

• Arquitetura Orientada a Objetos: elementos do sistema (dados e operações) são encapsulados em objetos;

• Arquitetura em Camadas: camada interna possui operações de baixo nível, as camadas intermediárias fornecem serviços. Esta arquitetura possui maior facilidade para reuso.

(2)

UNIDADE 3: Engenharia de Proteção

Foco na implementação de sistemas seguros, mantendo a disponibilidade, confidencialidade e integridade do sistema e seus dados.

Algumas atividades que devem ser observadas: • gerenciamento de usuários e permissões;

• configuração de software e middleware adequada; • atualização regular do software/middleware;

• monitoramento do sistema com planos de contingência;

• arquitetura em camadas com diferentes níveis de proteção para as diferentes camadas do sistema, por exemplo:

• Proteção no Nível de Plataforma (identificação do usuário);

• Proteção no Nível da Aplicação (permissões do usuário dentro da aplicação); • Proteção no Nível de Registro (acesso e operações em registros de dados). UNIDADE 4: Diretrizes para um projeto seguro de software

• Basear as decisões de proteção em uma política explícita (a política define “o que”, não “o como”);

• Evitar um ponto único de falha (evitar ter um mecanismo único de proteção - “defesa em profundidade” - empregando técnicas distintas);

• Falhar de maneira protegida (fail-safe);

• Equilibrar proteção e facilidade de uso (a proteção não pode deixar o sistema excessivamente complexo);

• Tomar cuidado com a Engenharia Social;

• Redundância (mais de uma versão do software e/ou dados) e diversidade(versões diferentes baseadas em plataformas e/ou tecnologias diferentes) para redução de riscos;

• Validar todas as entradas (para evitar entradas inesperadas que causem comportamentos imprevistos);

• Compartilhar os ativos (organizar a informação de modo a fornecer apenas o que o usuário necessita);

• Projetar para implantação (o sistema deve ser configurado corretamente ao ser implantado); • Projetar para capacidade de recuperação (voltar a um estado seguro).

UNIDADE 5: Apresentar aspectos importantes do projeto da interface com usuário

Não é comum contratar especialistas pra desenvolver a interface com usuário, então normalmente os Engenheiros de Software é que tem que lidar com isso.

Tipos de interface:

• entre componentes de software;

• entre o software e outras entidades externas;

• interface entre o ser humano e o computador (IHC), que pode ser: • Interface Gráfica de Usuário (GUI);

• Interface Web de usuário; • Interface de Linha de Comando; • Interface tátil.

Regras de ouro da Interface com usuário: • Coloque o usuário no controle:

• Defina os modos de interação; • Proporcione interação flexível; • Permita a interrupção e o desfazer;

(3)

• Simplifique a interação e permita a personalização; • Esconda detalhes técnicos;

• Faça a interação direta com os objetos na tela. • Reduza a carga de memória do usuário:

• Reduza a necessidade de memória de curto prazo; • Estabeleça defaults significativos;

• Defina atalhos intuitivos;

• Interface análoga ao mundo real; • Revele informações progressivamente . • Faça a interface consistente:

• Situe o usuário dentro do contexto maior; • Mantenha consistência;

• Se modelos anteriores foram significativos p/ os usuários não modificar. O projeto de uma interface de usuário pode ser feito em paralelo com outras atividades de desenvolvimento do projeto e muitas vezes está integrado a ele.

As principais atividades no processo de desenvolvimento de interface:

• Análise de usuário → compreender quais as tarefas que os usuários realizam e como eles as realizam (e como interagem com o sistema);

• Prototipação do sistema → o processo de desenvolvimento de interface é interativo, então é útil o uso de protótipos para validação do usuário;

• Avaliação da interface → além do feedback do usuário, também deve existir uma avaliação formal para coletar informações sobre a experiência do usuário com a interface.

UNIDADE 6: Gerenciamento de Pessoal

O aumento do número de pessoas em uma equipe não se traduz necessariamente em aumento de produtividade (uma solução é dividir a equipe em grupos menores, especializados).

Um problema muito comum é a comunicação entre os membros. As ferramentas atuais (e-mail, chat, conferências, etc) ajudam muito para uma comunicação mais eficiente. A boa comunicação mantém a coesão do grupo e motivação. Os fatores que influenciam a eficiência da comunicação são:

• Tamanho do grupo → em grupos com 7 ou 8 elementos, é provável que algumas pessoas raramente (ou nunca) se comuniquem;

• Estrutura do grupo → membros de grupos estruturados informalmente se comunicam mais do que membros de grupos com estrutura formal e hierárquica (que normalmente se comunicam através dos gerentes);

• Composição do grupo → envolve a personalidade dos membros do grupo, que podem entrar em conflito;

• Ambiente físico de trabalho → organização do local de trabalho tem importância.

Arquiteturas planas e abertas não são populares nem produtivas. Alguns fatores relevantes ao ambiente físico de trabalho (estudo de McCue – 1978):

• Privacidade → programadores rendem melhor em ambientes fechados; • Consciência externa → pessoas preferem luz natural e com visão do exterior; • Personalização → poder personalizar seu ambiente de trabalho de acordo com as

práticas individuais é importante.

Gerente de projeto → deve motivar membros de sua equipe. As necessidades que tem importância na motivação são: necessidade de satisfação social, autoestima e autorrealização.

(4)

UNIDADE 7: Modelos de Gerenciamento de Pessoal

• Modelo de Maturidade de Capacitação de Pessoal (P-Cmm) → é um framework de

aprimoramento para a maneira pela qual uma organização gerencia seu patrimônio humano (estabelece a necessidade de reconhecer a importância das pessoas – motivação,

reconhecimento, padronização e aprimoramento de boas práticas). É um modelo de 5 níveis (assim como o CMM):

1. Inicial → práticas de gestão de pessoas inconsistentes;

2. Gerenciado → gestores gerenciam e desenvolvem seu pessoal;

3. Definido → Desenvolvimento das competências alinhadas aos objetivos e estratégias do negócio;

4. Previsível → gestão quantitativa do desempenho;

5. Em otimização → evolução da capacidade da organização e sua força de trabalho. • PSP – Personal Software Process → focado em engenheiros de software individuais. Foi desenvolvido para guiar como planejar e desenvolver módulos de software (ou pequenas aplicações). Ele favorece a organização na medida em que melhora o trabalho individual. Objetivos principais:

• Melhorar as estimativas;

• Melhorar o planejamento e acompanhamento dos cronogramas; • Proteger contra o excesso de compromissos;

• Criar um comprometimento pessoal para a qualidade;

• Envolvimento contínuo do engenheiro na melhoria contínua do processo;

Estudos mostraram que a implantação do PSP melhorou em 75% a estimativa de esforço, em 150% a estimativa de tamanho (diminuiu a tendência de subestimar estes itens); além disso, a qualidade do produto melhorou sem impactos no trabalho individual (ou seja, houve aumento de

produtividade).

UNIDADE 8: Gerenciamento da Qualidade

Apresenta a importância da qualidade do software (e como tem ganhado destaque nos últimos 15 anos). Alguns problemas envolvidos neste tema:

• embora a especificação seja orientada para o que o cliente deseja, a organização pode ter seus próprios requisitos (ex. Facilidade de manutenção), não incluídos na especificação; • nem sempre sabemos especificar características de qualidade de forma não-ambígua; • é difícil descrever completamente as características do software.

O SWEBOK trata da Qualidade do Software, dividindo-a em 3 tópicos: 1 Fundamentos da Qualidade de Software

1.1 Cultura ética de Engenharia de Software 1.2 Valores e Custos da Qualidade

1.3 Modelos e Características de Qualidade 1.4 Melhoria de Qualidade

2 Gerência do Processo de Qualidade de Software 2.1 Garantia de Qualidade de Software 2.2 Verificação e Validação

2.3 Revisões e Auditorias 3 Considerações Práticas

3.1 Requisitos de Qualidade para Aplicações 3.2 Caracterização de Defeitos

(5)

3.3 Técnicas de Gerência de Qualidade de Software 3.4 Medidas de Qualidade de Software

*sistemas menores podem adotar uma abordagem mais informal.

Atividades principais de gerenciamento de qualidade de software para sistemas maiores:

• Garantia da Qualidade → estabelecer framework de procedimentos e padrões que conduzem a um software de qualidade;

• Planejamento de Qualidade → seleção de procedimentos e padrões do framework aplicáveis a um projeto específico;

• Controle da Qualidade → definição e aprovação de processos que assegurem que a equipe de desenvolvimento tenha seguido os procedimentos adotados.

Tipos de padrões que são parte do processo de Garantia da Qualidade:

• Padrões de Produto → se aplicam especificamente ao software, padrões de documentação (requisitos, definição de classes), codificação;

• Padrões de Processo → processos que devem ser seguidos durante o desenvolvimento de software (especificação, projeto e validação), com a descrição dos documentos que devem ser escritos ao longo do processo.

UNIDADE 9: Padrão de Qualidade – ISO 9000

Estabelece princípios de qualidade aplicáveis a quaisquer organizações, e pode ser usado para software. Descreve os aspectos do processo de qualidade, padrões e procedimentos organizacionais que a empresa deve definir.

Indica que a empresa definiu processos que ela julga necessários para assegurar a qualidade de seu produto e seguiu estes processos para a construção do produto.

Padrões de documentação:

• Padrões de Processo de Documentação: definem o processo a ser seguido para a produção de documentos;

• Padrões de Documentos: estrutura e apresentação física dos documentos;

• Padrões de Intercâmbio de documentos: asseguram que as cópias eletrônicas de documentos sejam compatíveis.

UNIDADE 10: Desenvolvimento de Sistemas Críticos

Sistemas dito críticos são sistemas que necessitam de um altíssimo grau de confiabilidade. Algumas abordagens que seguem nesta direção (para desenvolvimento de software) são:

• Prevenção de defeitos → o processo de projeto e implementação deve contemplar técnicas que minimizem o número de defeitos de um programa;

• Detecção de Defeitos → processos de verificação e validação são projetados para descobrir e remover defeitos antes da implantação do sistema;

• Tolerância a Defeitos → sistema deve ser projetado de forma que os defeitos ou

comportamentos inesperados do sistema em execução, sejam detectados e tratados para que a falha do sistema não ocorra.

Alguns detalhes adicionais sobre confiabilidade:

• redundância → para recuperação rápida em caso de falha;

• diversidade → voltado à segurança, variedade de mecanismos de proteção.

(6)

projetos, que devem ser bem rigorosos para minimizar isso), então podem ser adotados dependendo do caso, pela empresa.

UNIDADE 11: Desenvolvimento de Sistemas Críticos (continuação) Práticas que visam diminuir os defeitos em sistemas de software:

• Processos confiáveis → com atividades de validação e verificação apropriadas; • Gerenciamento de Qualidade → padrões de desenvolvimento e projeto devem ser

estabelecidos, bem como procedimentos para verificação se os padrões foram seguidos; • Especificação formal e precisa → evita interpretação errada (no caso de uma especificação

ambígua);

• Verificação Estática → uso de analisadores para encontrar possíveis problemas no código; • Tipagem forte → em geral, as linguagens mais usadas já possuem esta característica;

• Programação Segura → evitar construções muito complexas (mais sujeitas a erros), sempre que possível;

• Informações Protegidas → encapsulamento, uso de interfaces, basicamente proteção a processos internos dos elementos de software.

UNIDADE 12: Tolerância a Defeitos

Embora a “programação defensiva” (ações de verificação e recuperação de software) seja uma prática recomendada, ela não resolve todos os problemas.

Em sistemas críticos, é necessária uma arquitetura de hardware específica, projetada para ter tolerância a defeitos, normalmente com o uso de redundância (um exemplo é a Redundância Modular Tripla – 3 ou mais saídas de um módulo passam por um comparador que descarta um valor se estiver diferente dos demais, retirando a unidade de serviço, se necessário).

*a abordagem de tolerância a defeitos se baseia na premissa de que a maioria das falhas ocorre por defeitos em componentes ao invés de ser um problema de projeto. Com todas as unidades operando de acordo com a especificação, há baixa probabilidade de falha simultânea em componentes de todas as unidades de hardware.

Componentes projetados e desenvolvidos por equipes e fábricas diferentes, dentro de uma especificação comum, também reduz a probabilidade de falha simultânea (mais difícil que duas equipes diferentes cometam os mesmos erros).

Abordagens para tolerância a defeitos de software:

• Programação em N-Versões → a partir de uma especificação comum, um software é desenvolvido em N-Versões em paralelo, por equipes diferentes. As saídas são comparadas em sistema de votação, rejeitando saídas inconsistentes. Devem ser produzidas ao menos 3 versões de sistema. Exemplos de uso: Sinalização de ferrovias, sistemas de aviação e sistemas de proteção de reatores;

• Blocos de Recuperação → cada componente inclui um teste para verificar sucesso de execução e também um código alternativo para permitir que o sistema repita o

processamento se o teste detectar uma falha (interpretações diferentes de uma mesma especificação).

UNIDADE 13: Estratégias de Teste de Software

Deve ser flexível o suficiente para promover uma abordagem do software sob medida, porém rígida o suficiente para promover planejamento e acompanhamento gerencial ao longo do projeto.

(7)

Conflito de interesses → desenvolvedor testar o próprio software (quer mostrar sempre resultados positivos).

• Desenvolvedor → testes de unidade e de integração;

• Grupo Independente de Teste (ITG) → faz a homologação, realizando testes de sistema, evitando o conflito de interesses (justamente por ser independente).

• Usuários fazem testes alfa e beta.

Preferencialmente, membros do ITG devem fazer parte da equipe de desenvolvimento mas não devem se envolver no processo de desenvolvimento e também devem conhecer o domínio do negócio (o ITG pode pertencer à equipe de garantia de qualidade de software).

UNIDADE 14: Espiral de testes de Software

Representa a estratégia de teste de software, partindo dos elementos menores até o sistema completo:

• Teste de Unidade → Teste de Integração → Teste de Validação → Teste de Sistema • Teste de Unidade → se concentra em componente de software (na implementação); • Teste de Integração → foco no projeto e na construção da arquitetura de software; • Teste de Validação → valida os requisitos estabelecidos em contraste com o que foi

entregue;

• Teste de Sistema → verificação geral do software e dos outros elementos do sistema. * essencialmente, teste de software orientado a objetos segue a filosofia aplicada a arquiteturas convencionais (difere um pouco na abordagem, como será visto mais adiante).

UNIDADE 15: Testes de caixa-preta e Caixa-branca

• Teste de caixa-preta: testes conduzidos na interface do sistema (teste funcional). Examina aspectos fundamentais do sistema, sem preocupação com a estrutura interna dele;

• Teste de caixa-branca: exame rigoroso dos detalhes de procedimentos e caminhos lógicos internos do software e colaborações entre componentes (teste estrutural).

Testes de caixa-preta são recomendados para poder testar a interface do sistema, aplicável em qualquer fase de testes.

Testes de caixa-branca devem ser realizados para um número limitado de caminhos lógicos importantes dentro do sistema, e normalmente se aplica às fases de Teste de Unidade e Teste de Integração.

Esta abordagem está sendo modificada para as 3 técnicas abaixo:

• Baseadas em especificação → casos de teste derivados de modelos formais ou informais que são utilizados na especificação do problema;

• Baseadas em estrutura → casos de teste são derivados de informações sobre como o software foi construído (p.ex. Código e modelagem);

• Baseadas em experiência → casos de teste são derivados da experiência e conhecimento de pessoas sobre efeitos prováveis, uso e ambiente do sistema.

UNIDADE 16: Teste orientado a objetos

Em função da arquitetura de software orientada a objetos produzir subsistemas de elementos que colaboram entre si, um teste orientado a objetos começa com a análise e revisão dos modelos. A seguir, uma série de testes são projetados para validar as operações de classes e examinar erros

(8)

nas colaborações entre as classes.

Testes baseados em uso são realizados quando as classes são integradas para formar um subsistema e casos de uso são usados para descobrir erros no nível de validação do software.

A metodologia de teste de caixa-preta pode ser aplicada sem problemas (o teste de caixa-branca não é tão eficiente neste caso, e pode ser substituído pelos testes no nível de classe).

Teste baseado em erro: o testador procura por erros plausíveis, ou seja, aspectos da implementação do sistema que podem resultar em defeitos. Depende do conhecimento dos testadores em definir o que é um erro plausível (se os modelos de análise e projeto puderem fornecer conhecimento mais aprofundado do que é provável dar errado, essa abordagem torna-se bastante eficiente). Neste contexto, 3 tipos de erro podem ser encontrados:

• Resultado inesperado;

• Uso da operação/mensagem errada; • Invocação incorreta.

UNIDADE 17: Projeto de Software de Tempo Real

Sistemas de Tempo Real (STR) → sistema de software cujo funcionamento depende dos resultados produzidos pelo sistema e do tempo em que estes resultados são produzidos.

Categorias:

• Leve (Classe A) → é aquele cuja operação será degradada caso os resultados não sejam produzidos de acordo com o timing especificado (o tempo de resposta variável é

admissível);

• Rígido (Classe B) → a operação será incorreta se os resultados não estiverem de acordo com a especificação de timing (a resposta deve ser fornecida num tempo finito e especificado). STR → necessita de mecanismos de gerenciamento de atividades, que as classifica de acordo com a prioridade.

Sistemas Operacionais de Tempo Real (RTOS) → usado em sistemas embutidos (embedded), dedicados a tarefas específicas. Enquanto um Sistema Operacional tradicional controla o sistema na inicialização e o lançamento das aplicações, além de ter um certo controle de segurança para erros de aplicativos, em RTOSs a aplicação é geralmente 'likeditada' junto com o sistema operacional e lançada na inicialização; e geralmente, RTOSs não verificam erros de aplicação.

Microcontrolador → usados em sistemas para propósitos específicos;

Microprocessador → usado em computadores de propósito geral, fazendo uso em alguns casos dos microcontroladores;

UNIDADE 18: Engenharia de Software Orientada a Serviços

SOA (Service-Oriented Architectures) → voltados ao desenvolvimento de sistemas distribuídos onde os componentes do sistema são serviços dedicados, que podem ser executados em

computadores diferentes, apoiados em protocolos padronizados para troca de comunicação e informações.

Serviço → componente de software reusável, não firmemente acoplável, que engloba funcionalidade discreta que pode ser distribuída e acessada por meio de programas (p. ex. WebService).

O processo exige que os provedores de serviços registrem informações em um registro central para que os clientes possam determinar quais serviços são necessários a cada caso e utilizá-los a partir de

(9)

um contrato de serviço.

Principais padrões de arquitetura orientada a serviços:

• SOAP (Simple Object Access Protocol) → padrão de troca de mensagens que dá suporte à comunicação entre serviços (define componentes principais e opcionais das mensagens); • WSDL (Web Service Definition Language) → estabelece o meio pelo qual os provedores de

serviços devem definir a interface do serviço;

• UDDI (Universal Description, Discovery and Integration) → define os componentes de uma especificação de serviços, usada para descobrir a existência de um serviço (incluem

informações sobre o provedor de serviços, serviços fornecidos, a localização da descrição desses serviços.

UNIDADE 19: Engenharia de Serviços

É o processo de desenvolvimento para reuso nas aplicações orientadas a serviços.

Serviço → abstração reusável, portanto o projeto tem que ser robusto, confiável e interoperável. Estágios no processo de engenharia de serviços:

• identificação do serviço candidato → possíveis serviços que poderiam ser implementados e seus requisitos (devem complementar os processos de negócio, logo, estes precisam ser compreendidos para apoiar o projeto dos serviços) ;

• projeto do serviço → lógica e interfaces WSDL; • implementação e implantação do serviço. Tipos de serviços:

• Serviço de Utilidades → funcionalidades gerais que podem ser usadas por diferentes processos de negócio;

• Serviço de Negócios → associados com uma função específica do negócio;

• Serviço de Coordenação ou de Processo → apoiam processos de negócio mais gerais que envolvem diferentes atores e atividades.

Projeto de Interface do Serviço → interface lógica (operações) + estrutura das mensagens enviadas e recebidas + WSDL.

Implementação e implantação do serviço → codificação e disponibilização do serviço no Servidor Web (para tornar o serviço público deve ser feita uma descrição UDDI).

Informações básicas da UDDI:

• Detalhes dos negócios que fornecem o serviço → confiabilidade (usuário pode verificar as credenciais do provedor);

• Descrição informal das funcionalidades do serviço;

• Informações sobre a localização da especificação WSDL associada ao serviço; • Informações de assinatura → para obter atualizações de serviços.

UNIDADE 20: Desenvolvimento de Software Orientado a Aspectos

AOSD (Aspect Oriented Software Development) → abordagem com a intenção de resolver problemas de reuso de componentes, criando um novo tipo de abstração (o aspecto).

Essa abordagem permite a separação de assuntos em elementos diferentes ao invés de manter tudo na mesma abstração lógica.

É uma forma de tornar alguns elementos mais 'especializados' e melhorar a granularidade do programa. Mas, pra fazer sentido, o assunto tem que ser algo de interesse dos stakeholders (ou seja,

(10)

tem que ter vínculo com o mundo real).

Os assuntos de stakeholders podem ser agrupados: • Funcionais → funcionalidade específica;

• Qualidade de Serviço → relacionados ao ambiente funcional do sistema ( desempenho, confiabilidade e disponibilidade);

• Política → são as políticas gerais que governam o uso do sistema (proteção, segurança e assuntos relacionados às regras de negócio);

• Sistema → relacionados aos atributos do sistema como um todo ao invés de requisitos individuais, facilidade de manutenção e configuração;

• Organizacionais → dizem respeito à organização (produção de sistema dentro do orçamento, uso de ativos ou manutenção da reputação da empresa);

UNIDADE 21: Engenharia de Software com Aspectos

Adotar uma abordagem orientada a aspectos → conceito de separação em assuntos como base para analisar requisitos.

Identificar e modelar assuntos → parte do processo de requisitos e projeto.

Exemplo em UML (p.94) → um sistema central que atende aos requisitos gerais, com extensões que atender a assuntos adicionais dos stakeholders, que devem ser integrados ao sistema central.

Tipos de extensões derivadas (em função dos assuntos):

• Extensões Funcionais Secundárias → adicionam capacidades funcionais para funcionalidades fornecidas no Sistema Central;

• Extensões de Políticas → adicionam capacidades funcionais para apoiar políticas organizacionais (p.ex. Características de proteção);

• Extensões de QoS (Quality of Service) → adicionam capacidades funcionais para atender requisitos de qualidade de serviço especificadas para o sistema;

• Extensões de Infraestrutura → adicionam capacidades funcionais para dar suporte a implementação de alguma plataforma específica.

*aspectos são um meio para implementar extensões. UNIDADE 22: Estimativa de Custo de Software

Exige experiência, dados históricos (métricas) e previsões quantitativas. Estimativas possuem riscos inerentes (incertezas).

Apesar do risco e incerteza, é um processo importante para o projeto e deve ser feito, apoiado em algumas técnicas e ferramentas já existentes.

Históricos de atividades anteriores são muito úteis para dar maior segurança às estimativas. Variabilidade nos requisitos → instabilidade no custo e no cronograma.

Escopo mal entendido ou requisitos sujeitos à mudanças → incerteza e riscos aumentam. Tarefas para o planejamento de projeto quanto às estimativas de custo:

• Estabelecer o escopo; • Determinar a viabilidade; • Analisar riscos;

• Definir recursos necessários (humanos, software e ambiente); • Estimar custo e esforço;

(11)

UNIDADE 23: Métricas para pequenas organizações

Medição → ferramenta de gestão e apoio ao gerente de projetos. Pode ser aplicada para: • caracterizar esforço como referência para futuros projetos;

• determinar o status do projeto em relação ao planejamento; • previsões (de processos, relacionamentos

Possuir métricas é essencial para qualquer organização, porém deve ser simples, ajustada as necessidades locais e tem que possuir valor.

A seguir cita um exemplo (p.102-103).

Orientações do SEI (Software Engineering Institute) para um programa de métricas: • identificar as metas do negócio;

• identificar o que precisa conhecer ou aprender; • identificar submetas;

• identificar entradas e atributos relacionados as submetas; • formalizar as metas de medição;

• identificar perguntas e indicadores desejados; • identificar elementos de dados requeridos;

• definir as medidas a serem feitas e operacionalizá-las;

• identificar as ações a serem tomadas para implementar as medidas; • montar um plano para implementar as medições.

UNIDADE 24: Estimativa de Projeto de Software (Custo e Esforço) Boas práticas:

• adiar estimativas até que o projeto esteja mais adiantado; • basear-se em projetos semelhantes;

• usar técnicas de decomposição simples para gerar estimativas de custo e esforço; • usar modelos empíricos para estimativas.

Tamanho do software pode ser estimado usando técnicas como “Linhas de Código” (LOC) ou “Pontos de Função” (FP). A técnica FP pode ser usada a partir dos requisitos (e é melhor do que a LOC).

Estimativas a partir de Casos de Uso não é simples porque: • Casos de uso não possuem estilo formal;

• representam a visão de usuário (externa) do sistema, descrita em diferentes níveis de abstração;

• não tratam da complexidade das funções descritas e nem descrevem comportamentos complexos.

Podem ser usados modelos empíricos e estimativas a partir de regressão de dados coletados em sistemas anteriores.

UNIDADE 25: Modelos de Estimativa de Software - Cocomo II

COCOMO (Constructive Cost Model) → hierarquia de modelos de estimativa de software, que busca medir esforço, prazo, tamanho de equipe e custo necessário para desenvolvimento. Ele fornece suporte para as etapas de planejamento, preparação do projeto, negociação de contratos, avaliação de propostas e recursos (tecnológicos e humanos).

(12)

É necessário ter uma estimativa de tamanho do software. Modelos que o COCOMO contempla:

• Composição da Aplicação → nos primeiros estágios da Engenharia de Software

(prototipagem de interfaces com usuário, avaliação de desempenho e análise da maturidade tecnológica);

• Primeiro Estágio do Projeto → após a estabilização dos requisitos e a definição da arquitetura básica do software;

• Pós-arquitetura → durante a construção do software

Opções de dimensionamento de software que podem ser utilizadas pelo COCOMO: • Pontos por objeto;

• Pontos por função; • Linhas de código fonte.

O COCOMO II estima custo e tempo em pessoas/mês e meses, para determinação de um baseline (já com 20% de adicional como margem de erro).

UNIDADE 26: Engenharia de Software para Web Características de aplicações Web:

• Concentração em Redes → internet, intranet ou extranet; • Concorrência → muitos usuários (acessos);

• Carga imprevisível → escalabilidade; • Tempo de resposta → é um fator relevante; • Disponibilidade → serviço deve estar online;

• Orientada a dados → foco em Banco de Dados (geralmente); • Sensível ao Conteúdo;

• Evolução contínua;

• Imediatismo → aplicações devem ser disponibilizadas aos usuários muito rapidamente; • Segurança;

• Estética/Aparência;

UNIDADE 27: Engenharia de Software para Web (WebE) – Metodologia Modelo de processo tem 3 características principais:

• Entrega incremental; • Modificações contínuas; • Cronogramas curtos.

O que deve ser considerado no projeto WebE?

• A importância da página principal do site (se contém informação útil ou apenas uma lista de links);

• Layout de página efetivo;

• Opções de mídia com maior impacto (gráficos, texto, vídeo, áudio) e quando aplicar cada um;

• Qual o trabalho que o usuário está disposto a fazer (quantos cliques);

• A complexidade de formulários de entrada sem que se tornem desagradáveis aos usuários; • Importância dos recursos de busca;

(13)

UNIDADE 28: Engenharia de Software para Web - Oohdm

Object Oriented Hypermedia Design Method → metodologia para desenvolvimento

de aplicações Web, cujas particularidades (navegação, interface e implementação) e complexidade crescente, apresentam requisitos próprios que as técnicas tradicionais de Engenharia de Software não são adequadas a resolver.

Possui 4 atividades diferentes:

• Modelo conceitual → semântica do domínio da aplicação;

• Projeto de Navegação → leva em conta perfil de usuário e tarefas a serem executadas (ênfase em aspectos cognitivos);

• Projeto da Interface Abstrata → modela objetos perceptíveis, implementa metáforas escolhidas e descreve interface para objetos navegacionais;

• Implementação → projeto deve ser mapeado para artefatos de implementação.

*p.124 tem uma tabela entre as 4 atividades e as saídas a serem produzidas em cada uma delas. A vantagem é introduzir à WebE um formalismo análogo as técnicas tradicionais de Engenharia de Software, que permitem controle do projeto, robustez, reuso e outros.

UNIDADE 29: Planejamento de projetos baseados em Web

Projetos de tamanho pequeno ou médio (menos de 5 meses) → abordagem ágil: • entender o escopo, dimensões das modificações e restrições do projeto; • definir estratégia de plano incremental;

• realizar análise de risco (risco de cronograma e tecnologia); • desenvolver rápida estimativa (tópicos macro);

• descrever o processo (um conjunto de tarefas significativas);

• estabelecer um cronograma para tarefas de curto prazo com granularidade fina e para tarefas dos incrementos com granularidade grossa;

• definir mecanismos de acompanhamento do projeto (entregas, quantos casos de uso foram implementados e quantos faltam, etc);

• estabelecer abordagem de modificação (definir em qual iteração é melhor introduzir a modificação).

UNIDADE 30: Ferramentas de Software para Gestão de Projetos Web

Objetivos das ferramentas → estabelecer tarefas, atribuir esforço e responsabilidade para cada uma, criar as dependências entre tarefas, definir o cronograma e acompanhamento e controle do projeto. Exemplo: Business Engine, iTeamWork (livre), OutProject, Proj-Net, StarWright.

Referências

Documentos relacionados

As propriedades determinadas foram as seguintes: a densidade; b retração radial total; c retração tangencial total; d resistência à compressão paralela às fibras; e resistência

ETAPAS DO PLANEJAMENTO DE UMA CAMPANHA PARA CRIANÇAS, ONDE O DESENHO COESO DO GRAFISMO É FATOR LATENTE... ESPECIALIDADE

A frase inteiramente correta, considerando-se a colocação ou a ausência do sinal de crase, é: (A) Brigas entre torcidas de times rivais se iniciam sempre com provocações

De acordo com o modelo apresentado, em ossos sintéticos, a comparação da fixação da articulação sacroilíaca com dois parafusos iliossacrais no corpo de S1 e as duas

4.5.22Em condomínios com mais de uma edificação de múltiplas unidades consumidoras com as edificações instaladas sobre lajes, a rede de distribuição instalada na área

A origem do nome Açaí é que nós justamente tivemos o trabalho né, foi o processo foi feito com o SEBRAE né, foi dado as aulas pra nós, aí então, lá no curso ela pediu pra

A função gerente de obras torna-se cada vez mais necessária na construção civil, pois o setor está cada vez mais desenvolvendo e aprimorando a área de coordenação

Na Nova Zelândia em sistemas pastoris as vacas produzem em média 17 litros de leite ao dia, enquanto nos produtores analisados neste estudo a média de