Engenharia de Software

    A Engenharia de Software foi a disciplina de extrema importância no meu período de estágio na empresa. Logo abaixo descrevo os tópicos da área que foram maior utilidade.

  1. Introdução

    Devido à alta competitividade do mercado, as empresas passaram a investir em TI como meio de diminuição de custos. Mas o maior investimento no desenvolvimento de programas na década de 90 resultou em percentuais muito significativos de projetos de software abandonados ou que não atendiam às necessidades do cliente. Isso foi denominado de 'crise do software'.

    Esse problema se deve principalmente a falta de uso de uma metodologia que permitisse com maior chance de sucesso implementar sistemas funcionais e adequados ao cliente. Muitas vezes o conjunto de requisitos levantados para implementação do sistema não é bem compreendido, tornando-o ineficaz para seus usuários, e sua correção pode ser muito difícil e custosa. Além disso, a dinâmica do mercado exige que um bom sistema tenha novas características, tais como extensibilidade e escalabilidade, de tal modo a reduzir o custo para se adequar a novos requisitos.

    A Engenharia de Software é uma disciplina relativamente recente com o objetivo de sanar problemas como estes e prover um produto com boa relação custo-benefício, e que formaliza as metodologias para o desenvolvimento de sistemas de software.

  2. Processo de Software

    Um processo de software é um conjunto de atividades e resultados associados que levam a produção de um produto de software. Embora existam muitos processos de software, há atividades fundamentais comuns em todos eles:

    Embora não sejam descrições definitivas de processos de software, temos alguns modelos genéricos que podem ser utilizados para explicar diferentes abordagens do desenvolvimento de software:

    Vimos que os modelos genéricos possuem várias vantagens e desvantagens, por isso, para a maioria dos grandes sistemas, existe a necessidade de utilizar diferentes abordagens para diferentes partes do sistema. Além disso, há também a necessidade de gerenciar o processo de iteração, em que partes do processo são repetidas, à medida que os requisitos do sistema evoluem. Para tanto temos alguns modelos híbridos bastante utilizados:

  3. Engenharia de Requisitos

    Os problemas que os engenheiros de software têm para solucionar são, muitas vezes, imensamente complexos. É difícil estabelecer com exatidão o que o sistema deve fazer. O processo de descobrir, analisar, documentar e verificar a funções e restrições de um sistema é chamado de engenharia de requisitos. Por sua vez, estas descrições são os requisitos e podem ser classificados como:

    No processo de engenharia de requisitos temos um estágio de extrema importância, o de levantamento e análise de requisitos. Este consiste na interação com os stakeholders* para descobrir informações sobre o domínio da aplicação, serviços que o sistema deve prover etc...O processo abrange as seguintes atividades:
    *O termo stakeholder é utilizado para se referir a qualquer pessoa que terá alguma influência direta ou indireta sobre os requisitos do sistema.

    É importante notar que fatores políticos podem influenciar os requisitos do sistema, e os requisitos e suas prioridades podem mudar ao longo de todo desenvolvimento, pois o ambiente econômico e de negócios no qual a análise de requisitos ocorre é dinâmico.

    Temos algumas técnicas muito utilizadas para o levantamento e análise de requisitos: