Introducao
Upcoming SlideShare
Loading in...5
×
 

Introducao

on

  • 871 views

 

Statistics

Views

Total Views
871
Views on SlideShare
871
Embed Views
0

Actions

Likes
0
Downloads
13
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Não é uma visão romântica
  • Não confundir com ausência de formalidade.

Introducao Introducao Presentation Transcript

  • Copyright © 2011 Fábio Nogueira de Lucena [email_address] Construir Software Idéias Análise Projeto Código
  • Conteúdo
    • Quem cuida da criação de software
    • Engenharia de software (perspectivas)
    • Existem problemas no mundo
    • Elementos de uma solução computacional
    • Atividades e dependências entre elas para uma solução
    • Problema, solução e código
    • Por que análise, projeto e codificação?
    • Linguagens empregadas
    • Problemas de desenvolvimento e “regras de ouro”
    • Estímulo econômico para construir software
    • Revisão
  • Quem cuida da criação de software “ Esplanada dos Ministérios” Qual o percurso para software? Engenharia Civil Engenharia de Software Próxima da idéia (1957) Resultado (2000)
  • Engenharia de software (perspectivas)
    • Algumas perspectivas
      • Atividades
      • Artefatos
      • Pessoas
      • Processo
      • Métodos
      • Projeto
      • Qualidade
    Ênfase em desenvolvimento
      • Alguns artefatos
      • Algumas atividades
    • Não aborda processo
    • Não aborda gerência de projeto
    Esta apresentação:
  • Reconheça a existência de problemas
    • Guerras
    • Baixa qualidade de serviços prestados
    • Custos elevados de produção
    • Cura de muitas enfermidades
    • ...
    Alguns podem ser “resolvidos” por computador Alvo da computação Problemas existentes
  • Computação pode resolver problemas Mas não todos os problemas
  • Elementos de solução computacional Software não é só código! DADOS CÓDIGO DOCUMENTOS
  • Atividades necessárias...
    • Analisando... Problema é definido
    • Projetando... Modelo de solução que emprega computador
    • Implementando... Código obtido a partir do projeto
    ... de toda solução computacional Solução computacional Implementação Projeto Análise
  • Dependência entre atividades
    • Primeiro caracterize o problema Sem problema não há o que fazer
    • Depois crie o projeto (a solução computacional) Etapa laboriosa, extensa. Deve-se adquirir habilidades para tal.
    • Converta o projeto em código Sem projeto não há o que codificar. Considere a máquina conforme a liberdade possível.
    Problema  Solução  Código Análise Projeto Implementação
  • Problema
    • O que é preciso?
      • Compreendê-lo
    • Como se faz?
      • Analisando-o
    • Como saber se foi compreendido?
      • Validando com os usuários (clientes)
    Antes da análise Após a análise “idealmente” Análise Atividade “mais difícil”
  • Projeto
    • O que é preciso?
      • Criá-lo (exige registro)
    • Como se faz?
      • Princípios de projeto
      • Exercitando o raciocínio lógico
    • Como saber se está correto?
      • Verificando a solução
  • Algoritmo (parte de projeto detalhado)
    • Abstração de um programa
    • Seqüência de passos de execução finita
    • Produz um resultado esperado
    Algoritmo = modelo de solução computacional Qualquer seqüência de passos cuja execução dá origem a um resultado desejado em tempo finito ... é exemplo de algoritmo!
  • Projeto não é só algoritmo
    • Definição de partes da solução
    • Mecanismo de interação entre as partes
    • Influencia várias qualidades ...
      • Facilidade de manutenção
      • Desempenho e outras ...
    Projetista de software Criação de algoritmos Atividades de projeto de software Sem o projeto, não há o que codificar!
  • Código Está para Energia Gasolina Lâmpada Carro Assim como ... Programa Está para Computador
  • Programa
    • O que é preciso?
      • Linguagem de programação
      • Compreender algoritmo
      • Conhecer o computador
    • Como se faz?
      • Reescreva o projeto na linguagem de programação
    • Como saber se está correto?
      • Verificando e Validando (V&V)
    Não é razoável escrever programa sem a existência de uma solução correspondente.
  • Algoritmo e programa correspondente Algoritmo Permutacao(p,S) Se S possui um caractere então Imprima p seguido de S Senão para i  0 até (n-1) faça S’  S – c i p’  p + c i Permutacao(p’,S’) fim para fim se #include <stdio.h> void Permutacao(char* p, char* S) { char Slinha[10], pLinha[10]; int c; if (strlen(S) == 1) printf(&quot;n%s%s&quot;,p,S); else for (c = 0; c < strlen(S); c++) { memset(Slinha,0,10); memset(pLinha,0,10); strncpy(Slinha,S,c); strcat(Slinha,S+c+1); strcat(pLinha,p); strncat(pLinha,S+c,1); Permutacao(pLinha,Slinha); } } Algoritmo (projeto) Programa em C Acrescenta detalhes da linguagem, computador ...
  • Por que análise, projeto e codificação? Problema Projeto Software Como poderia ser diferente? Análise Codificação Entender o problema Definir uma solução Escrever o software conforme a solução
  • SWEBOK®
    • Requisitos
    • Projeto
    • Construção
    • Testes
    • Manutenção
    • Gerência de Configuração
    • Gerência de Projeto
    • Processos
    • Qualidade
    • Métodos e Ferramentas
  • Uma visão “bem” geral
    • Requisitos (o que fazer?)
    • Projeto (como fazer?)
    • Construção (contruir)
    • Testes (localizar problemas)
    • Manutenção (evoluir)
    • Gerência de Configuração (gerir artefatos)
    • Gerência de Projeto (coordenar ações)
    • Processos (passos e produtos)
    • Qualidade (atender necessidades)
    • Métodos e Ferramentas (instrumentos)
  • Ordem
    • Requisitos antes de Projeto
    • Projeto antes de Construção
    • Construção antes de Testes (exceto TDD)
    • Manutenção após Construção
    • Qualidade por todo o projeto
    • Gerência de Projeto por todo o projeto
    • Gerência de configuração por todo o projeto
    • Processo por todo o projeto
    • Métodos e ferramentas por todo o projeto
  • Algumas estão “sempre” em execução
    • Processo
    • Gerência de Configuração
    • Métodos e Ferramentas
    • Gerência de Projeto
    • Qualidade
  • Requisitos
    • Não é tópico realizado apenas no início de um projeto (ou seja, exige gerência)
    • Requisitos podem ser funcionais
      • Calcular a nota final como média das notas
    • Requisitos podem ser não funcionais
      • Calcular pelo menos 1000 notas finais em 5s
  • Projeto
    • Compreende:
      • Arquitetura
      • Projeto detalhado
    • Arquitetura
      • Principais componentes
      • Partes da solução e como interagem
    • Projeto detalhado
      • Detalhar o suficiente para permitir a construção
  • Construção
    • Criação do código
    • Testes de unidade
    • Testes de integração
    • Depuração
  • Testes
    • Sempre implica na execução de programa
    • Ou seja, análise estática de código não é teste
    • São finitos
    • Deve ser possível definir resultados aceitáveis para uma dada entrada
  • Manutenção
    • Software deve evoluir
      • Atender novos requisitos
      • Corrigir erros
    • Segundo o padrão IEEE Standard for Software Maintenance, IEEE 1219
      • “ modificação de um software, após entrega, para corrigir falhas, melhorar desempenho ou outros atributos, ou para se adaptar a um ambiente modificado”.
  • Gerência de Configuração
    • O desenvolvimento de software gera vários artefatos
    • Artefatos evoluem ao longo do tempo
    • Gerência de Configuração
      • Identifica artefatos (itens de configuração)
      • Controla mudanças nos artefatos
    • Baseline
      • Conjunto de itens de configuração “aprovado”
      • Serve para referência posterior
  • Ger ência de Projeto
    • O desenvolvimento de um software pode envolver um ou mais projetos
    • Manutenção pode envolver um ou mais projetos
    • Gerência visa: planejar, dirigir, acompanhar e fechar um projeto
      • Estimar esforço, alocar recursos, gerenciar riscos, contratar profissionais, ...
  • Processos de software
    • “Atividades realizadas por uma organização para produzir ou manter software”
    • A norma 12207 apresenta vários processos
    • MPS.BR visa a “melhoria de processo do software brasileiro”
  • Métodos e ferramentas
    • Ambientes integradas de desenvolvimento, compiladores, ferramentas para builds, …
    • Métodos orientados a objetos, métodos formais, ...
  • Qualidade
    • Satisfazer o uso pretendido do produto
    • Requisitos de software definem as características desejadas de qualidade
    • Ou seja, pode ser interpretada como conformidade aos requisitos
  • Empregadas no desenvolvimento de software Linguagens
  • Linguagens naturais
    • Português
    • Inglês
    • Espanhol
    • Japonês, ...
  • Linguagens para computadores
    • Padrões de bits 01110101000110110111...
    • Assembly Linguagem de montagem
    • Linguagens de “alto nível” Delphi, VB, C++, Java
    • ??
    Mais abstração = maior produtividade Abstração crescente
  • Linguagens ao longo do tempo Linguagens naturais Linguagem de máquina Mais abstração Menos abstração Linguagem algorítmica Linguagem de programação Cérebro Cérebro Compilador UML “ Fronteira” homem-máquina
  • Outras questões relevantes do desenvolvimento de programas Processo de desenvolvimento
  • Problemas de desenvolvimento Pressa em codificar Falta de planejamento Conhecimento ingênuo
  • Suposição bem-aceita Processo bom, resultado bom! Processo ruim, resultado ruim! Desenvolver programas exige trabalho em equipe
  • Ausência de disciplina Ausência de disciplina = usuário insatisfeito Não confundir com ausência de formalidade. Formigas são “informais” e “disciplinadas”.
  • Ferramentas “boas” são suficientes? Bons instrumentos fazem boa música? Bom prato é obtido com um bom fogão? Emprego da Última tecnologia Não necessariamente
  • Estímulo ...
    • Microsoft
      • Empresa de maior valor de mercado do mundo
      • 50000 funcionários
    • Wall-Mart
      • Quinta maior
      • Quase 1,5 milhão de funcionários
    • Comparação:
      • Coca-cola está em 16o.
    Software “bom” = Dinheiro Dados obtidos em www. forbes .com para 2003
  • Você acredita nisso? Não existe solução mágica! Lâmpada mágica para construção de software. COMPRE AGORA! Pague só em 60 dias!
  • Considerações finais
    • Software “bom” é “difícil” de ser construído
    • Desenvolver programas exige raciocínio
    • Envolve atividades e artefatos
    • Envolve várias linguagens
    • Envolve análise, projeto
    • Envolve implementação
    Desenvolver software “bom” = muito esforço ?