Engenharia de Software I: Introdução

Slides:



Advertisements
Apresentações semelhantes
APS I Análise e Projeto de Sistemas I
Advertisements

Análise e Projeto Orientado a Objetos
Engenharia de Software
Engenharia de Software
Modelagem de Software Orientado a Objetos
Gerência de Projetos Wesley Peron Seno Introdução
Engenharia de Software
Engenharia de Software
Rational Unified Process(RUP)
Valéria Maria Lauande Março/2010
INTRODUÇÃO A INFORMÁTICA
FACULDADE DOS GUARARAPES
Metodologia de Desenvolvimento de Software
Introdução a UML.
RUP Rational Unified Process (Processo Unificado de Desenvolvimento da Rational) 1.
CK 119: Engenharia de Software DC/CC/UFC © Rossana Andrade, Setembro CK119: Engenharia de Software Rossana Andrade Ph.D, SITE, University of Ottawa,
Análise e Projeto de Sistemas
Componentes: A Abordagem Catalysis
Processo Desenvolvimento de Software Tradicional
Análise e Projeto de Sistemas
Como Desenvolver Sistemas de Informação
Modelos de Processos de Software
Engenharia de Software
Classes e objetos Modelagem
dbCheck! uma ferramenta para teste de banco de dados
Introdução a Engenharia de Software
Deivison Cheloni e Bernardo Martins
Processo de Software Prof. Dr. rer. nat. Daniel D. Abdala
Aula 1 Minicurso: Astah Ministrantes: André Martins; Camila Brondani;
Desafios do desenvolvimento de software
Visão Geral do RUP.
Fundamentos de Engenharia de SW
Projeto de Sistemas de Software
Modelagem de Software.
Processos de Desenvolvimento de Software – Parte 2
Análise e Projeto de Sistemas
IFSul – Campus Venâncio Aires
Engenharia de Software
Arquitetura do Software
Introdução a Desenvolvimento de Sistemas
Engenharia de Software
Modelos de Processo de Software
Introdução a Desenvolvimento de Sistemas
Análise e Projeto de Sistemas de Informação 2o. Semestre de 2014
Introdução à Engenharia de Software
Análise e Projeto Orientados a Objetos
O Processo Unificado (UP)
Engenharia de Software
METODOLOGIA, MÉTODOS E FERRAMENTAS
Processos de Software.
Processos de Software.
Análise e Especificação de Requisitos © 2001 Jaelson CastroInformações Gerais 1 Análise e Especificação de Requisitos - IF119 Centro de Informática Jaelson.
Fluxos secundários Só devem ser analisados e descritos após a descrição dos fluxos básicos. Fluxos alternativos situações especiais (desconto para um cliente)
Gestão de projetos de Software GTI-16
UML e a Ferramenta Astah
Engenharia de Software
Engenharia de Software
© Nabor C. Mendonça Processo / Metodologia de Desenvolvimento de Software.
Gerenciamento de Requisitos e Modelagem de sistemas
Engenharia de Software
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ANÁLISE E PROJETO DE SISTEMAS Aula /08/2012 Professor Leomir J. Borba-
Engenharia de Software
UML (Unified Modeling Language) Linguagem Unificada de Modelagem
APSI II Análise e Projeto de Sistemas de Banco de Dados II.
RUP – Rational Unified Process Márcia Seabra Cabral Prof. Augusto Sampaio Centro de Informática - UFPE.
APS II Análise e Projeto de Sistemas de Informação II
Apresentação Leonardo Brussolo de Paula
Processos de Software Ludimila Monjardim Casagrande 1º Semestre Desenvolvimento e Qualidade.
Engenharia de Software Conceitos e elementos 1. Engenharia   Resolução de problemas através de soluções economicamente viáveis  Motivacão: Limitação.
O Processo Unificado (PU). 2 O que é o Processo Unificado (PU)? É um modelo de processo de software baseado no modelo incremental, visando a construção.
Transcrição da apresentação:

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

Programa O Processo de Engenharia de Software Engenharia de requisitos Modelagem de sistemas Conceitos de orientação a objetos Desenvolvimento de sistemas orientados a objetos Projeto de interface humano-computador Ferramentas de apoio a análise e projeto de software

Estratégias Desenvolvimento de projetos bimestrais em grupos de dois alunos (40%) Provas escritas bimestrais (60%) Eventuais trabalhos que podem valer pontos Ferramenta: Jude ->Astah http://jude.change-vision.com/jude-web/product/community.html

Bibliografia Básica Software Engineering: (Update) (8th Edition) (International Computer Science Series) by Ian Sommerville (Hardcover - Jun 4, 2006) UML 2 and the Unified Process: Practical Object-Oriented Analysis and Design (2nd Edition) (Addison-Wesley Object Technology Series) by Jim Arlow and Ila Neustadt, 2005. The Unified Modeling Language Reference Manual (2nd Edition) (The Addison-Wesley Object Technology Series) by James Rumbaugh, Ivar Jacobson, and Grady Booch (Hardcover - Jul 29, 2004). Unified Modeling Language User Guide, The (2nd Edition) (Addison-Wesley Object Technology Series) by Grady Booch, James Rumbaugh, and Ivar Jacobson (Hardcover - May 29, 2005). JACOBSON, I BOOCH, G., RUMBAUGH, J., Unified Software Development Process, Addison-Wesley, Janeiro 1999.

Bibliografia Complementar Software Engineering: A Practitioner's Approach by Roger Pressman (Hardcover - Jan 20, 2009). Análise e Projetos de Sistemas de Informaçao - Raul Sidnei Wazlawick, Editora Campus.

Motivação Compreender as etapas de desenvolvimento de software. Conhecer a diferença entre o desenvolvimento de software de pequeno e grande porte. Conhecer as principais técnicas de desenvolvimento de software. Estar apto a especificar projetos de software em UML (Unified Modeling Language)

Conceitos Software Produto de Software “criação intelectual compreendendo os programas, procedimentos, regras e qualquer documentação correlata à operação de um sistema de processamento de dados.” ISO9000-3 Produto de Software “Conjunto completo de programas de computador, procedimentos e documentação correlata, assim como dados designados para entrega a um usuário.” ISO9000-3 Outros termos: sistemas de software, aplicações, aplicativos.

O Papel do Software na sociedade Software está presente na grande maioria das atividades da sociedade: Banco Comunicação Transporte Escola Previdência Supermercado Cinema Bares Parques de diversão

Exemplos de desastres causados por software 20 famous software disasters http://www.devtopics.com/20-famous-software-disasters/ Problemas vão de acidentes a financeiro devido ao grande percentual de re-trabalho necessário (US$ 60 bilhões)

Desastres causados por software World War III… Almost (1983) Cost: Quase toda a humanidade Desastre: O sistema de alertas precoces soviético indicou falsamente que os EUA havia lançado 5 misséis balísticos. Felizmente um oficial soviético teve um presentimento e raciocinou “se os EUA realmente está nos atacando deveria lançar mais de 5 mísseis, então reportou que a alerta deveria ser falsa …” Causa: Um bug no software soviético que falhou em filtrar detecções de mísseis falsas devido à luz do sol refletindo no topo das nuvens.

Desastres causados por software Patriot Fails Soldiers (1991) Cost: 28 soldados mortos, 100 feridos Desastrer: Durante a primeira guerra do golfo, um sistema de mísseis americano na Arábia Saudita falhou em interceptar um míssel vindo da esquadra iraquiana. O míssel destrui um acampamento american. Cause: Um erro do software de arredondamento calculou incorretamente o tempo, fazendo o sistema ignorar o míssel.

Desastres causados por software Pentium Fails Long Division (1993) Custo: US $475 milhões, credibilidade da empresa Desastre: Pentium, um chip da Intel bastante divulgado cometia erros quando dividindo números de ponto flutuante em um intervalo específico. Por exemplo, dividindo 4195835.0/3145727.0 resulat em 1.33374 instead de 1.33382, um erro de 0.006%. Apesar do erro afetar poucos usuários, se tornou um pesadelo nas relações públicsa da empresa. Com aproximadamente 5 milhões de chips defeituosos em circulação, a Intel ofereceu reposição apenas aos consumidores que provassem que precisariam de alta precisão. No final, a Intel repos o chip de todos que reclamaram. Causa: O divisor da unidade de ponto flutuante do Pentium tinha uma tabela de divisão errada, faltando em torno de 5 de milhares de entrada que resultavam em erros de arredondamento.

Como Produzir software? ambiente Sistema de Software Automatizar Computador Mundo Real

Características de Software Software é desenvolvido e não manufaturado no sentido clássico. Software não se deteriora ... não existem componente de reposição. Software é feito sob encomenda, ao invés de ser construído a partir de componentes. A evolução tecnológica afeta diretamente as facilidades que podem ser incorporadas ao software e as técnicas de construção destes. Tempo para transferência de tecnologia.

Tipos de Sistemas de Software Software básico Software para sistema em tempo real Software comercial Software para engenharia e aplicações científicas Software embarcado (ex. microwave) Software para computadores pessoais (shrink-wrap) Software baseado em inteligência artificial Software de entretenimento

Engenharia de Software Uma definição: O estabelecimento e uso de um conjunto de princípios para se obter, economicamente, um software que seja confiável e trabalhe eficientemente em máquinas reais. Três elementos chaves: métodos ferramentas procedimentos (gerenciamento de projetos)

A Evolução do Software 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 comunicação intergaláctica A segunda era sistemas multiusuários sistemas em tempo real banco de dados software produto A quinta era Netbooks Web 2.0 Serviços Web Computação em nuvens Os primeiros anos sistemas batch distribuição limitada software personalizado 1950 2010 1960 1970 1980 1990 2000

Modelos de Processo de Desenvolvimento de Software Modelo de ciclo de vida descrições abstratas do processo de desenvolvimento e modificação, tipicamente, mostrando os principais estágios de desenvolvimento e manutenção de um software executável. Processo de Software Desenvolvimento Manutenção Uso

A idéia do processo de software Tenho uma lista de nomes de pessoas ... Essas pessoas tem códigos de identificação ... Quero uma lista em ordem alfbética ... mas seria bom também ter um relatório por departamento .... For x:= 1 .. n do Métodos Ferramentas Procedimentos

O Modelo Cascata

Requisitos do Software Atualizações ao modelo cascasta Requisitos do Sistema Requisitos do Software Análise Projeto do Programa Codificação Testes Operação

O Modelo Transformacional

O Modelo Espiral

From Sommerville

Estratégias de Projeto Implementação usando 4GT Modelo 4GT Análise de Requisitos Estratégias de Projeto Implementação usando 4GT Testes

Abordagem Prototipação Validar a precisão dos requisitos ou aceitabilidade das decisões. Validar a viabilidade de uma estratégia proposta. Observações: protótipos só são válidos se construídos rapidamente protótipos devem ser desprezados.

Abordagem Incremental Definir e desenvolver uma pequena parte do sistema de cada vez. Desenvolver um núcleo do sistema inicialmente e depois adicionar funcionalidades em subprojetos. Grande atração é que gera sistemas parciais executáveis e utilizáveis de onde se pode obter feedbacks e ganhar credibilidade do usuário. Na prática é difícil de desenvolver uma abordagem incremental sem ter um entendimento completo dos requisitos.

Planejamento do Projeto de Software Generalização Análise do Sistema Planejamento do Projeto de Software Análise de Requisitos Definição O Que? Projeto do Software Codificação Testes Processo de Software Desenvolvi mento O Como? Correção Adaptação Melhora mentos Manutenção A Obrigação ...

Seleção de Estágios de Desenvolvimento Análise de requisitos Especificação do software Projeto da arquitetura Projeto detalhado Implementação (Manutenção e evolução) What? How?

Análise de requisitos (Sistema e Software) Software é sempre parte de um sistema maior que envolve hardware, pessoas, etc.- Modelo de negócios Coleta de requisitos do software especificamente. Técnicas de comunicação

Especificação do sistema Expressar os requisitos de maneira formal através de diagramas bem definidos ou especificações matemáticas.

Projeto da arquitetura Determinar a estrutura do software com seus componentes e conectores.

Projeto Detalhado Projetar a concretização da especificação do software, definindo base de dados, representações de interfaces, algoritmos, etc.

Implementação Escrever o projeto do sistema em uma linguagem de programação.

Manutenção e Evolução Corrigir eventuais erros no software e efetivar atualizações.

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

Métodos de Construção de Software Abordagem sistemática para construir software Procedimentos Notação Ferramenta Exemplo: Análise estruturada, OMT, Catalysis, Processo Unificado Paradigma de desenvolvimento Estruturado, orientado a objetos A escolha deve considerar: características técnicas da aplicação características técnicas do método cobertura do ciclo de vida (Pode-se usar mais de um método)

Observações sobre o processo de desenvolvimento Sempre deve existir um processo de software definido - padrões de qualidade. A disciplina vai abordar o processo unificado. O modelo canônico deve ser tratado como uma referência que deve ser adaptada para cada situação. 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.

Outros processos Open eXtreme programming Processos ágeis Scrum OpenUP