Engenharia de Software na Prática

Engenharia de Software na Prática Esgotado
× Engenharia de Software na Prática

Engenharia de Software na Prática

Compartilhar

Autor: Hélio Engholm Jr.

ISBN impresso: 978-85-7522-217-1
Ano: 2010
Páginas: 440
Preço: R$ 82,00

10 opiniões | Opine sobre este livro

Descrição do livro

A cada dia, mais profissionais e empresas estão interessados em desenvolver softwares com qualidade, menores custos de manutenção e dentro dos prazos previstos. Com essa intenção, tais profissionais e empresas necessitam adquirir maturidade no ciclo de desenvolvimento do software e utilizar Engenharia de Software.

Este livro ensina como utilizar disciplinas do CMMi integrado a Engenharia de Software em todo o ciclo de desenvolvimento de software. Por meio de estudo de caso de comércio eletrônico e partindo de solicitação da área de negócio, o leitor será levado por todo o ciclo de vida do projeto, percorrendo vários processos necessários para certificação CMMi. No estudo de caso, apresenta uma série de templates que podem ser utilizados em projetos da vida real.

Destina-se a profissionais, estudantes e professores interessados em aumentar sua competência como profissionais da área de Tecnologia da Informação relacionada ao desenvolvimento de software, aprendendo na prática conceitos prescritos na Engenharia de Software, para produzir soluções elegantes, compartilhar ideias e tomar decisões por meio de um ciclo completo de projeto e desenvolvimento. Pode ser de utilidade às empresas interessadas em implementar em sua metodologia de desenvolvimento de software processos e melhores práticas de mercado, alinhados ao modelo de maturidade CMMi desenvolvido pelo SEI.

O que este livro aborda:

- Processos de desenvolvimento de software
- Gerenciamento e engenharia de requisitos
- Gerenciamento de mudanças
- Gerenciamento de riscos
- Gerenciamento de qualidade
- Gerenciamento de configuração
- Processos de análise, arquitetura e design de software
- Processos de construção, testes de software e implantação
- Tecnologia orientada a objetos
- Templates para utilização em projetos
- Análise e design orientado a objetos com UML

Ver menos ▲

Sumário

  • Agradecimentos
  • Sobre o autor
  • Prefácio
  • Capítulo 1 ■ Desenvolvimento de software para o valor de negócios
    • 1.1 Qualidade na construção de software
    • 1.2 A armadilha
    • 1.3 Valor da tecnologia da informação
      • 1.3.1 Gerenciando TI para o valor de negócio
      • 1.3.2 Metodologia do Índice de Valor de Negócio
    • 1.4 Relações entre o ciclo de vida do projeto e o ciclo de vida do produto
      • 1.4.1 Relação entre o produto e os ciclos de vida do projeto
      • 1.4.2 Competências e capacidade
      • 1.4.3 Valor de TI
      • 1.4.4 Gerenciamento de TI
      • 1.4.5 Estratégias para redução de custos
    • 1.5 Custo total de propriedade
    • 1.6 Valor do investimento em software
      • 1.6.1 Defesa da realização de um investimento em TI
    • 1.7 Processo de manutenção de software
      • 1.7.1 Introdução
      • 1.7.2 Tipos de manutenção
      • 1.7.3 Custo da manutenção
    • 1.8 Crise do legado
      • 1.8.1 Custo proporcional relacionado à manutenção de software
      • 1.8.2 Custo absoluto relativo à manutenção de software
      • 1.8.3 Tipos de manutenção
    • 1.9 Crise do software
    • 1.10 Problemas, expectativas e metas relacionados a software
      • 1.10.1 O problema
      • 1.10.2 Expectativas
    • 1.11 Engenharia de software
      • 1.11.1 Definição de engenharia de software
      • 1.11.2 Áreas de conhecimento
        • Objetos (POO)
      • 1.11.4 Modelos de maturidade
      • 1.11.5 Áreas de processo
    • 1.12 O CMM e o processo de desenvolvimento de software
    • 1.13 Por que utilizar engenharia de software?
  • Capítulo 2 ■ Processos de desenvolvimento de software
    • 2.1 Definições relacionadas a processo
      • 2.1.1 Definição de processo
      • 2.1.2 Vantagens da utilização de processo definido
    • 2.2 Definição de processos para desenvolvimento de sistemas
      • 2.2.1 Processo de atendimento a demandas
      • 2.2.2 Demanda de atendimento
      • 2.2.3 Estudo de caso
    • 2.3 Ciclo do projeto de software
      • 2.3.1 Avaliação técnica do projeto
      • 2.3.2 Métricas de software
      • 2.3.3 Análise de Pontos de Função
      • 2.3.4 Avaliação técnica do projeto na prática
    • 2.4 Processo de desenvolvimento de software orientado a objetos
      • 2.4.1 Introdução
      • 2.4.2 Processos do desenvolvimento de software orientado a objetos
      • 2.4.3 Cascata
      • 2.4.4 Custo da descoberta do erro
      • 2.4.5 Processo unificado de desenvolvimento de software
      • 2.4.6 Fases do processo RUP
      • 2.4.7 Procedimentos na utilização do RUP
  • Capítulo 3 ■ Roteiro de desenvolvimento de software orientado a objetos
    • 3.1 Workflows do processo de desenvolvimento de software orientado a objetos
    • 3.2 Papéis dos envolvidos no projeto
    • 3.3 UML e o ciclo de desenvolvimento de software
    • 3.4 Requisitos funcionais e não funcionais
    • 3.5 Elicitação de requisitos
      • 3.5.1 Elicitar requisitos em alto nível
      • 3.5.2 Elicitação de requisitos funcionais e não funcionais
      • 3.5.3 Identificação de riscos e restrições
      • 3.5.4 Refinamento de requisitos
      • 3.5.5 Aprovação de requisitos
      • 3.5.6 Criar matriz de rastreabilidade
      • 3.5.7 Atualização do glossário do projeto
      • 3.5.8 Criação de diagrama inicial de casos de uso
    • 3.6 Fase de análise de requisitos
      • 3.6.1 Análise baseada em casos de uso
      • 3.6.2 Modelo de análise orientada a objetos
      • 3.6.3 Passos da análise orientada a objetos
    • 3.7 Processo de análise
      • 3.7.1 Analisar cenários de caso de uso
      • 3.7.2 Refinamento de diagramas de caso de uso
      • 3.7.3 Definição de diagramas de atividade para os casos de uso
    • 3.8 Processo de arquitetura
      • 3.8.1 Uso de padrões (patterns)
      • 3.8.2 Seleção de arquitetura para o sistema
      • 3.8.3 Criação de um diagrama de implantação detalhado
      • 3.8.4 Refinamento de modelo de arquitetura
    • 3.9 Processo de design
      • 3.9.1 Criação de modelos de design para os casos de uso
      • 3.9.2 Criação de modelo de solução
      • 3.9.3 Refinamento de modelo de domínio para o sistema
      • 3.9.4 Aplicar padrões de design aos modelos de domínio
      • 3.9.5 Identificação e documentação de estados complexos dos objetos
      • 3.9.6 Projeção de banco de dados
    • 3.10 Exemplo de análise e design
      • 3.10.1 Requisitos do caso de uso Realizar saque em ATM
      • 3.10.2 Análise dos requisitos
    • 3.11 Processo de construção
      • 3.11.1 Avaliação de especificação do programa
      • 3.11.2 Preparação de ambiente de desenvolvimento
      • 3.11.3 Implementação de solução de software
      • 3.11.4 Realização de teste unitário
    • 3.12 Processo de teste
      • 3.12.1 Planejamento de testes
      • 3.12.2 Estabelecimento de ambiente de testes
      • 3.12.3 Execução de testes
      • 3.12.4 Análise de resultados
      • 3.12.5 Monitoramento de correção de defeitos
  • Capítulo 4 ■ Tecnologia orientada a objetos (OO)
    • 4.1 Paradigma orientado a objetos
    • 4.2 Princípios do paradigma orientado a objetos
    • 4.3 Paradigma avançado
    • 4.4 Objeto
      • 4.4.1 Tipos de objeto
      • 4.4.2 Atributo
      • 4.4.3 Serviço
      • 4.4.4 Método
    • 4.5 Classe
    • 4.6 Afinal, o que é um objeto?
    • 4.7 Passagem de mensagens
      • 4.7.1 Ligação posterior
      • 4.7.2 Delegação
    • 4.8 Conceitos de design orientado a objetos
      • 4.8.1 Coesão
      • 4.8.2 Abstração
      • 4.8.3 Encapsulamento
      • 4.8.4 Encapsulamento na prática
      • 4.8.5 Encapsulamento x abstração
      • 4.8.6 Acoplamento
    • 4.9 Programação para a interface
    • 4.10 Implementação de herança
    • 4.11 Estudo de caso de herança
    • 4.12 Generalização/especialização
    • 4.13 Sobrecarga e sobrescrita de métodos
      • 4.13.1 Exemplo de sobrescrita
      • 4.13.2 Exemplo de sobrecarga
    • 4.14 Polimorfismo
      • 4.14.1 Polimorfismo na prática
    • 4.15 Generalização sem polimorfismo
    • 4.16 Generalização com polimorfismo
    • 4.17 Relacionamentos
    • 4.18 Conceitos associados ao modelo OO
      • 4.18.1 Comportamentos estático e dinâmico
      • 4.18.2 Comportamento estático
      • 4.18.3 Comportamento dinâmico
    • 4.19 Formas comuns de ciclo de vida de objetos
    • 4.20 Definições relacionadas ao ciclo de vida
    • 4.21 Relacionamento entre objetos
      • 4.21.1 Associação
      • 4.21.2 Agregação
      • 4.21.3 Composição
    • 4.22 Vínculo
    • 4.23 Troca de mensagens entre objetos
    • 4.24 Visualização de um sistema
    • 4.25 Exploração dos princípios do design orientado a objetos
      • 4.25.1 Favoreça a composição
      • 4.25.2 Programação para interfaces
      • 4.25.3 Criação do design prevendo mudanças
    • 4.26 Exemplo de modelagem orientada a objetos
      • 4.26.1 Sistema e-Restaurante
      • 4.26.2 Comentários finais
  • Capítulo 5 ■ Gerenciamento e engenharia de requisitos
    • 5.1 Requisitos
      • 5.1.1 Motivos de falhas em projetos
      • 5.1.2 Problemas encontrados referentes a requisitos
      • 5.1.3 Um bom requisito
      • 5.1.4 Tipos de requisitos
      • 5.1.5 Atributos de requisitos
      • 5.1.6 Representação de requisitos
    • 5.2 Gerenciamento e engenharia de requisitos
    • 5.3 Processo de gerenciamento de requisitos
      • 5.3.1 Planejamento de gerenciamento de requisitos
      • 5.3.2 Análise do problema
      • 5.3.3 Definição do sistema
      • 5.3.4 Refinamento de requisitos
      • 5.3.5 Aprovação de requisitos
      • 5.3.6 Manutenção de rastreabilidade
    • 5.4 Matriz de rastreabilidade
  • Capítulo 6 ■ Gerenciamento de riscos
    • 6.1 Riscos
    • 6.2 Gerenciamento de riscos
      • 6.2.1 Planejamento de gerenciamento de riscos
      • 6.2.2 Identificação e avaliação de riscos
      • 6.2.3 Planejamento de respostas a riscos
      • 6.2.4 Monitoramento e controle de riscos
  • Capítulo 7 ■ Plano de projeto de software na prática
    • 7.1 Plano de projeto de software
  • Capítulo 8 ■ Engenharia de requisitos na prática
    • 8.1 Plano de gerenciamento de requisitos
    • 8.2 Documento de visão
    • 8.3 Glossário do projeto
    • 8.4 Lista de riscos do projeto
    • 8.5 Lista de requisitos do projeto
    • 8.6 Documento de requisitos do sistema
  • Capítulo 9 ■ Análise orientada a casos de uso
    • 9.1 Modelagem comercial
      • 9.1.1 Atores comerciais e workers
    • 9.2 Modelagem baseada em casos de uso
    • 9.3 Casos de uso e diagrama de atividades
      • 9.3.1 Atores
      • 9.3.2 Descrição de um caso de uso
      • 9.3.3 Cenários
      • 9.3.4 Diagrama de atividades
    • 9.4 Casos de uso em alto nível e após refinamento
    • 9.5 Análise da dependência entre casos de uso
    • 9.6 Especificação de caso de uso
    • 9.7 Identificação de objetos candidatos (abstrações-chave) da aplicação
    • 9.8 Relacionamento entre abstrações-chave
    • 9.9 Criação do modelo de domínio
  • Capítulo 10 ■ Fase de análise na prática
    • 10.1 Relatório sintético de casos de uso
    • 10.2 Relatório sintético de casos de uso
    • 10.3 Priorização dos casos de uso
    • 10.4 Especificações de caso de uso
      • 10.4.1 Caso de uso para visualizar miniaturas de categoria
      • 10.4.2 Caso de uso para cadastro no sistema
      • 10.4.3 Caso de uso de realização de login no sistema
    • 10.5 Modelo de análise
      • 10.5.1 Descoberta de objetos candidatos
      • 10.5.2 Descoberta de objetos de fronteira
      • 10.5.3 Descoberta de objetos de controle
      • 10.5.4 Descoberta de objetos de ciclo de vida
      • 10.5.5 Diagrama de classes preliminar
  • Capítulo 11 ■ Arquitetura de aplicações
    • 11.1 Responsabilidades da arquitetura
      • 11.1.1 Design e arquitetura de sistemas
      • 11.1.2 Características de um componente
      • 11.1.3 Planejamento e documentação da arquitetura
    • 11.2 Aplicações distribuídas
      • 11.2.1 Escalabilidade
      • 11.2.2 Disponibilidade
      • 11.2.3 Confiabilidade
      • 11.2.4 Aplicações distribuídas
    • 11.3 Arquitetura de sistema em camadas
    • 11.4 Exploração do fluxo de trabalho da arquitetura
      • 11.4.1 Diagrama de pacote
      • 11.4.2 Diagrama de componentes
      • 11.4.3 Diagrama de implantação
    • 11.5 Seleção do tipo de arquitetura
      • 11.5.1 Aplicação Standalone
      • 11.5.2 Aplicação de duas camadas cliente-servidor
      • 11.5.3 Aplicação N-camadas
      • 11.5.4 Aplicação Web-centric N-camadas
      • 11.5.5 Aplicação Enterprise N-camadas
    • 11.6 Criação do modelo de arquitetura para as camadas de apresentação
      • 11.6.1 Tecnologias de interface
      • 11.6.2 Padrão Model View Controller (MVC)
    • 11.7 Criação do modelo de arquitetura para a camada de negócios
    • 11.8 Criação do modelo de arquitetura para a camada de recursos e integração
    • 11.9 Documento de arquitetura de software
    • 11.10 Documento de arquitetura de software na prática
  • Capítulo 12 ■ Gerenciamento de configuração
    • 12.1 Conceitos relacionados ao gerenciamento de configuração
      • 12.1.1 Itens de configuração (IC)
      • 12.1.2 Linha de base
      • 12.1.3 Repositório de itens de configuração
      • 12.1.4 Grupo de controle de configuração (GCC)
      • 12.1.5 Responsabilidades do GCC
      • 12.1.6 Configuração de base (CB)
      • 12.1.7 Planilha de controle de configurações de base
      • 12.2 Gerenciamento de configuração
        • ção
        • 12.2.2 Subprocesso de controle de itens de configuração (ICs)
        • 12.2.3 Subprocesso de monitoramento de processo de GC do fornecedor
        • 12.2.4 Subprocesso de auditoria de processo de GC
        • 12.2.5 Subprocesso para reportar resultados do GC
    • 12.3 Plano de gerenciamento de configuração
      • 12.3.1 Plano de gerenciamento de configuração na prática
  • Capítulo 13 ■ Gerenciamento de mudanças
    • 13.1 Controle integrado de mudanças
      • 13.1.1 Origem das mudanças
      • 13.1.2 Impactos das mudanças
      • 13.1.3 Solicitação de mudança
      • 13.1.4 Comitê de controle de mudanças
    • 13.2 Gerenciamento de mudanças
      • 13.2.1 Subprocesso de formalização e envio de solicitação de mudança
      • 13.2.3 Subprocesso de análise de impactos da mudança
      • 13.2.4 Subprocesso aprovação e atribuição de mudança
      • 13.2.5 Subprocesso de implementação de mudança
      • 13.2.6 Comunicação da mudança
    • 13.3 Plano de gerenciamento de mudanças
  • Capítulo 14 ■ Gerenciamento de mudanças na prática
    • 14.1 Plano de gerenciamento de mudanças na prática
      • 14.2.1 Solicitação de mudança relacionada à integração de sistemas
    • 14.3 Planilha de acompanhamento de mudanças
    • 14.4 Relatório de controle de mudanças
  • Capítulo 15 ■ Design de sistemas
    • 15.1 Origem do bom design
    • 15.2 Padrões de design e de arquitetura
      • 15.2.1 Quando e como aplicar padrões
      • 15.2.2 Elementos dos padrões de design
      • 15.2.3 Padrões GoF
    • 15.3 Design para produção de HTML
      • 15.3.1 Design de uma biblioteca de classes
      • 15.3.2 Padrão de design Composite
    • 15.4 Padrão de design GoF Factory
    • 15.5 Modelo de design
      • 15.5.1 Identificação de objetos
      • 15.5.2 Classes
      • 15.5.3 Diagrama de classes e de colaboração
    • 15.6 Exemplo de documento de design
  • Capítulo 16 ■ Construção de software
    • 16.1 Implementação do software
      • 16.1.1 Avaliação das especificações de programação
      • 16.1.2 Ambiente de desenvolvimento
      • 16.1.3 (Re)Utilização e implementação de componentes
      • 16.1.4 Testes unitários
      • 16.1.5 Testes em conjunto
      • 16.1.6 Convenções de código para as linguagens de programação
  • Capítulo 17 ■ Qualidade
    • 17.1 Garantia da qualidade de software
      • 17.1.1 Processo de qualidade
      • 17.1.2 Falta de qualidade
      • 17.1.3 Modelos de qualidade de software
      • 17.1.4 Modelo de maturidade de capacitação
      • 17.1.5 Planejamento da garantia da qualidade
      • 17.1.6 Garantia e controle de qualidade
    • 17.2 Plano de garantia da qualidade de software
      • 17.2.1 Grupo de SQA
      • 17.2.2 Grupos relacionados ao controle de qualidade de software
      • 17.2.3 Tarefas do grupo de SQA
      • 17.2.4 Testes
    • 17.3 Revisão em pares
      • 17.3.1 Planejamento de revisão em pares
      • 17.3.2 Execução de revisão em pares
      • 17.3.3 Realização de reunião de revisão em pares
      • 17.3.4 Correção de não conformidade
      • 17.3.5 Análise e relatório de resultados
    • 17.4 Teste de software
      • 17.4.1 Preparação de ambiente de teste
      • 17.4.2 Elaboração de plano de teste
      • 17.4.3 Execução de teste
      • 17.4.4 Análise e relatório de resultado de teste
  • Capítulo 18 ■ Plano de teste
    • 18.1 Introdução
    • 18.2 Objetivos
    • 18.3 Documentos de referências
    • 18.4 Detalhes técnicos do sistema
    • 18.5 Escopo
    • 18.6 Data de congelamento do código
    • 18.7 Riscos
    • 18.8 Dependências
    • 18.9 Cronograma e custos
    • 18.10 Estratégias do plano de teste
      • 18.10.1 Teste de carga
      • 18.10.2 Teste unitário
      • 18.10.3 Teste de banco de dados
      • 18.10.4 Teste funcional
    • 19.1 Documentação
    • 19.2 Procedimentos de controle
      • 19.2.1 Revisão
      • 19.2.2 Reunião de revisão de erros
      • 19.2.3 Relatório de defeitos
    • 19.3 Execução de teste
      • 19.3.1 Teste de aceitação
      • 19.3.2 Teste automatizado
      • 19.3.3 Teste beta
      • 19.3.4 Teste de conversão
      • 19.3.5 Teste de documentação
      • 19.3.6 Teste de hardware
      • 19.3.7 Teste de interfaces
      • 19.3.8 Testes de integração
    • 19.4 Severidade dos erros
    • 19.5 Casos de uso a serem testados
    • 19.6 Casos de teste
  • Capítulo 19 ■ Implantação do software
    • 19.1 Implantação de solução em produção
      • 19.1.1 Subprocesso de planejamento de implantação
      • 19.1.2 Subprocesso de preparação de sites
      • 19.1.3 Subprocesso de realização de implantação
      • 19.1.4 Subprocesso de realização de testes
      • 19.1.5 Subprocesso de acompanhamento de pós-implantação
    • 19.2 Plano de implantação
  • Apêndice A ■ Artefatos do ciclo de vida de projetos de software
    • A 1 Declaração de trabalho
    • A 2 Avaliação técnica
    • A 3 Plano de projeto de software
    • A 4 Plano de gerenciamento de requisitos
    • A 5 Documento de visão
    • A 6 Glossário do projeto
    • A 7 Lista de riscos
    • A 8 Lista de requisitos
    • A 9 Documento de requisitos do sistema
    • A 10 Especificação de caso de uso
    • A 11 Relatório sintético de caso de uso
    • A 12 Documento de arquitetura
    • A 13 Plano de Gerenciamento de Configuração
    • A 14 Plano de Gerenciamento de mudanças
    • A 15 Formulário de solicitação de mudança
    • A 18 Relatório de Controle de Mudança
    • A 19 Relatório de Controle de Mudança
    • A 20 Documento de design
    • A 21 Plano de implantação
  • Referências bibliográficas
  • Índice remissivo
Ver sumário completo ▼

Sobre o autor

Hélio Engholm Jr.

Hélio Engholm Jr. é profissional da área de TI há mais de duas décadas, atuando nas várias fases do ciclo de desenvolvimento de software, desde o levantamento de requisitos até a modelagem e codificação de software. Ministra treinamentos na área de TI, como RUP, Gerenciamento de Requisitos, Análise e Design Orientados a Objetos, desenvolvimento… Ver perfil completo ▶

Opinião dos leitores

Renan S P

Foi o melhor material relacionado a Engenharia de Software que encontrei. Ele é bem prático e explica com detalhes as etapas no desenvolvimento de software. Possui apêndice com exemplo para quem deseja documentar seu software. Ótimo livro! Recomendo !!!

Lívia M

Os exemplos desse livro fazem a diferença para se ter uma noção prática da Engenharia de Software.

Leonardo P

Livro maravilhoso. Excelente material para estudo de forma prática.

Alexander J

Livro muito bom, recomendo.

Ver todas ▼