You are on page 1of 5

O Swebok (Software Engineering Body of Knowledge) uma iniciativa da IEEE Computer Society que tem o propsito de criar um consenso

o sobre as reas de conhecimento da engenharia de software e seu escopo. Comeou como uma colaborao entre IEEE CS, ACM e a Universit du Qubec Montral e contou com a participao internacional da indstria, sociedades de profissionais, academia e autores. Os objetivos do Swebok so: y y y Oferecer uma viso consistente da engenharia de software no mbito mundial Deixar claros os limites de planejamento de software com respeito a outras disciplinas como cincia da computao, gerncia de projetos, matemtica, entre outros Prover uma base para desenvolvimento curricular e material de licena individual

O Swebok est dividido em partes para facilitar o entendimento e possibilitar a especializao. Cada parte chamada de rea de Conhecimento. As reas de conhecimento definidas so: y y y y y y y y y y Requisitos de Software Projeto de Software Implementao de Software Testes de Software Manuteno de Software Gerncia de Configurao Gerncia de Engenharia de Software Processo de Engenharia de Software Mtodos e Ferramentas de Engenharia de Software Qualidade de Software

O SWEBOK um guia de uso e aplicao das melhores prticas de Engenharia de Software, informado, sensato e razovel. Ele foi desenvolvido com conhecimentos recolhidos no perodo de 4 dcadas e revisado por inmeros profissionais de diversos pases envolvidos com a Engenharia de Software. Seu principal objetivo foi estabelecer um conjunto apropriado de critrios e normas para a prtica profissional da Engenharia de Software. Neste guia, a Engenharia de Software foi dividida em 10 reas de conhecimentos, tambm conhecidas por KAs (Knowledge Areas), que sero descritas na seqncia (SWEBOK, 2004). 1 Requisitos de Software Os requisitos expressam a necessidade e restries colocadas sobre o produto de software que contribuem para a soluo de algum problema do mundo real. Esta re a envolve elicitao, anlise, especificao e validao dos requisitos de software (SWEBOK, 2004). Segundo Breitman e Sayo (2005), os requisitos de software so classificados em: Requisitos funcionais: correspondem a funcionalidade do software e o que o sistema deve fazer; Requisitos no funcionais: expressam restries e caractersticas que o software deve atender ou ter; Requisitos inversos: definem estados e situaes que nunca podem acontecer. Pressman (2002) cita que se voc no analisa, alt mente provvel que construa uma a soluo de software muito elegante que resolve o problema errado. Esta atitude pode resultar em perda de tempo e dinheiro, pessoas frustradas e clientes

reas de Conhecimento segundo o SWEBOK

insatisfeitos. 2 Design de Software Segundo o SWEBOK (2004), esta rea envolve definio da arquitetura, componentes, interfaces e outras caractersticas de um sistema ou componente. Visualizado como um processo, esta rea uma etapa do ciclo de vida da Engenharia de Software, onde os requisitos so analisados para produzir uma descrio da arquitetura do software. Para Pressman (2002), design de software " um processo iterativo atravs do qual os requisitos so traduzidos num documento para construo do software." 3 Construo de Software Refere-se a implementao do software, verificao, testes de unidade, testes de integrao e debugging. Esta rea est envolvida com todas as reas de conhecimento, porm, est fortemente ligada s reas de Design e Teste de Software, pois o processo de construo abrange significativamente estas duas reas (SWEBOK, 2004). As reas correlatas construo de software, segundo o SWEBOK (2004) so: Fundamentos: minimizar a complexidade, antecipar mudanas, construir para verificar e padres de construo; Gerenciamento da construo: modelos, planejamento e mtricas; Consideraes prticas: design, linguagens, codificao, testes, reutilizao, qualidade e integrao. importante que as funcionalidades do software sejam testadas durante todo o processo de desenvolvimento, no deixando apenas para a etapa de testes. 4 Teste de Software Teste de software uma atividade executada para avaliar a qualidade do produto, buscando identificar os defeitos e problemas existentes (SWEBOK, 2004). Para Pressman (2002), "teste de software um elemento crtico da garantia de qualidade de software e representa a reviso final da especificao, projeto e gerao de cdigo." Segundo Coelho (2005) os tipos de teste so: Teste funcional: verifica as regras de negcio, condies vlidas e invlidas; Teste de recuperao de falhas: as falhas so provocadas diversas vezes a fim de verificar a eficincia da recuperao; Teste de desempenho: verifica o tempo de resposta e processamento para configuraes diferentes; Teste de segurana e controle de acesso: verifica a funcionalidade dos mecanismos de proteo de acesso e de dados; Teste de interfaces com o usurio: verifica navegao, consistncia e padres; Teste de volume: verifica at aonde o software suporta. A etapa de teste de software relevante para que os erros possam ser encontrados e corrigidos antes que o software seja entregue ao cliente. 5 Manuteno de Software Esta rea de conhecimento definida como a totalidade das atividades requeridas para fornecer suporte custo-efetivo a um sistema de software, que pode ocorrer antes ou depois da entrega. Antes da entrega do software so realizadas atividades de planejamento e depois, modificaes so feitas com o objetivo de corrigir falhas, melhorar o desempenho ou adapt-las a um ambiente externo (SWEBOK, 2004). Os tipos de modificaes durante a fase de manuteno, segundo Pressman (2002) so: Manuteno corretiva: modifica o software para corrigir erros; Manuteno adaptativa: altera o software para acomodar mudanas no seu ambient e externo; Manuteno perfectiva: aprimora o software (solicitaes do cliente); Manuteno preventiva (reengenharia): modifica o software a fim de torn-los mais fceis de serem corrigidos, adaptados e melhorados.

Em torno de 60% do esforo despendido por uma organizao de desenvolvimento referente manuteno de software. Este percentual continua crescendo medida que mais softwares so produzidos. Manuteno de software no s concertar erros. Apenas 20% do trabalho de manuteno referente correo de falhas e, os outros 80% refere-se adaptaes ao ambiente externo e a melhorias solicitadas pelos usurios (PRESSMAN, 2002). 6 Gerenciamento de Configurao de Software Conforme Cunha et al (2004), o GCS (Gerenciamento de Configurao de So ftware) um processo que prov recursos para a identificao, controle da evoluo e auditagem dos artefatos de software criados durante o desenvolvimento do projeto. De grosso modo, o controle de verses do software. A finalidade do GCS estabelecer e manter a integridade dos produtos de software durante todo seu ciclo de vida (SWEBOK, 2004): Identificar a configurao do software em um dado momento; Controlar sistematicamente as mudanas de configurao; Manter a integridade e a rastreabilidade da configurao ao longo do ciclo de vida do software; Controlar a integridade dos artefatos compostos, levando em conta cada um dos componentes do software; Registrar e controlar o estado do processo de alterao. Porm, sua aplicao em empresas de desenvolvimento de software complexa, e s vezes inviabilizada pelos gastos. Uma forma de contornar isso desenvolver uma metodologia de gerenciamento de configurao que leve em conta somente aspectos relevantes para a realidade da empresa, descartando aqueles que so menos utilizados. 7 Gerenciamento de Engenharia de Software Segundo SWEBOK (2004), Gerenciamento de Engenharia pode-se definir como a aplicao das atividades de gerenciamento: planejamento, coordenao, medio, monitorao, controle e documentao, garantindo que o desenvolvimento e a gerncia de software sejam sistemticos, disciplinados e qualificados. O Gerenciamento de Engenharia tratado sob dois aspectos: Engenharia de Processo: refere-se s atividades empreendidas para gerao de polticas, padres e objetivos organizacionais consistentes; Engenharia de Mensurao: refere-se atribuio de valores e rtulos s atividades referentes Engenharia de Software. O gerenciamento de processo e a mensurao so importantes em todas as rea de conhecimento, mas o Gerenciamento de Engenharia trata esses aspectos de forma mais direta. Um grande aliado desta rea de conhecimento o Gerenciamento de Projetos, que pode ser visto a seguir. 7.1 Gerenciamento de Projetos de Software Projeto um empreendimento temporrio, de elaborao progressiva e com o objetivo de criar um produto ou servio nico (PMBOK, 2004). Temporrio: o projeto possui incio e fim bem definidos e pode ser de curta ou longa durao. O projeto chega ao fim quando os seus objetivos so atingidos; Elaborao progressiva: o desenvolvimento ocorre em etapas e continua por incrementos; Produto ou servio nico: cada projeto exclusivo. Segundo o PMBOK (2004), o gerenciamento de projetos " a aplicao de conheciment , o habilidades, ferramentas e tcnicas s atividades do projeto a fim de atender aos seus requisitos". realizado atravs de cinco grupos de processos: iniciao, planejamento, execuo, monitoramento e controle, e encerramento. Para Pressman (2002), a gesto do projeto envolve o planejamento, a monitorao e

controle do pessoal, processo e eventos que ocorrem medida que o software evolui de um conceito preliminar para uma implementao operacional". O gerenciamento de projetos auxilia as organizaes a atenderem as necessidades de seus clientes, padronizando tarefas do dia a dia e reduzindo o nmero de tarefas, que muitas vezes so esquecidas (PMI-SC, 2006). Por fim, gerenciar projetos manter o equilbrio entre escopo, qualidade, custos, recursos e tempo (PMBOK, 2004). papel do gerente de projetos avaliar os riscos e impactos associados a qualquer mudana em um desses fatores. 8 Engenharia de Processo de Software A Engenharia de Processo pode ser interpretada como uma viso geral sobre questes relacionadas ao processo de Engenharia de Software, principalmente as atividades relacionadas definio, implementao, avaliao, mensurao, gerenciamento, mudanas e melhorias do processo de ciclo de vida de software (SWEBOK, 2004). O objetivo da Engenharia de Processo de Software implementar processos novos e melhores, seja no escopo individual, de projeto ou organizacional. 9 Ferramentas e Mtodos de Software Ferramentas de desenvolvimento de software so ferramentas criadas para auxiliar no ciclo de vida do software. Essas ferramentas normalmente automatizam algumas atividades do processo de desenvolvimento, fazendo com que o analista concentre nas -se atividades que exigem maior trabalho intelectual (SWEBOK, 2004). Mtodos de Engenharia de Software impe estrutura sobre a atividade de desenvolvimento e manuteno de software com o objetivo de torn-la sistemtica e mais propensa ao sucesso (SWEBOK, 2004). Esta rea de conhecimento tem como objetivo pesquisar ferramentas e mtodos que aumentem a produtvidade dos desenvolvedores enquanto i reduzem a ocorrncia de falhas no desenvolvimento (FERNANDES, 2003). 10 Qualidade de Software A qualidade de software no pode ser entendida como perfeio. Qualidade um conceito multidimensional, realizado por um conjunto de atributos, representando vrios aspectos relacionados ao produto: desenvolvimento, manuteno e uso. Qualidade algo factvel, relativo, dinmico e evolutivo, adequando-se ao nvel dos objetivos a serem atingidos (SIMO, 2002). Um dos principais objetivos da Engenharia de Software melhorar a qualidade dos produtos de software, ela visa estabelecer mtodos e tecnologias para construir produtos de software de qualidade dentro dos limites de tempo e recursos disponveis. A qualidade de software est diretamente ligada com a qualidade do processo atravs do qual o software desenvolvido, portanto, para se ter qualidade em um produto de software necessrio ter um processo de desenvolvimento bem definido, que deve ser documentado e acompanhado (SWEBOK, 2004). A avaliao da qualidade de produtos de software normalmente feita atravs de modelos de avaliao de qualidade. Esses modelos descrevem e organizam as propriedades de qualidade do produto em avaliao. Os modelos de avaliao mais aceitos e usados no mercado so: CMMI (Capability Maturity Model Integration), proposto pelo CMM (Capability Maturity Model); Norma ISO/IEC 9126, proposta pela ISO (International Organization for Standardization). As organizaes desenvolvedoras desses modelos de qualidade fornecem selos de qualidade para as empresas que se submetem avaliaes e estiverem dentro dos padres propostos. Esses selos so muito valorizados pelas empresas que compram software, e representam um diferencial competitivo no mercado. Por m, nem todas as empresas tm condies financeiras de bancar os custos de uma aquisio de um selo de qualidade, pois implantar um processo de qualidade em uma empresa envolve custos elevados. Contudo, possvel implantar boas prticas e desenvolver um p rocesso de desenvolvimento organizado adaptando modelos de desenvolvimento conhecidos,

despendendo menos recursos e provendo um mnimo desenvolvimento de software, a fim de se ter maior qualidade.

de

sistematizao

no