O desenvolvimento de software e um trabalho complexo. Esta complexidade e evidenciada nas dificuldades enfrentadas pelos projetos de software. Para contornar estas dificuldades, as pesquisas em engenharia de software geraram, ao longo dos anos, varias tecnicas e metodologias de desenvolvimento visando tornar este trabalho mais simples. Evolucoes partiram da programacao estruturada, passando pela programacao orientada a objetos, dirigida a componentes e, enfim, orientada a servicos. Estas evolucoes tiveram, em comum, o objetivo de simplificar, reutilizar e utilizar-se de abstracoes para tornar a unidade fundamental do software mais proxima da linguagem natural.Niveis de AbstracaoSegundo Grady Booch, os fundamentos de engenharia como abstracoes e separacao de interesses sao sempre validos. E ha oportunidades reais para elevar o nivel de abstracao novamente. SOA introduz dois niveis de abstracao: Servicos de Negocio e Processos de Negocio Corporativos. Servicos de Negocio Corporativos representam as capacidades de TI que estao alinhadas com as funcoes de negocio da empresa. Processos de Negocio definem o funcionamento geral do negocio da empresa, normalmente realizando orquestramento de Servicos de Negocio. De acordo com o Gartner, SOA deslocara o foco do desenvolvimento das funcoes de software para funcoes de negocio, transformando software instalado de um inibidor a facilitador de mudancas rapidas no negocio. SOA tornar-se-a o framework dominante para criar e entregar software, movendo o valor do software empacotado para servicos de subscricao, e de suites monoliticas para aplicacoes compostas. A forma de pensar (abstrair) o software e novamente mudada.Levantamento de RequisitosDentre as dificuldades do desenvolvimento de software, o levantamento de requisitos e frequentemente apontado como um dos viloes responsaveis pelas falhas nos projetos de TI. Sao frequentes os projetos que estouram o budget e/ou o prazo devido a requisitos incorretos, nao levantados ou que sofreram mudancas. Segundo o Chaos Report, os tres principais fatores que contribuem para dificuldades em projeto de software representam mais de 36% do total e estao relacionados a engenharia de requisitos. A tabela abaixo apresenta o resultado do Chaos Report para os fatores de dificuldades em projetos de TI.Fatores de Dificuldade em Projetos de TI. [Fonte: Chaos Report]Apesar da "defasagem" deste relatorio (data de 1994), o que se percebe e que as dificuldades relacionadas a entender a diferenca entre o que o usuario quer e o que ele precisa ainda existem. Por outro lado, muitos esforcos foram e continuam sendo empregados para melhorar esta questao. O avanco da Engenharia de Requisitos, aumento de maturidade no uso de processos incrementais e uma maior "aceitacao" quanto a natureza mutante dos requisitos tem contribuido.Com a disseminacao de SOA, o foco em desenvolvimento de servicos que apoiem o negocio faz ressaltar a importancia do levantamento de requisitos. O uso de novas tecnologias e metodologias por si so nao eliminarao os problemas. Faz-se necessario rever alguns artefatos, redefinir papeis e a interacao entre eles, assim como definir ou redefinir processos.SOMARecentemente, algumas metodologias tem ganhado espaco e amadurecido. E o caso da SOMA (Service-Oriented Modeling and Architecture) que aborda tecnicas para identificar, especificar e realizar Servicos.Metodo SOMAIdentificacaoConsiste da combinacao de tecnicas top-down, bottom-up e middle-out, para elencar Servicos Candidatos.Na visao top-down, realiza-se a decomposicao