Engenharia de Software

Documentos relacionados
ANÁLISE E PROJETO DE SISTEMA

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE

- 1ª Lista de Exercícios -

Engenharia de Software. Princípios da Engenharia de Software. Princípios da Engenharia de Software

Engenharia de Software I: Introdução. Graduação em Informática 2009 Profa. Itana Gimenes

Paradigmas de Software

Definições e ciclo de vida

Projeto de Desenvolvimento de Software

Introdução à Engenharia de Software

Engenharia Software. Ení Berbert Camilo Contaiffer

FUNDAMENTOS DE ENGENHARIA DE SOFTWARE. Professor: Paulo Vencio

Engenharia de Software: Uma Visão Geral. SSC Engenharia de Software I Profa. Dra. Elisa Yumi Nakagawa 2 o semestre de 2012

UNIVERSIDADE FEDERAL DO PARANÁ UFPR BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO

Engenharia de Software: Uma Visão Geral. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1 o semestre de 2017

Engenharia de Software: Uma Visão Geral. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1 o semestre de 2015

Engenharia de Software Simulado para a 1ª Avaliação Bimestral Professor: Danilo Giacobo - RESPOSTAS. Nome:

ANÁLISE E PROJETO DE SISTEMAS

Introdução 2014/1 Prof. Luís Fernando Garcia

Engenharia de Software: Visão Geral

Ciência da Computação ENGENHARIA DE SOFTWARE. Capítulo 1 Introdução

Bibliografia. Quais são os problemas? capacidade de construção. acompanha a demanda por novos programas. ameaçada por projetos ruins.

Engenharia de Software

Ciclo de vida do software

Linguagens de Programação

Engenharia de Software I

Sistemas de Computação e de Informação

Engenharia de Software Introdução

Prof. Luiz A. Nascimento

O que é software? Software e Engenharia de Software. O que é software? O que é software? Tipos de Sistemas de Software. A Evolução do Software

Paradigmas da Engenharia de Software AULA PROF. ABRAHAO LOPES

PDS. Aula 1.4 Modelos de Processo. Prof. Dr. Bruno Moreno

ENGENHARIA DE SOFTWARE. Introdução

Engenharia de Software

Engenharia de Software Processo de Desenvolvimento. Ciclo de Vida - Modelo Cascata

Engenharia de Software. Processos. Desenvolvimento de Software Tradicionais 2014/2. Prof. Luís Fernando Garcia

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos

Conceitos de Engenharia de Software. Prof.ª: Érika A. Barrado

CAPÍTULO 1 O AMBIENTE DE DESENVOLVIMENTO DE SISTEMAS. Tereza Gonçalves Kirner

Engenharia de Software

Engenharia de Software Processo de Desenvolvimento de Software

Processos de Software by Pearson Education Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 4 Slide 1

Modelos de Processo de Software

Engenharia de Software Simulado para a 1ª Avaliação Bimestral Professor: Danilo Giacobo - RESPOSTAS

Engenharia de Software Simulado para a 1ª Avaliação Bimestral Professor: Danilo Giacobo - RESPOSTAS. Nome:

Desenvolvimento de Projetos

ENGENHARIA DE SOFTWARE. Aula 03 Processos de Software

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA ENGENHARIA DE SOFTWARE

Disciplina que reúne metodologias, métodos e ferramentas a serem utilizados, desde a percepção do problema até o momento em que o sistema

Engenharia de Software II

Bruno Ribeiro da Silva. A adaptação de um sistema operacional para a execução em uma diferente arquitetura

Processos de software

Análise de Sistemas CONTEXTUALIZAÇÃO

Fábricas de Software. Processos de Software. Fábricas de Software. Fábricas de Software 17/08/2010. Jorge Dias

Introdução INTRODUÇÃO AO SWEBOK. Origens do corpo de conhecimentos da Engenharia de Software: Introdução a Computação e Engenharia de Software

Ainda que muitos modelos sejam semelhantes entre os modelos de ciclo de vida, existem alguns aspectos que os diferenciam:

Introdução a Orientação a Objetos

FACULDADE DE CIÊNCIA DE ENGENHARIA DE SOFTWARE MATRIZ CURRICULAR DO CURSO DE ENGENHARIA DE SOFTWARE PRIMEIRO PERÍODO SEGUNDO PERÍODO

S12 - Software e Engenharia de Software

ALM Aplicações em Linguagem de Montagem. Introdução. A produção de Software é uma atividade build and fix. build. fix

S11 - Software e Engenharia de Software

CICLO DE VIDA DO SOFTWARE. Nas empresas também é difícil adotar apenas um ciclo de vida, na maioria das vezes possui mais de um.

Introdução. Parte 01. Desenvolvimento de Programação Orientada a Objetos. Prof. Pedro Neto

Engenharia de Software

Paradigmas de Linguagens

Introdução. Principal causa do fracasso no desenvolvimento de software é a não utilização de metodologias eficientes para a produção

ENGENHARIA DE SOFTWARE

! Introdução. " Motivação para Processos de Software. ! Processo Unificado (USDP) " Definições " RUP x USDP " Características do Processo Unificado

DECivil Departamento de Engenharia Civil, Arquitectura e Georrecursos. Apresentação. Computação e Programação (CP) 2013/2014.

Análise e Projeto. Prof. Erinaldo Sanches Nascimento

Prof. Esp. Fabiano Taguchi

Engenharia de Software I Processos de desenvolvimento de SW. profa. Denise Neves

Apresentação. Informação geral + Conceitos iniciais

Engenharia de Software I

ENGENHARIA DE SOFTWARE

RUP RATIONAL UNIFIED PROCESS PRÁTICAS RECOMENDADAS. Prof. Fabiano Papaiz IFRN

Departamento de Sistemas de Computação Universidade de São Paulo Análise e Projeto Orientados a Objetos Aula 2 O Processo Unificado (PU)

Engenharia de Software

Tópicos da Aula. O que é anunciado. Falha de Comunicação no Desenvolvimento de Software. Engenharia de Software: Conceitos Fundamentais

Universidade Regional de Blumenau

Introdução à Engenharia de Software

Processos de Software

Análise e projeto de sistemas

Engenharia de Software I

Prof. Ms. Ronaldo Martins da Costa

INSTITUTO FEDERAL DE SÃO PAULO CAMPUS PRESIDENTE EPITÁCIO MODELO DOS PROCESSOS DE SOFTWARE

Computação Eletrônica

Software: na visão da ES

Engenharia de Software. Projeto de Software. Projeto: definição. Profa. Dra. Lúcia V. L. Filgueiras Profa. Dra. Selma Shin Shimizu Melnikoff

Crise do Software. Crise de tecnologia - hardware caminha mais rápido que o software

Modelos de Ciclo de Vida (Parte 1)

Notas de Aula 03: Introdução a Orientação a Objetos e a UML

SISTEMAS OPERACIONAIS

Ferramenta para Desenvolvimentode Sistemas EmbarcadosUtilizando Linguagem de Alto Nível p.1/25

Engenharia de Software. Prof. Me. Clodoaldo Brasilino

Manutenção Leitura: Sommerville; Pressman

Transcrição:

Tema da Aula de Prof. Cristiano R R Portella portella@widesoft.com.br Camadas da ESw ESw é uma tecnologia em camadas. Como todo enfoque de Engenharia, tem um comprometimento com a Qualidade e a eficiência dos processos. O cerne da ESw é a camada de processo. O processo é a cola que une as demais camadas e permite um desenvolvimento racional de Sw. 1

de Definições (sentido lato) Metodologia Conjunto de métodos (técnicas) e processos. Por exemplo: Metodologia Estruturada, Metodologia Orientada a Objeto etc 2

Definições (sentido lato) Método Caminho para se atingir um objetivo (modo de proceder). Por exemplo: Método de Análise Estruturada, Método de Projeto Estruturado, etc. Definições (sentido lato) Processo Maneira pela qual se realiza uma operação, segundo determinado método ou norma. Por exemplo: Processo de detecção do fluxo da informação 3

Técnica Aplicação prática do processo; Definições (sentido lato) Por exemplo: Conhecer o processo alvo do sistema e levantar as transformações da informação de 4

Objetivos Objetivos: A exigência 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 Métodos Métodos: Detalhamento de como fazer, utilizando-se os princípios de engenharia. 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ério para sua aplicação. 5

Ferramentas Ferramentas: Proporcionam apoio automatizado ou semi-automatizado à aplicação dos método s. Quando integradas (o produto gerado por uma ferramenta serve como input para a ferramenta seguinte), obtém-se um ambiente de suporte ao desenvolvimento de software, chamado de Auxiliada por Computador (CASE-Computer-Aided Engineering). Procedimentos Procedimentos: Constituem o elo de ligação entre Métodos e Ferramenta, permitindo o desenvolvimento racional de software. Procedimentos 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. 6

Paradigmas Paradigmas: São abordagens (modelos) preconizados pela EWs. Paradigma: (sm) Modelo, padrão (Aurélio-2a Ed) Não existe uma abordagem em particular, que seja a melhor para qualquer problema de software. O desenvolvedor deve escolher um paradigma ou combinar vários deles, de forma a obter a potencialidade de cada um. Paradigmas Paradigmas: 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 uma filosofia de coordenação predominante, controle e administração - essa disciplina (rigor) para desenvolvimento de software chama-se (QJHQKDULD GH 6RIWZDUH. 7

Paradigmas Paradigmas: Um determinado paradigma é escolhido baseado em: Natureza do projeto Área de aplicação Métodos e ferramentas disponíveis Controles necessários Produtos gerados em cada fase Paradigmas Paradigmas: 9 Modelo de ciclo de vida clássico (cascata ou linear) 9 Modelo em Prototipação 9 Modelo em espiral 9 Modelo RAD (Rapid Applicaton Development) 9 Modelo incremental 9 Modelo em espiral WINWIN 9 Modelo dos métodos formais 9 Desenvolvimento baseado em componentes 9 Técnicas de 4a geração 9 etc 8

Processo de Processo de : Consiste em atividades, métodos e práticas úteis no desenvolvimento do produto de software. Processo de Processo de : Conforme especificações Segundo especificações e critérios previamente definidos Correções, adaptações e ampliações. 9

Processo de Processo de (RUP - Rational Unified Process): Processo de Produto de (NORMA NBR ISO 9000-3 - Introdução) Com o progresso da tecnologia da informação, a quantidade de software vem crescendo e tornando essencial a gestão da qualidade de produtos de software.... Entretanto, o processo de desenvolvimento e manutenção de software é diferente da maioria dos demais tipos de produtos industriais, tornando necessário prover, nesse campo da tecnologia de desenvolvimento tão rápido, orientações adicionais para o estabelecimento de sistemas da qualidade onde estejam envolvidos os produtos de software, levando-se em conta o estágio atual da tecnologia. A natureza do desenvolvimento de software é tal, que algumas atividades estão relacionadas às fases específicas do processo de desenvolvimento, enquanto outras podem ser aplicadas ao longo de todo o processo 10

Produto de Produto de : Um produto de software é um programa de computador combinado com os itens que o tornam inteligível, utilizável e extensível. (Brooks, 1975) é um elemento de sistema lógico, e não físico. Consistem de Instruções, estruturas de dados e documentação (Pressman, 92-2000) Produto de Produto de : Um produto de software é constituído de itens executáveis em máquina e itens não executáveis em máquina (Pressman) Código Estruturas de dados Documentos (técnicos, de instrução, normativos etc) ( pessoal habilitado) 11

Produto de : Genéricos (pacote) Custo Adequação Prazo para uso (disponível) Produto de Específicos (taylor-made) Custo Adequação Prazo para uso Produto de Produto de (segundo sua aplicação): básico: Utilitários, ferramentas de desenvolvimento, gerenciadores de métodos de acesso de tempo real: Monitora/analisa/controla eventos do mundo real. Dispositivos de coleta de dados Análise (lógica e set points) Dispositivos de atuação (saída - feedback) Monitor (coordenação e controle do tempo-1ms) 12

Produto de Produto de (segundo sua aplicação): de processamento comercial: Sistemas de informação vulgarmente chamados de sistemas ou aplicativos. Foco na informação e na automação de rotinas administrativas. 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) Produto de Produto de (segundo sua aplicação): 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. 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. 13

Produto de Produto de (segundo sua aplicação): de Inteligência Artificial: Sistemas especialistas (bases de conhecimento e máquina de inferência) Redes neurais artificiais Lógica fuzzi (fuzzi sets lógica nebulosa) Produto de NBR ISO 9000-3 Definições: 3.1 : criação intelectual compreendendo os programas, procedimentos, regras e qualquer documentação correlata à operação de um sistema de processamento de dados. 3.2 Produto de : Conjunto completo de programas de computador, procedimentos e documentação correlata, assim como dados designados para entrega a um usuário. 3.3 Item de : Qualquer parte identificável de um produto de software em etapa intermediária ou na etapa final do desenvolvimento. 3.4 Desenvolvimento: Todas as atividades a serem realizadas para a criação de um produto de software. 14

Produto de Características do software (Pressman): é desenvolvido e não manufaturado (no sentido estrito de manufatura). não se desgasta, porém fica obsoleto. 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). Produto de Curva de falhas para o hardware 15

Produto de Curva de falhas do software (idealizada) Produto de Curva de falhas do software (real). 16

Produto de Os quatro P s do desenvolvimento de software Princípios da Descrevem algumas propriedades gerais e referemse 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 metodologias e ferramentas apropriadas para o produto que se deseja construir. Princípios: Formalidade Abstração Decomposição Generalização Flexibilização 17

Princípio da Formalidade Desenv.SW é uma atividade criativa e com 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 (pgms. são componentes formais), nas rotinas de teste, nos procedimentos da instalação etc. (Exemplo da Microsoft e a informalidade) Princípio da Abstração É o processo de identificar os aspectos importantes do produto/processo, ignorando-se os detalhes (Princípio de Pareto). 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. 18

Princípio da Decomposição A decomposição é uma técnica utilizada para permitir que lidemos com a complexidade. Dividir para conquistar ou o limite da habilidade humana de entender a complexidade (5 ± 2). Decomposição do processo Atividades de controle da qualidade Atividades de gerenciamento do cronograma Atividades de gerenciamento de fornecedores externos Atividades de teste Atividades de documentação Princípio da Decomposição Decomposição do produto Programas Módulos ou rotinas Componentes 19

Princípio da 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; Princípio da 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. 20

Princípio da 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. 9 Flexibilização do produto de software: Customização das saídas do sistema; Parametrização do processo e inclusão de variações do algoritmo original; Facilidade em agregar novos módulos/funções Facilidade em porta-lo para outras plataformas Princípio da Flexibilização Flexibilização do processo de 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 21