Escolar Documentos
Profissional Documentos
Cultura Documentos
Esta Unidade está organizada em quatro seções que abordam, na sequência, os seguintes
conteúdos:
Histórico.
Conceitos e importância.
Princípio de desenvolvimento de software.
Áreas de conhecimento.
Bons estudos!
Objetivos
Desafio
Vamos visitar o Portal da IEEE Computer Society?
Acessando o Portal da IEEE Computer Society você vai poder navegar e ter acesso a
diferentes tipos de conteúdos da área de tecnologia da informação e comunicação, nos
âmbitos profissionais, educativos e de pesquisa e desenvolvimento. Nesse espaço, você
também pode fazer o download da versão mais atual do Guide to the Software
Engineering Body of Knowledge (SWEBOK Guide).
Fonte: Computer.org, 2020.
O procedimento para download do SWEBOK é muito simples. Você precisa apenas
fazer um rápido registro, informando seu nome, propósito de uso do SWEBOK e o e-
mail para o qual deverá ser encaminhado o acesso ao arquivo .pdf do SWEBOK.
Conteúdo
Histórico
Ainda nos anos de 1970, com a tecnologia em geral se constituindo e se tornando cada
vez mais comercial, os sistemas começaram a ter estruturas mais complexas e, em
paralelo, se tornaram também mais complexos os problemas decorrentes da falta de
documentação, de técnicas, de teste e de rastreabilidade.
A expressão crise do software foi utilizada pela Association for Computing
Machinery (1972), que foi a primeira associação dedicada à educação e ciência em
tecnologia. Como parâmetros para o estabelecimento da expressão crise do software,
a Association for Computing Machinery elencou (no âmbito de desenvolvimento de
software): o não cumprimento dos prazos; os orçamentos realizados que ultrapassavam
os orçamentos previstos; requisitos de software ausentes ou em não conformidade;
códigos confusos e de difícil manutenção; e consequente baixa qualidade de software.
Conceitos
Software é o conjunto de blocos e componentes lógicos que processam dados por meio
de sistemas e computadores. Trata-se de um conjunto de instruções (rotinas) que
controlam o funcionamento de computadores e também as funcionalidades dos
sistemas. Ou seja, de forma sumária, software é a parte lógica do computador,
incluindo, basicamente, os sistemas operacionais e os demais programas ou sistemas
neles envolvidos.
E o que seria engenharia? Engenharia pode ser definida como uma área que reúne
regras, métodos, técnicas e ferramentas para a construção de algo, por meio do
conhecimento científico, técnico ou empírico.
Figura 5 - IEEE
1. Formalidade.
2. Ausência de conflitos de interesse.
3. Modularização.
4. Abstração.
5. Mudanças preditivas.
6. Requisitos.
7. Generalidade.
8. Incremento.
Por outro lado, Hooker (1999) já aspirava alguns princípios para a engenharia de
software. À ocasião, ele levantou sete princípios e os considerou como gerais porque
percebeu que poderiam ser adotados em todas as camadas da engenharia de software,
individualmente, ou no conjunto de camadas como um todo. Hooker (1999) elencou os
sete princípios como:
1. A razão pela qual tudo existe (the reason it all exists): o software a ser
desenvolvido tem que ter um propósito específico para o cliente. Ou seja, o
cliente é o detentor de todos os requisitos funcionais e não funcionais e cabe a
ele tal definição. Para a engenharia de software cabe a análise de aplicabilidade
técnica e a transposição disso tudo ao contexto das tecnologias da informação e
comunicação, avaliando também sobre o que realmente é necessário ao negócio
do cliente como um todo, sobre o que é supérfluo e sobre o que realmente agrega
valor ao sistema de informações, seguindo as regras de negócio estabelecidas
pelo cliente. Assim, é importante que o engenheiro de software leve o seu cliente
a se questionar sobre a relevância das funcionalidades que pede implementação.
Caso exista dúvida, ou a resposta seja de que não é relevante, é melhor não
implementar e dedicar os esforços de desenvolvimento para os requisitos
essenciais. Justifique esse valor, pois esse é o princípio base para todos os
demais.
2. Mantenha as coisas simples (keep it simple): Hooker (1999) considera a
importância de se manter a simplicidade dos processos sem inibir sua
complexidade. Você sabe de onde veio a frase “menos é mais”? Ludwig Mies
van der Rohe foi um renomado arquiteto alemão, nacionalizado norte-
americano, que trouxe sofisticação aos traços da arquitetura com adoção de
traços geométricos claros, limpos, simples e sofisticados. Ele trouxe frases
famosas como “less is more” (menos é mais) para referir-se à questão de que a
beleza está nas coisas simples; e “God is in the details” (Deus está nos detalhes),
para dizer que, não é preciso exagerar nas obras, pois basta o necessário
(SCHULZE, 1985). Esse preâmbulo é importante para que tenhamos em mente
que, os melhores sistemas de informação são aqueles que entregam exatamente o
que o cliente quer, sem burocracia, de forma integrada e correspondente ao
parque tecnológico de sua organização.
3. Mantenha o estilo/visão (maintain the vision): o software deve seguir a
identidade conceitual de seu requisitante, seja uma pessoa física ou uma pessoa
jurídica. Deve-se primar também pela compatibilidade de seus recursos aos
recursos já existentes nos demais serviços de tecnologia da informação e
comunicação da empresa. É preciso, portanto, manter a arquitetura da
informação coerente. Essa arquitetura de software que traz um sistema intensivo
é também descrita pelo IEEE, assim como há padronização pela ISO/IEC
42010:2007, o qual traz normas e padronizações para Sistemas e Engenharia de
Software - Prática recomendada para descrição de arquitetura de sistemas
intensivos de software (ISO/IEC/IEEE 42010:2011).
4. O que você produz, outros consumirão (what you produce, others will
consume): ao se desenvolver um determinado software, é preciso ter em mente
que outras pessoas o utilizarão e que isto se dará ao longo de um período, ou
seja, dentro do ciclo de vida do software. Então, deve-se primar por códigos
limpos, reutilizáveis, de fácil manutenção, atualização e escalabilidade. Pense
em “escrever códigos” dentro de diferentes “linguagens” de programação. Ou
seja, como uma escrita de um romance, uma obra literária, a escrita de códigos
também precisa ter lógica, coerência e clareza. Em todos os casos, é necessário
pensar em documentação.
5. Esteja aberto para o futuro (be open to the future): a tecnologia não para de
avançar. Então, todo desenvolvimento de software deve contemplar
possibilidades de portabilidade e de escalabilidade, bem como condições
arquitetônicas de integração, modulação e reuso. Por outro lado,
conforme Santos e Carvalho (2009, p.46), “com a acelerada mudança causada
pelas tecnologias da informação e comunicação (TICs), vários países do mundo
passam a estruturar normas para amenizar as desigualdades que as TICs podem
causar.” Observe que isso vale para todos os constructos sociais. Um exemplo
disso é o programa sociedade da informação:
6. Planeje com antecedência, com vistas ao reuso (plan ahead for reuse): O
planejamento dos sistemas de informação é essencial. É preciso rascunhar,
desenhar, modelar os sistemas de informação. Quanto maior for o tempo em
planejamento, menor será o esforço. A visão sistêmica sobre o produto de
software leva à compreensão de suas potencialidades e possibilidades de reuso,
integração. Assim, dentro de uma perspectiva preditiva, os(as) profissionais em
engenharia de software devem analisar custos, esforços, módulos, possibilidades
e capacidades que o software possa vir a ter. Isso contribui sobremaneira para
que os clientes possam prospectar avanços e melhorias tecnológicas, outras
possibilidades integrativas, avaliar o retorno sobre o investimento, bem como
sobre qual será o legado de sua tecnologia para sua instituição.
7. Pense (think): parece óbvio, mas este sétimo princípio é um dos mais
importantes. Analisar, refletir, experienciar, fazer testes, são ações que trazem
recompensas para os processos de desenvolvimento de software. Essas
recompensas podem ser figuradas como possibilidades de uso das tecnologias
mais apropriadas e também com tecnologias emergentes. Modelagem bem
pensada resulta em sistemas complexos e eficientes, orientados à modularização,
ao reuso, à integração e a um ciclo de vida estável.
Áreas de Conhecimento
O SWEBOK está em sua versão 3.0 SWEBOK Guide. Esse guia também tem
reconhecimento internacional pela ISO Technical Report 19759. O SWEBOK traz
novas ferramentas, métodos, tipos de software e boas práticas para o desenvolvimento
de software, desde a concepção da ideia de software até sua ambientação in loco,
considerando processos de métricas, estatísticas, volume entre outros elementos
inerentes ao planejamento de software. A Figura a seguir, por exemplo, é uma
adaptação do processo de definição inicial de objetivos, tal qual representado pelo
SWEBOK (BOURQUE; FAIRLEY, 2014).
O planejamento deve ser obrigatório tanto para clientes quanto para desenvolvedores.
No caso dos desenvolvedores de software, é preciso dividir os objetivos, de forma
especificada, em atividades e marcos (milestones) de modo a facilitar a previsibilidade e
a construção modular. A abordagem ganha-ganha significa que, nos aspectos iniciais da
negociação, é importante que todos tenham vantagens (tanto clientes, quanto
organizações de desenvolvimento de software). Isso gera parceria e fidelização.
1. Requisitos de software.
2. Desenho de software.
3. Construção de software.
4. Testes de software.
5. Manutenção de software.
6. Gestão de configuração de software.
7. Gestão de engenharia de software.
8. Processos de engenharia de software.
9. Ferramentas e métodos.
10. Qualidade de software.
11. Prática profissional de engenharia de software.
12. Economia na engenharia de software.
13. Fundamentos de computação.
14. Fundamentos de matemática.
15. Fundamentos de engenharia.
Fundamentalmente, as dez primeiras áreas de conhecimento referem-se às etapas de
linha de produção de software: (1) requisitos, (2) projeto, (3) construção, (4) testes, (5)
manutenção, (6) configuração, (7) gerenciamento, (8) processo, (9) ferramentas e
métodos, (10) qualidade. De forma geral, o objetivo é a promoção de uma visão
holística da engenharia de software (BOURQUE; FAIRLEY, 2014).
Finalizando a Unidade
Esperamos que você tenha apreendido, após a leitura desta Unidade, os aspectos
introdutórios relacionados à engenharia de software, no contexto da tecnologia da
informação, bem como os princípios envolvidos nas áreas e etapas de desenvolvimento
de softwares especialistas e generalistas.
Dica do Professor
Para saber um pouco mais sobre os aspectos introdutórios e outras curiosidades
relacionadas à engenharia de software, recomendamos a leitura do relatório técnico de
Lima et al. (2014), publicado em 2014, que traz possíveis ameaças à validade de
experimentos que envolvam prática ágil em metodologia de pair
programming (programação em pares). Você pode acessar essa obra buscando a
seguinte referência nas bases científico-acadêmicas:
LIMA, Vagner Carlos Marcolino; NETO, Adolfo Gustavo Serra Seca; EMER, Maria
Claudia Figueiredo Pereira. INVESTIGAÇÃO EXPERIMENTAL E PRÁTICAS
ÁGEIS: AMEAÇAS À VALIDADE DE EXPERIMENTOS ENVOLVENDO A
PRÁTICA ÁGIL PROGRAMAÇÃO EM PAR. Revista Eletrônica De Sistemas de
Informação, v. 13, n. 1, p. 1, 2014.
Saiba Mais
Você sabia que a carreira do(a) engenheiro(a) de software é regulada por um conselho
profissional?
É isso mesmo. O registro profissional habilita o(a) profissional para o pleno exercício
da sua função, de forma regulamentada, com funções, atribuições, responsabilidades,
direitos e garantias muito bem definidas.
Assista ao vídeo “O que um Engenheiro de Software faz?”, do canal Código Fonte TV.
O vídeo tem aproximadamente 8 minutos e traz interessantes reflexões sobre a
profissão.
Requisitos de Software
Fonte: https://goo.gl/HfX2JX
Conforme ilustrado na figura 1, a atividade de levantamento de requisitos é fundamental
para o sucesso ou fracasso de um software. Requisitos mal levantados e/ou mal
especificados comprometem todo o projeto. Caso seja levado adiante um projeto
inicialmente defeituoso, pode ser bastante difícil reverter a situação. Geralmente, quanto
mais tarde for feita a correção dos requisitos, mais caro será o projeto.
Imagine que o requisito tenha sido levantado, o sistema tenha sido projetado,
construído, testado e, só então, quando a funcionalidade implementada chegou para o
solicitante (cliente), foi verificado que daquela forma o sistema não atende aos anseios
do usuário. Veja quanto desperdício de tempo, dinheiro e recursos em geral! O custo de
manutenção também aumenta exponencialmente quando o requisito mal especificado
for corrigido somente após a implementação.
Entretanto, quando bem especificados, os requisitos fazem com que o sistema atenda ao
propósito estabelecido pelo solicitante. Os requisitos estabelecidos se transformarão nas
funcionalidades geradoras das informações previamente esperadas pelo usuário, com
isso, o projeto terá mais qualidade e mais chances de cumprir o cronograma e os custos
preestabelecidos.
Para Refletir
Fonte: https://goo.gl/BLi6yC
Será que a mensagem apresentada pelo sistema está correta? O que você pensa que saiu
errado na produção desse sistema?
Requisitos Funcionais
Os requisitos não funcionais são aqueles que expressam como o sistema deve ser feito.
Eles descrevem atributos do sistema ou atributos do ambiente do sistema. Em geral,
relacionam-se com padrões de qualidade, como confiabilidade, performance, robustez
etc. Os requisitos não funcionais também são essenciais, pois definem o grau de
eficiência para a tarefa a qual o sistema se propõe a fazer. Portanto, eles indicam as
qualidades do sistema, enfatizando as características que ele deverá possuir.
Outras Observações
Como existem vários tipos diferentes de requisitos, não é possível definir padrões de
escrita ou definir a melhor maneira de especificação de requisitos. Isso dependerá de
quem escreve, de quem lê, do domínio de aplicação do sistema e das práticas gerais de
organização e desenvolvimento dos requisitos.
Para garantir que toda essa prática de levantamento e classificação dos requisitos,
negociação com os clientes e gerenciamento dos possíveis problemas seja trabalhada de
maneira eficiente, a ponto de resultar em uma especificação clara e organizada, é
necessário fazer uso da engenharia de requisitos.
Esse assunto será amplamente explorado na próxima aula, na qual conhecerá detalhes
de todas as etapas que compõem a Engenharia de Requisitos.
Para Refletir
Suponha que um determinado cliente solicitou a você que desenvolva uma aplicação
para ser implantada em uma nova loja que ele pretende inaugurar nos próximos meses.
Pense nos requisitos iniciais desse projeto e procure identificar quais são os Requisitos
Funcionais e Não Funcionais.
Para pensar a respeito dos requisitos iniciais, lembre-se dos conceitos de requisitos
funcionais, que são as funcionalidades que serão desenvolvidas para atender os
processos de negócios do cliente, e que os requisitos não funcionais serão os requisitos
que darão suporte ao funcionamento dos requisitos não funcionais.
Até mais!
Aula 1.3 - Engenharia de Requisitos de Software
Introdução à Engenharia de Software
Ainda assim, esta é uma atividade que independe de paradigma. Seja qual for o
paradigma de engenharia de software adotado, a análise de requisitos deverá ser levada
em consideração e, quanto mais sólida e bem feita for essa atividade, maiores as
chances de se chegar a um projeto que tenha qualidade.
Elicitação de Requisitos
Esta etapa consiste em retirar a correta informação dos clientes. É necessário perguntar-
lhes qual será o propósito do sistema, quais as informações a serem geradas pelo
sistema e que serão necessárias para o negócio, e como será a utilização do sistema.
Apesar de parecer fácil, na prática, pode não ser assim tão simples. Pressman (2006)
aponta alguns motivos que podem gerar dificuldades no processo de elucidação dos
requisitos.
Problemas de escopo: os limites do sistema são mal definidos. Muitas vezes, não se
sabe ao certo quais os assuntos abrangidos e até onde o sistema deve ir. Há
clientes/usuários que especificam detalhes técnicos desnecessários, que podem
confundir, no lugar de esclarecer.
Problemas de entendimento: os clientes/usuários, muitas vezes, não entendem
completamente o domínio do problema, não sabem direito o que é ou não necessário,
têm dificuldade de comunicar as necessidades ao analista de requisitos, omitem
informações que acreditam ser “óbvias”, especificam mal os requisitos, sendo
conflitantes com os requisitos de outros usuários, ambíguos ou mesmo impossíveis de
se testar.
Problemas de volatilidade: um requisito pode ser visto de maneiras diferentes por
pessoas diferentes. Isso pode gerar mudanças nos requisitos, à medida que o projeto se
encontra em andamento. Da mesma forma, os processos de negócios também evoluem e
mudam com o tempo e isso pode representar mudanças nos requisitos do sistema.
O levantamento ou elicitação de requisitos de um sistema consiste de uma etapa muito
importante no desenvolvimento de projetos. Um bom levantamento de requisitos poderá
poupar tempo e dinheiro no decorrer do projeto. Entender aquilo que o cliente deseja
(ou o que o cliente acredita que precisa) e compreender as regras do negócio, também
chamadas de processos do negócio, consiste no cerne que move essa questão. Aliado ao
levantamento de requisitos existe o mapeamento dos processos, vital para a melhoria
dos resultados obtidos pelo levantamento de requisitos.
Saber exatamente o que o cliente quer pode parecer uma atividade simples, mas,
infelizmente, não é. Pelo contrário, essa tarefa é bastante complexa e difícil de ser
executada. Isso ocorre por vários motivos. Pressman (2006) cita alguns deles, a saber: o
volume de informações a ser considerado pode ser bastante extenso, pode ocorrer a má
informação por parte dos clientes/usuários, pode ocorrer a má interpretação por parte
dos analistas de requisitos, as compreensões das partes envolvidas podem estar sujeitas
a ambiguidades, entre outros.
Além disso, o cliente/usuário, muitas vezes, não passa a informação de maneira correta,
ou passa de maneira incompleta. Isso, na grande maioria das vezes, não é por mal ou de
propósito, simplesmente acontece, seja por não ter uma visão do todo, ou por ter uma
compreensão equivocada do domínio do problema, ou ainda por não saber passar a
informação adiante. É comum, por exemplo, o cliente dizer uma coisa e seu interlocutor
entender outra.
Porém, o contrário também pode ser verdadeiro. Muitas vezes, o usuário diz o correto,
de maneira bastante clara, mas falta o entendimento completo do domínio do problema
por parte do analista de requisitos; assim, ele entende algo de maneira equivocada
daquela que foi expressa pelo cliente/usuário.
a) Definição de Objetivos
Neste estágio, devem ser estabelecidos os objetivos globais da organização, metas
genéricas do negócio, descrição do problema a ser resolvido, por que o sistema pode ser
necessário, restrições do sistema como orçamento, cronograma e restrições de
interoperabilidade.
c) Organização do Conhecimento
O conhecimento adquirido nas etapas anteriores deve ser reunido e organizado. Deve
haver a identificação dos envolvidos, seus papéis na organização, priorização de
objetivos e o descarte do conhecimento que não contribuirá diretamente para os
requisitos do sistema.
Na figura 2, você pode observar que existem quatro caixas, com algumas atividades que
devem ser realizadas, comentadas a seguir:
Para Refletir
Fonte: https://goo.gl/LvNhhA
Muitas vezes, um analista de requisitos se depara com uma situação parecida com a
apresentada na charge. Para coletar os requisitos do software, muitas vezes, o próprio
cliente não sabe exatamente o que quer. Em situações como essa, o analista de
requisitos deve utilizar todos os seus conhecimentos e técnicas para entender
exatamente o que precisa ser feito para atender bem o cliente.
Entrevista
Esta é uma das técnicas mais utilizadas. Pressman (2006) faz analogia com o primeiro
encontro de adolescentes, em que ninguém sabe o que dizer, o que fazer, o que
perguntar, com medo de ser mal compreendido.
Pressman (2006) também propõe outras questões importantes, que permitem ao analista
de requisitos compreender melhor o domínio do problema e ambientar-se com os
assuntos da organização, obrigando o cliente a verbalizar seus pensamentos e,
principalmente, dizer como ele imagina o funcionamento da solução:
Como você caracterizaria boas saídas as quais seriam geradas por uma solução bem-
sucedida?
Quais os problemas que essa solução enfrentaria?
Você pode mostrar (ou descrever) o ambiente no qual a solução será utilizada?
Tópicos especiais de desempenho ou restrições afetarão o modo pelo qual a solução é
abordada?
Existem mais dois tópicos importantes que devem ser levados em consideração ao se
fazer uma entrevista:
FAST
Em muitos casos, o relacionamento entre as equipes começa a ficar desgastado. Muitas
vezes, há uma guerra não declarada entre a equipe de projeto e os clientes/usuários. Um
festival de documentos para serem assinados, gerentes de projeto tentando fazer
homologações “à força”, clientes afirmando que pediram determinada funcionalidade e
não foram atendidos, usuários reclamando de um determinado comportamento que não
funciona da maneira esperada por ele, enfim, vários mal-entendidos entre as equipes e
também problemas de relacionamento.
A solução proposta por Pressman (2006) para o problema relatado acima é o FAST, do
Inglês: Facilitated Application Specification Techniques. Essa técnica prega a união
entre as equipes, tanto a de projeto quanto a de clientes/usuários, com o objetivo de
identificar os problemas e encontrar soluções conjuntas. Também prega a negociação de
diferentes abordagens, para que se estabeleça um consenso e a especificação de um
conjunto preliminar de requisitos, para que assim o projeto possa andar de maneira
eficiente.
Existem duas implementações bastante difundidas do FAST, o projeto conjunto de
aplicações – JAD, Joint Application Design – da IBM, e o METHOD, da Performance
Resources.
Nos dias anteriores à reunião, algumas listas devem ser solicitadas aos participantes, tais
como:
Lista de objetos que cercam o ambiente do sistema, produzidos pelo sistema, usados
pelo sistema, que permitem desempenhar suas funções.
Listas de serviços, processos ou funções, que manipulam ou interagem com os objetos.
Lista de restrições, como, por exemplo, custo, tamanho, regras de negócio e critérios de
desempenho como velocidade e precisão.
Cabe destacar que as listas não podem ser exaustivas, mas devem refletir a percepção de
cada um sobre o contexto do sistema.
a. Normais: são aqueles que deixam os clientes satisfeitos quando as metas são atingidas
devido à utilização desses requisitos.
b. Esperados: são os requisitos implícitos. Esses requisitos são tão fundamentais, que os
clientes nem se referem a eles de maneira explícita, mas geram uma grande insatisfação
no cliente, caso ocorra a falta de algum deles. Como exemplo, podemos citar a
facilidade na operação e na instalação, confiabilidade do sistema, atender às
necessidades de maneira correta etc.
c. Excitantes: são os requisitos que superam as expectativas, que surpreendem
positivamente os clientes. Assim, costumam gerar um resultado bastante satisfatório
quando estão presentes. Exemplo de requisito excitante pode ser um relatório
sabidamente útil e prático, mas que não havia sido solicitado.
A técnica consiste em realizar reuniões com os clientes, para que haja o desdobramento
de funções cujo enfoque é o de determinar o valor de cada função a ser utilizada no
sistema. É necessário também executar o desdobramento da informação, cuja essência é
identificar corretamente objetos de dados e eventos que farão parte do sistema. Para
finalizar, realizamos o desdobramento de tarefas, para que o comportamento do sistema
seja examinado dentro do contexto do seu ambiente. A análise de valor determina a
prioridade de forma relativa dos requisitos determinados durante cada um dos três
desdobramentos.
Cenários
Os usuários de sistema gostam de relatar sua rotina funcional. Gostam mais de contar
sobre seu dia a dia no trabalho do que de pensar e/ou tentar imaginar como seria sua
vida, caso já estivessem usufruindo do sistema. Assim, torna-se bem útil a utilização dos
cenários, para que haja uma grande e clara descoberta de requisitos.
Essa técnica consiste no usuário simular as suas interações com o sistema, dizer quais
são as informações relevantes que ele utilizará no sistema para realizar as suas
obrigações, além das informações de saída esperadas. É a descrição das tarefas a serem
realizadas por um usuário que executa um determinado papel.
Casos de Uso
Os casos de uso se assemelham mais a uma forma de estruturar do que propriamente
levantar requisitos, embora sirvam para encontrar mais requisitos quando são utilizados
na validação das informações junto ao usuário.
Os casos de uso são então uma junção de cenários, classificados em fluxo básico e
alternativo, atores, restrições, pré-condições, pós-condições, definições e regras de
negócio. Conheça cada um deles.
Fluxo básico – Consiste no caminho feliz. O cenário com o fluxo básico é aquele que
deve ou deveria acontecer na grande maioria das vezes. É o atendimento pelo sistema à
funcionalidade levantada pelo analista de requisitos junto ao cliente/usuário. É
justamente o que aquela tarefa deve fazer, a sua finalidade principal. É a sequência
básica dos acontecimentos, a narrativa dos passos a serem seguidos no decorrer da
interação do ator com o sistema. São os passos a serem seguidos.
Fluxo alternativo – Acontece quando há uma exceção no fluxo natural das coisas. Por
exemplo, alguma informação que deveria constar e não está presente. Para resolver esse
problema, o sistema pode pedir a informação ausente, registrar um erro, redirecionar a
execução do sistema, entre outras opções.
Atores – Atores são essenciais em um caso de uso. São aqueles que interagem com a
funcionalidade. Pode ser uma pessoa, que representa um papel, ou um sistema externo,
ou seja, uma entidade de fora do sistema que é responsável por interagir com o sistema.
Um papel pode ser encarado como um conjunto de características comuns a um ator que
se relaciona com o sistema. Por exemplo, uma pessoa com papel de funcionário pode
executar tarefas reservadas a um funcionário qualquer, como pesquisar dados do cliente,
enquanto que apenas o funcionário com papel de gerente pode conceder mais crédito no
cheque especial.
Restrições – As restrições significam aquelas circunstâncias que devem ser obedecidas
pelo caso de uso. É algo que, enquanto aquela situação não for atendida, restringe a
conclusão do caso de uso. Por exemplo, quando o usuário solicitar um cadastro
qualquer, alguns campos devem ser de preenchimento obrigatório. Enquanto esses
campos não possuírem valores, não será possível concluir a operação.
Pré e pós-condições – Pré-condição é quando um caso de uso só pode ser iniciado se
determinada situação tiver sido alcançada. Por exemplo, o usuário só poderá interagir
com determinada funcionalidade se ele estiver logado no sistema. Pós-condição é a
situação em que deve se encontrar o sistema depois da realização daquele caso de uso.
Pré e pós-condições – Pré-condição é quando um caso de uso só pode ser iniciado se
determinada situação tiver sido alcançada. Por exemplo, o usuário só poderá interagir
com determinada funcionalidade se ele estiver logado no sistema. Pós-condição é a
situação em que deve se encontrar o sistema depois da realização daquele caso de uso.
Um exemplo de pós-condição seria de um caso de uso Incluir Cliente. Nesse sentido,
uma pós-condição é que no final da execução do caso de uso todas as informações dos
clientes tenham sido validadas e o cliente gravado no banco de dados.
Definições – Podemos dizer que as definições fazem parte da especificação do caso de
uso. É comum que uma organização tenha uma cultura e vocabulário próprios; mesmo
assim, um termo pode ter dois ou mais significados, a depender do departamento. Por
isso, devemos utilizar definições para que um termo utilizado no sistema seja
suficientemente claro para todos os envolvidos.
Regras de Negócio – Todo o sistema deve acontecer estando restrito a determinadas
regras de negócio. São as especificações e definições que determinam o fluxo dos
acontecimentos. As regras de negócio podem estabelecer novas definições, condições,
restrições, entre outros. Muitas vezes, as regras de negócio estão em um documento
diferente da especificação do caso de uso, isso porque muitas regras de negócio não são
exclusivas do caso de uso. Elas pertencem a todo o sistema, por isso são colocadas em
um lugar único e o caso de uso apenas referencia essa regra de negócio.
Você estudará mais sobre casos de uso e cenários na aula Modelagem e Análise de
Requisitos, em que serão apresentados novos termos, nomenclatura, notação gráfica,
enfim, tudo aquilo necessário para você poder fazer uma boa modelagem ao analisar
os requisitos.
Para Refletir
Fonte: https://goo.gl/tV1Ggp
Você deve ter observado que o mapa mental apresenta informações sobre o que deve ser
feito em termos de Levantamento de Requisitos e a Técnica de Levantamento de
Requisitos a ser utilizada. Essa é uma ferramenta muito útil! Pense que você pode
utilizar um software para essa finalidade, já imaginando como será o levantamento e
qual é a melhor técnica a ser considerada. Imagine que você levantará requisitos em
uma empresa que contará com a presença de mais ou menos 10 pessoas, de
departamentos e interesses diferentes. Você pode baixar o aplicativo FreeMind, que é
um software free, e pode gerar como exercício um mapa mental da situação, para
facilitar o registro de ideias.
Nesta aula, você compreendeu que o processo de engenharia de requisitos visa
garantir que o sistema gerado por esses requisitos atenda às necessidades e satisfaça
as expectativas dos clientes. A Gestão de Requisito é um conjunto de atividades que
ajuda a equipe de projeto a identificar, controlar e rastrear requisitos e modificações
de requisitos em qualquer época, à medida que o projeto prossegue. Também foi
abordada a Elicitação de Requisitos, entendendo os detalhes do sistema de que o
cliente necessita e as técnicas que podem ser utilizadas para obtenção e consolidação
dos requisitos iniciais do sistema.
Bons estudos!