Engenharia De Software

66
Engenharia de Software Uma visão sobre a essência e aplicabilidade da Engenharia de Software

description

Uma visão sobre a essência e aplicabilidade da Engenharia de Software

Transcript of Engenharia De Software

Page 1: Engenharia De Software

Engenharia de Software

Uma visão sobre a essência e aplicabilidade da Engenharia de Software

Page 2: Engenharia De Software

O que é?

Friedrich L. Bauer

 "Engenharia de Software é a criação e a utilização de sólidos princípios de engenharia a fim de obter software de maneira econômica, que seja confiável e que trabalhe eficientemente em máquinas reais"

Page 3: Engenharia De Software

O que é?• Surgiu em meados 1970 em uma

tentativa de contornar a crise do software e dar um tratamento de engenharia ao desenvolvimento de software completos

Page 4: Engenharia De Software

O que é?

• A Engenharia de Software se concentra nos aspectos práticos da produção de um sistema de software

• O próprio significado de “Engenharia” já traz conceitos de criação, construção, análise, desenvolvimento e manutenção

Page 5: Engenharia De Software

O que é?• Os fundamentos científicos envolvem o

uso de modelos abstratos e precisos– Permite ao Engenheiro de Software

especificar, projetar, implementar e manter sistemas de software, avaliando e garantindo suas qualidades

Page 6: Engenharia De Software

Objetivos• Os Objetivos primários são:

– Aprimoramento da qualidade dos produtos de software;

– Aumento da produtividade do engenheiro de software;

– Atendimento aos requisitos da eficácia e da eficiência, ou seja, a efetividade.

Page 7: Engenharia De Software

Fundamentos• Considera-se que a Engenharia de

Software é uma área interdisciplinar, baseada nos fundamentos de:– Ciências da Computação;– Administração de Projetos;– Comunicação;– Técnicas de Solução de Problemas.

Page 8: Engenharia De Software

Princípios• Além dos fundamentos, alguns

princípios ou elementos predominantes deram origem à engenharia de software.

Page 9: Engenharia De Software

Princípios• Os princípios requerem metodologias

pertinentes e adequadas aos métodos e ferramentas que incorporam as propriedades desejadas aos processos e aos produtos de software

Page 10: Engenharia De Software

Princípios• Alguns podem ser destacados:

– Formalidade para evitar a dependência de determinadas pessoas ou processos;

– Abstração para identificar aspectos importantes de determinado fenômeno;

Page 11: Engenharia De Software

Princípios• Alguns podem ser destacados:

– Decomposição para subdividir problemas complexos;

– Generalização para disseminar soluções semelhantes e reutilizar resultados;

Page 12: Engenharia De Software

Princípios• Alguns podem ser destacados:

– Flexibilização para facilitar eventuais mudanças modulares.

Page 13: Engenharia De Software

Evolução do Software• Durante as três primeiras décadas da

era do computador, o principal desafio era desenvolver um hardware que reduzisse o custo de processamento e armazenagem de dados

Page 14: Engenharia De Software

Evolução do Software

Page 15: Engenharia De Software

Evolução do Software• Hoje o problema é diferente, o principal

desafio desta década é melhorar a qualidade (e reduzir custos) de soluções baseadas em computador, que são implementadas com software.

Page 16: Engenharia De Software

Evolução do Software• Na década de 70 e 80 destacaram-se

softwares tipo batch, distribuição e uso limitado, multiusuário, em tempo real, banco de dados...

Page 17: Engenharia De Software

Evolução do Software• Atualmente o Software deve ser

distribuído, com:– “inteligência” embutida;– Visuais orientados aos usuários;– Modulares;– E em redes complexas.

Page 18: Engenharia De Software

Evolução do Software• Modernamente o software deve:

– Estar com foco no negócio empresarial ou atividade organizacional;

– Com objetivo de auxiliar os processos de tomada de decisões (estratégicas, táticas ou gerenciais e operacionais).

Page 19: Engenharia De Software

Evolução do Software• Passamos recentemente e ainda

estamos em uma forte onda de desenvolvimento de softwares livres

Page 20: Engenharia De Software

Evolução do Software

Page 21: Engenharia De Software

Evolução do Software• Hoje estamos na era:

– Da Web 2.0;– Computação nas Nuvens (Cloud

Computing);– SaaS (Softwares as a Service);– Novas formas de lucrar (Google AdSense)

Page 22: Engenharia De Software

Aplicações e tipos de SW• O software pode ser aplicado a

qualquer situação em que o conjunto previamente especificado de passos procedimentais tiver sido definido

Page 23: Engenharia De Software

Aplicações e tipos de SW• O objetivo e conteúdo de informação

são fatores importantes na determinação da natureza de um aplicativo;

• A palavra conteúdo refere-se ao significado e à forma de informações que entram e saem.

Page 24: Engenharia De Software

Aplicações e tipos de SW• Objetivo refere-se à previsibilidade da

ordem e da oportunidade da informação;

Page 25: Engenharia De Software

Aplicações e tipos de SW• Um programa de análise de

engenharia: – aceita dados que tem uma ordem

predefinida;– Executa algoritmos;– Produz dados resultantes em relatórios ou

gráficos.

Page 26: Engenharia De Software

Aplicações e tipos de SW• As seguintes áreas de software

indicam a amplitude das aplicações potenciais:– Software básico

• É uma seleção de programas escritos para dar apoio a outros programas.

– Software em tempo real• Monitora, analisa e controla eventos do mundo

real.

Page 27: Engenharia De Software

Aplicações e tipos de SW– Software comercial

• Processamento de informações comerciais.

– Software científico e de engenharia• Caracterizado por algoritmos de

processamento de números.

Page 28: Engenharia De Software

Aplicações e tipos de SW– Softwares embutidos

• Usado para controlar produtos e sistemas para mercados industriais e de consumo (ex. teclado de microondas).

– Software de computadores pessoal• Processamento de textos, planilhas

eletrônicas, entre outros.

Page 29: Engenharia De Software

Aplicações e tipos de SW– Software educativos

• Tem como objetivo auxiliar o aprendizado de um ou mais temas e contribuindo com a educação geral.

Page 30: Engenharia De Software

Aplicações e tipos de SW– Software de Inteligência Artificial

• Faz uso de algoritmos não numéricos para resolver problemas complexos que não sejam favoráveis à computação ou à análise direta.

Page 31: Engenharia De Software

Aplicações e tipos de SW– Software Tutores Inteligentes

• São programas de computadores projetados para incorporar técnicas da comunidade de Inteligência Artificial para prover tutores que conhecem:

– “o que” eles ensinam;– “a quem” eles ensinam;– E “como” devem ensinar.

Page 32: Engenharia De Software

Aplicações e tipos de SW– Software de Gestão Empresarial

• Softwares que integram todas as funções organizacionais na empresa, contendo bases de dados únicas, manipulando e gerenciando informações operacionais e gerenciais para toda a organização

Page 33: Engenharia De Software

Aplicações e tipos de SW– Software SIG – Sistema de Informações

Gerenciais• Fornecem informações para tomada de

decisões, no sentido piramidal.

Page 34: Engenharia De Software

Aplicações e tipos de SW– Software SAD – Sistema de Apoio a

Decisões• Por meio de tecnologias de sistemas

gerenciadores de banco de dados e respectivas ferramentas, fornecem diversas informações para serem utilizadas pelo seus usuários.

Page 35: Engenharia De Software

Aplicações e tipos de SW– Software EIS – Executive Information

System• Software de consulta a base de dados para

apresentação de informações de forma simples e amigável, atendendo às necessidades dos executivos de alto nível, permitindo o acompanhamento diário de resultados para depois exibi-los de forma objetiva, simplificada e gráfica.

Page 36: Engenharia De Software

Mas, quais são esses softwares nas empresas?

Page 37: Engenharia De Software

Integrações dos Softwares de Gestão...

ERP

Módulo de Contabilidad

e

Módulo Financeiro

Módulo de Compras

Módulo de Produção

Módulo de Embarque

Módulo de Vendas

Base de Dados

Sistema Operacional

Redes e Telecomunicações

Hardware

Customer Relationship Management

Supply Chain Management

Business Inteligence

Workflow

Portal do Executivo E-Commerce

Page 38: Engenharia De Software

Engenheiro de Software• Pode-se chamar de Engenheiro de

Software todo profissional da área de informática ou ciência da computação que desenvolve soluções profissionais utilizando-se dos recursos de software, observando os padrões requeridos de qualidade, produtividade e efetividade.

Page 39: Engenharia De Software

Engenheiro de Software• Também chamado de Gestor de

Projetos de Software e Sistemas, uma vez que congrega nas suas funções as atividades e as gestões de pessoas, atividade e recursos diversos.

Page 40: Engenharia De Software

Engenheiro de Software• Conhecimentos úteis:

– Linguagens de programação;– Análise de sistemas;– Ambientes de tecnologia;– Planejamento e controle de processos;

Page 41: Engenharia De Software

Engenheiro de Software• Conhecimentos úteis:

– Linguagem UML (Unified Modeling Language);

– Recomendável também conhecimento em planejamento administrativo.

Page 42: Engenharia De Software

Engenheiro de Software• O engenheiro também é um Gestor;

• O gestor deve sempre ter clara a visão da abordagem sociotécnica e da teoria geral dos sistemas.

Page 43: Engenharia De Software

Engenheiro de Software

Page 44: Engenharia De Software

Fluxo de desenvolvimento de software criado pelo Engenheiro de Software

Analista de Negócios Usuários Chaves

Busca de requisitos, necessidades dos negócios

Necessidades dos negócios

Fluxo do Processo

Especificação das Regras de Negócios

Usuários ChavesAnalista de Sistemas

Apresentação dos Documentos (processo/Regras de Negócios) para Validação

Regras de Negócios estão

corretas?Não

Analista de Sistemas Desenvolvedor

Regras de Negócios TestesInternos

Analista de Sistemas

Especificação das Regras de Negócios

Usuários Chaves

Homologação

Aprovado?

Fazer PlanoTransição (roll-out)

Sim

Não

Sim

Início

Fim

Validação das Regras

Produzir

2

1

3

4

Page 45: Engenharia De Software

Em suma...... com a formalização...

... ajuda na transferênciade conhecimento ....

... evita-se problemas .... comunicação...

... maior foco no negócio ...

Levantamento das Necessidades

Especificação

Desenvolvimento

Homologação

Aumento de

Produtividade

e Qualida

de e ...

Page 46: Engenharia De Software

Áreas de Conhecimento• Segundo o SWEBOK:

– Requisitos de Software;– Modelagem de dados;– Projetos (Design de Software);– Implementação de Software;– Teste de Software;– Manutenção de Software;– Qualidade de Software.

Corpo de Conhecimento da Engenharia de Software

Page 47: Engenharia De Software

Modelos de Processos de Software• Pode ser visto como uma

representação, ou abstração dos objetos e atividades envolvidas no processo de software;

Page 48: Engenharia De Software

Modelos de Processos de Software• Oferece de forma mais abrangente e

fácil de representar o gerenciamento de processo de software e conseqüentemente o progresso do projeto.

Page 49: Engenharia De Software

Modelos de Processos de Software• Exemplos:

– Modelos de ciclo de vida;– Seqüencial ou cascata;– Espiral;– Componentizado;– ...

Page 50: Engenharia De Software

Modelos de Processos de Software

Modelo de Atividades

Modelo em Cascata

Page 51: Engenharia De Software

Modelo Integrado de Maturidade de Capacidade

Modelos de Maturidade• Surgiu para avaliar a qualidade dos

processos de software aplicados em uma organização;

• Mais conhecido como Capability Maturity Model Integration (CMMi), do Software Engineering Institute - SEI

Page 52: Engenharia De Software

Modelos de Maturidade• Uma organização pode ter sua maturidade medida

em 5 níveis:– Nível 1 – Caótico;– Nível 2 – Capacidade de reproduzir sucessos anteriores;– Nível 3 – Processo bem definido, documentado e

padronizado;– Nível 4 – Gerência quantitativa do processo de software e

produto;– Nível 5 – Melhoria contínua e gerencia o processo de

software.

Page 53: Engenharia De Software

Modelos de Maturidade• No Brasil temos o MPS.BR, ou Modelo

de Processos de Software Brasileiro, é simultaneamente um movimento para a melhoria e um modelo de qualidade de processo voltada para a realidade do mercado de pequenas e médias empresas de desenvolvimento no Brasil.

Page 54: Engenharia De Software

Metodologias e Métodos• A escolha consciente e a adoção

disciplinada de notações, ferramentas e métodos apropriados para cada uma dessas atividades devem resultar de uma técnica de solução de problemas aplicada ao ambiente de desenvolvimento de software.

Page 55: Engenharia De Software

Metodologias e Métodos• Algumas Metodologias...

– Metodologia estruturada;

– Metodologia Orientada a Objeto;• Orientação a Objetos, Rational Unified Process (RUP);

– Desenvolvimento Ágil de Software• Scrum, Programação Extrema (XP).

Page 56: Engenharia De Software

Ciclo de Desenvolvimento• O ciclo de desenvolvimento pode

indicar as seguintes etapas:– Estudo de viabilidade

• Identificar as deficiências atuais;• Estabelecer objetivos do novo sistema;• Gerar cenários aceitáveis;• Preparar encargos de projetos.

Page 57: Engenharia De Software

Ciclo de Desenvolvimento– Análise de Sistemas

• Desenvolver o modelo ambiental;• Desenvolver o modelo comportamental;• Estabelecer os limites homem-máquina;• Executar a análise custo benefício;• Restringir o sistema;• Especificar o pacote.

Page 58: Engenharia De Software

Ciclo de Desenvolvimento– Projeto

• Alocar especificações para os processadores;• Alocar especificações para as tarefas;• Projetar módulos;• Projetar banco de dados;• Empacotamento do projeto.

Page 59: Engenharia De Software

Ciclo de Desenvolvimento– Implementação

• Solucionar próximo módulo;• Codificar módulo;• Testar o esqueleto do sistema.

Page 60: Engenharia De Software

Ciclo de Desenvolvimento– Geração do teste do aceite

• Gerar plano de teste;• Preparar testes de performance;• Preparar testes de vias normais;• Preparar testes de vias de erros.

Page 61: Engenharia De Software

Ciclo de Desenvolvimento– Garantia da Qualidade

• Teste final ou teste de aceite, comparando ao projeto de implantação.

Page 62: Engenharia De Software

Ciclo de Desenvolvimento– Descrição de procedimentos

• Descrição das atividades operacionais do cliente ou usuário normalmente correspondente ao manual do usuário.

Page 63: Engenharia De Software

Ciclo de Desenvolvimento– Conversão de banco de dados

• Pode ou não ser uma atividade complexa, existe casos que não há necessidade de se fazer conversões de bando de dados.

Page 64: Engenharia De Software

Ciclo de Desenvolvimento– Instalação

• Atividade final, suas entradas são o manual do usuário, o banco de dados convertido e o sistema de aceite.

Page 65: Engenharia De Software

Bibliografia

Page 66: Engenharia De Software

Felipe Goulart

[email protected]

Obrigado!!!