Baixe o app para aproveitar ainda mais
Prévia do material em texto
Atributos essenciais de um bom software: 1) Facilidade de Manutenção: O software deve ser escrito de modo que possua evoluir para que possa atender a as necessidades de mudança dos clientes, além disso é um atributo fundamental para um ambiente de negócios que sofre constante mutação (Mudanças no cenário do software). 2) Usabilidade: Condiz que que o software seja usável ou seja, ele deve atender as necessidades do usuário para aquilo que foi projetado, ele deve apresentar uma interface com o usuário e documentação adequada. 3) Eficiência: O software deve cumprir com aquilo que foi projeto, deve ser eficaz em seu serviço, sem demonstrar falhas, além de evitar desperdício de recursos do sistemas, tornando- o eficiente em tempo de resposta. 4) Confiança: Condiz com confiabilidade, proteção e segurança, ou seja um software não deve causar danos físicos e econômicos caso haja falha no sistema. Desafios Para Engenharia de Software 1) Heterogeneidade: Condiz com a adaptação do software para diferentes plataformas e sistemas antigos, para que o software seja confiável e flexível. 2) Entrega: Condizer com datas programadas, ou diminuir tempo de entrega mantendo a qualidade do software, além disso o software de apoio deve acompanhar a velocidade de mudança. 3) Confiança: Condiz com desenvolver técnicas que demonstrem que o software pode ter confiança dos seus usuários, devido a ele estar presente em todos aspectos da nossa vida. Curvas de Falhas: é o índice de falhas ocorridas no software devido a mudanças, a engenharia de software busca controlar a curva de falhas, adaptando a mudanças sem que ocorram muitas falhas, através de análises de risco. Processo: é um conjunto passos parcialmente ordenados, constituídos por atividades, métodos, práticas, e transformações, usado pra atingir uma meta. Artefato: é tudo aquilo que você obtém de resultado após o término de uma atividade, um artefato pode ser um diagrama, modelo, documento, ou código produzido, requisito, o mesmo pode ser utilizado ou atualizado por uma atividade. Liberação (Deliverable): São artefatos entregáveis aos clientes, exemplo: um software, documentação, cronograma de atividades Marcos (Milestone): São marcos dentro do projeto, são pontos de controle que demarcam uma finalização de atividade, são pontos que acontecem dentro do processo de software. Stakeholder: São as partes interessadas no software, exemplo: Gerente de projetos, desenvolvedor, clientes. Métodos de Engenharia de Software: é uma abordagem estruturada para o desenvolvimento de software, com objetivo de facilitar a produção de software de alta qualidade dentro de custos adequados. Componentes de Métodos de Engenharia de Software: Descrição de modelos de sistema: Descreve diversos modelos com diferentes objetivos de software Regras: São regras que vão ser aplicadas aos modelos de software, por exemplo cada entidade deve possuir somente um nome. Recomendações: Recomendações que devem ser seguidas por todos os membros da equipe, são padrões, exemplo: nenhum objeto deve possuir mais que sete sub objetos Guias de Processo: é o caminho que o processo deve seguir até o fim do processo, documentando cada alteração. Atividades que ocorrem durante o desenvolvimento de software: Especificação Desenvolvimento Validação Evolução Requisito: é uma necessidade única que detalhe um produto ou serviço em particular deve ser ou fazer. Viabilidade: decide se o sistema proposto vale a pena, se o sistema contribui para os objetivos da organização, se pode ser implementado com a tecnologia atual e dentro do orçamento, além disso se o sistema pode ser integrado com outros sistemas em operação. Arcabouço de software: é o esqueleto de um processo de software completo, são diversas atividades que compões o arcabouço, são elas: Comunicação: levantamento de requisitos com a colaboração do cliente Planejamento: descreve as tarefas, riscos, os recursos, os produtos e um cronograma Modelagem: criação e modelos que permitam ao desenvolvedor entender melhor o projeto e seus requisitos. Construção: geração de códigos e testes Implantação: entrega do software ao cliente Atividades Guarda-Chuva: São aquelas que cobrem todo o processo de desenvolvimento de software e dão suporte a gestão de qualidade, já que focam, gestão, o monitoramento e o controle do projeto. Também estão contido no arcabouço de processo de software. Exemplos: Gestão do projeto: visa controlar o escopo, custo e tempo Gestão de configuração: estabelecer e manter a integridade dos produtos de trabalho Gestão de qualidade de software: garantir que o software atenda aos atributos de qualidades identificados Ferramentas Case: São ferramentas computacionais que auxiliam a engenharia de software desde a análise de requisitos até a modelagem até programação e testes. Exemplos Editores de projeto, dicionários de dados, compiladores, depuradores, ferramentas de construção de sistemas. Objetivos de processo de software: Alta qualidade e baixo custo. Atividades básicas de um projeto de software: Especificação de requisitos: tradução da necessidade ou requisito operacional para um descrição da funcionalidade a ser executada Projeto de Sistema: tradução dos requisitos em uma descrição de todos os componentes necessários para codificar o sistema. Programação: produção do código que controla o sistema e realiza computação lógica envolvido. Verificação e Integração: verificação da satisfação dos requisitos iniciais pelo produto produzido. Modelos de processos de software: é uma representação abstrata de um processo de software, onde cada modelo representa um processo a partir de uma perspectiva particular. Modelo de ciclo de vida = Modelo de processo Desvantagens de não utilizar um modelo de processo Falta de visibilidade do processo Produtividade subestimada Gerenciamento falho, sem foco Comunicação em segundo plano, equipe desorientada Ciclo de Vida de um processo de software: é o conjunto de transformações que um software sofre desde o planejamento até a implementação. Modelos de Processos De Software: Codifica Remenda: Especificação abstrata ou inexiste - Totalmente desorganizado - Depende do heroísmo da equipe - Não fornece visibilidade que possibilite ao gerente assumir compromissos confiáveis - Qualidade do produto = Qualidade do processo Cascata: Necessita de todos os requisitos para dar andamento ao processo, sua principal característica é a fácil gerência e planejamento, além disso a sequência de atividades onde cada fase transcorre completamente e seus produtos são vistos como entrada para uma nova fase. - Desvantagens: - Dificuldade de acomodar mudanças durante o processo. - Produto somente será entregue após o fim de todos ciclos - Dificuldade de capturar todos requisitos de uma vez - Programadores frequentemente atrasados sem necessidade Evolucionário: Produzir uma implementação inicial, mostrar ao cliente, e aprimorar suas versões através de protótipos até que tenha sido desenvolvido. Especificação, desenvolvimento e validação ocorrem simultaneamente para um retorno rápido. - Desvantagens: - Processo não visível: desenvolvido rapidamente, difícil e gerenciar, além de não ter uma visão final do software, além do tamanho variável de incrementos. - Mal estruturado: mudanças podem corromper a estrutura do software, manutenção e evolução fica comprometida. - Requer ferramentas e técnicas especiais Incremental: Melhora pouco-a-pouco, ou seja, o andamento (incrementar a etapa)do sistema só se dá se os requisito forem satisfeitos, senão eles devem rever suas decisões e partir para uma nova abordagem. Iterativo Incremental: Aumentar pouco-a-pouco, cada fase é incrementada por partes ou seja, cada fase do sistema é criada de forma iterativa, onde os requisitos são separados e a partir daí ele começa de uma base vai melhorando a pouco a pouco até chegar em um modelo final. Vantagens: - Redução dos riscos envolvendo custos com um único incremento - Redução do risco de lançar o projeto no mercado fora da data planejada - Aceleração do tempo de desenvolvimento do projeto - Facilita a adaptação a mudança de requisitos Espiral: Projeto é tratado como uma série de pequenos ciclos, onde cada ciclo produz um executável, onde a cada ciclo também é executada uma análise de riscos Vantagens: - Obtenção de versões mais completas através de cada iteração - Utilização de prototipagem para redução de riscos - Refinamento de versões, refletindo realismo no processo de desenvolvimento. Desvantagens: - Dificuldade de fechar contrato - Modelo novo e não tem sido amplamente usado - Complexo e requer experiência na avaliação de riscos Processo Baseado em Reuso: Condiz em reutilizar partes do projeto através de integrações que podem ser adaptadas, utilizando de análise de componentes, modificações de requisitos. Vantagens: - Reduz a quantidade de software a ser desenvolvido - Diminui Custos e Riscos - Acelera a entrega do software Desvantagens: - Requisitos se perdem durante a adaptação - Pode se perder o controle da versão dos componentes utilizados no sistema. Gerenciamento de projetos: Garantir entrega no tempo certo (dentro do prazo do cronograma) e de acordo com os requisitos, é necessário para manter as restrições de orçamentos e cronograma. Atividades de Gerenciamento: Elaboração de proposta Planejamento e desenvolvimento do cronograma do projeto Estimativa de custo do projeto Monitorações e revisões do projeto Seleção e avaliação de pessoal Elaboração de relatório e apresentações Gerenciamento de Riscos: está relacionado à identificação de riscos e à elaboração de planos para minimizar esses efeitos em um projeto. Riscos No Projeto Afetam cronograma ou recursos Afetam qualidade ou desempenho do software Afetam a organização que desenvolve ou adquire o software Tratamento de Riscos Identificação de riscos: levanta os riscos de projeto, produto ou negócio Análise de riscos: Avalia a probabilidade e as consequências do risco Planejamento de riscos: Elabora planos para evitar ou minimizar efeitos dos riscos Monitoramento de riscos: monitora os riscos ao longo do projeto
Compartilhar