Construção de Software
    Curso Engenharia de Software
 http://engenhariadesoftware.inf.br
      Fábio Nogueira de Lucena
Referência
• Code Complete: A Practical Handbook of
  Software Construction, Steve McConnell
  2nd edition, Microsoft Press, 2004
• HOME PAGE (apoio ao livro)
  http://www.cc2e.com/
• IMPORTANTE: o conteúdo destes
  slides foi obtido, em sua maior parte,
  do livro supracitado. Nossos
  agradecimentos e a devida citação.
Construção de Software?
 • ISO/IEC 12207:2008
   identifica 43 processos (aquisição,
   fornecimento, desenvolvimento, operação,
   manutenção e retirada de operação de
   produtos de software).

 • Um deles: software construction process
 • Objetivo: produzir unidades de software
   executáveis que adequadamente refletem o
   projeto de software (software design).
Quais as atividades?
• Codificação (programação)
• Depuração (debugging)
• Projeto detalhado (low-level design)
• Testes unitários (unit tests)
• Testes de integração
• Integração
“Sinônimos”
• Codificação (muitas vezes entendida
  como a mera transcrição de projeto
  existente para uma linguagem de
  programação e, construção, envolve
  criatividade e critérios)
• Programação
  (mais adequado)
Alguns detalhes
• Verificar se pré-requisitos estão prontos
• Determinar como o código será testado
• Projetar e escrever classes e rotinas
• Selecionar estruturas de controle
• Realizar testes de unidade
• Reorganizar o código, formatá-lo,
  incluir comentários, ...
O que não é?
• Gerência do projeto
• Desenvolvimento dos requisitos
• Arquitetura de software
• Projeto da interface com o usuário
• Testes de sistema
• Manutenção
É importante?
• Extensa (30% a 80% do tempo total)
• Atividade central (após requisitos e
  arquitetura, antes dos testes de sistema)
• Foco na construção pode aumentar
  produtividade individual (variação de
  um fator de 10 a 20)
• Em alguns casos, o software é tudo
• Será executada garantidamente
Produtos da CS
• ISO/IEC 12207:2008
 • Critérios de verificação são definidos para todas as
   unidades de software com base nos requisitos

 • Unidades de software definidas pelo projeto são
   produzidas

 • Consistência e rastreabilidade são estabelecidas entre
   unidades de software, requisitos e projeto

 • Verificação das unidades de software conforme os
   requisitos e o projeto é realizada
Metáforas
Compreendendo o Desenvolvimento de Software
Metáfora (Aurélio)

• “transferência de uma palavra para um
  âmbito semântico que não é o do objeto
  que ela designa”
• Por exemplo, usar “raposa” para
  designar uma pessoa “astuta”.
Metáforas
• David Gries: “escrever software é uma
  ciência”
• Donald Knuth: “é uma arte”
• Watts Humphrey: “é um processo”
• Plauger e Kent Beck: “é como dirigir
  um carro”
• Alistair Cockburn: “é um jogo”, ...
Outras
• Escrever código (como uma carta?)
  (ignora planejamento e projeto)
• Cultivar uma planta
  (ignora que você não o clima tem
  controle)
• Cultura de ostras (incremento)
• Construção de software (edificação)
  (uma pipa é diferente de 1000 pipas)
Por fim,...
• Metáforas apenas facilitam a compreensão
  do processo de desenvolvimento de
  software relacionando-o com atividades
  conhecidas.
• Tratar CS como construção civil, ilustra a
  diferença entre grandes e pequenos
  projetos.
• Não são mutuamente exclusivas, combine-
  as.
Pré-requisitos
Meça duas vezes, corte uma
Preparação
• Deve ser adequada para as
  necessidades do projeto e ocorrer antes
  do início da construção
• Diálogo absurdo: “Quero uma casa
  aqui, diz o cliente. O mestre de obras
  diz: claro, quando terminar eu aviso e
  inicia a construção.”
Qualidade

• Qualidade no fim:
  Vamos testar
• Qualidade no meio:
  Vamos construir com cuidado
• Qualidade no início (preparação):
  Pleneja e projeta um produto de qualidade
Por que preparar?



• Reduzir riscos
Apelo aos dados
Custo de correção
• Quanto mais tarde a detecção de
  defeito, mais cara é a correção
Preparação depende do projeto

  • Diferentes projetos, diferentes
    preparações
  • Projeto simples, menos preparação
    (planejamento iterativo)
  • Projeto de software crítico (vidas em
    jogo), preparação extensiva
    (planejamento extensivo)
Quais os pré-requisitos?


 • Definição do problema
 • Requisitos
 • Arquitetura de Software
Definição do problema

• Problema:
  Coordenadores de curso têm dificuldades
  para alterar o horário de disciplinas
• É comum:
  Acrescentar tela similar ao Google Calendar
  (parece solução e não um problema)
Requisitos
• Descrevem em detalhes o que um software
  deve fazer
• Nomes associados:
 • Análise de Requisitos

 • Desenvolvimento de requisitos

 • Definição de requisitos

 • Especificação funcional, ...
Importância
• Custos (para corrigir defeitos na
  especificação)
• Segundo Steve McConnell:
  “Especificar requisitos corretamente é o
  segredo para o sucesso de um projeto, talvez
  ainda mais importante do que as técnicas de
  construção eficientes”.
Requisitos são estáveis?
 • Mesmo após a assinatura do cliente em
   uma especificação de requisitos, eles
   irão mudar
 • Quanto de mudança é normal?
   Estudos da IBM indicam 25% de
   mudanças nos requisitos, responsáveis
   por 70 a 85% das alterações em um
   projeto típico
Requisitos durante a CS
 • Avalie a qualidade dos requisitos
   (lista de verificação)

 • Certifique-se de que os custos das alterações nos
   requisitos são conhecidos

 • Estabeleça um procedimento para controle de
   alteração

 • Use estratégia compatível com alterações

 • Cancele o projeto

 • Considere o efeito comercial do projeto
Tarefa

• Ambiente-se com a Lista de Verificação
  de Requisitos (Requirements Checklist) no
  portal de apoio ao livro Code Complete
• Portal
  http://www.cc2e.com
Arquitetura
• Etapa de alto nível de projeto de
  software (software design)
• É a estrutura que irá acomodar as
  partes mais detalhadas do projeto de
  software (software design)
• Outros termos: arquitetura de sistema e
  high-level design
Por que arquitetura?
• Fornece orientação para programadores
• Desmembra o trabalho
  (várias equipes trabalharem
  independentemente)
• Arquitetura ruim torna a construção
  inviável
• Custo (para correção)
Arquitetura inclui:
• Visão geral do sistema   • Interoperabilidade
  (grandes blocos)         • Internacionalização/
• Classes principais         localização
• Projeto dos dados        • Entrada/saída
• Regras de negócio        • Processamento de
• Projeto de interface       erros
  com o usuário            • Tolerância a falhas
• Gerenciamento de         • Praticabilidade
  recursos                 • Robustez
• Segurança                • Comprar/construir
• Desempenho               • Reutilização
• Extensibilidade          • Estratégia de alteração
Tarefa

• Ambiente-se com a Lista de Verificação
  de Arquitetura (Architecture) no portal
  de apoio ao livro Code Complete
• Portal
  http://www.cc2e.com
Quanto de pré-requisitos?
  • Depende do projeto (acostume-se a
    considerar o contexto)
  • Em geral, 10 a 20% do esforço e 20 a
    30% do tempo dedicado ao
    planejamento prévio, requisitos e
    arquitetura
    (não inclui projeto detalhado, parte de
    CS)
Não esqueça
• Alguns projetos são mais sequenciais, outros
  mais iterativos

• Uma definição inadequada do problema pode
  levar à solução do problema errado durante a
  construção

• Não inicie a construção sem que os requisitos
  estejam corretos (custo de correção)

• Se a arquitetura estiver errada, você estará
  resolvendo o problema certo, mas de maneira
  errada
Principais decisões
  de Construção de Software
Principais decisões


• Linguagem de Programação
• Convenções de programação
• Onda tecnológica
Linguagem de programação



TIOBE
index
Um tratamento + formal

 • Lutz Prechelt, "An Empirical
   Comparison of Seven Programming
   Languages," Computer, vol. 33, no.
   10, pp. 23-29, Oct. 2000, doi:
   10.1109/2.876288
Algumas...
• Assembly. Linguagem de baixo nível,
  formada por mnemônicos para
  linguagens de máquina.
• Fortran. Primeira linguagem de alto
  nível e ainda “imbatível” em cálculos
• SQL. Linguagem padrão de fato para
  consultas e atualizações em bancos de
  dados (linguagem declarativa)
Linguagem é religião?

• Não.
• Pode ser que exista opção de escolha.
• Em geral, o projeto dita o uso de
  linguagens mais apropriadas
Convenções de Programação


  • Code Conventions for the Java
    Programming Language
    http://java.sun.com/docs/codeconv/
Onda tecnológica
• Programas baseados em caracteres, depois
  interfaces gráficas, depois web, ...
• Ferramentas para o desenvolvimento destes
  programas
• (Sugestão) David Gries distingue
  programação em e para uma linguagem.
  Quem programa em limita-se às construções
  da linguagem. Quem programa para cria
  ideias e depois as converte para a linguagem
  alvo.
Considerações finais


• Toda linguagem possui vantagens e
  desvantagens
• Estabeleça convenções de programação
Tarefa

• Ambiente-se com a Lista de Verificação
  de Decisões de Construção
  (Construction Decisions) no portal de
  apoio ao livro Code Complete
• Portal
  http://www.cc2e.com

Mais conteúdo relacionado

PPT
Mitos do Desenvolvimento de Software
PDF
Aula Modelos de Processos Tradicionais para Desenvolvimento de Software
PDF
DESENVOLVIMENTO E GERENCIAMENTO ÁGIL DE PROJETOS DE SOFTWARE
PDF
Áreas de Conhecimento da Engenharia de Software
PPT
Apresentação estrela vs cmmi nivel 2
PPT
Metodologias Ageis
PDF
Revista Engenharia de Software n° 44
PDF
Aula 4- Engenharia de Software
Mitos do Desenvolvimento de Software
Aula Modelos de Processos Tradicionais para Desenvolvimento de Software
DESENVOLVIMENTO E GERENCIAMENTO ÁGIL DE PROJETOS DE SOFTWARE
Áreas de Conhecimento da Engenharia de Software
Apresentação estrela vs cmmi nivel 2
Metodologias Ageis
Revista Engenharia de Software n° 44
Aula 4- Engenharia de Software

Mais procurados (20)

PPT
Curso Scrum - Turma Visie
PDF
Documento de requisitos
PDF
Modelos de Processo de Software Parte 1
PPTX
Fundamentos da Engenharia de Software
PDF
Aula 3 - Engenharia de Software
PDF
Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1
PDF
Introdução a engenharia de software aula 02
PPTX
Crise de software2
PDF
Engenharia de Software Aula 1 - Intro
PDF
Modelos de Processo de Software Parte 2
PPTX
Qualidade de Software com Microsoft Visual Studio
PPTX
Ferramentas de planejamento
PDF
Aula 2 - Processos de Software
PDF
Modelos de Processo de Software Parte 4
PPTX
Analise aula2
PDF
Modelos de Processo de Software Parte 3
PDF
Introdução à Engenharia de Testes de Software
PDF
Aula Gestão de Projetos
Curso Scrum - Turma Visie
Documento de requisitos
Modelos de Processo de Software Parte 1
Fundamentos da Engenharia de Software
Aula 3 - Engenharia de Software
Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1
Introdução a engenharia de software aula 02
Crise de software2
Engenharia de Software Aula 1 - Intro
Modelos de Processo de Software Parte 2
Qualidade de Software com Microsoft Visual Studio
Ferramentas de planejamento
Aula 2 - Processos de Software
Modelos de Processo de Software Parte 4
Analise aula2
Modelos de Processo de Software Parte 3
Introdução à Engenharia de Testes de Software
Aula Gestão de Projetos
Anúncio

Destaque (18)

PDF
Javafx Avancado
ODP
servlet-requisicoes
ODP
Como desenvolver-software
ODP
Orientação a Objetos (3)
ODP
Orientação a Objetos (1)
ODP
servlet-respostas
ZIP
Visão Geral de EJB 3.0
PDF
Javafx Introdução
ODP
Orientação a Objetos (2)
PPTX
Especificação por meio de exemplos (BDD, testes de aceitação, ...)
ODP
engenharia-de-requisitos
Javafx Avancado
servlet-requisicoes
Como desenvolver-software
Orientação a Objetos (3)
Orientação a Objetos (1)
servlet-respostas
Visão Geral de EJB 3.0
Javafx Introdução
Orientação a Objetos (2)
Especificação por meio de exemplos (BDD, testes de aceitação, ...)
engenharia-de-requisitos
Anúncio

Semelhante a Cs 1 (20)

PDF
Fases do desenvolvimento de software baseado no código de ética.
PDF
PPTX
engenharia de softwareAbordagem Sistemática e Metodológica.pptx
PPTX
aula projeto e des sistemas 22 03 2021.pptx
PPTX
Resumo capítulo 1 livro Engenharia de Software Moderna
PPT
Aula1 introducao engsw
PPT
Aula 1 introdução à engenharia de software1 (1)
PDF
Aula - Introdução a Engenharia de Software
PPT
Engenharia de Software introdução
PPTX
aula 1 engenharia de software com tópicos da disciplina.pptx
PPT
Análise e Design Orientado a Objetos.ppt
PPTX
Introdução a Engenharia de Software.pptx
PDF
Aula01 aula alua aula aulaaa- 19 02.pdf
PDF
Engenharia de Software - Wikipedia
PPTX
(CONSTRUÇÃO2) Engenharia de Software_ADRIANA-1.pptx
PPTX
(CONSTRUÇÃO2) Engenharia de Software_ADRIANA.pptx
PPT
Engenharia de software
PPT
Aula de Engenharia de Software principais caracteristicas
PDF
Engenharia de Software: A ponte para um código sustentável
PPTX
Eng.ª do Software - 3. Processos da engenharia de requisitos
Fases do desenvolvimento de software baseado no código de ética.
engenharia de softwareAbordagem Sistemática e Metodológica.pptx
aula projeto e des sistemas 22 03 2021.pptx
Resumo capítulo 1 livro Engenharia de Software Moderna
Aula1 introducao engsw
Aula 1 introdução à engenharia de software1 (1)
Aula - Introdução a Engenharia de Software
Engenharia de Software introdução
aula 1 engenharia de software com tópicos da disciplina.pptx
Análise e Design Orientado a Objetos.ppt
Introdução a Engenharia de Software.pptx
Aula01 aula alua aula aulaaa- 19 02.pdf
Engenharia de Software - Wikipedia
(CONSTRUÇÃO2) Engenharia de Software_ADRIANA-1.pptx
(CONSTRUÇÃO2) Engenharia de Software_ADRIANA.pptx
Engenharia de software
Aula de Engenharia de Software principais caracteristicas
Engenharia de Software: A ponte para um código sustentável
Eng.ª do Software - 3. Processos da engenharia de requisitos

Mais de Fábio Nogueira de Lucena (17)

PDF
Fundamentos de Programação Front-End
PPTX
JavaScript: Aprendendo a programar
PPTX
HTML5: Primeiros Contatos (visão geral)
PDF
HTTP: Um Curso Básico
PDF
Apresentacao curso-2017-08-08
PPTX
Jornada Goiana em Engenharia de Software 2017
PPTX
PPTX
Introducao integracao
PPTX
Healthdb Visão Geral
PPTX
Engenharia de Software - planejamento pedagógico
PPTX
Arquitetura de Software EXPLICADA
PPT
Arquitetura de Software
PPTX
Arquitetura software
PPTX
Prontuário Eletrônico do Paciente
ODP
Orientação a objetos (tecnologias)
ODP
Orientação a Objetos (introdução)
Fundamentos de Programação Front-End
JavaScript: Aprendendo a programar
HTML5: Primeiros Contatos (visão geral)
HTTP: Um Curso Básico
Apresentacao curso-2017-08-08
Jornada Goiana em Engenharia de Software 2017
Introducao integracao
Healthdb Visão Geral
Engenharia de Software - planejamento pedagógico
Arquitetura de Software EXPLICADA
Arquitetura de Software
Arquitetura software
Prontuário Eletrônico do Paciente
Orientação a objetos (tecnologias)
Orientação a Objetos (introdução)

Último (16)

PDF
Visão geral da SAP, SAP01 Col18, Introdução sistema SAP,
PDF
Jira Software projetos completos com scrum
PDF
SEMINÁRIO DE IHC - A interface Homem-Máquina
PPT
Conceitos básicos de Redes Neurais Artificiais
PDF
Customizing básico em SAP Extended Warehouse Management, EWM110 Col26
PPTX
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
PPTX
ccursoammaiacursoammaiacursoammaia123456
PDF
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
PPTX
Analise Estatica de Compiladores para criar uma nova LP
PPTX
Aula 9 - Funções em Python (Introdução à Ciência da Computação)
PPTX
3b - Bradesco Lean Agile Training Plan - Ritos Operacionais (1).pptx
PDF
Banco de Dados 2atualização de Banco de d
PPTX
Tipos de servidor em redes de computador.pptx
PDF
Aula 9 - Funções 202yttvrcrg5-1.pptx.pdf
PDF
Processos no SAP Extended Warehouse Management, EWM100 Col26
PDF
Processamento da remessa no SAP ERP, SCM610 Col15
Visão geral da SAP, SAP01 Col18, Introdução sistema SAP,
Jira Software projetos completos com scrum
SEMINÁRIO DE IHC - A interface Homem-Máquina
Conceitos básicos de Redes Neurais Artificiais
Customizing básico em SAP Extended Warehouse Management, EWM110 Col26
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
ccursoammaiacursoammaiacursoammaia123456
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
Analise Estatica de Compiladores para criar uma nova LP
Aula 9 - Funções em Python (Introdução à Ciência da Computação)
3b - Bradesco Lean Agile Training Plan - Ritos Operacionais (1).pptx
Banco de Dados 2atualização de Banco de d
Tipos de servidor em redes de computador.pptx
Aula 9 - Funções 202yttvrcrg5-1.pptx.pdf
Processos no SAP Extended Warehouse Management, EWM100 Col26
Processamento da remessa no SAP ERP, SCM610 Col15

Cs 1

  • 1. Construção de Software Curso Engenharia de Software http://engenhariadesoftware.inf.br Fábio Nogueira de Lucena
  • 2. Referência • Code Complete: A Practical Handbook of Software Construction, Steve McConnell 2nd edition, Microsoft Press, 2004 • HOME PAGE (apoio ao livro) http://www.cc2e.com/ • IMPORTANTE: o conteúdo destes slides foi obtido, em sua maior parte, do livro supracitado. Nossos agradecimentos e a devida citação.
  • 3. Construção de Software? • ISO/IEC 12207:2008 identifica 43 processos (aquisição, fornecimento, desenvolvimento, operação, manutenção e retirada de operação de produtos de software). • Um deles: software construction process • Objetivo: produzir unidades de software executáveis que adequadamente refletem o projeto de software (software design).
  • 4. Quais as atividades? • Codificação (programação) • Depuração (debugging) • Projeto detalhado (low-level design) • Testes unitários (unit tests) • Testes de integração • Integração
  • 5. “Sinônimos” • Codificação (muitas vezes entendida como a mera transcrição de projeto existente para uma linguagem de programação e, construção, envolve criatividade e critérios) • Programação (mais adequado)
  • 6. Alguns detalhes • Verificar se pré-requisitos estão prontos • Determinar como o código será testado • Projetar e escrever classes e rotinas • Selecionar estruturas de controle • Realizar testes de unidade • Reorganizar o código, formatá-lo, incluir comentários, ...
  • 7. O que não é? • Gerência do projeto • Desenvolvimento dos requisitos • Arquitetura de software • Projeto da interface com o usuário • Testes de sistema • Manutenção
  • 8. É importante? • Extensa (30% a 80% do tempo total) • Atividade central (após requisitos e arquitetura, antes dos testes de sistema) • Foco na construção pode aumentar produtividade individual (variação de um fator de 10 a 20) • Em alguns casos, o software é tudo • Será executada garantidamente
  • 9. Produtos da CS • ISO/IEC 12207:2008 • Critérios de verificação são definidos para todas as unidades de software com base nos requisitos • Unidades de software definidas pelo projeto são produzidas • Consistência e rastreabilidade são estabelecidas entre unidades de software, requisitos e projeto • Verificação das unidades de software conforme os requisitos e o projeto é realizada
  • 11. Metáfora (Aurélio) • “transferência de uma palavra para um âmbito semântico que não é o do objeto que ela designa” • Por exemplo, usar “raposa” para designar uma pessoa “astuta”.
  • 12. Metáforas • David Gries: “escrever software é uma ciência” • Donald Knuth: “é uma arte” • Watts Humphrey: “é um processo” • Plauger e Kent Beck: “é como dirigir um carro” • Alistair Cockburn: “é um jogo”, ...
  • 13. Outras • Escrever código (como uma carta?) (ignora planejamento e projeto) • Cultivar uma planta (ignora que você não o clima tem controle) • Cultura de ostras (incremento) • Construção de software (edificação) (uma pipa é diferente de 1000 pipas)
  • 14. Por fim,... • Metáforas apenas facilitam a compreensão do processo de desenvolvimento de software relacionando-o com atividades conhecidas. • Tratar CS como construção civil, ilustra a diferença entre grandes e pequenos projetos. • Não são mutuamente exclusivas, combine- as.
  • 16. Preparação • Deve ser adequada para as necessidades do projeto e ocorrer antes do início da construção • Diálogo absurdo: “Quero uma casa aqui, diz o cliente. O mestre de obras diz: claro, quando terminar eu aviso e inicia a construção.”
  • 17. Qualidade • Qualidade no fim: Vamos testar • Qualidade no meio: Vamos construir com cuidado • Qualidade no início (preparação): Pleneja e projeta um produto de qualidade
  • 18. Por que preparar? • Reduzir riscos
  • 20. Custo de correção • Quanto mais tarde a detecção de defeito, mais cara é a correção
  • 21. Preparação depende do projeto • Diferentes projetos, diferentes preparações • Projeto simples, menos preparação (planejamento iterativo) • Projeto de software crítico (vidas em jogo), preparação extensiva (planejamento extensivo)
  • 22. Quais os pré-requisitos? • Definição do problema • Requisitos • Arquitetura de Software
  • 23. Definição do problema • Problema: Coordenadores de curso têm dificuldades para alterar o horário de disciplinas • É comum: Acrescentar tela similar ao Google Calendar (parece solução e não um problema)
  • 24. Requisitos • Descrevem em detalhes o que um software deve fazer • Nomes associados: • Análise de Requisitos • Desenvolvimento de requisitos • Definição de requisitos • Especificação funcional, ...
  • 25. Importância • Custos (para corrigir defeitos na especificação) • Segundo Steve McConnell: “Especificar requisitos corretamente é o segredo para o sucesso de um projeto, talvez ainda mais importante do que as técnicas de construção eficientes”.
  • 26. Requisitos são estáveis? • Mesmo após a assinatura do cliente em uma especificação de requisitos, eles irão mudar • Quanto de mudança é normal? Estudos da IBM indicam 25% de mudanças nos requisitos, responsáveis por 70 a 85% das alterações em um projeto típico
  • 27. Requisitos durante a CS • Avalie a qualidade dos requisitos (lista de verificação) • Certifique-se de que os custos das alterações nos requisitos são conhecidos • Estabeleça um procedimento para controle de alteração • Use estratégia compatível com alterações • Cancele o projeto • Considere o efeito comercial do projeto
  • 28. Tarefa • Ambiente-se com a Lista de Verificação de Requisitos (Requirements Checklist) no portal de apoio ao livro Code Complete • Portal http://www.cc2e.com
  • 29. Arquitetura • Etapa de alto nível de projeto de software (software design) • É a estrutura que irá acomodar as partes mais detalhadas do projeto de software (software design) • Outros termos: arquitetura de sistema e high-level design
  • 30. Por que arquitetura? • Fornece orientação para programadores • Desmembra o trabalho (várias equipes trabalharem independentemente) • Arquitetura ruim torna a construção inviável • Custo (para correção)
  • 31. Arquitetura inclui: • Visão geral do sistema • Interoperabilidade (grandes blocos) • Internacionalização/ • Classes principais localização • Projeto dos dados • Entrada/saída • Regras de negócio • Processamento de • Projeto de interface erros com o usuário • Tolerância a falhas • Gerenciamento de • Praticabilidade recursos • Robustez • Segurança • Comprar/construir • Desempenho • Reutilização • Extensibilidade • Estratégia de alteração
  • 32. Tarefa • Ambiente-se com a Lista de Verificação de Arquitetura (Architecture) no portal de apoio ao livro Code Complete • Portal http://www.cc2e.com
  • 33. Quanto de pré-requisitos? • Depende do projeto (acostume-se a considerar o contexto) • Em geral, 10 a 20% do esforço e 20 a 30% do tempo dedicado ao planejamento prévio, requisitos e arquitetura (não inclui projeto detalhado, parte de CS)
  • 34. Não esqueça • Alguns projetos são mais sequenciais, outros mais iterativos • Uma definição inadequada do problema pode levar à solução do problema errado durante a construção • Não inicie a construção sem que os requisitos estejam corretos (custo de correção) • Se a arquitetura estiver errada, você estará resolvendo o problema certo, mas de maneira errada
  • 35. Principais decisões de Construção de Software
  • 36. Principais decisões • Linguagem de Programação • Convenções de programação • Onda tecnológica
  • 38. Um tratamento + formal • Lutz Prechelt, "An Empirical Comparison of Seven Programming Languages," Computer, vol. 33, no. 10, pp. 23-29, Oct. 2000, doi: 10.1109/2.876288
  • 39. Algumas... • Assembly. Linguagem de baixo nível, formada por mnemônicos para linguagens de máquina. • Fortran. Primeira linguagem de alto nível e ainda “imbatível” em cálculos • SQL. Linguagem padrão de fato para consultas e atualizações em bancos de dados (linguagem declarativa)
  • 40. Linguagem é religião? • Não. • Pode ser que exista opção de escolha. • Em geral, o projeto dita o uso de linguagens mais apropriadas
  • 41. Convenções de Programação • Code Conventions for the Java Programming Language http://java.sun.com/docs/codeconv/
  • 42. Onda tecnológica • Programas baseados em caracteres, depois interfaces gráficas, depois web, ... • Ferramentas para o desenvolvimento destes programas • (Sugestão) David Gries distingue programação em e para uma linguagem. Quem programa em limita-se às construções da linguagem. Quem programa para cria ideias e depois as converte para a linguagem alvo.
  • 43. Considerações finais • Toda linguagem possui vantagens e desvantagens • Estabeleça convenções de programação
  • 44. Tarefa • Ambiente-se com a Lista de Verificação de Decisões de Construção (Construction Decisions) no portal de apoio ao livro Code Complete • Portal http://www.cc2e.com