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

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

Paradigmas da Engenharia de Software AULA PROF. ABRAHAO LOPES

Processos de Software

Processos de software

Modelos de Processo de Software

Modelos de Processo de Software

Modelos de Processo de Software. SSC Engenharia de Software 1 Profa. Dra. Elisa Yumi Nakagawa 2 o semestre de 2012

15/03/2018. Professor Ariel da Silva Dias Modelos de Processo de Software

Definições e ciclo de vida

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

Análise de Sistemas CONTEXTUALIZAÇÃO

Desenvolvimento de Projetos

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

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

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

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

Processos de Desenvolvimento de Software. Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 2

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

Engenharia de Software I

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

Engenharia de Software I

Engenharia de Software Introdução

Perguntas da Aula 2. Respostas da Pergunta 2. Respostas da Pergunta 1. Respostas da Pergunta 4. Respostas da Pergunta 3. Processos de Software

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

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

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

Engenharia de Software. Engenharia de Software


Engenharia de Software

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

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

Paradigmas de Software

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

Engenharia de Software

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

Agenda TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ANÁLISE E PROJETO DE SISTEMAS. Aula 2 19/08/2012

INTRODUÇÃO A ENGENHARIA DE SOFTWARE

Processos de Software

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

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

Modelos de Ciclo de Vida (Parte 1)

Prof. Ms. Ronaldo Martins da Costa

PROCESSOS DE SOFTWARE

Informática I. Aula Aula 21-29/11/06 1

Processos de software Leitura: Cap3 Sommerville / Cap1: Pressman - Ariadne

Engenharia Software. Ení Berbert Camilo Contaiffer

ENGENHARIA DE SOFTWARE

ENGENHARIA DE SOFTWARE

Engenharia de Software

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

CK119: Engenharia de Software

Engenharia de Software II

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 03 PROFª BRUNO CALEGARO

Princípios da Engenharia de Software aula 03

Engenharia de Software Processo de Desenvolvimento 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.

Engenharia de Software: Visão Geral

Análise e Projeto. Prof. Erinaldo Sanches Nascimento

ENGENHARIA DE SOFTWARE

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

CICLO DE VIDA DE SOFTWARE

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

Engenharia de Software

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

ENGENHARIA DE SOFTWARE. Aula 03 Processos de Software

Modelos de Ciclo de Vida

Processos de Software

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

14/11/2013. Capítulo 2. Processos de Software. Tópicos apresentados. Oprocessodesoftware. Modelos de processo de software. Atividades de processo.

MODELOS DE PROCESSOS (PARTE 2)

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE

ENGENHARIA DE SOFTWARE

Introdução à Engenharia de Software e Modelos de Processos de Software. Engenharia de Software Profa. Inês A.G.Boaventura 2.

Escolhendo um Modelo de Ciclo de Vida

Processos de Software

Engenharia de Software 1

Engenharia de Software

Introdução à Engenharia de Software

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

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

Refere-se a um conjunto de problemas encontrados no desenvolvimento de software:

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

Engenharia de Software II

Engenharia de Software. Prof. Me. Clodoaldo Brasilino

Processo. Processo unificado. Principais Características do UP. Principais Características do UP RUP. Unified Process (Processo Unificado)

Processos de Software. O que é modelo de processo? Vantagens. Modelos de Processo Gerais. O que é um processo de software?

QUESTÕES TESTES. Questão 1. O modelo de ciclo de vida em cascata:

Engenharia de Software I

Software: na visão da ES

Processos de Software

INF014 Análise e Projeto de Sistemas Ciclos de vida e Processos de Software

Manutenção Leitura: Sommerville; Pressman

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

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

Gerência e Planejamento de Projeto. Engenharia de Software I Profa. Elisa Yumi Nakagawa 1 o semestre de 2015

Transcrição:

O que é software? Software e Engenharia de Software Programas de computador Entidade abstrata. Ferramentas (mecanismos) pelas quais: exploramos os recursos do hardware. executamos determinadas tarefas resolvemos problemas. interagimos com a máquina. tornamos o computador operacional. O que é software? Conceito mais amplo que inclui também: Instruções que executam uma função desejada. Estrutura de dados para manipular informação. Documentos para desenvolver, operar e manter os programas. O que é software? Software como um produto! Sw pervasivo incorporado em todas as atividades humanas cotidianas: cultura, comércio, lazer, etc. Tipos de Sistemas de Software Software básico Software stand-alone aplicativos para PC que náo precisam estar conectados à rede Software para sistema em tempo real Software baseado em transações: comércio eletrônico Software comercial e sistemas financeiros Software para engenharia e aplicações científicas Software embarcado (ex. microwave, celulares) Software baseado em inteligência artificial Software de entretenimento: jogos, cinema A Evolução do Software Os primeiros anos sistemas batch distribuição limitada software personalizado 1950 A segunda era sistemas multiusuários sistemas em tempo real banco de dados software produto A terceira era sistemas distribuídos incorporaçã o de inteligência hardware de baixo custo impacto do consumidor A quarta era sistemas desktop poderosos tecnologia de orientação a objetos sistemas especialistas redes neurais computação paralela A quinta era Netbooks Web 2.0 Serviços Web Computação em nuvens 1960 1970 1980 1990 2000 2010 1

Dificuldades para desenvolver software Saber o que o software deve fazer : quais os requisitos (abstração); Ferramentas; linguagem; so tecnologias diferentes Tempo e custos elevados de desenvolvimento. Prever falhas (antes de entregar). Tratar manutenção e versões. Produtividade não cresce com a demanda de serviços. Características do Software software não é um elemento físico; é um elemento lógico (não tem propriedades físicas, como visualizar, medir...) abstração maior; o produto final é diferente o software não pode ser manufaturado; custos estão concentrados no desenvolvimento e não na manufatura. o processo de gerenciamento é diferente; o relacionamento entre as pessoas é diferente; Características do Software Curvas de falhas no hw existem diferentes abordagens para se chegar no produto final o software não se desgasta com o uso; mas deteriora-se não há peças de reserva. => manutenção, correção, aperfeiçoamento. não é construído aproveitando-se componentes prontos pq muitas vezes é personalizado. Um erro durante um teste => mais difícil de testar. índice de falhas mortalidade infantil tempo desgaste índice de falhas Curva de falhas no sw mudança curva real curva idealizada tempo Falso ou verdadeiro? 1. Já temos um manual repleto de padrões e procedimentos para a construção de sw. Neles está tudo o que a equipe precisa saber para produzir com qualidade. 2. Meu pessoal tem ferramentas de última geração, isso é suficiente. 3. Se nós estamos atrasados nos prazos podemos adicionar mais programadores e isso irá resolver o problema com o cronograma 4. Podemos terceirizar o projeto de software. Assim a responsabilidade será da empresa contratada. 2

Falso ou verdadeiro? Assim que colocarmos o programa em funcionamento posso ficar tranquilo porque meu trabalho estará finalizado. 2. A engenharia de software irá nos fazer criar documentação volumosa e desnecessária e, invariavelmente nos retardar. 3. Só poderemos avaliar a qualidade do software quando tivermos o programa funcionando. Falso ou verdadeiro? 1. Uma definição geral dos objetivos é suficiente para começar a escrever programs, podemos adicionar detalhes depois. 2. Os requisitos de software mudam constantemente mas mudanças podesm ser facilmente asimiladas pois o software é flexível. 3. Eu, cliente, sei o que preciso. Mitos da ES Mitos atuais 1. O teste de sw ou sua verificação formal pode remover todos os erros. Para garantir qualidade é só aumentar a confiabilidade do software. O reúso de componentes prontos me traz segurança com relação à qualidade. Mitos: Propagaram desinformação e confusão 4administrativos 4cliente 4profissional Crise de Software Alguns autores associam a palavra crise aos problemas para desenvolver software estimativas de prazo e de custo produtividade das pessoas qualidade de software software difícil de manter Crise de Software Problemas: Software inadequado. Cronogramas e custos imprecisos - dificuldades em prever o progresso durante o desenvolvimento. Inexistência de dados históricos sobre o processo de desenvolvimento. Mitos da ES Comunicação deficiente - insatisfação de usuários. Carência de conceitos quantitativos sobre confiabilidade, qualidade, reusabilidade. Software existente é de difícil manutenção. Crise de Software Solução: Combinar métodos para as fases de desenvolvimento. Ferramentas para automatizar esses métodos. Técnicas para assegurar qualidade. => Disciplina: Engenharia de Software. 3

Engenharia de Software Abordagem sistemática para o desenvolvimento, operação, manutenção e descarte de software. Aplicação prática de conhecimento científico ao projeto e construção de software. Disciplina que utiliza princípios de engenharia para produzir e manter softwares dentro de prazos e custos estimados... construção por muitas pessoas de um software com múltiplas visões. (Parnas 1987) Engenharia de Software Objetivos: Melhorar a qualidade do software e aumentar a produtividade e satisfação profissional de engenheiros de software. Definição: Disciplina que utiliza um conjunto de métodos, técnicas e ferramentas para analisar, projetar e gerenciar desenvolvimento e manutenção de software. Engenharia de Software Engenharia de Software Métodos e Técnicas: detalhes de como fazer Metodologias: como aplicar Ferramentas: automatizam os métodos, dão apoio a utilização. CASE => (Computer-Aided Software Engineering): Ferramentas integradas para desenvolver software. ES e outras áreas Princípios da Engenharia de Software Formalidade: reduz inconsistências Abstração: aspectos importantes, ignorar detalhes Decomposição: lidar com complexidade Generalização: reutilização, custo Flexibilização: mudanças, processo incremental 4

Processo de Software À E. S. está associado um conjunto de passos (que englobam métodos, ferramentas, etc) denominado paradigma Processo de Software Um conjunto estruturado de atividades requeridas para desenvolver um produto de software Envolve: fases, atividades, pessoas (responsáveis, participantes, papéis), entradas e saídas (artefatos), recursos, passos para execução, regras, procedimentos. Processo de Software Fases grandes divisões (marcos) dos processos, períodos de tempo no qual algumas ativides são executadas. Atividades- possui entradas e saídas bem definidas, pessoas (responsáveis, participantes, papéis), entradas e saídas. Artefatos: qq doucmentos quepossa ser produzido ao longo do desenvolvimento de sw. Recursos: hw, sw, material consumível ou não. Passos para execução: o que precisa ser feito em cada atividade Processo de Software Modelos de processo de sw: representação abstrata de um proceso de sw. Podem ser instanciados Projeto: execução de um proceso, uma instância de um proceso. Padrão de processo: resolvem problemas recorrentes relacionados a processos de sw. Normas de avaliação de processos: NBR ISO/IEC 12207 Modelo de Processo de Software Apresenta uma descrição de um processo de alguma perspectiva particular. Modelos prescritivos: definem uma ordem para realizar as atividades e um fluxo de trabalho previsível. Modelos ágeis: planejamento é gradativo, mais fácil adaptação. 1. Ciclo de Vida Clássico (cascata) modelo mais antigo e o mais amplamente conhecido da engenharia de software modelado em função do ciclo da engenharia convencional requer uma abordagem sistemática, seqüencial ao desenvolvimento de software o resultado de uma fase é entrada para outra fase. existem variações/adaptações 5

Ciclo de Vida Clássico (cascata) Engenharia de sistemas envolve a coleta de requisitos em nível do sistema, com uma pequena quantidade de projeto e análise de alto nível esta visão é essencial quando o software deve fazer interface com outros elementos(hardware, pessoas e banco de dados) Análise de Requistos de Software o processo de coleta dos requisitos é intensificado e concentrado especificamente no software deve-se compreender o domínio da informação, a função, desempenho e interfaces exigidos Projeto tradução dos requisitos do software para um conjunto de representações que podem ser avaliadas quanto à qualidade, antes que a codificação se inicie Codificação tradução das representações do projeto para uma linguagem artificial resultando em instruções executáveis pelo computador Teste Concentra-se: nos aspectos lógicos internos do software,garantindo que todas as instruções tenham sido testadas nos aspectos funcionais externos, paradescobrir erros e garantir que a entrada definida produza resultados que concordem com os esperados. 6

Manutenção provavelmente o software deverá sofrer mudanças depois que for entregue ao cliente causas das mudanças: erros, adaptação do software para acomodar mudanças em seu ambiente externo e exigência do cliente para acréscimos funcionais e de desempenho Ciclo de Vida Clássico Problemas para aplicação: Na prática, projetos não seguem o fluxo seqüencial. Acomodações de incertezas no início do projeto é difícil. Versão funcional dos programas disponível após os últimos estágios do projeto Ciclo de Vida Clássico O modelo Cascata trouxe contribuições importantes para o processo de desenvolvimento de software: imposição de disciplina, planejamento e gerenciamento; a implementação do produto deve ser postergada até que os objetivos tenham sido completamente entendidos 2. Evolutivo Tudo merece uma nova chance situações para acomodar um processo que evolui com o tempo Incorporação de diferente partes e criação de diferentes versões São iterativos repetem atividades Inclui prototipação Permite o desenvolvimento exploratório Evolutivo 3. Incremental Abordagem intermediária Combina vantagens dos paradigmas ciclo de vida clássico e evolutivo Identificação das funções do sistema, estabelecimento de incrementos e prioridades Cada incremento pode utilizar um paradigma de desenvolvimento diferente Dificuldade para dividir e gerenciar versões 7

Incremental Incremental O valor agregado ao Cliente está na entrega em cada incremento de modo que a funcionalidade do sistema estará disponível mais cedo Incrementos iniciais funcionam como protótipos para ajudar a evocar requisitos para incrementos posteriores Menores riscos de falha no projeto em geral Os serviços do sistema de alta prioridade tendem a receber a maioria dos testes Variações do modelo incremental Orientado a funcionalidades a cada versão novas funcionalidades são entregues Orientado a cronograma entrega em tempos determinados 4. Espiral Modelo que acopla a natureza iterativa da prototipação co os aspectos controlados e sitemáticos do modelo cascata Dividio em regiões ou atividades de trabalho. Cada volta do espiral representa um desenvolvimento completo. O loop mais interno se concetra mais na definição dos requisitos A gerência pode adaptar o modelo e suas fases Espiral Espiral Paradigma mais realístico - sistemas grandes É um metamodelo Incorpora análise de riscos. Permite prototipação em mais de um estágio Problemas: O modelo é relativamente novo. Requer esperteza. Pode nunca terminar, precisa ser evolutiva e controlável. 8

Consideraçõ ções sobre processos Que processo usar? Depende da natureza da aplicação. Métodos e ferramentas disponíveis, etc. Outros processos - objetivos específicos, mais especializados RAD (Rapid Application Development)- enfatiza rapidez e um ciclo mais curto Prototipação Processo formal Modelo de componentes Processo unificado UP Orientados a reúso Linguagem de quarta geração Engenhria de Linha de Produto de Sw (LPS) 1. Prototipação Prototipaçã ção Possibilita que o desenvolvedor crie um modelo (protótipo) do software a ser construído para auxiliar a entender os requisitos do usuário Apropriado para quando os requisitos não estão claramente definidos Derivado da técnica de extração de requisitos fim construção produto Prototipaçã ção início refinamento protótipo obtenção dos requisitos avaliação protótipo projeto rápido construção protótipo Abordagem Prototipação Validar a precisão dos requisitos ou aceitabilidade das decisões O usuário irá colaborar? Validar a viabilidade de uma estratégia proposta. O software é particionável? Observações: protótipos só são válidos se construídos rapidamente 9

Prototipação O protótipo pode ser descartado ou fazer parte do produto final. Conerstone (pedra fundamental): Prototipação evolutiva Throw away: descartável Prototipação Localiza aspectos visíveis para o usuário (E/S). A iteração pode adequar o protótipo às necessidades do usuário. Problemas: Cliente insiste que o protótipo seja com ligeiras modificações, a versão final do produto. Decisões e soluções improvisados tornam-se parte do produto final. 2. Linguagens de Quarta Geraçã ção Linguagens de Quarta Geraçã ção Ferramentas para especificação de alto nível (L4G): Consulta a base de dados. Geração de relatórios. Manipulação de dados. Definição e interação com Telas. Geração de código. Linguagens de Quarta Geraçã ção Domínio predominante : Sistemas comerciais de informação. Boa produtividade para sistemas pequenos e médios e aplicação específicas. Problemas: Para sistemas grandes, demanda muito tempo; e ainda permanece a necessidade de projeto 3. Desenvolvimento de sistemas formais Baseado na transformação de uma especificação matemática através de diferentes representações para um programa executável Transformações são preservadoras de exatidão, portanto, são diretas para mostrar que o programa está de acordo com sua especificação Contido na abordagem Cleanroom para desenvolvimento de software 10

Desenvolvimento de sistemas formais Transformações Formais Desenvolvimento de sistemas formais Problemas Necessidade de habilidades especializadas e treinamento para aplicar a técnica Difícil de especificar formalmente alguns aspectos do sistema como a interface de usuário Aplicabilidade Sistemas críticos, especialmente aqueles no qual um case de segurança deve ser feito antes do sistema ser posto em operação 4. Desenvolvimento Baseado em Componentes Baseado no reuso sistemático, onde os sistemas são integrados de componentes existentes ou sistemas padronizados Estágios do Processo Análise do componente Modificação dos requisitos Projeto do sistema com reúso Desenvolvimento e integração Esta abordagem está se tornando mais importante, mas a experiência ainda é limitada com ela Desenvolvimento orientado a componentes Que processo usar? Sempre deve existir um processo de software definido - padrões de qualidade. Criar um processo baseado em fases específico para cada projeto. O profissional deve estar apto a avaliar a aplicação a ser desenvolvida e a situação do ambiente de desenvolvimento para decidir qual o melhor processo de software a ser definido. 11

Combinaçã ção Processo de Software Definição O Que? Desenvolvi mento O Como? Manutenção Análise do Sistema Projeto do Software Planejamento do Projeto de Software Codificação Análise de Requisitos Testes Correção Adaptação Melhora mentos 1) Definição Função, desempenho, interface, restrições de projeto, critérios de validação. Análise de sistemas Planejamento de projeto de software. Análise de requisitos. A Obrigação... 2) Desenvolvimento: Estrutura de dados, arquitetura de software, detalhes procedimentais, programas, testes. Projeto de software. Codificação. Testes 3) Manutenção Corretiva: para corrigir defeitos; Adaptativa: para acomodar mudanças no ambiente externo do software (S.O., periféricos, etc) Perfectiva: para inclusão de novas funcionalidades 12

O Ciclo de Vida Canônico Estudo de Viabilidade Iniciação do projeto Especificação de requisitos Projeto da arquitetura Projeto detalhado Codificação Teste de unidade Teste de aceitação Teste operacional Encerramento do projeto Operação Desativação do produto O modelo canônico deve ser tratado como uma referência que deve ser adaptada para cada situação. Referências Pressman, R. Software Engineering: A Practitioner's Approach. McGraw-Hill, 6 th edition, 2006. Sommerville, I. Software Engineering:) International Computer Science Series) 8 th edition, 2006. Programação Extrema XP (extreme Programming) Nova abordagem para o desenvolvimento de software baseado no desenvolvimento e entrega de incrementos de funcionalidade bem pequenos Conta com melhoramento constante do código, envolvimento do usuário no time de desenvolvimento e programação em pares 13