Análise e Projeto de Sistemas

Slides:



Advertisements
Apresentações semelhantes
Projeto Qualified Curriculum
Advertisements

Introdução à Análise de Sistemas
1 ANÁLISE E PROJETO NO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE PROCESSO: CONCEITO MODELOS DE PROCESSO PROCESSO UNIFICADO HISTÓRIA CARACTERÍSTICAS AS QUATRO.
ENGENHARIA DE SOFTWARE Garantia de Qualidade de Software
Engenharia de Software
Rational Unified Process
Engenharia de Software
Gerência de Projetos Wesley Peron Seno Introdução
Engenharia de Software
Tipos de sistemas de Lehman
> Fases de Engenharia de SW > Gestão de Projectos de SW
Rational Unified Process(RUP)
Engenharia de Software
INTRODUÇÃO A INFORMÁTICA
Mitos e Problemas Relacionados ao Software
Metodologia de Desenvolvimento de Software
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
Professora: Aline Vasconcelos
Engenharia de Requisitos
Análise Estruturada O mais amplamente usado dos métodos de modelagem de requisitos Modelos que retratam fluxo e o conteúdo da informação (dados e controle)
Análise e Projeto de Sistemas
Implementação de Sistemas
Introdução Visão Geral do Método.
Como Desenvolver Sistemas de Informação
Visão Geral do Desenvolvimento de Sistemas e Papéis no Desenvolvimento de Software Marcely Dias
Engenharia de Software
Classes e objetos Modelagem
Engenharia de Software Respostas do Questionário 01
Engenharia de Requisitos
José Roberto Blaschek Gerência do Escopo José Roberto Blaschek.
Aula 1 Minicurso: Astah Ministrantes: André Martins; Camila Brondani;
Engenharia de Software
Técnicas e Projeto de Sistemas
Desafios do desenvolvimento de software
Análise e Projeto de Sistemas para a Internet
Aluno: Mário Monteiro Orientador: Sérgio Soares 1.
Fundamentos de Engenharia de SW
Cap 2 – Processo de Software
Object Oriented Software Construction (MEYER, Bertrand)
Universidade São Marcos Curso: Gestão de Negócios Internacionais
Projeto de Sistemas de Software
Análise e Projeto de Sistemas
GESTÃO DE PROJETOS Aula 5 1.
Prof. Alexandre Vasconcelos
Engenharia de Software
Projeto de Banco de Dados
Desenvolvimento Rápido de Aplicação (RAD)
Técnicas e Projeto de Sistemas
Processo de Aquisição Adilson de Almeida Cezar Meriguetti
O Processo de desenvolvimento de software
Documentação de Software
Abr-17 Atividades, Artefatos e Responsáveis da Disciplina de Análise e Projeto Fluxo de análise e projeto.
O Processo Unificado (UP)
ANÁLISE ESTRUTURADA DE SISTEMAS
Engenharia de Software
Engenharia de Software
1. Como a engenharia de software pode contribuir no desenvolvimento de sistemas? 1.1 O problema do software 1.2 A velha crise do software 1.3 Os velhos.
Técnicas e Projeto de Sistemas
UML e a Ferramenta Astah
Engenharia de Software
Engenharia de Software
© Nabor C. Mendonça Processo / Metodologia de Desenvolvimento de Software.
Análise e Projeto de Sistemas Unified Modeling Language Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores.
Engenharia de Software
Engenharia de Software
Análise e Projeto de Sistemas Análise e Projeto de Sistemas Aula 2 Professor: Italo Rodrigues Castro.
Apresentação Leonardo Brussolo de Paula
Processos de Software Ludimila Monjardim Casagrande 1º Semestre Desenvolvimento e Qualidade.
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:

Análise e Projeto de Sistemas Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise e Projeto de Sistemas Engenharia de Software Renata Araujo Ricardo Storino

A evolução do Software Década de 1980 Década de 1960 Década de 1970 Sistemas distribuídos Inteligência embutida Hardware barato impacto no consumidor Década de 1990 Sistema pessoais Tecnologias OO Sistemas Especialistas Redes Neurais Computação Paralela Década de 1960 Sistemas em Batch Distribuição limitada Software customizado Década de 1970 Multi usuários Tempo real Bancos de Dados Software Produto O cenário da evolução de sistemas mostra que cada vez mais os software construídos exigem maior complexidade em sua construção em face a mundanças de formas de interação com seus usuários e com o surgimento de novas tecnologias.

Desenvolvimento de Software Usuário Desenvolvedor O processo de desenvolvimento também tem apresentado maiores complexidades. Enquanto que anteriormente um sistema poderia ser desenvolvido por apenas uma pessoa, hoje em dia, são necessárias equipes e uma gerência atuante para sua construção. Por outro lado, o software tem ganhado cada vez mais importância na vida social e econômica de pessoas e organizações. Por fim, o usuário tem deixado de ser uma figura passiva, aceitando e se adaptando às funcionalidades de um software para se tornar uma figura mais exigente. O sucesso de um software está em atender às necessidades do cliente. Software

A evolução do Software Software cada vez maior mais funcionalidades mais complexo abrangendo mais usuários exigindo a participação de equipes em seu desenvolvimento

Características do Software Software é desenvolvido e não produzido no sentido clássico (industrial) custo de Software é na engenharia e não na reprodução Software não ‘gasta’ custos em sua manutenção Software precisa se adaptar a novas tecnologias (‘crise do software’)

A Crise de Software Dificuldades no Trabalho com Software Medidas pobres de eficiência e qualidade Insatisfação do usuário é frequente Pouco entendimento dos requisitos Problemas de Comunicação entre o usuário e o analista A qualidade do software é frequentemente suspeita Poucas medidas e critérios de qualidade Software existente é muito difícil de manter E tem que ser mantido até ser substituído

A Crise de Software Causas Introdução de erros no processo Má especificação Mau projeto Má implementação Testes incompletos ou mal feitos Problemas na comunicação homem-máquina Problemas na gerência Falta de treinamento em novas técnicas de desenvolvimento O processo está evoluindo muito rapidamente em função do aprendizado. É necessário reciclar

Problemas Complexidade Especificar sistemas é uma atividade bastante complexa. Não se trata apenas de fazer uns “programinhas”. Insatisfação dos usuários usuários sentem-se frustrados com sistemas difíceis de serem operados e/ou cujo desenvolvimento se prolonga por vários anos. usuário precisa de sistemas funcionando de acordo com suas necessidades “O valor de um sistema está em atender com precisão as necessidades de seus usuários.”

Problemas Produtividade Costuma estar quase sempre aquém do desejado. Freqüentemente, a alocação de recursos e atividades são desbalanceadas. Algumas questões recebem consideração demasiada, enquanto outras são insuficientemente consideradas. Custos, tempo e recursos geralmente são subestimados

Problemas Confiabilidade do Sistema Há diversas estatísticas que provam a pouca confiabilidade de boa parte dos sistemas. depende do uso de métodos que possam garantir uma boa qualidade do produto construído Não basta que o sistema produza resultados solicitados pelo usuário.Mas que também tenha o desempenho adequado. “Não é suficiente que o sistema seja eficiente. É necessário ainda que ele seja eficaz”

Problemas Manutenibilidade Facilidade de se modificar um sistema para adaptar-se a circunstâncias novas, inexistentes à época da implantação. Sistemas recentemente implantados são substituídos por novos, devido ao alto custo para sua manutenção

Custo de Mudanças Custo Fase Crítica 60 a 100 1,5 X a 5X 1x Definição Os custos no desenvolvimento de sistemas é maior depois que ele está construído devido à necessidade constante de alterações em sua implementação para corrigir erros ou por não terem sido bem compreendidas às necessidades do usuário. Por isso, acredita-se que a fase mais crítica no desenvolvimento de um sistema corresponde à sua fase de concepção. Um sistema bem concebido e projetado terá menos chances de apresentar erros ou de não satisfazer o usuário final. Além disso, um bom projeto permite que mudanças possam ser incorporadas mais facilmente. 1x Definição Projeto Manutenção Fase Crítica

Problemas Porque leva tanto tempo para terminar programas e sistemas? Porque os custos são tão altos? Porque temos dificuldade de medir o progresso do desenvolvimento do software? Porque não conseguimos detectar todos os erros antes de entregar o software aos nossos clientes? Porque os usuários estão sempre insatisfeitos com o software entregue?

Mitos... da Gerência... Ferramentas modernas Desatualizados, obsoletos Manuais de Regras e Procedimentos Estamos atrasados… Vamos alocar mais gente ao projeto! Ferramentas modernas de software e hardware são suficientes Custos de treinamento, gerência e entendimento do processo de trabalho O uso eficiente de ferramental exige conhecimento

Mitos... do Desenvolvedor/Programador... Especificação, projeto, plano de trabalho O único produto de um projeto de software é o conjunto de programas Programa escrito e testado! Acabei! Até que o programa esteja “rodando” não há como medir sua qualidade Quanto mais cedo voce escrever o código, mais tempo irá demorar para completá-lo De 50 a 70 % do custo de produção de um software vai ser gasto para operacionalizá-lo para o usuário Revisões anteriores à codificação

Mitos... do Cliente... Uma lista de intenções (boas) é suficiente para começar a produzir o software Minhas necessidades vão mudar… Mas mudanças são fáceis de introduzir porque software é bastante flexível Custo de mudanças é muito alto A Especificação do Software é a fase mais crítica do processo Erros na fase inicial têm um custo muito alto de correção

O que é Engenharia de Software? Estudo e aplicação de Métodos e Técnicas com o objetivo de tornar o desenvolvimento de software mais “eficiente”. “O estabelecimento e uso de princípios de engenharia de forma a obter economicamente software confiável e que funcione eficientemente em máquinas reais.”

Engenharia de Software Existe como disciplina há pouco tempo Estabelece um diferencial entre um engenheiro de software profissional e um “praticante da informática” Novos profissionais são agentes de mudanças ou de problemas oportunidades, desafios e perigos

Engenharia de Software Produtividade linhas de código por dia; pontos de função por mês Qualidade confiabilidade (e.g.: defeitos por KLOC); e manutenibilidade (manutenção fácil).

Princípios da Engenharia MÉTODOS FERRAMENTAS PROCEDIMENTOS

Como construir o Software? Métodos Como construir o Software? Instrumentos representação do software durante seu desenvolvimento Notações Linguagens Critérios de Qualidade Como avaliar o desenvolvimento Exemplos UML Booch Análise estruturada Anlaise Essencial

É preciso muito software para desenvolver software! Ferramentas É preciso muito software para desenvolver software! Suporte automático ou semi-automático aos métodos CASE - Computer Aided Software Engineering Ambientes de desenvolvimento ferramentas integradas Hardware + Software (de suporte) + Banco de Dados

Quais os passos para construir o software? Procedimentos Quais os passos para construir o software? Seqüência dos métodos sequência de passos e atividades Resultados documentos, relatórios, módulos Controles coordenação, critérios de qualidade, pontos de controle Equipe

Software Software Processo Produto Software deve ser visto não só como o produto final gerado como também como o processo que foi utilizado para sua construção. Ou seja, a forma como se realiza o processo de desenvolvimento (quais métodos, quais instrumentos e quais atividades foram realizadas) influencia a qualidade do produto final. Da mesma forma, dependendo das características do produto que se quer gerar, deve-se escolher um processo adequado para sua construção. Processo Produto

Produto de Software Programa Objeto Plano Estrutura de Dados Especificação Programa Objeto Um software é mais do que seu código fonte. Ele compreende os diversos documentos ou representações que são criadas ao longo do seu processo de desenvolvimento. Projeto Programa Fonte Testes e Validações

Processo de Construção de Software Equipe Métodos Ferramentas Passos/Atividades Durante um processo de desenvolvimento, métodos e instrumentos são utilizados para se construir os diversos produtos. Estes métodos, na maioria dos casos, exigem a utilização de ferramentas para sua realização. Estas ferramentas serão utilizadas pelos membros da equipe escalada para desenvolver o sistema. Instrumentos Produtos Processo

Ciclo de Vida de Software Documentos são gerados a cada fase e servem de entrada para a fase seguinte Definição dos requisitos Análise Projeto Implementação Teste/Avaliação Implantação Manutenção

Ciclo de Vida - Modelo Cascata Definição de Requisitos Intenções Transformações Requisitos do Software Análise Projeto Especificação do Software Projeto do Software Implementação Documentos gerados durante o ciclo de vida Código do Software Teste Sistema pronto para operar

Definição de Requisitos Identificar desejos, intenções, procedimentos atuais e dados; Organizá-los de forma coerente Definir de uma forma geral o que será tratado pelo software interface com o que fica de fora do software Desejos Intenções Procedimentos Dados Requisitos do Software

Análise do Software Entendimento e Representação Requisitos do Domínio do problema Conceitos Funcionalidades Casos de uso Baseado nos fatores críticos de sucesso do software Requisitos do Software Especificação do Software

Projeto do Software Projetar o Software Especificação do Software Arquitetura Interfaces Estrutura de Dados Procedimentos Independente da Tecnologia onde será “encarnado” o software Especificação do Software Projeto do Software Arquitetura Interfaces Estrutura de Dados Detalhes dos Procedimentos

Construção do Código Software Implementação Projeto do Software Código Estrutura de Dados Detalhes dos Procedimentos Implementação Programação do código Tecnologia linguagem ambiente etc Arquitetura Interfaces Projeto do Software Código Software

Testes Estou construindo um sistema correto? Estou construindo o sistema certo? Teste de código Teste de sistema Testes com usuários O teste de código tem o objetivo de verificar se um programa ou conjunto de programas não apresenta erros de execução. Teste de sistema significa verificar se o sistemas dá as respostas desejadas de acordo com cada solicitação do usuário. Testes com usuários são realizados com o objetivo de testar a interface do sistema e se todas as funcionalidades solicitadas foram contempladas pelo sistema.

Implantação do Software Pôr o Software em operação Entrada de dados Conversões de dados Treinamento de operadores Disponibilização de Manuais Suporte à operação Help Desk Acompanhar Software Dados Conversões Software Pronto para operar

Manutenção do Software Tipos Corretiva Novos Requisitos Novas Tecnologias Alto Custo Podem requerer mudanças nas fases iniciais do desenvolvimento Em Operação Software Erros Requisitos Software Nova Versão

Análise e Projeto OO Motivação e benefícios Enfrentar novos domínios de aplicação Melhorar a interação entre analistas e especialistas de domínios de aplicação Proporcionar uma representação básica consistente entre análise e projeto Reutilização

O que impulsionou uma proposta OO Amadurecimento dos conceitos de orientação a objetos Aumento da complexidade de sistemas Maiores Sujeitos a alterações constantes Interativos Voltados para os usuários

Métodos para Análise e Projeto OO Rumbaugh (OMT) – 1989 Shlaer & Mellor – 1990 Coad & Yourdon – 1991 Booch – 1991 Wirfs-Brock –1991 Jacobson – 1992

Unified Modeling Language UML – 1995 Unificação dos trabalhos de Rumbaugh, Booch, Jacobson Oferece um conjunto de instrumentos para se realizar a análise e projeto OO Especificação, visualização, documentação e construção de artefatos de um sistema Linguagem de modelagem OO com maior previsão de utilização no mercado