Cs 1

44
Construção de Software Curso Engenharia de Software http://engenhariadesoftware.inf.br Fábio Nogueira de Lucena

Transcript of Cs 1

Page 1: Cs 1

Construção de SoftwareCurso Engenharia de Software

http://engenhariadesoftware.inf.brFábio Nogueira de Lucena

Page 2: Cs 1

Referência• Code Complete: A Practical Handbook of

Software Construction, Steve McConnell2nd 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.

Page 3: Cs 1

Construção de Software?

• ISO/IEC 12207:2008identifica 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).

Page 4: Cs 1

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

Page 5: Cs 1

“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)

Page 6: Cs 1

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, ...

Page 7: Cs 1

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

Page 8: Cs 1

É 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

Page 9: Cs 1

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

Page 10: Cs 1

MetáforasCompreendendo o Desenvolvimento de Software

Page 11: Cs 1

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

Page 12: Cs 1

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”, ...

Page 13: Cs 1

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)

Page 14: Cs 1

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.

Page 15: Cs 1

Pré-requisitosMeça duas vezes, corte uma

Page 16: Cs 1

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

Page 17: Cs 1

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

Page 18: Cs 1

Por que preparar?

• Reduzir riscos

Page 19: Cs 1

Apelo aos dados

Page 20: Cs 1

Custo de correção

• Quanto mais tarde a detecção de defeito, mais cara é a correção

Page 21: Cs 1

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)

Page 22: Cs 1

Quais os pré-requisitos?

• Definição do problema

• Requisitos

• Arquitetura de Software

Page 23: Cs 1

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)

Page 24: Cs 1

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, ...

Page 25: Cs 1

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

Page 26: Cs 1

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

Page 27: Cs 1

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

Page 28: Cs 1

Tarefa

• Ambiente-se com a Lista de Verificação de Requisitos (Requirements Checklist) no portal de apoio ao livro Code Complete

• Portalhttp://www.cc2e.com

Page 29: Cs 1

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

Page 30: Cs 1

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)

Page 31: Cs 1

Arquitetura inclui:• Visão geral do sistema

(grandes blocos)• Classes principais• Projeto dos dados• Regras de negócio• Projeto de interface

com o usuário• Gerenciamento de

recursos• Segurança• Desempenho• Extensibilidade

• Interoperabilidade• Internacionalização/

localização• Entrada/saída• Processamento de

erros• Tolerância a falhas• Praticabilidade• Robustez• Comprar/construir• Reutilização• Estratégia de alteração

Page 32: Cs 1

Tarefa

• Ambiente-se com a Lista de Verificação de Arquitetura (Architecture) no portal de apoio ao livro Code Complete

• Portalhttp://www.cc2e.com

Page 33: Cs 1

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)

Page 34: Cs 1

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

Page 35: Cs 1

Principais decisõesde Construção de Software

Page 36: Cs 1

Principais decisões

• Linguagem de Programação

• Convenções de programação

• Onda tecnológica

Page 37: Cs 1

Linguagem de programação

TIOBE index

Page 38: Cs 1

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

Page 39: Cs 1

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)

Page 40: Cs 1

Linguagem é religião?

• Não.

• Pode ser que exista opção de escolha.

• Em geral, o projeto dita o uso de linguagens mais apropriadas

Page 41: Cs 1

Convenções de Programação

• Code Conventions for the Java Programming Languagehttp://java.sun.com/docs/codeconv/

Page 42: Cs 1

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.

Page 43: Cs 1

Considerações finais

• Toda linguagem possui vantagens e desvantagens

• Estabeleça convenções de programação

Page 44: Cs 1

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

• Portalhttp://www.cc2e.com