Baixe o app para aproveitar ainda mais
Prévia do material em texto
Profª CLAUDIA ABREU PAES Brooks Jr., em um antigo artigo publicado pela IEEE Computer, entitulado como No Silver Bullet: Essence and Accidents in Software Engineering (IEEE Computer, abril 1987), define: “A parte mais árdua na construção de um sistema de software é decidir o que construir. Nenhuma outra parte do trabalho compromete mais o sistema se for feito de forma imprópria. Nenhuma outra parte é mais difícil de corrigir a posteriori.” Para os mais tecnicistas (e até muitos analistas), certamente existe uma grande dificuldade em compreender a veracidade desta mensagem. É comum nos preocupamos bastante é com a linguagem de programação, base de dados ou quaisquer outros recursos no tocante a base tecnológica. Contudo, cometemos uma grave e custosa infração: definir o que realmente o sistema deve fazer; quais são as entradas disponíveis e as saídas esperadas para o sistema. Nesta disciplina, teremos a oportunidade de compreender a importância na definição dos requisitos de software, identificando como ela contribui para o desenvolvimento de um sistema de qualidade, ou seja, que os objetivos estão alinhados com a necessidade, evitando surpresas ou pouco entendimento sobre o que realmente se deseja. O término do estudo dessa disciplina propiciará uma visão sobre os benefícios de se conhecer bem os requisitos desejados, e como estes irão proporcionar um sucesso no que diz respeito a assertividade do produto de desenvolvimento de software, ou seja, em um sistema que realmente satisfação as necessidades dos usuários. Ao final dessa disciplina você será capaz de: •Apresentar os conceitos fundamentais e importância dos requisitos no processo de desenvolvimento de software. •Compreender o que vem a ser qualidade, e como podemos desenvolver um sistema com qualidade. •Apresentar as atividades envolvidas para elicitação e validação dos requisitos, evidenciando a importância de cada uma delas e as diferentes técnicas utilizadas, bem como o relacionamento entre elas. •Ter uma visão sobre a engenharia de requisitos de software. •Desenvolver senso crítico do aluno mostrando a necessidade do gerenciamento de requisitos para apoiar cada atividade do ciclo de vida de software. 1 - Identificar o conceito de requisitos. 2 - O que é qualidade de software. 3 - Relacionar a importância dos requisitos para o desenvolvimento de software com qualidade. Certamente que você deve está familiarizado sobre o conceito da palavra “sistema”, aonde este representa um tipo de rotina; ou seja, quando estamos construindo um software, na realidade estamos transferindo uma seqüenciada operação definida e seqüencial, de acordo com o seu funcionamento. Por exemplo, uma grande montadora de veículos encomenda um sistema para fazer com que “braços” mecânicos possam executar a tarefa de alocar as peças para que o carro seja construído. Portanto, o software opera sobre o hardware para que o computador possa desenvolver a determinada ação. Portanto, antes de se pensar em questões tecnológicas(Ambiente de desenvolvimento, linguagens de programação, banco de dados a ser utilizado), é preciso ter a concepção correta do que se está sendo solicitado. Se não conseguirmos compreender corretamente o que precisamos sistematizar, temos grande risco de não entregarmos o que se desejava no referido software. Levantamento de Requisito O processo de levantamento de requisito está vinculado para garantir qualidade no produto que vamos entregar. Mas você sabe definir o que é qualidade? Segundo o Aurélio, atribui-se o termo qualidade a algo e/ou alguém que possui uma superioridade, excelência. Para qualquer empresa, ter qualidade nos seus processos para seu é ter uma estratégia competitiva, principalmente para aquela que desenvolve software. A muito tempo já deixamos de ter a visão que qualidade é algo voltado a classes sociais mais ricas. É preciso definir ou escolher um determinado padrão de qualidade a ser seguido nas atividades para o desenvolvimento do sistema, a fim de poder acompanhar em diferentes estágios se está tudo em conformidade com as normas estabelecidas, e por fim garantir a qualidade do software. É perceptível atualmente um significativo movimento em busca da qualidade. Adventos de várias transformações no mundo, as organizações precisam produzir produtos e serviços de qualidade, não mais como uma estratégia de diferenciação de mercado, mas como uma condição de subsistência. Mas qual o caminho para um produto de qualidade? Como atingir a qualidade do produto de software? Variáveis como: qualidade de software, garantia da qualidade e custo da qualidade também são assuntos que exige análise. Lembre-se que, qualquer empresa precisa ser rentável, e a qualidade tem seus custos. Qualidade de Software Para facilitar nossa compreensão na definição da palavra qualidade, Pressman (2006) atribuiu o alcance da qualidade de software como uma consequência formal no desenvolvimento; para tanto, estima-se que seja colocada em prática e não somente uma idéia ou desejo que uma organização venha a ter. Ele cita as seguintes colocações sobre qualidade de software: Definir explicitamente o termo qualidade de software, quando o mesmo é dito. Criar um conjunto de atividades que irão ajudar a garantir que cada produto de trabalho da engenharia de software exiba alta qualidade. Realizar atividades de segurança da qualidade em cada projeto de software. Usar métricas para desenvolver estratégias para a melhoria de processo de software e, como consequência, a qualidade no produto final. Sendo assim, qualidade se consegue nos fragmentos do processo, não apenas no começo do projeto ou no seu final realizando testes, mas sim dentro do contexto visa abranger toda a engenharia de software, contando como a colaboração de todos os envolvidos no projeto. Portanto, isso consiste em realizar a qualidade tanto do processo quanto o produto. No processo, podemos quantificar a sua qualidade através de métricas para qualidade e no produto com as técnicas de verificação e validação. Essas atividades podem ser, por exemplo, avaliações como as citadas pela ISO 9000, auditorias, inspeções formais, testes, revisões. Ainda no processo podemos usar os métodos de garantia da qualidade no formato de auditorias e reportes para a alta gerência, além de avaliações constantes do processo e análise estatística de controle do processo. No produto os métodos de garantia da qualidade são revisões, inspeção formal e testes, além de revisão dos resultados do teste realizada por profissionais altamente capacitados, auditorias do produto e testes realizados pelo cliente. Controle da Qualidade e Garantia da Qualidade Não podemos confundir os conceitos e a aplicação dos termos Controle da Qualidade e Garantia da Qualidade. Para que possam utilizá-los adequadamente, acompanhe na tabela abaixo diferenças entre estas duas atividades: Garantia da qualidade: Controle da Qualidade: Pode-se afirmar que o teste de software é uma das atividades de controle da qualidade, ou seja, o teste de software é orientado a produto e está dentro do domínio do controle da qualidade. Gerenciamento da Qualidade De acordo com o PMBOK do PMI, na versão 2004, os processos de gerenciamento da qualidade do projeto detêm todas as atividades da organização executora que determinam as responsabilidades, os objetivos e as políticas de qualidade, de modo que o projeto atenda às necessidades que motivaram sua realização. Eles desenvolvem o sistema de gerenciamento da qualidade através da política, dos procedimentos e dos processos de planejamento da qualidade, garantia da qualidade e controle da qualidade, com atividades de melhoria contínua dos processos conduzidas do início ao fim, conforme adequado. Com isso os três principais processos são: Planejamento da Qualidade: identificação dos padrões de qualidade relevantes para o projeto e determinaçãode como satisfazê-los. Garantia da Qualidade: Aplicação das atividades de qualidade planejadas e sistemáticas para garantir que o projeto emprega todos os processos necessários para atender aos requisitos. Controle da Qualidade: Monitoramento de resultados específicos do projeto a fim de determinar se eles estão de acordo com os padrões relevantes de qualidade e identificação de maneiras de eliminar as causas de um desempenho insatisfatório. Há diversas semelhanças entre os conceitos usados no PMBOK e os conceitos da própria ISSO. Com isso, é possível ainda relacionar estes três processos do PMBOK com as definições de qualidade de processo, qualidade de projeto, controle da qualidade e garantia da qualidade. A norma ISO 9000 estabelece um padrão para a qualidade de software. Ela aponta um conjunto de características de trata de um produto, processo ou sistema que está adequado os requisitos inicialmente estipulados para estes. “A ISO 9001 é de longe a estrutura de qualidade melhor estabelecida, sendo utilizada atualmente por mais de 750 mil organizações em 161 países, e define o padrão não só para sistemas de gestão da qualidade, mas para sistemas de gestão em geral.” Enfim, alcançar um produto de software de maneira mais assertiva, que consegue o problema de maneira correta e que entrega dentro de um tempo e lugar que satisfazem ao cliente, inicia com a identificação dos requisitos. Então devemos primeiramente levantamos as pessoas, os processos e recursos que estão envolvidos, e buscar então evidenciar suas ações e documentá-las, da maneira mais detalhadamente necessária para que não haja dúvidas do(s) respectivo(s) comportamento(s). Nesta aula, você: Compreendeu sobre a definição de requisitos de sistemas. Aprendeu sobre os conceitos de qualidade no aspecto do desenvolvimento de software. Analisou que os requisitos representam o foco de deve receber muita importância, caso desejemos atingirmos um software com qualidade. 1. Qual o objetivo da área de requisitos de sistema? 1) Identificar quem vai desenvolver o sistema. 2) Informar qual a ISO deve ser utilizada naquele sistema. 3) Programa computacional para estabelecer regras para a qualidade. 4) Sistema de apoio aos gerentes para aprimoramento de veículos. 5) Levantar os dados para a definição correta e completa para o sistema a ser desenvolvido. 5 2. O que significa a sigla ISO? 1) Empresa internacional que desenvolve software. 2) Empresa internacional de padronização de processos. 3) Empresa internacional de requisitos de software. 4) Empresa internacional de validação de requisitos. 5) Empresa internacional de banco de dados. 2 3. Qual a norma da ISO que trata sobre gestão da qualidade? 1) 9001 2) 9010 3) 9100 4) 1900 5) 0190 1 Nesta aula, você irá: 1 - Aprender sobre a classificação dos requisitos de níveis. 2 - Identificar os níveis em nível de sistema. 3 - Identificar os níveis em nível de usuário. 4 - Reconhecer as características de requisitos de sistema e requisitos de usuário. Conforme estudamos na aula anterior, definir bem requisitos é um passo importante para alcançarmos o desenvolvimento de um projeto de determinado software com qualidade. Independente das características que defina maior ou menor, a primeira iniciativa será identificar o que se espera do sistema. Notadamente o sistema a ser desenvolvido substituirá ou aperfeiçoará algum outro existente ou automatizar um processo que atualmente não está sendo realizado por computador. Quando falamos em requisitos, estamos identificando algo intrínseco ao sistema, ou seja, alguma característica que deverá ser capaz de efetivamente realizar, visando assim atingir os objetivos macros que motivaram o início do projeto. Podemos também dizer que requisitos apontam a conduta desejada de um sistema. Os requisitos classificados por níveis estão vinculado na linguagem ou ambiente do teor da especificação para determinada finalidade, com o intuito de consegui ser entendível, evitando que qualquer anomalia na qualidade da informação disposta imponha obstáculos para se alcançar plenamente o resultado esperado. E não adianta apenas constar, mas a compreensão do que se preciso tem que ser clara. Na figura ao lado (Sommerville, pág. 58), temos um exemplo descrito detalhadamente, que visam atender diferentes necessidades de informações. Por exemplo, nele estão visíveis para o programador saber qual(ais) a(s) regra(s) para se atingir o objetivo esperado, e o que o usuário deve efetivar no momento de obter o resultado daquele processamento. Todos estes devem sempre fornecer a dimensão exata dentro da especificidade do cenário, sendo claro e sem ambigüidades, para evitar desencontros e/ou desentendimentos. Requisitos classificados por níveis Para então contemplar todos os envolvidos no processo de levantamento de requisitos, de maneira que compreendam o cenário proposto para resolução de determinada necessidade que culminou na tarefa de desenvolver um sistema, dividimos os requisitos em dois níveis: Sistema e Usuário Requisitos de sistema No tocante aos requisitos de sistema, estes já são especificados para um grupo de leitores que detém de uma experiência, seja no negócio como na área de tecnologia da informação, nas especificidades da empresa. Precisa não necessariamente entender de detalhes tecnológicos, mas estima-se que ostente algum tipo de experiência, dotando- o da capacidade de, por exemplo, identificar os insumos já presentes e aqueles também necessários, mas que não estão sendo gerados, para se alcançar uma determinada informação e com base na regra do negócio, aplicada e requerida pelo cliente. Um exemplo que facilita a compreensão é vinculado a software de jogos eletrônicos. Sempre ao comprar (recomenda-se) analisar quais são as características mínimas exigidas para que o jogo possa funcionar em um determinado computador. As informações ali dispostas são consideradas, obrigatórias, pois define os componentes e configurações para que seja possível usufruir das emoções dos jogos. Portanto, são requisitos do sistema. Importante destacar que nada impede que os requisitos de sistema e/ou de usuário estejam disponíveis, ou seja, possam ser lidos por pessoas sem conhecimento apropriado (salvo por questões de confidencialidade); portanto, o documento está sendo disponível a todos, contudo, o grau de a relevância está mais associados àqueles que detém vínculo com determinado perfil de informação. A seguir, veremos sobre mais dois tipos de requisitos, porém estes agora mais voltado para características mais internas dos próprios requisitos, que apontam pela funcionalidade do requisito, o que justifica então a presença dele, tanto de maneira mais direta (requisito funcional), como indireta (requisitos não funcional). Nesta aula, você: Compreendeu sobre a classificação dos requisitos; Aprendeu sobre requisitos de sistema e requisitos de usuário; Analisou a abrangência de cada nível de requisito. Na próxima aula, você estudará sobre os assuntos seguintes: Classificação de requisitos por tipos; Requisitos Funcionais; Requisitos Não Funcionais. 1. Quais são os níveis de detalhamento que os requisitos precisam atender? 1) Sistema e Produção. 2) Usuário e Desenvolvimento. 3) Sistema e Usuário. 4) Desenvolvimento e Produção. 5) Usabilidade e interação. 3 2. São exemplos de requisitos de usuário: 1) O sistema deve gerar um relatório de contas a pagar. 2) Quando estoque atingir o mínimo cadastrado, o sistema deve verificar nos estoques das outras lojas, antes de autorizar a compra. 3) O sistema deve solicitar nome de usuário e senha para o controle de acesso. 4) Após o fechamento do caixa, será impresso um relatório de movimentação.5) Será criado um módulo de auditoria para a checagem no histórico da movimentação. 1 3. O requisito de sistema: 1) É um manual do usuário. 2) É um Documento que descreve a empresa contratada para desenvolver o software. 3) É o setor da empresa que desenvolve o sistema. 4) Identifica as regras para encontrar e/ou produzir o resultado esperado. 5) Especificado apenas para grupo de leitores com pouca experiência. 4 Nesta aula, você irá: 1 - Identificar o que é um requisito funcional e não-funcional. 2 - Quais as características de um requisito funcional. 3 - Quais as características de um requisito não-funcional. 4 - Compreender as diferenças entre os requisitos funcionais e não-funcionais. Antes de entrarmos nas características que definem a classificação de requisitos, é importante enfatizar que um sistema não é concluído com apenas um tipo de requisito. E que também não existe algum que é mais ou menos importante. Recapitulando o que já estudamos, requisitos definem o que o sistema deve fazer; portanto, quando eles são evidenciados, entende-se que devem ser contemplados e inseridos no software. Sommerville (2011, pág. 60), destaca que os requisitos devem especificar todos os intentos do cliente, e que sejam de forma clara – os quais denominam pelo conceito de completude e consistência. Um fato que vamos estudar na próxima aula: as pessoas que fazem parte da empresa cliente, nem sempre são precisos em identificar corretamente um contexto. Classificação dos Requisitos Funcionais, Não funcionais e Interface. Exemplo Prático Relativo ao sistema a ser desenvolvido, pede-se: deve disponibilizar um grid na tela, que permitirá a visualização dos dados relativos a nossa conta bancária (saldo disponível para o saque). Essas informações poderão ser acessadas apenas com o interesse do cliente. Portanto, o grid somente será ativado (e também pode ser desativado) através do clique em um botão. Esse grid não poderá durar mais do que 3 segundos para aparecer ao cliente. Separando corretamente os requisitos especificados no exemplo acima, visto que não houve preocupação em de distinguir – ou seja, temos uma aglutinação de requisitos, o resultado seria: Funcional - Sistema deve possuir um módulo para saque. - No módulo de saque deve ser disponibilizado um grid para a visualização do saldo. - O grid pode ser ativado ou desativado, dependendo do interesse do cliente. Não Funcional - Software deve possuir características de confiabilidade, pois trabalha com dados sensíveis (saldo de conta). - O tempo máximo para visualizar as informações no grid é de 3 segundos. Muitas vezes é difícil discernir entre quais requisitos são funcionais e quais não são. Essa prática vem com o tempo e com a experiência e, por isso, para quem não trabalha diretamente com análise, é sempre bom exercitar. O processo de análise é uma das fases mais complexas do projeto de software. Vamos ainda continuar falando sobre o processo de elicitação de requisitos e de análise em geral em próximas ocasiões. Requisitos Funcionais Os requisitos funcionais são aqueles que estabelecem e descrevem as funcionalidades do sistema desejadas pelos clientes, ou seja, retratam “O QUE” se espera que o software faça. Então, por exemplo, uma empresa determinada está com interesse em ter um sistema que gerencie o seu cadastro de fornecedor. Ela deseja acabar com um cadastro de fornecedor atualmente realizado em fichas. Para tanto, encomendou um sistema que possibilite cadastrar e armazenar todos os dados daqueles que lhe fornece produtos e/ou serviços. Também foi solicitado que pudesse ser emitido um relatório de todos os fornecedores que não conseguiram entregar no prazo estabelecido, citando o motivo e o número do pedido, além de outros relatórios que são importantes para os gerentes da empresa. Todos estes são exemplos de requisitos funcionais. Mediante este cenário, tudo que envolver funcionalidades ou serviços que se espera do sistema no tratamento para o controle do fornecedor será um requisito funcional. Por exemplo: o sistema deve disponibilizar o cadastro dos campos “A”, “B” e “C”. Requisitos Não Funcionais Os requisitos não funcionais envolvem fatores para o sucesso do produto a ser entregue porque atua diretamente com a satisfação dos usuários na operação do software. São exemplos de características de requisitos não funcionais que devem ser avaliadas: Funcionalidade: Está vinculado a finalidade do produto. É preciso entender as características de quem e o que foi pedido. Usabilidade: Esforço para utilizar o sistema; aprendizagem do produto; acessibilidade, principalmente por público de necessidades especiais Confiabilidade: Relacionado a freqüência de falhas, e, quando ocorrerem, qual o tempo necessários para a recuperação do ambiente, caso ocorra alguma indisponibilidade. Eficiência: Característica relacionada ao desempenho do sistema relativo a quantidade da demanda gerada quando ele estiver em atividade. Manutenibilidade: Esforço necessário para modificar o sistema para possíveis cenários, sejam eles novos ou resultado de ajustes para atender alguma nova característica. Portabilidade: Capacidade de transferir o produto para outros ambientes. São exemplos de requisitos não-funcionais: - Software deve ser operável por deficientes visuais. - Tempo de resposta do sistema não deve ultrapassar 10 segundos. - Software deve ter módulo de backup. - A base de dados deve ser acessível apenas para autorizados. Tipos de Requisitos Não-Funcionais Na abaixo, temos uma abrangente descrição dos tipos de requisitos não funcionais, a qual nos permite ter uma noção mais exata sobre as características necessárias para enquadrarmos um item como um requisito não funcional. Métricas para Especificar Requisitos Não Funcionais Mediante o cenário muito intangível (mas que precisa obter um métrica), detalhamos na tabela abaixo, as principais métricas para especificar requisitos não funcionais. Acompanhe então cada medida que pode ser utilizada em relação a uma determinada propriedade do requisito. Resumindo então a diferença entre os requisitos funcionais e não funcionais, podemos dizer que o primeiro tem características tangíveis (é mais fácil observar), enquanto o outro trata de questões intangíveis, e que podem obter diversas maneiras de ser avaliado, ou seja, vai depender diretamente do contexto computacional e do tipo do sistema a ser produzido. Nesta aula, você: Aprendeu mais sobre a classificação de requisitos; Compreendeu o conceito de requisitos funcionais e não funcionais; Analisou as características que definem se um determinado requisito é funcional ou não funcional. Na próxima aula, você estudará sobre os assuntos seguintes: Definição de skateholders; Levantamento de requisitos; Técnicas para levantamento de requisitos. 1. Quais são os dois tipos de requisitos? 1) Funcionais e Sistema. 2) Usuário e não funcionais. 3) Funcionais e não funcionais. 4) Sistema e Usuário. 5) Usuário e funcionais. 3 2. Selecione a opção que exemplifica um requisito funcional: 1) Sistema deve dispor de recursos de confiabilidade. 2) Sistema deve gerar um relatório de vendas. 3) Sistema deve gastar não mais que 1 segundo para registrar a venda. 4) Sistema deve ter um ambiente de fácil uso. 2 3. Selecione a opção que exemplifica um requisito não funcional: 1) Sistema deve emitir relatório de produtos que mais são vendidos. 2) Sistema deve possuir um acesso controlado por uma senha. 3) Sistema somente deve permitir alteração de preço com usuário do tipo “Gerente”. 4) Sistema deve permitir processo de cópia de segurança. 5) Sistema deve manter cadastro de clientes. 4 Garantia da Qualidade Controle da Qualidade a) Garantia da qualidadegarante que o processo é definido e apropriado. b) Metodologia e padrões de desenvolvimento são exemplos de garantia da qualidade. c) Garantia da qualidade é orientada a processo. d) Garantia da qualidade é orientada a prevenção. e) Foco em monitoração e melhoria de processo. f) As atividades são focadas no inicio das fases no ciclo de vida de desenvolvimento de software. g) Garantia da qualidade garante que você está fazendo as coisas certas e da maneira correta. a) As atividades de controle da qualidade focam na descoberta de defeitos em pontos específicos. b) Um exemplo de controle da qualidade poderia ser: "Os requisitos definidos são os requisitos certos?". c) Controle da qualidade é orientado a produto. d) Controle da qualidade é orientado a detecção. e) Inspeções e garantia de que o produto de trabalho atenda aos requisitos especificados. f) As atividades são focadas no final das fases no ciclo de vida de desenvolvimento de software. g) Controle da qualidade garante que os resultados do seu trabalho são os esperados conforme requisitos. Aula 04: Identificação dos Stakeholders e Técnicas de Levantamento de Requisitos Nesta aula, você irá: 1 - Conhecer o conceito de stakeholders. 2 - Identificar características dos stakeholders. 3 - Conhecer técnicas de levantamento de requisitos. 4 - Relacionar cenários distintos e as melhores técnicas de levantamento de requisitos a serem aplicadas. Uma vez que já definimos uma estrutura e classificação para o desenvolvimento de um projeto de software com controle e garantia da qualidade, vamos na aula de tratar de identificar e detalhar sobre as pessoas que tenham e/ou sejam afetados por um software. Porque, também independente de tecnologia, certamente um projeto que atua na área da engenharia de software, contemplará a participação direta ou indireta, ativa ou passiva, de pessoas. E justamente nesse perfil de um indivíduo que em algum momento influi algum tipo de interesse, participação, etc., sobre um determinado software, a este caracterizamos como um stakeholder. Stakeholder Antes de levantarmos as considerações específicas da engenharia de software, vamos buscar um entendimento mais amplo do que vem a ser um stakeholder, permitindo assim que possamos compreender, por exemplo, que não é somente na Computação que existem, mas em todo em qualquer sistema (computacional ou não), sempre teremos agentes diretos ou indiretos, que irão compor ou sofrer das suas características. Com foco então em um ciclo de vida do software é possível claramente saber que ele é composto por diversas e distintas responsabilidades que estão vinculadas as pessoas, grupos e entidades. Dentre essas responsabilidades que podemos aqui elucidar, são exemplos: o responsável pelo financiamento, o projeto, o desenvolvimento, o teste, o uso e a manutenção do software. A todos estes chamamos de stakeholder. A palavra vem de da seguinte composição: Stake interesse, participação, risco; Holder aquele que possui. Portanto, todos aqueles que de alguma maneira é afetado pelo software, é um stakeholder (reveja sua resposta da questão vinculada ao questionamento da tela anterior). Então é correto afirmar que toda a preocupação no tocante ao correto desenvolvimento de um sistema e demais recursos de infra-estrutura, por sua vez, tem o duplo objetivo de facilitar o cumprimento das responsabilidades dos stakeholders, quanto atender às suas necessidades. Acompanhando acima, tente identificar a atividade da empresa que possa conter todos os usuários com base nos “pensamentos” citados nas caixas. Também procure distinguir quais deles seriam colaboradores e quais representam o(s) cliente(s), e, principalmente, sinalize quais serão os stakeholders desse cenário. Segundo Summerville (2009), podemos definir da seguinte forma: “Um stakeholder em uma arquitetura de software é uma pessoa, grupo ou entidade com um interesse ou preocupações sobre a realização da arquitetura.” Exemplos de Stakeholders Com base então no que já aprendemos, podemos então relacionar os seguintes exemplos e atribuições de stakeholders no desenvolvimento de um projeto de software: Gerente de Projeto – Responsável em organizar e conduzir as equipes em suas responsabilidades. Como gestor, precisa manter harmonia no desenvolvimento do projeto, supervisionando a execução das tarefas, observar os processos, sustentar e fomentar o equilíbrio entre os stakeholders, etc. Analista de Sistema – Responsável em analisar quais as características o que deverá ter o produto a ser desenvolvido para atingir o objetivo final, ou seja, o que o cliente espera. Para isso, busca analisar as especificidades inerentes ao determinado software. Programador – São os responsável em efetivamente desenvolver do software. Cabe a ele a implementação das linhas de códigos que construirão a identidade lógica do software. Patrocinador – Popularmente é quem “paga a conta”. É aquele que libera os recursos, custeia a produção do projeto. Ele será o responsável por prover financeiramente a arquitetura necessária para o desenvolvimento de software. Cliente (usuário) – É aquele que, a partir de uma necessidade, faz a encomenda de um software. Portanto, é quem vai usufruir do produto a ser entregue. seja ele apenas um ou um grupo de usuários. Contudo, além destes supracitados, podemos ter muitos outros stakeholders – que não são tão elementares, mas possuem algum tipo de interesse. Por exemplo: Para contextualizar melhor, acompanhe o exemplo abaixo: uma pessoa qualquer que ficou no carro aguardando o amigo ou parente devolver um filme, tem grande interesse no desempenho do sistema utilizado pela locadora. caso contrário, o tempo de espera será maior do que o previsto. Portanto, tanto quem está no carro aguardando, como quem está na locadora para devolver o filme, são stakeholders. Características dos Stakeholders São outras características dos stakeholders: São específicos para cada projeto. Possuem anseios e objetivos distintos em um projeto. São atores fundamentais para detalhamento do que deve ser desenvolvido. Mediante então a todos esse envolvimento, fato que pode atrapalhar consideravelmente o êxito de um projeto de software é a ocorrência de uma falha no levantamento dos stakeholders. Tal realidade pode representar que o gerente de projeto não estará pensando nas necessidades de todos os envolvidos. como conseqüência, podemos ter um software que não atende aquilo que o cliente esperava, e de que deverá ser revisto e ajustado posteriormente. Portanto, gerará desgastes de recursos, além da insatisfação daquele que encomendou o sistema. Entretanto, o gerente de projeto deve observar bem seus objetivos e não procurar stakeholders por todos lados, o que culminará em um cenário difícil de gerenciar. Deve haver limitação no escopo daqueles que afetam e/ou serão afetados pelo projeto. Caso contrário, com um pouco de imaginação, pode-se considerar stakeholder até a mulher do gerente de projeto que deixará de sair com o marido no fim de semana porque ele terá que trabalhar! Concluindo essa primeira etapa de nossa aula, esperamos que você possa ter entendido toda o envolvimento e influência dos stakeholders em um projeto de software, suas relações e inter-dependência na concepção e uso de um determinado sistema. Técnicas para levantamento de Requisitos Diferentemente do que pode representar a melhor das iniciativas, acionar os programadores para começarem a escrever linhas de códigos não deve ser o foco de atenção para o projeto de software, a abertura para toda a atividade de desenvolvimento de software deve ser o levantamento de requisitos. Como já sabemos, a fonte das informações inerentes ao que queremos automatizar está com os futuros usuários, os quais atualmente já desenvolvem as mesmas tarefas, de forma manual ou automática. Além que o clientenão estabelece claramente todas as regras relativas ao negócio. e quem está sendo contratado desconhece as especificidades referente ao processo que atualmente está em execução. Sommerville (2009) propõe um processo genérico de levantamento e análise que contém as atividades que veremos a seguir. Apesar de aparentemente parecer elementar, o problema de não saber especificar corretamente o que o sistema deverá fazer é muito rotineiro. Realidades como: (a) de um usuário principal do sistema não saber o que quer que o sistema faça ou sabe e não consegue/quer transmitir para o analista. Ou (b) requisitos identificados, mas que não exprimem a realidade. e (c) não estão em concordância com os requisitos informados por pessoas diferentes, são constantes na elaboração dos requisitos. Um stakeholder ou informação errada afetará em perda de tempo e dinheiro para ambas as partes envolvidas no desenvolvimento do sistema. É preciso aferir e revisar os requisitos. No tocante ao do analista responsável pelo levantamento dos requisitos, dois fatores contribuem para o baixo grau de satisfação dos usuários, o que aumenta consideravelmente a perspectiva do erro. São eles: Não utiliza uma técnica adequada para extrair os requisitos do sistema. Descrever os requisitos do sistema de modo pouco claro, com ambigüidades, sem consistência com todos os aspectos significativos do sistema proposto. Como contramedida para atacar primeiro item acima, vamos agora estudar sobre as técnicas de levantamento de requisitos, detalhando seu conceito e suas respectivas vantagens e desvantagens, que podem ser utilizadas em conjunto pelo analista. Etnografia A etnografia é caracterizada como uma técnica de observação, aonde o analista buscar uma familiarização do cliente, seus valores, sua história. Ela pode ser utilizada para compreender os requisitos sociais e organizacionais, que facilitem compreensão da política organizacional e da sua cultura. Workshops Trata-se de uma técnica de elicitação desenvolvida em grupo, usada em uma reunião estruturada. São integrantes do grupo que participaram do workshop: Equipe de analistas. Seleção dos stakeholders mais envolvidos no contexto em que o sistema atuará. A principal estratégia do workshop tem é acionar o trabalho em equipe. Há um facilitador neutro cujo papel é conduzir a workshop e promover a discussão entre os vários mediadores. As tomadas de decisão são baseadas em processos bem definidos e com o objetivo de obter um processo de negociação, mediado pelo facilitador. Uma vez encerrado, serão produzidas documentações que refletem os requisitos e decisões tomadas sobre o sistema a ser desenvolvido. Aspectos considerados importantes para o sucesso são: A postura do condutor do seminário - mediador e observador. Deve possuir dia, hora, local, horário de início e de término. destacando o assunto a ser debatido e sua documentação. Entrevistas A entrevista também é uma das técnicas de levantamento de requisitos. Tradicionalmente mais simples de utilizar, produz bons resultados na fase inicial de obtenção de dados. Sobre a entrevista, deve-se considerar: O entrevistador dê margem ao entrevistado para expor as suas idéias; Ter um plano de entrevista para que seja mantido o foco no cerne do assunto principal; Evita que a entrevista fique longa, deixando o entrevistado cansado e não produzindo bons resultados. Questionários: Existem vários tipos de questionários que podem ser utilizados. Entre estes podemos listar: múltipla escolha, lista de verificação e questões com espaços em branco. Um ambiente oportuno para o uso de questionário é quando há diversos grupos de usuários que podem estar em diversos locais diferentes do país. Neste caso, elaboram-se pesquisas específicas de acompanhamento com usuários selecionados, que a contribuição em potencial pareça mais importante, pois não seria prático entrevistar todas as pessoas em todos os locais. Questionários Identifique todos os destinatários que o receberão. Realize a distribuição junto com instruções detalhadas sobre seu preenchimento. Defina e informe o prazo para devolução do questionário. Documente o resultado da análise e consolidação das respostas dos participantes. Envie uma cópia com as informações levantadas para o participante, como sendo uma forma de agradecimento e consideração pelo tempo dedicado a pesquisa. Brainstorming Brainstorming é uma técnica para geração de idéias. Uma idéia preliminar gerada serve como incentivo para que outras apareçam, sejam concordantes ou não, propiciando um aprimoramento e compartilhamento de todos os envolvidos. Pode ser estabelecida uma ou várias reuniões. O número de idéias geradas deve ser bem grande, pois quanto mais idéias forem propostas, maior será a chance de aparecerem boas idéias. Os participantes também devem ser encorajados a combinar ou enriquecer as idéias de outros e, para isso, é necessário que todas as idéias permaneçam visíveis a todos os participantes. Uma vez definido que esta é a técnica mais apropriada para determinada situação, as próximas etapas necessárias para conduzir uma sessão de brainstorming estão elencadas nos balões em destaque. Seleção dos participantes ou grupo de trabalho: Estes devem ser selecionados em função direta com as contribuições que possam oferecer durante a sessão. É aconselhável sempre a presença de pessoas que estejam sempre bem informadas, sejam de diferentes grupos. Prepara a sessão: Duração e local do encontro, bem como o que será tratado. Explicar a técnica e as regras a serem seguidas: Definir os conceitos básicos de brainstorming e as regras a serem seguidas durante a sessão. Gerar ou produzir uma boa quantidade de idéias: Os participantes geram tantas idéias quantas forem exigidas pelos tópicos que estão sendo o objeto do brainstorming. Os participantes são convidados, um por vez, a dar uma única idéia. Se alguém tiver problema, passa a vez e espera a próxima rodada. Analisar as idéias: Revisar a produção de idéias, destacando as mais valiosas definidas pelo grupo e classificando-as com prioridades. Prototipagem Protótipo tem por alvo explorar requisitos vinculados a um produto que possua aspectos críticos, implementando de maneira mais rápida um pequeno subconjunto de funcionalidades deste produto. O protótipo é aconselhado para: As técnicas utilizadas na elaboração do protótipo são várias: interface de usuário, relatórios textuais, relatórios gráficos, entre outras. Um dos principais benefícios que podemos relacionar são as reduções dos riscos na construção do sistema, pois é possível detectar se o usuário chave já verificou o que o analista captou nos requisitos do produto. São elementos para o sucesso na elaboração dos protótipos: Seleção do ambiente de prototipagem; Compreender os objetivos do protótipo por parte de todos os interessados no projeto; Focar em áreas que estejam com maior dificuldade na compreensão. Rapidez na construção. JAD Por fim, não menos importante, vamos apresentar uma técnica de grande adesão pelos analistas a fim de realizar o levantamento de requisitos: JAD (Joint Application Design). É uma técnica destinada a principalmente promover cooperação, entendimento e trabalho em grupo entre os usuários desenvolvedores. Com a intenção de facilitar a criação de uma visão compartilhada do que o produto de software deve ser, ela ajuda os usuários e desenvolvedores a formular problemas e explorar soluções, no escopo do projeto a ser desenvolvido. Tal fato estabelece sentimento de envolvimento, posse e responsabilidade com o sucesso do produto. Possui quatro princípios básicos: Dinâmica de grupo: São realizadas reuniões com um líder experiente, analista, usuários e gerentes, para despertar a força e criatividade dos participantes. O resultado final será a determinação dos objetivos e requisitos do sistema. Uso de técnicas visuais:Para aumentar a comunicação e o entendimento. Manutenção do processo organizado e racional: O JAD emprega a análise top down e atividades bem definidas. Possibilita assim, a garantia de uma análise completa reduzindo as chances de falhas ou lacunas no projeto e cada nível de detalhe recebe a devida atenção. Utilização de documentação padrão: Preenchida e assinada por todos os participantes. Este documento garante a qualidade esperada do projeto e promove a confiança dos participantes. Nesta aula, você: Compreendeu o que é um stakeholders. Aprendeu sobre técnicas para levantamento de requisitos. Analisou diferentes estratégicas para um bom levantamento de requisitos. O que vem na próxima aula: Documento de Requisitos de Software. Composição do Documento de Requisitos de Software. Utilidade e validade do Documento de Requisitos de Software. 1. Qual a composição da palavra stakeholder? 1) Stake = intresse; Holder = constrói. 2) Stake = zelo; Holder = participa. 3) Stake = interesse; Holder = possui. 4) Stake = fator; Holder = participa. 5) Stake = interesse = Holder = faz. 3 2. São exemplos de técnicas de levantamento de requisitos: 1) Stakeholders, etnografia, JAD. 2) Etnografia, prototipagem, JAD. 3) Assembléia, questionário, entrevista. 4) Viagem, debate, questionário. 5) Debate, reunião, etnografia. 2 3. Os requisitos são verificados para descobrir se estão completos e consistentes e se estão em concordância com o que os stakeholders desejam do sistema. Qual a etapa do levantamento de requisitos que compreende a atividade descrita? 1) Compreensão de domínio. 2) Coleta de requisitos. 3) Verificação de requisitos. 4) Alteração de requisitos. 5) Rastreamento de requisitos. 3 Aula 05: Documentação de Requisitos de Software Nesta aula, você irá: 1. Aprender sobre o documento de requisitos. 2. Reconhecer a importância da elaboração do documento de requisitos. 3. Verificar os pontos prioritários e a atenção na redação de um documento. 4. Compreender quem são os envolvidos no processo de criação de um documento de requisitos. 5. Verificar a composição de um documento de requisitos. Até essa etapa, conseguimos estabelecer uma boa perspectiva de todo o contexto que envolve um projeto relacionado a desenvolvimento de software. Mesmo para aqueles que já atuam na área de desenvolvimento de sistema, mas a cada aula vamos adicionando necessidades e entendendo que não basta codificar uma sequência lógica de um procedimento em uma determinada linguagem de programação, mas que existem métodos que auxiliam e estabelecem modelos para que possamos alcançar um resultado mais aderente e satisfatório junto ao cliente. Tudo que estamos estudando nessa disciplina é para fazer com que entendamos bem do problema, da sistemática já ou se existente - quem está contratando, além de estabelecer um elo entre o que se espera e o que será entregue. Conceito De acordo com Sommerville (2009): “o documento de requisitos de software, às vezes chamado de Especificação de Requisitos de Software (SRS – do inglês Software Requeriments Specification), é uma declaração oficial do que os desenvolvedores do sistema devem implementar”. Enfim, como sabemos que a área de requisitos de sistemas tem total ligação com o fator qualidade para o desenvolvimento de software, o documento de requisitos trata então de indicar e detalhar sobre os componentes a serem inseridos no sistema que está sendo construído. Uma vez concluído, se comportar como uma bússola que detalha quais as ferramentas a serem estabelecidas ao término do projeto. Como tudo o que vimos até agora, não seria diferente com este documento. Enfim, não é simplesmente criar um documento no editor de texto e digitar os itens e seus respectivos conceitos. É preciso ter disciplina e orientação para alcançar um documento que seja acessível e entendido pelos diversos participantes do projeto, evitando que ele seja o primeiro recurso de desentendimento e dificuldade para a compreensão do que está sendo desenvolvido. Portanto, vamos então conhecer sobre o documento de requisitos de software! Objetivo Exemplo Veja o exemplo abaixo, retirado do livro do PFLEEGER (Engenharia de Software – Teoria e Prátíca – 2ª Edição, pág. 140): Em 1995, a Organização Australiana de Defesa e Tecnologia relatou os resultados de uma pesquisa sobre problemas com especificação de requisitos na Marinha. Um dos problemas destacados foi a disparidade no nível das especificações. Isto é, alguns requisitos foram especificados em um nível alto e outros em um nível muito baixo. A disparidade era composta de diversas situações: Algumas vezes, os analistas de requisitos utilizaram diferentes estilos de escrita, especialmente em área diferentes do sistema. A diferença de experiência entre os analistas levou a diferentes níveis de detalhes nos requisitos. Na tentativa de reutilizar os requisitos a partir de sistemas anteriores, os analistas empregaram diferentes formatos e estilos de escrita. Os analistas, algumas vezes, mesclaram requisitos com soluções parciais, levando a sérios problemas para o projeto de uma solução com boa relação custo-benefício. Frequentemente, os requisitos foram excessivamente especificados, quando os analistas identificaram tipos específicos de computadores e linguagens de programação assumiram uma solução específica ou impuseram processos e protocolos não apropriados. Algumas vezes, os requisitos foram pouco especificados, especialmente ao descreverem o ambiente de operação, manutenção, simulação para treinamento, computação administrativa e tolerância a falhas. Exemplos de usuário Conforme apontando em Sommerville (2009) na Figura 1, são estes exemplos de usuários de um documento de requisitos de software: Clientes do Sistema: Especificam e lêem os requisitos para verificar se estes satisfazem suas necessidades. Os clientes especificam as alterações nos requisitos. Gerentes: Usam documentos de requisitos para planejar uma proposta para o sistema e para planejar o processo de desenvolvimento do sistema. Engenheiros de Sistemas: Usam os requisitos para entender o sistema que será desenvolvido. Engenheiros de Testes de Sistemas: Usam os requisitos para desenvolver testes de validação de sistema. Engenheiros de Manutenção de Sistema: Usam requisitos para entender o sistema e os relacionamentos entre suas partes. Da mesma particularidade que existe em um projeto de software, tornando-o único em algum(ns) ponto(s), toda a informação a ser disposta no documento de requisitos tem total vínculo com o perfil do sistema a ser desenvolvido. Portanto, podemos encontrar documentos com o foco sobre a definição de requisitos de usuários e os requisitos não funcionais, ou que envolva requisitos de sistemas e requisitos funcionais, bem como outras combinações entre eles. Ainda sob o aspecto de fatos particulares, outro aspecto que deve também ser definido é o nível de detalhamento a ser utilizado para descrição dos requisitos no documento. Perfil de um Documento Então agora, mais contextualizados sobre o perfil de um documento de requisitos, passaremos para uma nova etapa, na qual iremos aprender detalhes sobre a sua estrutura, conhecendo o que pode ser considerado para a sua criação. Para tal finalidade, utilizaremos a composição definido por Sommerville (2009) – bibliografia básica de nossa disciplina, a qual está disposta abaixo: Prefácio: Deve definir os possíveis leitores do documento e descrever seu histórico de versões, incluindo uma justificativa para a criação de uma nova versão e um resumo das mudanças feitas em cada versão. Introdução: Deve descrever a necessidade para o sistema. Deve descrever brevemente as funções do sistema e explicar como ele vai funciona com outros sistemas. Também deve descrever como o sistema atendeaos objetivos globais do negócio ou estratégicos da organização que encomendou o software. Glossário: Deve definir os termos técnicos usados no documento. Não deve conter suposições sobre o conhecimento ou experiência do leitor. Definição de requisitos de usuário: USUÁRIO:Deve descrever os serviços oferecidos ao usuário. Os requisitos não funcionais do sistema também devem ser descritos nessa seção. Essa descrição pode usar linguagem natural, diagramas ou outras notações compreensíveis para os clientes. Normas produtos que devem ser seguidos devem sem especificados. Modelos do sistema: Pode incluir modelos gráficos do sistema que mostram relacionamentos entre os componentes do sistema, o sistema e seu ambiente. Evolução do sistema: Deve descrever os pressupostos fundamentais em que o sistema se baseia, bem como quaisquer mudanças previstas, em decorrência da evolução do hardware, de mudanças nas necessidades do usuário, etc. Essa seção é útil para projetistas de sistemas, pois pode ajudá-los a evitar decisões capazes de restringir possíveis mudanças futuras no sistema. Apêndices: Deve fornecer informações detalhadas e especificas em relação à aplicação em desenvolvimento, além das descrições de hardware e banco de dados, por exemplo. Os requisitos de hardware definem as configurações mínimas do sistema. Requisitos de banco de dados definem a organização lógica dos dados usados pelo sistema e os relacionamentos entre esses dados. Índice: Vários índices podem ser incluídos no documento. Pode haver, além de um índice alfabético normal, um índice de diagramas, de funções, dentre outros que sejam pertinentes. Nesta aula, você: Compreendeu sobre a necessidade e importância da elaboração de um documento de requisitos de sistemas. Aprendeu a estrutura e componentes de um documento de requisito. Analisou uma proposta para elaboração de um documento de requisito. 1. É uma característica do documento de requisitos: 1) Totalmente técnico. 2) Lido apenas pelos programadores e analista de sistemas. 3) Lido apenas pelos clientes e pelo patrocinador do projeto. 4) Documento gerencial, restrito à cúpula da organizacional. 5) Por várias pessoas que tenham envolvimento no projeto do software. 5 2. Fazem parte da estrutura de um documento de requisitos: 1) Prefácio, introdução e definição do ambiente de trabalho do cliente. 2) Introdução, lista programadores e índices. 3) Definição de requisitos de usuário, modelos do sistema e evolução do sistema. 4) Configuração do sistema operacional, detalhamento da equipe de projetistas e apêndices. 5) Definição de requisitos de usuário, introdução e a norma ISO correspondente. 3 3. São usuários de um documento de requisitos: 1) Clientes do sistema. 2) Entidades não governamentais. 3) Fornecedores da empresa que solicita o software. 4) Os bancos e outras instituições financeiras. 5) Todos citados nos itens anteriores. 1
Compartilhar