Aula 2 - Processos de Software

Preview:

Citation preview

Engenharia de Softwares e Gerência de Projetos

Prof. Rudson Kiyoshi Souza Carvalho Anhanguera - 2015

Engenharia de Software - Parte 2

Engenharia de Softwares e Gerência de Projetos.

Processos de Software

O que é um processo de Software?

• Um processo de software é um conjunto de atividades relacionadas que levam à produção de um produto de software. Essas atividades podem envolver o desenvolvimento de software a partir do zero em uma linguagem padrão de programação como C# ou Java.

Processo de Software

Modelos de Processos de Software

• O modelo de um processo de software é uma representação simplificada de um processo de software, e existem vários modelos de processo de software (ou paradigmas de engenharia de software)

Obs. cada uma representa uma tentativa de colocar ordem em uma atividade inerentemente caótica

Modelos de Processos de Software

Modelo em Cascata (Waterfall)

Modelo em Cascata• Popularizado na década de 1970;

• Características:

• Composto por uma sequência de atividades;

• Uma atividade começa a executar quando a outra termina;

• Resultado de uma etapa é utilizado na etapa seguinte;

• Guiado por documentos;

• Ciclo de vida mais antigo e mais utilizado.

Modelo em Cascata• Análise e definição de requisitos

• Objetivos, funções e restrições são definidos, com á ajuda de clientes e usuários, e servem como uma especificação do sistema, indicando o que deve ser implementado.

• Design de sistemas e software

• Envolve a descrição do sistema e do software em termos de unidades abstratas e de suas relações, indicando como o software deve ser implementado.

• Implementação e testes de unidade

• As unidades do software devem ser codificadas e testadas individualmente.

• Integração e testes de sistema

• As unidades são integradas e testadas

• Entrega, operação e manutenção

• O sistema é instalado e colocando em operação. A manutenção envolve a correção de erros e evolução do sistema para atender a novos requisitos.

Engenharia de Software © 2008 Jair C Leite

Problemas Comuns no Modelo em Cascata

• Projetos reais raramente seguem o fluxo sequencial que o modelo propõe;

• ︎ Logo no início é difícil estabelecer explicitamente todos os requisitos. No começo dos projetos sempre existe uma incerteza natural;

• ︎ O cliente deve ter paciência. Uma versão executável do software só fica disponível numa etapa avançada do desenvolvimento (na instalação);

• ︎ Difícil identificação de sistemas legados (não acomoda a engenharia reversa).

Desenvolvimento Incremental

Desenvolvimento Incremental

• O desenvolvimento incremental é baseado na ideia de desenvolver uma implementação inicial, expô-la aos comentários dos usuários e continuar por meio da criação de várias versões até que um sistema adequado seja desenvolvido.

Desenvolvimento Incremental

Problemas Comuns no Desenvolvimento Incremental• Do ponto de vista de gerenciamento, a abordagem

incremental tem dois problemas:

• O processo não é visível. Os gerentes precisam de entregas regulares para mensurar o progresso.

• A estrutura do sistema necessita de diversas refatorações para acomodar as mudanças, e esta tarefa consome tempo e dinheiro.

Engenharia de Software Orientada a Reuso

• Códigos, componentes ou sistemas completos que possuem semelhanças com a implementação desejada são identificados, modificados/adaptados para serem incorporados ao projeto.

Engenharia de Software Orientada a Reúso

Atividades do Processo

• Processos reais de software são intercalados com sequências de atividades técnicas, de colaboração e de gerenciamento, com o intuito de especificar, projetar, implementar e testar um sistema de software.

Especificação do Software

• É o processo de compreensão e definição dos serviços requisitados do sistema e identificação de restrições relativas à operação e ao desenvolvimento do sistema.

Especificação de Software

Projeto e Implementação• É o processo de conversão de uma especificação do sistema

em um sistema executável. Sempre envolve processo de projeto e programação de software, mas, se for usada um abordagem incremental para o desenvolvimento, também pode envolver o refinamento da especificação do software.

• Definição da arquitetura

• Projeto de Interfaces e Componentes

• Modelo de Dados

• Codificação

Validação de Software• Tem a intenção de mostrar que um software se

adequa à suas especificações ao mesmo tempo que satisfaz as especificações do cliente.

• Testes de desenvolvimento

• Testes de sistema (integrado)

• Teste de aceitação

Evolução do Software• Com o decorrer do tempo o software pode mudar,

e o mesmo deverá ser flexível para acomodar futuras mudanças.

Prototipação

• O objetivo é entender os requisitos do usuário e, obter uma melhor definição dos requisitos do sistema.

• Podendo ajudar a validar requisitos e estudar soluções especificas para apoiar o projeto de interface do usuário.

Prototipação

Entrega Incremental• É uma abordagem para desenvolvimento de

software na qual alguns dos incrementos desenvolvidos são entregues ao cliente e implementados para uso em um ambiente operacional.

Estudo de Caso Faz Site

• Atividade individual.

• Para o estudo de caso Faz Site, crie um processo de software que na concepção de vocês garantiriam a entrega do projeto em questão com sucesso.