requisitos de qualidade edit

qualquer que seja a abordagem ao desenvolvimento, o programa final deve satisfazer algumas propriedades fundamentais. As seguintes propriedades estão entre as mais importantes:

  • confiabilidade: quantas vezes os resultados de um programa estão corretos. Isso depende da correção conceitual de algoritmos, e minimização de erros de programação, tais como erros na gestão de recursos (por exemplo, transbordos de buffer e condições de corrida) e erros lógicos (tais como divisão por zero ou erros off-by-one).,
  • robustez: quão bem um programa antecipa problemas devido a erros (não bugs). Isso inclui situações como dados incorretos, inadequados ou corruptos, indisponibilidade de recursos necessários, tais como memória, serviços do sistema operacional, e Conexões de rede, erro do Usuário, e falhas de energia inesperadas.
  • usabilidade: a ergonomia de um programa: a facilidade com que uma pessoa pode usar o programa para o seu propósito pretendido ou, em alguns casos, mesmo para fins não previstos. Tais questões podem fazer ou quebrar o seu sucesso, mesmo independentemente de outras questões., Isso envolve uma ampla gama de elementos textuais, gráficos e, às vezes, de hardware que melhoram a clareza, intuitividade, coesão e completude da interface de usuário de um programa.
  • portabilidade: a gama de hardware de computador e plataformas de sistema operacional em que o código fonte de um programa pode ser compilado/interpretado e executado., Isso depende de diferenças nas instalações de programação fornecidas pelas diferentes plataformas, incluindo recursos de hardware e sistema operacional, comportamento esperado do hardware e sistema operacional, e disponibilidade de compiladores específicos de plataforma (e às vezes bibliotecas) para a linguagem do código fonte.
  • Mantainability: a facilidade com que um programa pode ser modificado por seus desenvolvedores presentes ou futuros, a fim de fazer melhorias ou personalizações, corrigir bugs e buracos de segurança, ou adaptá-lo a novos ambientes., As boas práticas durante o desenvolvimento inicial fazem a diferença a este respeito. Esta qualidade pode não ser diretamente aparente para o usuário final, mas pode afetar significativamente o destino de um programa a longo prazo.
  • eficiência/ desempenho: medida dos recursos do sistema que um programa consome (tempo do processador, espaço de memória, dispositivos lentos como discos, largura de banda da rede e, em certa medida, até mesmo interação do usuário): quanto menos, melhor. Isso também inclui uma gestão cuidadosa dos recursos, por exemplo, limpeza de arquivos temporários e Eliminação de vazamentos de memória., Isto é frequentemente discutido sob a sombra de uma linguagem de programação escolhida. Embora a linguagem certamente afeta o desempenho, mesmo linguagens mais lentas, como o Python, podem executar programas instantaneamente a partir de uma perspectiva humana. Velocidade, Uso de recursos e desempenho são importantes para programas que dificultam o sistema, mas o uso eficiente do tempo do programador também é importante e está relacionado ao custo: mais hardware pode ser mais barato.,

Readability of source codeEdit

na programação de computadores, readability refere-se à facilidade com que um leitor humano pode compreender o propósito, fluxo de controle e operação do código fonte. Afecta os aspectos da qualidade acima referidos, incluindo a portabilidade, a usabilidade e, mais importante ainda, a manutenção.

legibilidade é importante porque os programadores passam a maior parte de seu tempo lendo, tentando entender e modificar o código fonte existente, ao invés de escrever novo código fonte. Código ilegível muitas vezes leva a bugs, ineficiências e código duplicado., Um estudo descobriu que algumas simples transformações de legibilidade tornaram o código mais curto e reduziram drasticamente o tempo para entendê-lo.

seguindo um estilo de programação consistente muitas vezes ajuda a legibilidade. No entanto, a legibilidade é mais do que apenas Estilo de programação. Muitos fatores, tendo pouco ou nada a ver com a capacidade do computador para compilar e executar o código de forma eficiente, contribuem para a legibilidade. Alguns destes fatores incluem:

  • recuo Diferente estilos (espaço em branco)
  • Decomposição
  • convenções de Nomenclatura de objetos (tais como variáveis, classes, procedimentos, etc.,)

os aspectos de apresentação disto (tais como travessões, quebras de linha, realce de cores, e assim por diante) são muitas vezes tratados pelo editor de código fonte, mas os aspectos de conteúdo refletem o talento e habilidades do programador.

várias linguagens de programação visual também foram desenvolvidas com a intenção de resolver problemas de legibilidade, adotando abordagens não tradicionais para a estrutura de código e exibição. Os ambientes de desenvolvimento integrado (Eid) visam integrar toda essa ajuda. Técnicas como refactoração de Código podem melhorar a legibilidade.,

complexity Algorítmicaedit

o campo acadêmico e a prática de engenharia da programação computacional estão ambos em grande parte preocupados em descobrir e implementar os algoritmos mais eficientes para uma dada classe de problema. Para este propósito, algoritmos são classificados em ordens usando a chamada notação Big O, Que expressa o uso de recursos, como tempo de execução ou consumo de memória, em termos do tamanho de uma entrada., Programadores especialistas estão familiarizados com uma variedade de algoritmos bem estabelecidos e suas respectivas complexidades e usam esse conhecimento para escolher algoritmos que são mais adequados às circunstâncias.

algoritmos de xadrez como um exemplo

“Programming a Computer for Playing Chess” foi um artigo de 1950 que avaliou um algoritmo “minimax” que é parte da história da complexidade algorítmica; um curso sobre o Deep Blue da IBM (chess computer) é parte do currículo de ciência da Computação da Universidade de Stanford.,

MethodologiesEdit

o primeiro passo na maioria dos processos formais de desenvolvimento de software é a análise de requisitos, seguido por testes para determinar modelagem de valor, implementação e Eliminação de falhas (depuração). Existem muitas abordagens diferentes para cada uma dessas tarefas. Uma abordagem popular para a análise de requisitos é a análise de casos de Uso. Muitos programadores usam formas de Desenvolvimento Ágil de software, onde as várias etapas do desenvolvimento formal de software são mais integradas em ciclos curtos que levam algumas semanas ao invés de anos., Há muitas abordagens para o processo de desenvolvimento de Software.

técnicas de modelagem populares incluem análise orientada a objetos e Design (OOAD) e Arquitetura Orientada a Modelos (MDA). A Unified Modeling Language (UML) é uma notação usada tanto para o OOAD quanto para o MDA.

uma técnica similar usada para o projeto de banco de dados é a modelagem entidade-relação (Modelagem ER).as técnicas de implementação incluem linguagens imperativas (orientadas a objetos ou processuais), linguagens funcionais e linguagens lógicas.,

Mensuring language usageEdit

Main article: Measuring programming language popularity

It is very difficult to determine what are the most popular modern programming languages., Métodos de medição da linguagem de programação popularidade incluir: contagem do número de anúncios de emprego que mencionam o idioma, o número de livros vendidos e cursos ensino da linguagem (esta superestima a importância de novas linguagens), e as estimativas do número de linhas existentes de código escrito na linguagem (esta subestima o número de usuários de línguas de negócios, tais como COBOL).

algumas línguas são muito populares para tipos particulares de aplicações, enquanto algumas línguas são regularmente usadas para escrever muitos tipos diferentes de aplicações., Por exemplo, COBOL ainda é forte em centros de dados corporativos muitas vezes em grandes computadores mainframe, Fortran em aplicações de engenharia, linguagens de scripting no desenvolvimento da Web, e C em software incorporado. Muitas aplicações usam uma mistura de vários idiomas em sua construção e uso. Novas linguagens são geralmente projetadas em torno da sintaxe de uma linguagem anterior com novas funcionalidades adicionadas, (por exemplo, C++ adiciona orientação a objeto para C, e Java adiciona gerenciamento de memória e bytecode para C++, mas como resultado, perde eficiência e a capacidade de manipulação de baixo nível).,

DebuggingEdit

O primeiro real de erro fazendo com que um problema em um computador que era uma mariposa, preso dentro de um Harvard mainframe, registrado em um livro de registro de entrada datada de 9 de setembro de 1947. “Bug” já era um termo comum para um defeito de software quando este bug foi encontrado.

ver artigo Principal: Depuração

Depuração é uma tarefa muito importante no processo de desenvolvimento de software, uma vez tendo defeitos em um programa pode ter consequências significativas para seus usuários., Algumas linguagens são mais propensas a alguns tipos de falhas porque sua especificação não requer compiladores para realizar tanto verificação como outras linguagens. O uso de uma ferramenta de análise de código estático pode ajudar a detectar alguns problemas possíveis. Normalmente, o primeiro passo na depuração é tentar reproduzir o problema. Esta pode ser uma tarefa não-trivial, por exemplo, como com processos paralelos ou alguns bugs de software incomuns. Além disso, o ambiente de usuário específico e histórico de uso pode tornar difícil a reprodução do problema.,

Após o bug ser reproduzido, a entrada do programa pode precisar ser simplificada para facilitar a depuração. Por exemplo, quando um bug em um compilador pode fazê-lo estoirar ao analisar algum arquivo de código grande, uma simplificação do caso de teste que resulta em poucas linhas do arquivo de código original pode ser suficiente para reproduzir o mesmo estoiro. Trial-and-error/divide-e-conquer é necessário: o programador irá tentar remover algumas partes do caso de teste original e verificar se o problema ainda existe., Ao depurar o problema em uma interface gráfica, o programador pode tentar ignorar alguma interação do usuário a partir da descrição original do problema e verificar se as ações restantes são suficientes para bugs aparecerem. Scripting e breakpointing também faz parte deste processo.

depuração é muitas vezes feito com IDEs como Eclipse, Visual Studio, Xcode, Kdevelop, NetBeans e Code::Blocks. Depuradores autônomos como o GDB também são usados, e estes frequentemente fornecem menos de um ambiente visual, geralmente usando uma linha de comando. Alguns editores de texto, como o Emacs, permitem que o GDB seja invocado através deles, para fornecer um ambiente visual.,

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *