A modelagem é uma das principais atividades que levam à implementação de um bom software. Ela consiste na construção de modelos que expliquem as características ou o comportamento de um sistema. Na construção do software os modelos podem ser usados na identificação das características e do comportamento desejados do sistema, assim como ajuda a compreensão do funcionamento e a arquitetura do software.
A modelagem de software se utiliza de modelos para representar um determinado sistema. Um modelo é uma simplificação da realidade, criado para facilitar o entendimento de sistemas complexos. Estes modelos podem abranger visões abstratas como o RichPicture, assim como visões mais técnicas como os Modelos de Argumentação.
Cenários descrevem situações levando em consideração aspectos de usabilidade, permitindo definir o problema unificando os requisitos e a ação dos usuários, provendo também uma base para rastreabilidade. O uso de cenários para identificar um problema pode também representar um meio de comunicação entre os envolvidos se tornando uma importante fonte de informação onde os stakeholders podem se identificar.
Um cenário consiste na descrição em linguagem natural do comportamento de uma aplicação dadas determinadas interações com os envolvidos, tempo cronológico e contexto, baseando-se nos léxicos definidos. Para se definir um cenário é necessário utilizar como base um conjunto de léxicos previamente definidos que representem os termos que constituem o universo da aplicação.
Léxicos consistem em símbolos compostos por palavras ou frases que representem termos particulares de um determinado domínio, podendo ser de quatro tipos: objeto, sujeito, verbo e estado. Têm como objetivo expressar a linguagem do universo de um problema sem levar em consideração o problema, e sim o seu contexto.
Caso de uso é a representação de uma unidade funcional que descreve um conjunto de ações que devem ser exercidas pela aplicação, dada determinada ação de um ou mais atores do sistema, que por sua vez recebem o retorno destas ações. É muito utilizado na representação de requisitos funcionais de aplicações. Diagramas de caso de uso são representações gráficas dos casos de uso e dos atores com os quais interagem.
O desenvolvimento ágil de software descreve um conjunto de valores e princípios para o desenvolvimento de software sob o qual os requisitos e as soluções evoluem através do esforço colaborativo de equipes inter-funcionais auto-organizadas. Defende o planejamento adaptativo, desenvolvimento evolutivo, entrega adiantada, melhoria contínua e incentiva a resposta rápida e flexível à mudança. [3]
O framework i* propõe uma abordagem orientada por agente para a engenharia de requisitos centrada nas características intencionais do agente. Os agentes atribuem propriedades intencionais (como metas) entre si e razão sobre relações estratégicas. As dependências entre os agentes dão origem a oportunidades e vulnerabilidades.
A maioria das abordagens convencionais para o design do sistema são orientadas por requisitos funcionais. Os desenvolvedores focam seus esforços principalmente em alcançar a funcionalidade desejada do sistema. Embora as decisões sobre como alcançar as funcionalidades sejam feitas ao longo do caminho, geralmente com requisitos não funcionais (como custo e desempenho), essas considerações podem não ser sistemáticas e muitas vezes não podem ser documentadas.
O NFR Framework usa requisitos não funcionais, como segurança, design, desempenho e custo para gerar o processo de design geral. O Framework visa colocar os requisitos não funcionais em primeiro lugar na mente do desenvolvedor.
Material utilizado como referência para este módulo da disciplina.
[1] SAMPAIO. Júlio. Livro Vivo : Engenharia de Requisitos, Engenharia de Requisitos, uma area de conhecimento fundamental para a construção de software. Disponível Aqui. Acesso em: 26 de setembro de 2017.
[2] SAMPAIO. Júlio. Scenario inspections. Requirements Eng (2005). Disponível Aqui. Acesso em: 26 de setembro de 2017.
[3] WIKIPEDIA. Agile software development. Disponível Aqui. Acesso em: 1 de outubro de 2017.
[4] Chung, L., Nixon, B.A., Yu, E. and Mylopoulos, J., 2000. The NFR framework in action. Non-Functional Requirements in software engineering (pp. 15-45). Springer US.
[5] CS Toronto. i* an agent- and goal-oriented modelling framework. Disponível Aqui. Acesso em: 1 de outubro de 2017.