disciplina engenharia de software ii - fepi · proibido uso de celulares, ... linguagem assembler...

179
Engenharia de Software II Disciplina: Curso: Sistemas de Informação Prof. Cristiano Vieira 5° Período - 2012

Upload: duongdung

Post on 20-Sep-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

Engenharia de Software II

Disciplina:

Curso: Sistemas de Informação

Prof. Cristiano Vieira

5° Período - 2012

Apresentação

Espaço de publicação - infofepi.zip.net

Plano de Ensino

Plano de EnsinoObjetivos

Estudar e aplicar as abordagens sistemáticas, econômicas e quantificáveis para o desenvolvimento, operação e manutenção de software de qualidade.

Engenheiros de software devem adotar uma abordagem sistemática e organizada para seu trabalho e usar ferramentas e técnicas/métodos apropriados dependendo do problema a ser solucionado, das restrições de desenvolvimento e dos recursos disponíveis.

Plano de EnsinoRECURSOS METODOLÓGICOS:Aulas teóricas expositivas em sala ou no LTI, apresentação de modelospráticos e aplicáveis, exercícios propostos e dinâmicas em grupos.

PROCESSO DE AVALIAÇÃO:A. Trabalho proposto compondo 30% da nota bimestral. B. Prova teórica bimestral compondo 65% da nota bimestral.B. Prova teórica bimestral compondo 65% da nota bimestral.C. Pontos extras até 5%, para incentivo ao estudo e dedicação.D. A entrega de trabalhos ou dos projetos fora do prazo acarretará em

perda de pontos.

CONSIDERAÇÕES:1. Tolerância de atrasos máximo em até 10 minutos, salvo justificação;2. Chamadas de presença são efetuadas apenas 1 vez, no início da aula;3. Não é permitido conversas paralelas;4. Não é permitido alimentar-se em horário de aula;5. Proibido uso de Celulares, MP3-MP4 ou qualquer outro equip. eletronico6. Para celulares, se extremamente necessário deixar em silencioso;7. Participação conta ponto adicional;

Programação da DisciplinaFundamentos

1. Instrução ao Conceito de Sistemas e Software

2. Engenharia de Software e seu contexto2. Engenharia de Software e seu contexto

3. Qualidade de Softwares e Projetos

4. Gestão de Projetos

5. Engenharia de Processos e Tecnologias

Referências Bibliográficas

O QUE É

INFORMAÇÃO?

É muito importante estar informado!

Você sairia com ela?

Você pode sair com ela ou não. Entretanto a informação sobre quem ela é (ou quem ela foi) é importante para uma melhor decisão.

“Ninguém precisar saber tudo, mas precisar saber tudo, mas precisar saber

onde encontrar tudo o que precisa.”

Processamento de Dadosde Dados

Qual a definição?

ABACOinventado 2000 ac

Bases dos Sistemas de Informação

• Era do Descobrimento

• Era do Aprendizado

• Era do Armazenamento e Perpetuação• Era do Armazenamento e Perpetuação

• Era do Conhecimento

• Era da Inteligência Artificial

• Era da Informação

• Era do(a) ????????

Capitulo 2

Engenharia de Software 2

Sites de Interesse em Engenharia de Software

Sociedades e InstitutosSoftex - Sociedade Brasileira para a exportação de software.Software Engineering Institute.SIGSOFT - Grupo de Interesse em ES da ACM. Tem links para revistas e anais de conferências.

Revistas especializadasIEEE Software .IEEE Software .Software Development MagazineC/C++ Users JournalDr. Dobb's JournalMSDN MagazineSys AdmiSD ExpoUnixreviewWindows Developer's Journal

Software MetricsIFPUGCOCOMO II

Evolução da Programação

Primeiros Anos : Nos primeiros anos, a programação era uma Primeiros Anos : Nos primeiros anos, a programação era uma arte “secundária” para qual haviapoucos métodos sistemáticos. O desenvolvimento do software era feito virtualmente sem administração.Usado a orientação batch (em lote) para a maioria dos sistemas._ Software projetado para cada aplicação, distribuição limitada_ Desenvolvimento na própria organização – individualidade_ Sem documentação

Evolução da Programação

Segunda Era: Multiprogramação e multiusuário_ Sistemas de tempo-real e bancos de dados_ Sistemas de tempo-real e bancos de dados_ Desenvolvimento para ampla distribuição no mercado –software house_ Manutenção – crise de software – detectadas falhas necessidade de correção ou adaptados a um novo hardware que fosse comprado. O esforço despendido na manutenção de software começou a absorver recursos em índices alarmantes. E, ainda pior, a natureza personalizada de muitos programas tornava-os virtualmente impossíveis de sofrer manutenção.

Evolução da Programação

Quarta Era: A Quarta era do software de computador está apenas começando.

_ Novas abordagens – desenvolvimento de software

_ Sistemas especialistas

_ Redes Neurais Artificiais

Evolução da Programação

Terceira Era: Começou em meados da década de 70 e continua até hoje._ Sistemas distribuídos_ Redes Locais e Remotas_ Aumento da complexidade_ Computador pessoal_ Produtos inteligentes

Evolução da Programação

Quinta Era: _ Softwares mais complexos?_ Atendimento de demanda?_ Manutenção eficiente?

Linguagens e suas gerações1ª G – linguagem Assembler – o mais baixo nível de abstração2 ª G – Cobol, Fortran, Algol3 ª G – Programação Estruturada

Uso geral – PL1, Pascal, C, AdaOrientada a Objeto: C ++ , Objetive-C, CLOS, Eiffel, VisualBasic (Híbrido), Visual Smalltalk, Object C, Power Builder, Delphi New Era, Visual Object Visual Smalltalk, Object C, Power Builder, Delphi New Era, Visual Object Programmer

4. GL � Linguagens com um nível elevado de abstração. Linguagens de consulta. Geradores de Programas – em linguagem 3ª G. Linguagens de apoio a decisões. Linguagens de prototipação. Linguagens formais de especificações - Prolog, PL1, Lisp. Ferramentas no ambiente PC – Planilhas, Sistemas de B.D.CASE � UsDesigner, Designer, IBPI – o mais alto nível de abstração

Aplicações de Software

� Software Básico: apoio. Componentes de sistemas operacionais,..

� Software de Tempo Real: ambiente. ...� Software Comercial: acesso à informação administrativa,..� Software Científico e de Engenharia: algoritmos de � Software Científico e de Engenharia: algoritmos de

processamento numérico,...� Software Embutido� Software de Computador Pessoal: processadores de texto,

planilhas, ...� Software de inteligência Artificial: técnicas de IA

Definição de Eng.Software

“O 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”.

“Engenharia de Software é uma disciplina que trata do desenvolvimento e da aplicação de metodologias, métodos, técnicas e ferramentas para desenvolver e manter sistemas desoftware com qualidade preditível e controlável, operando em máquinas e ambientes reais de modo econômico”.

Métodos + Ferramentas + Procedimentos = Paradigma de ES

• Estudo ou aplicação de abordagens sistemáticas, econômicas e quantificáveis para o desenvolvimento, operação e manutenção de software de qualidade.

Definição de Eng.Software

• Engenheiros de software devem adotar uma abordagem sistemática e organizada para seu trabalho e usar ferramentas e técnicas/métodos apropriados dependendo do problema a ser solucionado, das restrições de desenvolvimento e dos recursos disponíveis

Definição de Eng.Software

• Programas de computador e documentação associada

• Produtos de software podem ser • Produtos de software podem ser desenvolvidos para um cliente particular ou podem ser desenvolvidos para um mercado geral

Objetivos da Engenharia de Software

• Controle sobre o desenvolvimento de software dentro de custos, prazos e níveis de qualidade desejados

• Produtividade no desenvolvimento, • Produtividade no desenvolvimento, operação e manutenção de software

• Qualidade versus Produtividade• Permitir que profissionais tenham controle

sobre o desenvolvimento de software dentro de custos, prazos e níveis de qualidade desejados

Objetivos da Eng. de Software

• Saber como estimar um projeto (tamanho, custo, cronograma)

• Saber como monitorar o andamento de um • Saber como monitorar o andamento de um projeto de desenvolvimento e a outros elementos vinculados ao software

• Saber como testar efetivamente

• Saber como controlar a evolução do Software

Características da Engenharia de Software

• A Engenharia de Software se refere a software (sistemas) desenvolvidos por grupos ao invés de indivíduosgrupos ao invés de indivíduos

• usa princípios de engenharia ao invés de arte, e

• inclui tanto aspectos técnicos quanto não técnicos

Elementos da Eng.Software

Elementos da Eng.Software

Elementos da Eng.Software

Processos implícitos x explícitos

Softwares no “Mundo Real”

Cenários

Cenários

Cenários

Cenários

Qual a dimensão dos códigos?

Fazer software é arte?

Caso real: Therac-25

Caso real: Ariane 5

Escopo da Eng. Software

Comunicação em projetos de software

Evolução dos requisitos

Tabela de requisitos

Exercício em Grupo:

Baseado no modelo de desenvolvimento do software para uma biblioteca, identifique a tabela de requisitos para as seguintes etapas:

1) Processo de cadastro de usuários

2) Processo de empréstimo de livros

3) Processo de devolução de livros e colocação do mesmo na posição correta na prateleira.

4) Consulta de disponibilidade de livros via internet.

Importância da Eng. de Software

• Qualidade de software e produtividade garantem:– Disponibilidade de serviços essenciais – Disponibilidade de serviços essenciais

– Segurança de pessoas

– Competitividade das empresas• Produtores

• Consumidores

Produtividade

• Custo de desenvolvimento reduzido– A empresa consumidora quer investir pouco em

softwaresoftware

– A empresa produtora tem que oferecer “software barato”

• Tempo de desenvolvimento reduzido – Suporte rápido às necessidades do mercado

Software barato?

Nem tanto resultado de baixos custos de desenvolvimento, mas principalmente da

distribuição dos custos entre vários clientes.clientes.

Reuso, extensibilidade e adaptabilidade são essenciais para viabilizar tal distribuição.

Processo de Qualidade

O que é um software de qualidade?• O software que satisfaz os requisitos solicitados pelo

usuário. Deve ser fácil de manter, ter boa performance, ser confiável e fácil de usar

• Alguns atributos de qualidade– Manutenibilidade

• O software deve evoluir para atender os requisitos que • O software deve evoluir para atender os requisitos que mudam

– Eficiência• O software não deve desperdiçar os recursos do sistema

– Usabilidade• O software deve ser fácil de usar pelos usuários para os

quais ele foi projetado

Qualidade de Software

• Correto– A loja não pode deixar de cobrar por produtos

comprados pelo consumidor

• Robusto e altamente disponível• Robusto e altamente disponível– A loja não pode parar de vender

• Eficiente– O consumidor não pode esperar– A empresa quer investir pouco em recursos

computacionais (CPU, memória, rede)

Qualidade de Software

• Amigável e fácil de usar – A empresa quer investir pouco em treinamento

• Altamente extensível e adaptável– A empresa tem sempre novos requisitos (para ontem!)– A empresa tem sempre novos requisitos (para ontem!)

– A empresa quer o software customizado do seu jeito (interface, teclado, idioma, moeda, etc.)

• Reusável– Várias empresas precisam usar partes de um mesmo sistema

Qualidade de Software

• Aberto, compatível, de fácil integração com outros sistemas– A empresa já tem controle de estoque, fidelização, etc.

• Portável e independente de plataforma (hw e sw)• Portável e independente de plataforma (hw e sw)– A empresa opta por uma determinada plataforma

• Baixo custo de instalação e atualização– A empresa tem um grande número de PDVs

A Crise de Software...

• 25% dos projetos são cancelados• o tempo de desenvolvimento é bem maior

do que o estimadodo que o estimado• 75% dos sistemas não funcionam como

planejado• a manutenção e reutilização são difíceis e

custosas• os problemas são proporcionais a

complexidade dos sistemas

Causas da Crise de Software

• Essências– Complexidade dos sistemas

– Dificuldade de formalização– Dificuldade de formalização

• Acidentes– Má qualidade dos métodos, linguagens,

ferramentas, processos, e modelos de ciclo de vida

– Falta de qualificação técnica

Fatores determinantes da crise

Custo da manutenção de software

Paradigmas da Engenharia de Software

• Elementos– Linguagens

– Métodos

– Ferramentas

• Atividades– Modelagem do negócio– Elicitação de requisitos– Análise e Projeto– Implementação– Ferramentas

– Processos

– Modelos do ciclo de vida do software

– Implementação– Testes– Distribuição– Planejamento – Gerenciamento– Gerência de Configuração e

Mudanças– Manutenção

Linguagem

• Notação com sintaxe e semântica bem definidas– com representação gráfica ou textual – com representação gráfica ou textual

• Usada para descrever os artefatos gerados durante o desenvolvimento de software

• Exemplos: UML, Java

Método

• Descrição sistemática de como deve-se realizar uma determinada atividade ou tarefatarefa

• A descrição é normalmente feita através de padrões e guias

• Exemplos: Método para descoberta das classes de análise no RUP.

Processo

• Conjunto de atividades – bem definidas

– com responsáveis– com responsáveis

– com artefatos de entrada e saída

– com dependências entre as mesmas e ordem de execução

– com modelo de ciclo de vida

Processo de software

• Um conjunto de atividades cujo objetivo é o desenvolvimento ou a evolução do software

• Conjunto coerente de atividades para • Conjunto coerente de atividades para especificação, projeto, implementação e teste de sistemas de software

Processo de software

Gráfico de Gantt

Ferramentas

• Horizontais: Oferecem serviços utilizados durante todo o processo de software;

• Verticais: as que são utilizadas em fases específicas do processo de software.

Ferramentas Básicas

• Documentação;

• Planejamento e Gerenciamento de Projetos;

• Especificações Formais;

• Comunicação;• Comunicação;

• Análise e Projeto de software;

• Projeto e Desenvolvimento de Interfaces;

• Programação;

• Gerenciamento de Configuração;

• Controle de Qualidade;

Ferramentas Avançadas• Ferramentas de Engenharia da Informação;

• Ferramentas de Gerenciamento e Modelagem de Processo;

• Ferramentas de Planejamento de Projeto;

• Ferramentas de Análise de Risco;

• Ferramentas de Gerenciamento de Projeto;

• Ferramentas de Auditoria de Requisitos (Tracing);

Ferramentas Avançadas• Ferramentas de Gerenciamento e Métricas;

• Ferramentas de Documentação;

• Ferramentas de Controle da Qualidade;

• Ferramentas de Gerenciamento de Banco de • Ferramentas de Gerenciamento de Banco de Dados;

• Ferramentas de Gerenciamento de Configuração de Software;

• Ferramentas de Desenvolvimento e Projeto de Interface;

Ferramentas Avançadas• Ferramentas CASE

• Ferramentas de Prototipagem;

• Ferramentas de Programação;

• Ferramentas de Integração e Teste;

• Ferramentas de Gerenciamento de Testes;

• Ferramentas de Reengenharia.

• Gráfico de Gantt

• Rational Unified Process

Ferramenta CASE

• ComputerAided Software Engineering -Engenharia de Software Auxiliada por Computador

• Podem ser consideradas como ferramentas • Podem ser consideradas como ferramentas automatizadas que tem como objetivo auxiliar o desenvolvedor de sistemas em uma ou várias etapas do ciclo de desenvolvimento de software.Exemplos: RationalRose, JBuilder

O que é um modelo de ciclo de vida?

• Uma representação abstrata e simplificada do processo de desenvolvimento software, tipicamente mostrando as principais atividades e dados usados na produção e atividades e dados usados na produção e manutenção de software

Modelos do Ciclo de Vida

• Cascata

• Modelos Iterativos– Espiral– Espiral

– Incremental (ex: do RUP)

• ...

Modelos Iterativos

• Requisitos de sistema SEMPRE evoluem durante curso de um projeto. Assim a iteração do processo sempre faz parte do desenvolvimento de grandes sistemasdesenvolvimento de grandes sistemas

• Iterações podem ser aplicadas a quaisquer dos modelos de de ciclo de vida

• Duas abordagens (relacionadas)– Desenvolvimento espiral – Desenvolvimento incremental

Desenvolvimento Espiral• Acrescenta aspectos gerenciais ao processo de desenvolvimento

de software. – análise de riscos em intervalos regulares do processo de

desenvolvimento de software– planejamento– controle– controle– tomada de decisão

• O processo é representado como uma espiral em vez de uma seqüência de atividades

• Cada volta na espiral representa uma fase no processo• Não há fases fixas como especificação ou projeto - voltas na

espiral são escolhidas dependendo do que é requerido

• Riscos são avaliados explicitamente e resolvidos ao longo doprocesso

RUP

Rational Unified Process

(Processo Unificado Racional)

Rational Software Corporation / IBMRational Software Corporation / IBM

Objetivo: Fornecer técnicas a serem seguidas pelos membros da equipe de desenvolvimento de software com o objetivo de aumentar a sua produtividade no processo de desenvolvimento.

Rational Unified Process - RUPO RUP é um processo iterativo e incremental que provê uma abordagem disciplinada para o desenvolvimento de software. Na engenharia de software, ele é um conjunto de passos software, ele é um conjunto de passos parcialmente ordenados com a intenção de construir um produto de software de qualidade, capaz de atender às necessidades e exigências do usuário final, de acordo com planejamento e orçamento previstos.

Desenvolvimento Incremental• Em vez de entregar o sistema como um todo, o

desenvolvimento e a entrega são divididos em incrementos, com cada incremento entregando parte da funcionalidade requerida

• Requisitos dos usuários são priorizados e os requisitos de mais alta prioridade são incluídos nas iterações iniciais

• Uma vez que o desenvolvimento de um incremento é iniciado, os requisitos são "congelados". Embora os requisitos possam continuar a evoluir para incrementos posteriores

Desenvolvimento Iterativo e Incremental (do RUP)

Motivação para Aplicação de Padrões

A aplicação de padrões pode ocorrer em diferentes fases do processo de desenvolvimento de software. A metodologia proposta pelo RUP visa auxiliar a aplicação de padrões que sejam mais adequados para a solução de um determinado problema levando em consideração a fase processo de desenvolvimento de software.

Motivação para Aplicação de Padrões1. evolução de código; 2. modularidade; 3. desacoplamento entre áreas de responsabilidades de forma que as

mudanças em uma não ocasionem mudanças nas outras; 4. diminuição da complexidade do projeto e do código final; 5. estabilidade do código; 5. estabilidade do código; 6. os padrões em uso são genéricos o suficiente para se encaixarem

bem em projetos distintos; 7. confiabilidade na utilização de padrões cujas soluções são

comprovadas; 8. ganho de produtividade; 9. facilidade de repassar conhecimento entre os engenheiros de

software experientes; e 10. facilidade de aprendizado de novas áreas de conhecimento para a

equipe sem experiência na aplicação a ser desenvolvida.

Prototipação

Quando logo no início do projeto o cliente não sabe definir com muita clareza os requisitos para o novo sistema, torna-se benéfico o uso da prototipação.A prototipação permite que seja criado um modelo do software que será implementado. Este modelo pode ser um protótipo em papel será implementado. Este modelo pode ser um protótipo em papel ou em PC, que mostra a interação homem-máquina: um programa que implementa um conjunto de funções exigidas pelo sistema ou um programa existente que executa parte das funções requeridas.A seqüência de eventos para o paradigma de prototipação é apresentada conforme diagrama a seguir.

Prototipação – Modelo padrão

Prototipação - Modelo Espiral

O ciclo de vida do software

Objetivos de se definir o ciclo de vida do software:• Definir atividades;• Definir consistência entre vários projetos da empresa, todos os projetos executados damesma forma;mesma forma;• Introduzir pontos de verificação para controle gerencial de decisões;• Atingir níveis mais apropriados de maturidade na gerência do processo de desenvolvimento do software.

O processo definido pelo Ciclo de Vida é conhecido como Paradigma da Engenharia de Software.

O ciclo de vida do software

Queda d’água

O ciclo de vida do softwareExpiral

O ciclo de vida do software

Processo de desenvolvimento de software

Níveis do desenvolvimento do software

• Planejamento: na etapa de planejamento é onde deve ser desenvolvido um plano inicial de desenvolvimento, levando em consideração questões como definição da abrangência do sistema, missão e objetivos do sistema, cronogramas de desenvolvimento, análise custo X benefício, levantamento inicial de informação etc.

• Análise: também chamada de análise de requisitos, é onde deve se obter um claro entendimento sobre o sistema. A análise proporciona a base para uma boa implementação do software. Nesta etapa são construídos os modelos do sistema.

Níveis do desenvolvimento do software

• Projeto: também chamada de especificação do projeto, é onde propomos uma arquitetura de implementação para o software, que atenda aos requisitos do sistema identificados na análise. Aqui passamos a nos preocupar com o software. Os algoritmos dos programas a serem implementados são construídos nesta dos programas a serem implementados são construídos nesta fase.

•Implementação: a etapa de implementação é onde os programas são efetivamente construídos, a partir da arquitetura feita na etapa anterior. Nesta etapa é onde a atividade de codificação ocorre de forma massiva.

Níveis do desenvolvimento do software

• Teste: nesta etapa todos os programas construídos serão testados de forma exaustiva. Existe uma grande variedade de testes que são realizados, indo desde o teste unitário dos módulos de programas até o teste de integração de todo o sistema de de programas até o teste de integração de todo o sistema de software.

• Manutenção: é onde ocorre ajustes do software implementado, que podem ser ocasionados por vários motivos: erros de projetos identificados após a implementação e o teste do software, inovações tecnológicas, evolução do sistema etc.

Atividades do desenvolvimento

ATIVIDADE 1: O ESTUDO INICIAL

Também conhecido como ESTUDO DE VIABILIDADE ou LEVANTAMENTO.• Identificar usuários responsáveis e montar o escopo do • Identificar usuários responsáveis e montar o escopo do sistema – entrevistas;• Identificar deficiências do Sistema Atual;• Estabelecer metas e objetivos para um novo sistema –reutilização.• Determinar se é possível automatizar o sistema e sugerir alternativas – (adquirir ou desenvolver?);• Preparar previsão inicial para o projeto.

Atividades do desenvolvimento

ATIVIDADE 2: ANÁLISE DE SISTEMAS

• Transformar critérios do usuário e previsão em ESPECIFICAÇÃO DE REQUISITOS;• Modelagem Essencial do Sistema:• Modelagem Essencial do Sistema:- Modelo Ambiental- Modelo Comportamental. Eventos. Componente Domínio do Problema

Atividades do desenvolvimento

ATIVIDADE 3: PROJETO

• Componente Interface Humana• Componente Gerenciador de Tarefas• Componente Gerenciador de Tarefas•Componente Gerenciador de Dados

ATIVIDADE 4: CONVERSÃO DE BANCO DE DADOS

• Reaproveitar base de dados já existente, se possível.

Atividades do desenvolvimento

ATIVIDADE 5: IMPLEMENTAÇÃO

•Programação

ATIVIDADE 6: GERAÇÃO DE TESTES DE ACEITAÇÃO

• Baseado nos requisitos especificados durante a análise, estabelecer casos de testespara o sistema.

ATIVIDADE 7: DESCRIÇÃO DE PROCEDIMENTOS

•Manual do usuário

ATIVIDADE 8: INSTALAÇÃO

Desenvolvimento de Software e Reusabilidade

Fatores como o aumento do tamanho e complexidade, bem como, a necessidade de adaptação rápida a novos ambientes têm contribuído para a elevação do custo de desenvolvimento emanutenção de software. A técnica de construção de sistemas a partir de componentes reusáveis e a solução indicada para tratar partir de componentes reusáveis e a solução indicada para tratar este problema. Um componente de software reusável é aquele produzido com a finalidade de ser utilizado em diferentes aplicações. Componentes reusáveis podem ser gerados a partir de qualquer combinação de produtos de engenharia de software, incluindo requisitos, especificações, projetos e produtos de implementação (código, testes e documentação).

Desenvolvimento de Software e Reusabilidade

Reuso de software é a aplicação de um componente reusável em mais de um Sistema de aplicação.

As melhores organizações de PD estão conseguindo níveis de reusabilidade de 70% a 80%. Desta forma, quando se defronta com a tarefa de construir um sistema que exige 10.000 linhas de código, apenas 2.000 a 3.000 são escritas e o restante é proveniente de uma biblioteca de componentes reusáveis.

Benefícios da Reusabilidade

A) Custos Reduzidos: A redução significativa de custos pode-se sentir em todas as fases do ciclo de vida do software. Pôr exemplo, durante a manutenção, os custos são reduzidos porque os engenheiros estão familiarizados com requisitos comuns, projetos, arquiteturas e componentes.comuns, projetos, arquiteturas e componentes.

B) Qualidade Ampliada: Não importa quão extensivamente um sistema é testado e analisado, pois alguns erros só serão identificados quando o mesmo entra em processo de operação. Desde que, componentes reusáveis façam parte de muitos sistemas, erros identificados em um sistema podem ser utilizados para corrigir outros sistemas desenvolvidos ou em desenvolvimento.

Benefícios da Reusabilidade

C) Tarefas Reduzidas: Sistematicamente, o reuso em domínios específicos significa o reuso de requisitos, especificações, projetos e produtos de implementação. Isso permite o desenvolvimento mais rápido que o convencional.

D) Aumento de Produtividade: Desde que existam ferramentas apropriadas para localizar componentes reusáveis em uma biblioteca, esta técnica permite construir sistemas com esforços reduzidos.

Exercício em Grupo:1) O software é o fator de diferenciação de muitos produtos e sistemas baseados em computador. Apresente exemplos de dois ou três produtos e de pelo menos um sistema em que o software, não o hardware, é o elemento que faz a diferença.2) Nas décadas de 1950 e 1960, a programação de computadores era uma forma de arte aprendida num ambiente semelhante ao de aprendizes. forma de arte aprendida num ambiente semelhante ao de aprendizes. Como os primórdios afetaram as práticas de desenvolvimento de software atuais?3) A engenharia de software auxiliada por computador é uma indústria crescente. Pesquise um produto CASE comercialmente disponível e apresente uma comparação usando critérios que você desenvolve.4) Pesquise a mídia popular (jornais, revistas e televisão que estejam dirigidos para as massas) ao longo dos últimos 12 meses e descubra pelo menos uma grande reportagem em que o software era o tema em questão. Anote quaisquer erros na apresentação.

Diagrama de Fluxo de DadosDiagrama de Fluxo de Dados

(DFD)(DFD)

Introdução

É amplamente usado para definir entradas, processos e saídas de sistemas

– Elabora uma modelagem lógica do sistema, englobando os diversos processos que envolvem englobando os diversos processos que envolvem o sistema, os diversos dados e informações que circulam pelo sistema e as diversas entidades envolvidas com o sistema.

– Entidade Externa

– Fluxo de Dados

– Processo

Componentes

– Depósito de Dados

– Agente que envia ou recebe dados do sistema, também chamada de fonte de dados e/ou destino de informações, sendo considerada um um ser externo ao estudo do projeto.

Entidade Externa

ao estudo do projeto.

– Deve ser nomeada com um substantivo.

Fluxo de Dados

– Representa a troca de dados ou informações entre uma entidade externa e um processo, ou entre um processo e um depósito de dados.entre um processo e um depósito de dados.

– Deve ser nomeada com um substantivo.

– Representa um processo ou trabalho que é executado internamente ao sistema.

– Deve ser numerado (1,2,..., n)

– Deve ser nomeado com um verbo no infinitivo.

Processo

– Deve ser nomeado com um verbo no infinitivo.

– Armazena informações e dados do sistema, sendo futura referência para a modelagem de dados do sistema.

– Deve ser numerado (d1, d2, ..., d )

Depósito de Dados

– Deve ser numerado (d1, d2, ..., dn)

– Deve ser nomeada com um substantivo.

– Todo processo e todo depósito de dados devem possuir ao menos um fluxo de entrada e um fluxo de saída.

– Toda entidade externa deve possuir um fluxo de

Regras Básicas

– Toda entidade externa deve possuir um fluxo de entrada ou um fluxo de saída.

Simbologia

Entidade Externa Fluxo de Dados Processo Depósito de Dados

Exemplo

Estudante

Dados sobre o Cadastra

Estudante

2

Estudantenovo estudante

– É o nível mais alto do DFD contendo um único processo, as entidades externas e todos os fluxos que fluem entre as entidades externas e os diversos processos do DFD. Não incluem os

Diagrama de Contexto

diversos processos do DFD. Não incluem os depósitos de dados.

– Os fluxos do Diagrama de Contexto devem ter o mesmo nome dos fluxos no DFD.

Nome

entrada A

saída C Entidade

EntidadeExterna1 0

Diagrama de Contexto (Exemplo)

Nome do

Sistema

saída C EntidadeExterna3

EntidadeExterna2

entrada B

– Diagrama detalhando o diagrama de contexto.

– Deve conter de 3 a 9 processos (facilitando o processo de leitura do mesmo).

– Todos os depósitos de dados e entidades

Diagrama de Nível 0

– Todos os depósitos de dados e entidades externas devem estar inclusas neste nível.

ProcessoGeralAAA

entrada A saída C EntidadeExterna3

EntidadeExterna1

1 2

Registro A Registro E

Fluxo de Dados B

Fluxo de Dados CProcesso

GeralBBB

Diagrama de Nível 0 (Exemplo)

EntidadeExterna2

entrada B43

D1 Depósito de Dados 1 D2 Depósito de Dados 2

Registro A

Registro A

Registro E

Registro E

Fluxo de Dados DProcessoGeralCCC

ProcessoGeralDDD

– Um diagrama filho é um detalhamento de um processo do Diagrama Nível 0, devendo ser gerado quando um processo for complexo.

– Deve englobar todos os fluxos que entram ou

Diagrama Filho

– Deve englobar todos os fluxos que entram ou saem do processo pai, além de seus próprios fluxos.

EntidadeExterna2

entrada B43

D1 Depósito de Dados 1

Registro A

Fluxo de Dados DProcessoGeralCCC

ProcessoGeralDDD

Diagrama Filho (Exemplo)

D5 Arquivo de TransaçãoProcessoDetalhado

XXX

entrada B

3.1

Registro de Transação

Fluxo de Dados Z

CCC DDD

Registro de

ProcessoDetalhado

YYY

3.2

Transação

Processo

ZZZ

3.3

Detalhado

D1 Depósito de Dados 1

Registro A

Fluxo de Dados D

Checagem de Regras

ExemploOs estudantes apresentam formulários de matrícula com seus nomes, números de identificação e os números dos cursos que querem freqüentar. No processo 1.0, o sistema verifica se cada curso selecionado ainda está aberto consultando o arquivo de cursos da universidade. O arquivo diferencia cursos que estão abertos daqueles que foram cancelados ou já estão lotados. O processo 1.0 então determina quais das opções do estudante podem ser aceitas o rejeitadas. Em seguida, o processo 2.0 matricula o podem ser aceitas o rejeitadas. Em seguida, o processo 2.0 matricula o estudante nos cursos para os quais foi aceito. Também atualiza o arquivo de cursos da universidade com o nome e o número de identificação do estudante e recalcula a lotação da classe. Quando o número máximo de matrículas é alcançado, o número do curso recebe um rótulo indicando que está fechado. O processo 2.0 atualiza, ainda, o arquivo mestre de alunos da universidade com informações de novos estudantes ou mudanças de endereço. O processo 3.0 então envia a cada estudante pretendente uma carta de confirmação de matrícula, listando os cursos para os quais ele está matriculado e citando as opções que não puderam ser atendidas.

Solução

Capitulo 3

UML Linguagem Unificada de

Modelagem

UML - Definição

A UML (Unified Modeling Language) é

uma linguagem para especificação,

construção, visualização e documentação

de sistemas de software.

UML - Associação

UML - Casos de Uso• documento narrativo que descreve a

sequência de eventos de um ator que usa um sistema para completar um processo.

• é uma técnica de modelagem usada para • é uma técnica de modelagem usada para descrever o que um novo sistema deve fazer.

• Ele é construído através de um processo interativo no qual as discussões entre o cliente e os desenvolvedores do sistema conduzem a uma especificação do sistema da qual todos estão de acordo.

UML - Casos de Uso

• Um caso de uso descreve as operações que o sistema deve cumprir para cada usuário. Ele vai ajudar a formalizar as funções que o vai ajudar a formalizar as funções que o sistema precisa fazer. É uma lista completa das interações entre um usuário e o sistema para cumprir uma tarefa. Lista completa significa que o caso de uso descreve as interações desde o início da tarefa, até o fim.

UML - Casos de Uso

• Casos de uso têm que ser compreensíveis por usuários por que só eles sabem o que o sistema precisa fazer. Os casos de uso permitem verificar se o desenvolvedor e o usuário concordam sobre se o desenvolvedor e o usuário concordam sobre o que o sistema deve fazer. Isso é um problema importante no desenvolvimento de software. No mesmo tempo, casos de uso podem servir de "contratos'' entre os usuários e a equipe de desenvolvimento.

Objetivos de um caso de uso

• Decidir e descrever os requisitos funcionais do sistema.

• Fornecer uma descrição clara e consistente do que o sistema deve fazer.

• Permitir descobrir os requisitos funcionais das classes e operações do sistema.

Componentes de um caso de uso

• Ator - é um papel que tipicamente estimula/solicita ações/eventos do sistema e recebe reações. Cada ator pode participar de recebe reações. Cada ator pode participar de vários casos de uso

• Casos de uso - documento narrativo que descreve a sequência de eventos feitos por um ator no uso do sistema.

• Sistema - O sistema a ser modelado

Componentes de um caso de uso

• O nome de um caso de uso pode ser qualquer sentencia, mas a UML recomenda usar uma frase ativa curta (verbo + usar uma frase ativa curta (verbo + substantivo), por exemplo: "comprar itens'', "efetuar venda", ...Os elementos principais do diagrama são uma elipse para representar um caso de uso e um pequeno boneco para representar um ator

Componentes de um caso de uso

Dúvidas necessárias na criação de um caso de uso

• 1 - Como identificar atores ?

• 2- Como descrever atores ?

• 3- Como Identificar casos de uso ?• 3- Como Identificar casos de uso ?

Identificando os atores

• Para identificar os atores que vão participar do modelo devemos fazer as seguintes perguntas :perguntas :

- Quem usa o sistema ?- Quem inicia o sistema ?- Quem fornece os dados ?- Quem usa as informações ?

Descrevendo os atores

Geralmente descrevemos os atores usando :

• Nome do caso de uso

• Tipo de uso (frequente, ocasional , etc...)• Tipo de uso (frequente, ocasional , etc...)

• Descrição de seu papel no sistema

Identificando os casos de uso

Os casos de uso são interações entre os atores e o sistema . Temos então ações do ator e ações do sistema. Sendo que os atores ator e ações do sistema. Sendo que os atores sempre iniciam a ação.

Exemplo de Casos de Uso• Temos que modelar usando casos de uso a compra de

item em um a loja com um terminal de ponto de venda.

Quais são os atores ?

Quem usa o sistema é o cliente e ele usa um terminal Quem usa o sistema é o cliente e ele usa um terminal

de caixa .

Como podemos identificar o caso de uso ?

Podemos chamar este caso de uso de: Comprar Item

Agora vamos a um descrição textual do caso de uso Comprar Item onde atual os atores cliente e caixa.

Caso de uso - Comprar Item

Atores - Cliente , Caixa

Descrição:

Exemplo de Casos de Uso

Descrição:

1. Este caso de uso começa quando um cliente chega ao terminal com itens que deseja comprar.

2. O caixa registra os itens , recebe o pagamento e emite uma nota fiscal.

3. O Cliente recebe os itens comprados.

Caso de uso - Comprar Item

Atores - Cliente , Caixa

Exemplo de Casos de Uso

1 2 3

Exemplo 2 – Casos de Uso

• Suponha que você tenha um almoxarifado de peças onde clientes façam pedido e onde um operador receba tarefas do sistema para um operador receba tarefas do sistema para buscar peças para os pedidos dos clientes e distribuir peças do setor de compras para o almoxarifado.

Exemplo 2 – Casos de Uso

• Casos identificados:

- solicita peças (ator Cliente)- entrega peças (ator Compras)- entrega peças (ator Compras)- realiza tarefa (ator Operador)- cadastrar tarefas (ator Administrador)

Exemplo 2 – Casos de Uso

ModeloUse-Case

Inclusão• Se um caso de uso inicia ou inclui o

comportamento de outro , dizemos que ele usa o outro.

Ex: No caso de uso Comprar Item se o Ex: No caso de uso Comprar Item se o pagamento for feito com dinheiro podemos ter a inclusão PagarComDinheiro

O relacionamento de inclusão em UML é ilustrado com uma linha de generalização com o rótulo <<include>>

Inclusão

Extensão

• Define pontos de extensão que adicionam comportamento a um caso de uso base descrevendo uma variação do descrevendo uma variação do comportamento normal. O caso de uso base pode ser executado mesmo sem a extensão.

Extensão

Generalização

• Indica um caso de base que possui diferentes especializações e inclui comportamento ou sobrescreve o caso de comportamento ou sobrescreve o caso de uso base.

• O caso de uso Pagar_fatura apresenta as generalizações : Pagamento com cartão e Pagamento com Cheque

Generalização

GeneralizaçãoAlém disto temos também os relacionamentos entre atores onde um ator especializado pode acessar especializado pode acessar os casos de uso de um Ator base.

Neste exemplo o Ator gerente acessa os casos de uso do ator funcionário

DIA - Software para gerar Casos de Uso

DOWNLOAD D.I.AWindows 32Bits 18,2MB