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.
Aula 2 - Processos de Software

Aula 2 - Processos de Software

  • 1.
    Engenharia de Softwarese Gerência de Projetos Prof. Rudson Kiyoshi Souza Carvalho Anhanguera - 2015 Engenharia de Software - Parte 2
  • 2.
    Engenharia de Softwarese Gerência de Projetos.
  • 3.
  • 4.
    O que éum processo de Software?
  • 5.
    • Um processode 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
  • 6.
    Modelos de Processosde 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
  • 8.
  • 10.
  • 11.
    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.
  • 12.
    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
  • 13.
    Problemas Comuns no Modeloem 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).
  • 14.
  • 15.
    Desenvolvimento Incremental • O desenvolvimentoincremental é 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.
  • 16.
  • 17.
    Problemas Comuns no DesenvolvimentoIncremental • 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.
  • 18.
    Engenharia de Software Orientadaa 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.
  • 19.
  • 20.
    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.
  • 21.
    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.
  • 22.
  • 24.
    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
  • 25.
    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
  • 26.
    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.
  • 27.
    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.
  • 28.
  • 29.
    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.
  • 30.
    Estudo de CasoFaz 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.