Buscar

02_Conceitos_Introdutorios-1

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 46 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 46 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 46 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Engenharia de Software
Tema da Aula
Conceitos de 
Engenharia de Software
Engenharia 
de
Software
Definições iniciais
A seguir são apresentados alguns vocábulos...
Fontes de referência:
Ferreira, Aurélio Buarque de Holanda. Novo Dicionário da Língua Portuguesa.
Sommerville, Ian. Engenharia de Software
Engenharia 
de
Software
Definições iniciais
(genéricas)
ENGENHARIA
Arte de aplicar conhecimentos científicos e empíricos* e certas habilitações específicas (à criação de estruturas, de dispositivos e de processos) que se utilizam para converter recursos naturais em formas adequadas ao atendimento das necessidades humanas.
(*) baseados apenas na experiência.
Engenharia 
de
Software
PROCESSO
Ato de proceder, de ir por diante; seguimento, curso marcha.
Sucessão de estados ou de mudanças
Maneira pela qual se realiza uma operação, segundo determinadas normas; método; técnica.
Definições iniciais
(genéricas)
Engenharia 
de
Software
MÉTODO
Modo de proceder; maneira de agir.
Programa que regula previamente uma série de operações que se devem realizar, apontando erros evitáveis, em vista de um resultado determinado.
METODOLOGIA
Estudo dos métodos e, especialmente, dos métodos das ciências.
Definições iniciais
(genéricas)
Engenharia 
de
Software
TÉCNICA
A parte material de uma arte.
Maneira, jeito ou habilidade especial de executar ou fazer algo. 
Prática.
TECNOLOGIA
Conjunto de conhecimentos, especialmente princípios científicos, que se aplicam a um determinado ramo de atividade.
A totalidade desses conhecimentos.
Definições iniciais
(genéricas)
Engenharia 
de
Software
FERRAMENTA
Qualquer utensílio empregado nas artes e ofícios.
Definições iniciais
(genéricas)
Engenharia 
de
Software
MODELO
Objeto destinado a ser reproduzido por imitação
Representação em pequena escala de algo que se pretende executar em grande*
Molde.
Aquilo que serve de exemplo ou norma.
(*) Representação simplificada de algo mais complexo.
Definições iniciais
(genéricas)
Engenharia 
de
Software
NORMA
Aquilo que se estabelece como base ou medida para a realização ou avaliação de alguma coisa.
Princípio, preceito, regra, lei.
Modelo, padrão.
NORMA TÉCNICA
Documento técnico que fixa padrões reguladores visando a garantir a qualidade do produto industrial, a racionalização da produção, transporte e consumo de bens, a segurança das pessoas, a uniformidade dos meios de expressão e comunicação, etc.
Definições iniciais
(genéricas)
Engenharia 
de
Software
PRODUTO
O resultado da produção.
Definições iniciais
(genéricas)
Engenharia 
de
Software
SISTEMA
Um conjunto de elementos (sub-sistemas, componentes, processos, etc.);
Dinamicamente relacionados;
Formando uma atividade (finalidade);
Para atingir um objetivo;
Operando sobre entradas (matéria, energia e informação);
Para produzir saídas (matéria, energia e informação).
Definições iniciais
(genéricas)
Engenharia 
de
Software
ENGENHARIA DE SISTEMAS
A engenharia de sistemas (com base em computadores) se ocupa de todos os aspectos do desenvolvimento e da evolução de sistemas complexos, em que o software desempenha o papel principal.
Os engenheiros de sistemas estão envolvidos na especificação do sistema, na definição da sua arquitetura geral e, em seguida, na integração das diferentes partes necessárias para criar o sistema completo. 
Definições iniciais
(específicas da ES)
Engenharia 
de
Software
ENGENHARIA DE SISTEMAS
A engenharia de sistemas é uma disciplina mais antiga do que a engenharia de software.
A engenharia de sistemas é uma atividade interdisciplinar que envolve equipes com diferentes formações técnicas.
Definições iniciais
(específicas da ES)
Engenharia 
de
Software
ENGENHARIA DE SISTEMAS
Diferentes disciplinas que podem estar envolvidas em um sistema de controle de tráfego aéreo que utiliza radares e outros sensores para determinar a posição da aeronave:
Definições iniciais
(específicas da ES)
ENGENHARIA DE SISTEMAS DE CTA
ENGENHARIA DE SOFTWARE
ENGENHARIA DE ESTRUTURAS
ENGENHARIA CIVIL
ENGENHARIA ELETRÔNICA
ENGENHARIA ELÉTRICA
ENGENHARIA MECÂNICA
PROJETO DE INTERFACE COM O USUÁRIO
ARQUITETURA
Engenharia de Software
Engenharia 
de
Software
Engenharia de Software
Estabelecimento e uso de sólidos princípios de Engenharia para que se possa obter economicamente um software que seja confiável e que funcione eficientemente em máquinas reais.
Fritz Bauer
“NATO Science Commitee” em 1969
Engenharia 
de
Software
Engenharia de Software
Definição II
Disciplina da Engenharia que se ocupa de todos os aspectos da produção de software, desde os estágios iniciais de especificação do sistema até a manutenção desse sistema depois que ele entrou em operação.
SOMMERVILLE
Engenharia 
de
Software
Engenharia de Software
Definição II
Aplicação de abordagens sistemáticas, disciplinadas e quantificáveis para o desenvolvimento, operação e manutenção de um software.
Software Engineering – IEEE 610.12-1990/93
IEEE-Institute of Electrical and Electronics Engineers
Engenharia 
de
Software
Engenharia de Software
Definição II
Engenharia de Software é uma forma de Engenharia que aplica os princípios da Ciência da Computação e Matemática para alcançar soluções com um bom custo/benefício, para resolução de problemas do Software.
SEI – Report on Undergraduate Software Engineering Education
CMU/SEI – TR-003 - 1990
Engenharia 
de
Software
Conceitos Introdutórios
Objetivos
Objetivos:
	A exigência do desenvolvimento e aplicação de sólidos princípios de engenharia pressupõe como objetivos:
Rigor no Processo (qualidade e eficiência)
Medição do processo 
Repetibilidade
Otimização de recursos
Base científica
Engenharia 
de
Software
Conceitos Introdutórios
Camadas da ES
ES é uma tecnologia em camadas. 
Como todo enfoque de Engenharia, tem um comprometimento com a Qualidade e a Eficiência dos processos. 
A qualidade (econômica) é a base do modelo.
O núcleo da ES é a camada de processo. O processo é a “cola” que une as demais camadas e permite um desenvolvimento racional de SW.
Engenharia 
de
Software
Conceitos Introdutórios
Definições (sentido lato)
Métodos:
Detalhamento de “como fazer”. 
Como desenvolver software utilizando-se os princípios de Engenharia de Software (Métricas, Modelagem, Projeto etc.).
Métodos envolvem amplo conjunto de tarefas que incluem: Planejamento, Codificação, Estimativa de Projeto, Testes, Análise de Requisitos, Manutenção etc.
Métodos geralmente introduzem uma notação gráfica, uma terminologia especial e um conjunto de critérios para sua aplicação.
Engenharia 
de
Software
Conceitos Introdutórios
Definições (sentido lato)
Ferramentas:
Qualquer instrumento necessário à prática profissional.
Proporcionam apoio automatizado ou semi-automatizado à aplicação dos métodos.
CASE (Computer-Aided Software Enginnering ou Engenharia de Software Auxiliada por Computador) é uma ferramenta / conjunto de ferramentas integradas, com a finalidade de dar produtividade e rigor ao processo de geração do produto de software.
Engenharia 
de
Software
Conceitos Introdutórios
Definições (sentido lato)
Processo:
Constituem o elo de ligação entre Métodos e Ferramenta, permitindo o desenvolvimento racional de software. 
Processos definem a seqüência em que os métodos serão aplicados, os produtos que devem ser gerados, os controles a serem estabelecidos e os marcos de referência (milestone) que permitem a avaliação do processo.
Engenharia 
de
Software
Conceitos Introdutórios
Processo de Software
Processo de Software:
	Consiste em atividades, métodos e práticas (tecnologias) úteis no desenvolvimento do “produto de software”.
Engenharia 
de
Software
Conceitos Introdutórios
Paradigmas
Processos de Software:
Um determinado processoé escolhido baseando-se em:
Natureza do projeto	
Área de aplicação
Métodos e ferramentas disponíveis
Controles necessários
Produtos gerados em cada fase
Engenharia 
de
Software
Conceitos Introdutórios
Processos de Software
Processos de Software:
Modelos de Ciclo de Vida do Produto de Software
Clássico (cascata ou linear)
Outros Modelos:
Incremental 
Evolutivo 
Prototipação 
Espiral 
RAD 
Outros 
Processo Unificado (RUP - Unified Process)
Modelo Ágil
Métodos Formais
E outros
Engenharia 
de
Software
Conceitos Introdutórios
Produto de Software
Produto de Software (NORMA NBR ISO 9000-3 - Introdução):
Produto de Software: Conjunto completo de programas de computador, procedimentos e documentação correlata, assim como dados designados para entrega a um usuário.
Item de Software: Qualquer parte identificável de um produto de software em etapa intermediária ou na etapa final do desenvolvimento.
Desenvolvimento: Todas as atividades a serem realizadas para a criação de um produto de software. 
Engenharia 
de
Software
Conceitos Introdutórios
Produto de Software
Produto de Software (segundo sua aplicação):
Software básico: 
	Desenvolvidos para dar apoio a outros programas.
Compiladores
Editores de texto
Utilitários de gerenciamento de arquivos
Software de tempo real:
	Monitora/analisa/controla eventos do mundo real.
Dispositivos de coleta de dados
Dispositivos de atuação (saída - feedback)
Monitor (coordenação e controle do tempo-1ms)
Engenharia 
de
Software
Conceitos Introdutórios
Produto de Software
Produto de Software (segundo sua aplicação):
Software de processamento comercial: 
	Sistemas de informação vulgarmente chamados de “sistemas” ou aplicativos. Foco na informação e na automação de rotinas administrativas.
Software científico e de Engenharia:
	Aplicações com algoritmos voltados ao processamento de cálculos de média/alta complexidade (processamento superescalar, vetorial, computação gráfica)
Engenharia 
de
Software
Conceitos Introdutórios
Produto de Software
Produto de Software (segundo sua aplicação):
Software embarcado/embutido (embedded): 
	Produtos para controle de processos de baixa complexidade (funções limitadas) como autotrônica, eletrodomésticos, até alta complexidade como sistemas de aviônica. Geralmente são residentes em memórias read-only e executados em processador dedicado.
	Autotrônica:
BMW série 7: 80 componentes eletrônicos embutidos e 500 milhões de interações digitais simultâneas.
Fiat/Chrysler: 1 milhão de LOC´s
Engenharia 
de
Software
Conceitos Introdutórios
Produto de Software
Produto de Software (segundo sua aplicação):
Software de Inteligência Artificial:
	Algoritmos não-numéricos que trabalham na resolução de problemas complexos que não são favoráveis a análise direta (algoritmo prévio) e lógica booleana.
Sistemas especialistas 
(bases de conhecimento e máquina de inferência)
Redes neurais artificiais
Lógica fuzzi (fuzzi sets – lógica nebulosa)
Engenharia 
de
Software
Conceitos Introdutórios
Produto de Software
Produto de Software (segundo sua origem – IEEE 1062):
COTS – Commercial off-the-shelf
		 Disponível comercialmente mas projetado para usuários 	 genéricos e “venda” em grande escala. Pode ser sistema 
 ou componente.
MOTS – Modified off-the-shelf
		 Produto COTS porém o desenvolvedor se dispõe em 		 efetuar modificações para adaptá-lo aos requisitos do 
 cliente.	
FD – Fully developed
		 Desenvolvido para atender os requisitos de um cliente 
 específico.
Engenharia 
de
Software
Conceitos Introdutórios
Produto de Software
Características do software (Pressman):
Software é desenvolvido e não manufaturado (no sentido estrito de manufatura).
Software não se desgasta mas se deteriora.
Apesar da indústria estar se movendo no sentido de montar software através de componentes, a maior parte dos softwares continuam sendo feito customizados (sob medida).
Engenharia 
de
Software
Conceitos Introdutórios
Produto de Software
Curva de falhas do hardware(curva da banheira)
Engenharia 
de
Software
Conceitos Introdutórios
Produto de Software
Curva de falhas do software (idealizada)
Engenharia 
de
Software
Conceitos Introdutórios
Produto de Software
Curva de falhas do software (real).
Aumento da taxa de falhas
devido a efeitos colaterais
da manutenção.
Engenharia 
de
Software
Conceitos Introdutórios
Princípios da Engenharia de Software
Os princípios da ES descrevem algumas propriedades gerais e referem-se tanto ao produto como ao processo de software. 
A aplicação dos princípios é feita através de métodos e ferramentas. 
Os princípios podem ajudar na escolha de métodos e ferramentas apropriadas para o produto que se deseja construir.
	Princípios:
Formalidade
Abstração
Decomposição
Generalização
Flexibilização
Engenharia 
de
Software
Conceitos Introdutórios
Formalidade
Desenvolvimento de SW é uma atividade criativa e como tal tende a “seguir a inspiração do momento”.
Um enfoque formal pode gerar SW mais confiável e exercer controle sobre seu custo. 
O nível de formalidade não deve restringir a criatividade e deve ser adequado à dificuldade conceitual de cada desenvolvimento.
A formalidade estará contida no projeto (descrição formal), na programação (programas são componentes formais), nas rotinas de teste, nos procedimentos da instalação, etc.
Engenharia 
de
Software
Conceitos Introdutórios
Abstração
É o processo de identificar os aspectos importantes do produto/processo, ignorando-se os detalhes (Princípio de Pareto; Reducionismo).
Modelos são abstração da realidade.
O sistema de informação é uma abstração do processo real.
Linguagens de programação abstraem ao programador, detalhes da máquina e da solução (algoritmo em baixo nível)
O encapsulamento é uma técnica de abstração para diminuir a complexidade e melhorar a reusabilidade dos objetos.
Afirma que para muitos fenômenos, 80% das conseqüências advém de 20% das causas. 
Engenharia 
de
Software
Conceitos Introdutórios
Decomposição
A decomposição é uma técnica utilizada para permitir que lidemos com a complexidade.
Decomposição do processo
Atividades de controle da qualidade
Atividades de gerenciamento do cronograma
Atividades de teste
Atividades de documentação etc.
Decomposição do produto
Programas
Módulos ou rotinas
Componentes
Engenharia 
de
Software
Conceitos Introdutórios
Decomposição
Programação procedural  refinamento sucessivo
Programação OO  Programa é um conjunto de objetos que se intercomunicam prestando/solicitando serviços
Decomposição do Processo em Sub-Processos
Decomposição estrutural do Sistema em módulos/programas
Decomposição funcional do Sistema em entradas e correspondentes saídas
Engenharia 
de
Software
Conceitos Introdutórios
Generalização
A generalização é também uma forma de abstração, buscando-se as características comuns e esquecendo-se as características específicas dos itens a serem generalizados.
Uma solução mais genérica tem maior potencialidade de ser reutilizada (reusabilidade e generalização dos componentes).
A	generalização é o processo inverso da decomposição (generalização e especialização em OO).
Custo do desenvolvimento voltado à generalização versus benefício da reutilização.
Engenharia 
de
Software
Conceitos Introdutórios
Flexibilização
A flexibilização irá conferir ao produto de software a facilidade de adaptação a novos ambientes, a mudanças ocorridas no ambiente, a casos de uso não implementados e às manutenções que se fizerem necessárias.
Flexibilização do produto de software:
Customização das saídas do sistema;
Facilidade em agregar novos módulos/funções
Facilidade em portar para outras plataformas
Engenharia 
de
Software
Conceitos Introdutórios
Flexibilização
Flexibilização do processode software:
	Procedimentos e técnicas alternativas no processo de software visando:
Corrigir erros
Corrigir atrasos
Adaptar técnicas de outros paradigmas
Atender às constantes mudanças de requisitos
Engenharia 
de
Software
RESUMINDO
Resumindo:
Escolher métodos abrangentes para todas as fases de desenvolvimento, as melhores ferramentas para automatizar os métodos, blocos de construção mais poderosos, melhores técnicas para a garantia da qualidade e modelos de gestão (controle e administração do projeto). Essa “disciplina” (rigor) para desenvolvimento de software chama-se Engenharia de Software.
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*

Outros materiais