Baixe o app para aproveitar ainda mais
Prévia do material em texto
CURSO: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS DISCIPLINA: PROCESSO DE DESENVOLVIMENTO DE SOFTWARE PROF.: JANETE AMARAL/ DAVID FALCÃO TURNO: VISTO TURMA: SALA: TECNOLÓGICO ALUNO: DATA: ___/___/___ LEITURA COMPLEMENTAR CONSTRUÇÃO DE SOFTWARE TRADUÇÃO SWEBOK INTRODUÇÃO O termo Construção de Software refere-se à criação detalhada do trabalho do software através da combinação de codificação, verificação, teste de unidade, teste de integração e depuração. A Área de Conhecimento - Construção de Software está ligada a todas as demais áreas. Mas está mais fortemente ligada com as áreas Projeto e Teste de Software. Isto porque o processo de construção de software em si envolve significante atividade de projeto e de teste. Ela também utiliza as saídas das atividades do projeto e fornece entradas para as atividades de teste. Os limites detalhados entre projeto, construção e teste variam dependendo do ciclo de vida do processo de software que está sendo utilizado no projeto. Embora alguns projetos detalhados possam ser realizados antes da construção, muito do trabalho de projeto é feito dentro da atividade de construção em si. Desta forma, a Área Construção de Software é totalmente ligada com a Área Projeto de Software. Através da construção, engenheiros de software testam seu trabalho (teste de unidade e teste de integração). Assim, a Área Construção de Software também está muito ligada com a Área Teste de Software. A Construção de Software tipicamente produz o maior volume de itens de configuração que necessitam ser gerenciados no projeto de software (arquivos fonte, conteúdos, casos de teste e outros). Desta forma, a Área Construção de Software também está fortemente ligada com a Área Gerência de Configuração de Software. Uma vez que a construção de software está fortemente apoiada em métodos e ferramentas, ela é provavelmente a mais intensiva no uso de ferramentas das áreas de conhecimento, estando, portanto, ligada à Área de Ferramentas e Métodos. Enquanto a qualidade de software é importante em todas as Áreas de Conhecimento, o código é a última liberação de um projeto de software, e desta forma a Qualidade de Software esta fortemente ligada à construção de software. Dentre as disciplinas relacionadas com a Engenharia de Software, a Área Construção de Software é a mais relacionada com a ciência da computação, no uso do conhecimento de algoritmos e das práticas de codificação. Ambas são frequentemente consideradas como pertencentes ao domínio da ciência da computação. DETALHAMENTO DOS TÓPICOS PARA CONSTRUÇÃO DE SOFTWARE A estrutura da Área Construção de Software é apresentada a seguir, juntamente com uma breve descrição dos principais tópicos associados. A Fig.1 apresenta uma representação gráfica da decomposição de alto nível desta área de conhecimento. CONSTRUÇÃO DE SOFTWARECONSTRUÇÃO DE SOFTWARE Figura 1 1. Fundamentos da Construção de Software Os fundamentos da construção de software incluem: • Minimização da complexidade • Antecipação de Mudanças • Construção para Verificação • Padrões de Construção Os 03 primeiros conceitos são aplicados tanto ao projeto como à construção. A seção seguinte define estes conceitos e descreve com eles são aplicados à construção de software. 1.1. Minimização da Complexidade O principal fator que leva as pessoas a convergirem seus planos para aos computadores é a severamente limitada habilidade das pessoas de reterem em suas memórias, especialmente por longos períodos de tempo, estruturas e informações complexas. Isto conduz a um dos mais fortes direcionadores na construção de software: a Minimização da Complexidade. A necessidade de se reduzir a complexidade é aplicada em todos os aspectos da construção de software, sendo particularmente crítica para o processo de verificação e teste da construção de software. Na construção do software, a redução da complexidade é obtida através da ênfase na criação de código simples e legível. A minimização da complexidade é realizada através do uso de padrões e através de várias técnicas específicas. 1.2. Antecipação de Mudanças Muitos softwares mudam com o tempo e a antecipação de mudanças direciona muitos aspectos da construção de software. Software é inevitavelmente parte das mudanças do ambiente externo e mudanças no ambiente externo afetam o software de diversas maneiras. 1.3. Construção para Verificação Construção para verificação significa a construção de software no qual as falhas possam ser descobertas com facilidade pelos engenheiros de software enquanto escrevendo o software, tanto quando durante os testes independentes e atividades operacionais. Técnicas específicas que suportam a construção para verificação incluem as seguintes: padrões de codificação para suportar revisões de GERENCIANDO GERENCIANDO A CONSTRUÇÃOA CONSTRUÇÃO •• MODELOS DE CONSTRUÇÃOMODELOS DE CONSTRUÇÃO •• PLANEJAMENTO DA CONSTRUÇÃOPLANEJAMENTO DA CONSTRUÇÃO •• MEDIÇÃO DA CONSTRUÇÃOMEDIÇÃO DA CONSTRUÇÃO •• PROJETO DA CONSTRUÇÃOPROJETO DA CONSTRUÇÃO •• LINGUAGENS DA CONSTRUÇÃOLINGUAGENS DA CONSTRUÇÃO •• CODIFICAÇÃOCODIFICAÇÃO •• TESTE DA CONSTRUÇÃOTESTE DA CONSTRUÇÃO •• REUSOREUSO •• QUALIDADE DA CONSTRUÇÃOQUALIDADE DA CONSTRUÇÃO •• INTEGRAÇÃOINTEGRAÇÃO •• MINIMIZAÇÃO DA COMPLEXIDADEMINIMIZAÇÃO DA COMPLEXIDADE •• ANTECIPAÇÃO DE MUDANÇASANTECIPAÇÃO DE MUDANÇAS •• CONSTRUÇÃO PARA VERIFICAÇÃOCONSTRUÇÃO PARA VERIFICAÇÃO •• PADRÕES DE CONSTRUÇÃOPADRÕES DE CONSTRUÇÃO FUNDAMENTOS DA CONSTRUÇÃOFUNDAMENTOS DA CONSTRUÇÃO DE SOFTWAREDE SOFTWARE CONSIDERAÇÕESCONSIDERAÇÕES PRÁTICASPRÁTICAS código, teste de unidade, organização do código para suportar testes automáticos e restrições no uso de estruturas de linguagem complexas ou difíceis de serem entendidas, dentre outras. 1.4. Padrões de Construção Padrões que afetam diretamente os problemas de construção são: • Linguagens de programação (ex: padrões para linguagem de programação como Java e C++) • Métodos de Comunicação (ex: padrões para formatos e conteúdos padrões para formatos de documentação e conteúdos) • Plataformas (ex: padrões de interface de programação para chamadas de sistema operacional) • Ferramentas (ex: padrões diagramáticos para notações como UML (Unified Modeling Language)) Uso de padrões externos. A construção depende do uso de padrões de construção externos, linguagens, ferramentas de construção, interfaces técnicas e interações entre a construção de software e outras áreas de conhecimento. Padrões vêm de numerosas fontes, incluindo especificação de interface de hardware e software, tais como Object Management Group (OMG) e organizações internacionais, tais como IEEE ou ISO. Uso de padrões internos. Padrões podem ser criados para toda a organização (padrões corporativos) ou padrões para uso num projeto específico. Estes padrões suportam a coordenação de atividades de grupo, minimização da complexidade, antecipação de mudanças e construção para verificação. 2. Gerenciando a Construção 2.1. Modelos de Construção Vários modelos foram criados para desenvolver software, alguns do quais enfatizam mais a construção de software que outros. Alguns modelos são mais lineares, do ponto de vista da construção, tais como o modelo de ciclo de vida em cascata ou de estágios. Estes modelos tratam a construção como uma atividade que ocorre somente depois de significativo trabalho de requisito ter sido realizado – incluindo o trabalho de requisitos detalhados, trabalho de projeto extensivo e planejamento detalhado. Os enfoques mais lineares tendem a enfatizar as atividades que precedem a Construção (requisitos e projeto), e tendem a criar uma mais distinta separação entre as atividades. Nestes modelos, a principal ênfase da construção reside na codificação. Outros modelos sãomais iterativos, tais como a prototipação evolutiva, a extreme programming e SCRUM. Estes enfoques tendem a tratar a construção como uma atividade que ocorre concorrentemente com outras atividades do desenvolvimento de software, incluindo requisitos, projeto e planejamento ou sobrepondo a elas. Estes enfoques tendem a fazer um mix entre as atividades de projeto, codificação e teste, e frequentemente tratam a combinação de atividades como construção. Consequentemente, o que é considerado construção, depende, de certa forma, do modelo de ciclo de vida utilizado. 2.2. Planejando a Construção A escolha do método de construção é um aspecto chave no planejamento das atividades de construção. A escolha do método de construção afeta a ordem em que as atividades serão feitas e o grau para os quais são esperados que sejam realizadas as atividades antes do trabalho de construção começar. O enfoque da construção afeta a habilidade do projeto para a redução da complexidade, antecipar mudanças e construir para verificação. Estes objetivos podem também ser aplicados em processo, requisito e projeto - mas eles também são influenciados pela escolha do método de construção. O Planejamento da Construção também define a ordem em que os componentes serão criados e integrados, o processo de gerenciamento da qualidade do software, a alocação de tarefas para um específico engenheiro de software e outras tarefas, de acordo com o método escolhido. 2.3. Medindo a Construção Várias atividades e artefatos da construção podem ser medidos, incluindo o código desenvolvido, o código modificado, o código reusado, o código destruído, a complexidade do código, estatísticas de inspeção de código, correção de faltas, taxa de faltas encontradas, de esforço e de escalonamento. Estas medidas podem ser úteis para o propósito de gerenciamento da construção, assegurando qualidade durante a construção, melhorando o processo de construção, tanto quanto por outras razões. 3. Considerações Práticas A construção é uma atividade em que o software tem que apresentar as arbitrárias e caóticas restrições do mundo real, e fazer exatamente assim. Pela proximidade com restrições do mundo real, a construção é mais direcionada por considerações práticas que as outras Áreas de Conhecimento, e na Engenharia de Software a área Construção é talvez a mais manual. 3.1. Projeto da Construção Alguns projetos alocam mais atividade de projeto para construção; outros mais explicitamente para a fase de projeto. Independente da exata alocação, alguns trabalhos de projeto detalhado poderão ocorrer no nível de construção e este trabalho tende a ser direcionado pelas restrições impostas pelos problemas do mundo real que estão sendo endereçados pelo software. Exatamente como trabalhadores de construção construindo uma estrutura física devem fazer adaptações de pequena escala em falhas não antecipadamente observadas nos planos de construção, os trabalhadores de construção de software devem fazer modificações em menor ou maior escala, adicionando detalhes do projeto de software durante a construção. 3.2. Linguagens de Construção As linguagens de construção incluem todas as formas de comunicação pelas quais o homem pode especificar a solução de um problema executável para um computador. O tipo mais simples de linguagem de construção é a linguagem de configuração, na qual o engenheiro de software escolhe um limitado conjunto de opções predefinidas para criar uma nova ou customizada instalação de software. Os arquivos de configuração baseados em texto utilizados nos Sistemas Operacionais Windows e Unix são exemplos disso. Linguagens de Programação são os mais flexíveis tipos de linguagem de construção. Elas também contêm um mínimo de informação sobre a área específica da aplicação e do processo de desenvolvimento, e assim, requerem mais treinamento e skill para usá-las eficientemente. 3.3. Codificação As seguintes considerações são aplicadas para a atividade de codificação da Construção de Software: • Técnicas para a criação de código fonte entendível, incluindo nomes e layout de código fonte • Uso de classes, tipos enumerados, variáveis, constantes e outras entidades similares. • Uso de estruturas de controle • Manuseio de condições de erro – erros planejados e exceções (por exemplo, entrada de dados errados) • Prevenção de rupturas de segurança em nível de código (por exemplo, sobrecarga de buffer ou excessos no índice de array) • Uso de recursos via uso de mecanismos de exclusão e disciplina no acesso serializado de recursos reusáveis (incluindo threads ou database locks) • Organização do código fonte (em comandos, rotinas classes, pacotes ou outras estruturas) • Documentação de Código • Sintonização de Código 3.4. Testando a Construção A construção envolve duas formas de teste, que são frequentemente realizadas pelo engenheiro de software que escreveu o código: • Teste de Unidade • Teste de Integração O propósito do teste de construção é reduzir o gap entre o tempo em que as faltas foram inseridas no código e o tempo em que as faltas foram detectadas. Em outros casos, os casos de teste podem ser criados antes do código ser escrito. Testar a construção tipicamente envolve um subconjunto de tipos de teste, que serão descritos na área de Conhecimento Teste de Software. Neste momento, testar a construção de software não inclui tipicamente teste de sistemas, teste alfa, teste beta, teste de stress, teste de configuração, teste de usabilidade ou outros mais especializados tipos de teste. 3.5. Reuso Como estabelecido na introdução de (IEEE1517-99): “Implementar reuso de software engloba mais do que criar e usar biblioteca de recursos. Requer a formalização de práticas de reuso pela integração de processos e atividades de reuso dentro do ciclo de vida do software”. Portanto, reuso é importante o suficiente na Construção de Software para ser incluído aqui como um tópico. As tarefas relacionadas com o reuso na construção de software durante a codificação e testes são: • Seleção das unidades reusáveis, banco de dados, procedimentos de teste ou dados de teste. • Avaliação de código ou reusabilidade de teste • Registro de informações de reuso em novos códigos, procedimentos de teste ou dados de teste. 3.6. Qualidade da Construção Existem várias técnicas para assegurar a qualidade do código enquanto ele é construído. As técnicas primárias utilizadas para construção, incluem: • Teste de Unidade e Teste de Integração • Desenvolvimento Teste Antes (Test-First) • Passo-a-passo de código • Uso de assertivas • Depuração • Revisões técnicas • Análise Estática A técnica específica ou as técnicas selecionadas dependem da natureza do software que estar sendo construído, ou do skill do engenheiro de software que está realizando a construção. As atividades de qualidade da construção são diferenciadas de outras atividades de qualidade por seu foco. As atividades de qualidade da construção focam em código e nos artefatos que são relacionados ao código: projetos de pequena escala — em oposição a outros artefatos que são menos diretamente conectados ao código, tais como, requisitos, projetos de alto nível e planos. 3.7. Integração A principal atividade durante a construção é a integração de rotinas, classes, componentes e subsistemas construídos separadamente. Adicionalmente, um determinado software pode necessitar ser integrado com outros softwares ou hardwares. As preocupações relacionadas com a integração da construção incluem o planejamento da seqüência em que os componentes serão integrados, criando plataformas para suportar versões intermediárias do software, determinando o grau de teste e qualidade do trabalho realizado em componentes antes deles serem integrados, e determinando pontos no projeto em que as versões intermediárias do software serão testadas.
Compartilhar