2
Introdução aos Sistemas de Informação
Aula 2 - Processo de Software
Material elaborado pelas Profas. Junia e Rosângela
0
Um processo de software – conjunto de atividades e resultados associados que geram um produto
de software. Essas atividades são, em sua maioria, executadas por desenvolvedores sistemas..
Há 4 atividades fundamentais no processo de software:
1. Especificação do Software – definição de requisitos e análise de requisitos - a
funcionalidade do software e as restrições em sua operação devem ser definidas.
2. Desenvolvimento do Software – projeto e implementação - o software deve ser produzido de
modo que atenda a suas especificações.
3. Validação do software – integração e teste - o software tem de ser validado para garantir que
ele faz o que o cliente deseja.
4. Evolução do software – o software deve evoluir para atender às necessidades mutáveis do
cliente.
Existem também os custos de evolução (manutenção), alteração do software depois que foi
colocado em uso.
0
25
50
100
Especificação
MODELO DE PROCESSO DE SOFTWARE
É a descrição simplificada de um processo de software, que é apresentada a partir de uma
perspectiva específica. Os modelos são abstrações do processo real que está sendo descrito. Dentre
os modelo de processo destacam-se atividades que são parte do processo de software, produtos de
software e o papel das pessoas envolvidas na engenharia de software.
Exemplos de tipos de processo.
1. Um modelo de workflow – mostra a seqüência de atividade no processo, juntamente com
suas entradas, saídas e dependências. As atividades, nesse modelo, representam ações
humanas.
2. Um modelo de fluxo de dados ou de atividade – representa o processo como um conjunto de
atividades, cada uma das quais realiza alguma transformação de dados. Esse modelo mostra
como a entrada para o processo, tal como uma especificação, é transformada em uma saída,
como um projeto. As atividades podem estar em um nível inferior ao das atividades em um
modelo de workflow. Elas podem representar transformações realizadas por pessoas ou
computadores.
3. Um modelo de papel/ação – representa papéis das pessoas envolvidas no processo de
software e as atividades pelas quase elas são responsáveis.
Custos da engenharia de software
Depende do processo utilizado e do tipo de software que está sendo desenvolvido. O custo total de
desenvolvimento de um complexo sistema de software como sendo de cem unidades de custo, a
distribuição dessas unidades será semelhante ao mostrado nos esquemas a seguir.
0
25
50
100
Especificação
Projeto
Implementação
25
Integração e teste
Se uma abordagem não linear, mas iterativa, com refinamentos sucessivos for utilizada, não existe
uma linha exata entre especificação projeto e desenvolvimento.
Desenvolvimento
50
desenvolvimento cíclico e iterativo
75
100
Teste de sistema
Evolução do Sistema
O que é uma CASE – Computer-aided software engineering – refere-se a uma ampla gama de
diferentes tipos de programas utilizados para apoiar as atividades de processo de software, como
análise de requisitos, a modelagem de sistemas, a depuração e os testes.
Ferramentas CASE podem também incluir um gerador de códigos que, automaticamente, origina
código fonte a partir do modelo de sistema e alguma orientação de processo.
Upper-CASE – destinada a dar apoio à análise e ao projeto. (apoio às fases iniciais)
Lower-CASE – destinadas a dar apoio à implementação e aos testes, com os depuradores, sistemas
de análise de programa, geradores de casos de testes e editores de programas.
Propriedades de um Bom Software
Os software devem ser controlados por propriedades intrínsecas a ele, como: tempo de resposta do
software à consulta do usuário e a facilidade de compreensão do código do programa.
Por exemplo: um sistema bancário tem de ser seguro, um jogo interativo deve ter uma resposta
rápida, um sistema de controle de telefonia precisa ser confiável, etc.. Podem ser resumidos na
Tabela 1.
Tabela 1 – Atributos para um bom software
Facilidade de Manutenção O software deve ser escrito de modo que possa evoluir para
atender às necessidades mutáveis dos clientes.
Essas
mudanças estão relacionadas ao ambiente de negócios que
pode ter constantes mutações
Nível de Confiança
Tem uma gama de características que incluem confiabilidade,
proteção e segurança. O software confiável não deve ocasionar
danos físicos ou econômicos, no caso de defeitos no sistema.
Eficiência
O software não deve desperdiçar os recursos do sistema, como
memória e ciclos de processador. A eficiência, portanto, inclui
a rapidez de resposta, o tempo de processamento, a utilização
de memória, entre outros.
Facilidade de Uso
Deve ser utilizável, sem esforços indevidos, pelo tipo de
usuário para quem foi projeto. Isso significa que ele deve
dispor de uma interface apropriada com o usuário e de
documentação adequada.
O processo de desenvolvimento do software deve ser de qualidade, com essas propriedades
garantidas, para que o produto também seja.
4
3
Responsabilidade Profissional e ética
1. Confidencialidade – respeitar seus empregadores ou clientes, quer tenham ou não assinado
um acordo formal, quanto ao sigilo de informações.
2. Competência – não devem enganar quanto ao seu nível de competência, ou seja, não devem
aceitar serviços que estejam fora do seu limite de competência.
3. Direitos de propriedade intelectual – estar cientes das leis locais que regulam o uso da
propriedade intelectual, como patentes e direitos autorais. Eles devem ser cuidadosos, a fim
de assegurar que a propriedade intelectual de empregadores e clientes seja protegida.
4. Má utilização de computadores – não empregar suas habilidades técnicas para o mau uso de
computadores de outras pessoas. Abrange desde casos triviais – jogar no computador do
cliente- até casos sérios – disseminação de vírus.
Existem sociedade e instituições profissionais que desempenham importante papel a esse respeito –
ACM (Association for Computing Machinery), o IEEE (Institute of Electrical am d Electronic
Engineers) e a British computer Society – publicam um código de conduta profissional ou código
de ética.
Engenharia de Sistemas
É a atividade de especificar, projetar, implementar, validar, implantar e manter os sistemas como
um todo. Os engenheiros de sistema não se ocupam apenas com o software, mas com as interações
de software, hardware e sistema com os usuários e seu ambiente.
(recordar conceitos de sistemas)
Propriedades emergentes de sistemas
São as propriedades (atributos) do sistema como um todo, muitas vezes é difícil prever os valores
dessas propriedades com antecedência.
Tipos de propriedades:
1. funcionais: que aparecem quando todas as partes de um sistema trabalham em conjunto para
atingir algum objetivo. Ex: bicicleta propriedade funcional de ser um dispositivo de
transporte.
2. não funcionais: confiabilidade, desempenho, segurança e proteção. Essas propriedades se
relacionam com o comportamento do sistema em seu ambiente operacional.
EX: Confiabilidade de sistema – é um conceito complexo, deve-se levar em conta componentes
individuais. Pode-se falar em:
a) Confiabilidade de hardware – qual a probabilidade de um componente de hardware
falhar e quanto tempo leva para reparar esse componente?
b) Confiabilidade de software – qual é a probabilidade de que um componente de
software venha a produzir uma saída incorreta? (diferente da falha de hardware, pois
o software não se desgasta), ele pode prosseguir em operação mesmo depois que um
resultado incorreto tenha sido produzido.
c) Confiabilidade de operador – qual a probabilidade de que o operador de um sistema
cometa um erro?
Esses itens não podem ser pensados antecipadamente.
Sistemas e seu ambiente
Sistemas não são entidades independentes, mas existem em um ambiente. Esse ambiente afeta o
funcionamento e o desempenho do sistema. A figura 1 mostra alguns dos sistemas que podem ser
incorporados em um edifício de escritórios, subsistemas.
Cidade
Rua
Edifício
Sistema de
Sistema de
Aquecimento energia
Sistema de
água
Sistema de
Segurança
Sistema de
esgoto
Sistema de
iluminação
Figura 1 - Hierarquia de Sistemas
O ambiente local do sistema de segurança, por exemplo, são os outros sistemas dentro do edifício.
Enquanto que o ambiente total inclui todos os outros sistemas do lado de fora do edifício, na rua e
na cidade, bem como os sistemas naturais.
O sistema é concebido para produzir mudanças em seu ambiente. Assim, um sistema de
aquecimento modifica seu ambiente, aumentando ou diminuindo a temperatura. O funcionamento
correto do sistema, portanto, somente pode ser avaliado pelos efeitos sobre o ambiente.
O funcionamento de um sistema pode ser afetado pelas mudanças de seu ambiente, exemplo:
sistema elétrico em um edifício pode ser afetado por mudanças ambientais do lado de fora do
edifício: cabo de força pode ser cortado e o edifício ficara sem energia.
Como existe o ambiente físico, existe também o ambiente organizacional, que inclui políticas e
procedimentos que são, por sua vez, regidos por questões políticas, econômicas, sociais e
ambientais mais amplas. Fatores humanos e organizacionais provenientes do ambiente do sistema
que afetam o projeto de sistema destacam-se:
1. Mudanças no processo – O sistema requer mudanças nos processos de trabalho, no
ambiente? Se sim, há necessidade de treinamento especifico. Se as mudanças forem
significativas envolvendo pessoas e ate perda de empregos, os usuários podem resistir ao
sistema.
2. Mudanças nas tarefas – Os sistemas diminuem a habilidade dos usuários em um ambiente ou
faz com que eles modifiquem o modo como trabalham? Se sim, eles podem resistir à
introdução do sistema na organização. Projetos que envolvem gerentes que precisam mudar
seu modo de trabalhar, para a adequação ao sistema de computadores, freqüentemente se
ressentem disso. Gerentes podem achar que seu status na organização está sendo reduzido,
em virtude desse sistema.
5
6
3. Mudanças organizacionais - sistema modifica a estrutura de poder político em uma
organização? Exemplo, se uma organização depende de um sistema complexo, aqueles que
sabem operar o sistema têm bastante poder político.
Modelagem de sistemas
1. Componentes de sensores – coletam informações do ambiente do sistema. Exs: radares em
um sistema de controle de tráfego aéreo, sensores de posicionamento de papel em uma
impressora, um par termoelétrico em uma fornalha.
2. Componentes de atuadores causam alguma mudança no ambiente do sistema. Exs: válvulas
que se abrem e fecham para passagem de líquidos, superfícies de vôo em uma aeronave, que
controlam o ângulo de vôo, e o mecanismo de alimentação de papel em uma impressora.
3. Componentes de computação – aqueles que considerando alguma entrada realizam algumas
computações sobre essa entrada e produzem uma saída. Ex: processador de ponto flutuante
que realiza computações sobre os nros reais.
4. Componentes de comunicação – aqueles cuja função é coordenar uma operação com outros
componentes. Exs: um escalador em um sistema de tempo real, que decide quando os
diferentes processos devem ser escalados para serem executados em um processador.
5. Componentes de interface – que transformam a representação utilizada por um componente
de sistema em uma representação empregada por outro componente. EX:um componente de
interface humana, que considera algum modelo de sistema e o exibe para o operador
humano. Conversor analógico-digital que converte uma entrada analógica em saída digital.
Como parte dos requisitos do sistema e da atividade de projetos, o sistema precisa ser modelado
como um conjunto de componentes e de relações entre esses componentes Æ Modelo de
arquitetura.
A arquitetura do sistema é retratada como um diagrama de blocos, mostrando os subsistemas
principais e as inter-conexões entre eles. Cada subsistema é representado por um retângulo, no
diagrama de blocos; as flechas indicam a existência de uma relação entre eles (Figura 2).
Sensores de
movimento
Sensores de
porta
Considerando esses componentes para o exemplo anterior tem-se a Tabela 3.
Controlador
de alarme
Sirene
Sintetizador
de voz
Discador
de telefone
Centro de controle
externo
Figura 2 - Componentes principais do Sistema de alarme contra intrusos
Tabela 2 - Funcionalidade de subsistemas no sistema de alarme
Subsistema
Descrição
Sensor de movimento
Detecta movimento nos cômodos monitorados pelo sistema
Sensor de porta
Detecta a abertura de porta nas portas externas do edifício
Controlador de alarme
Controla a operação do sistema
Sirene
Emite um aviso sonoro quando um intruso é detectado.
Sintetizador de voz
Sintetiza uma mensagem de voz dando a localização do possível
intruso
Discador de telefone
Faz as chamadas externas para avisar a segurança, a policia, etc..
O sistema é decomposto em subsistemas. Cada subsistema pode ser representado da mesma maneira
até que o sistema seja decomposto em componentes funcionais Æ única função, Tabela 2.
Historicamente o modelo de arquitetura foi utilizado para identificar componentes de hardware e
software que possam ser desenvolvidos em paralelo. Contudo, essa distinção (hardware/software)
está se tornando irrelevante. Assim, atualmente, é mais apropriado classificar os subsistemas de
acordo com sua função, antes de serem tomadas decisões sobre as vantagens e as desvantagens
referentes a hardware/software.
Componentes funcionais de sistemas
Tabela 3 Componentes de sistemas e suas funções
Tipos de componentes
Componentes
Função
Sensor
Sensor de movimento, Detecta movimento nos cômodos
sensor de porta
monitorados pelo sistema. Detecta a
abertura de porta nas portas externas do
edifício
Atuador
Sirene
aviso sonoro quando um intruso é
detectado
Comunicação
Discador de telefone Aciona o centro de controle externo
para emitir um aviso de intrusão.
Recebe comandos do centro de controle.
Coordenação
Controlador de alarme Coordena todos os componentes do
sistema. Atua nos comandos do painel
de controle e do cento de controle.
Interface
Sintetizador de voz
Sintetiza mensagem dando a localização
da intrusão.
O processo de engenharia de sistemas
Engenharia de sistemas x engenharia de software – existem importantes distinções:
a) envolvimento interdisciplinar – diferentes disciplinas de engenharia podem estar envolvidas
na engenharia de sistemas. Há uma imensa possibilidade de mal-entendidos devido à
terminologia diferente utilizada por diferentes engenheiros.
b) Possibilidade reduzida de refazer o trabalho durante o desenvolvimento de sistemas – altos
custos para mudanças, por ex, mudar a localização de radares em um sistema de controle de
trafego aéreo. Software se tornou importante para os sistemas, pois ele permite flexibilidade,
devido às mudanças durante o desenvolvimento do sistema, em resposta a novos requisitos.
Engenharia de sistemas Æ atividade interdisciplinar que envolve equipes com diferentes formações
técnicas. As fases são as mostradas na Figura 3:
8
Especificação
de requisitos
Desativação
do sistema
Projeto do
sistema
Evolução do
sistema
2- Propriedades de sistemas – são propriedades emergentes de sistemas não funcionais. Podem
incluir propriedades como desempenho, segurança, entre outras. Afetam os requisitos de
todos os subsistemas.
3- Características que o sistema não deve exibir – especificar o que o sistema não deve fazer e
quanto ele deve fazer. Por ex, no sistema de trafego aéreo, o sistema não deve apresentar
muitas informações ao controlador.
É importante: estabelecer os objetivos gerais que o sistema deve cumprir.
Desenvolvimento
de subsistema
Instalação do
sistema
Integração do
sistema
Figura 3 – Processo de engenharia de sistemas
Especificação de Requisitos
Um completo entendimento dos requisitos do software é essencial para o sucesso de um esforço de
desenvolvimento de software. A atividade de especificação de requisitos é um processo de
descoberta, refinamento, e modelagem. O escopo do software definido no planejamento do projeto é
refinado em detalhe, as funções e o desempenho do software são especificados, as interfaces com
outros sistemas são indicadas e as restrições que o software deve atender são estabelecidas.
Modelos dos dados requeridos, do controle e do comportamento operacional são construídos.
Finalmente, critérios para a avaliação da qualidade em atividades subseqüentes são estabelecidos.
Os principais profissionais envolvidos nesta atividade são o engenheiro de software (muitas vezes
chamado analista) e o cliente / usuário.
A atividade a ser desenvolvida é capturar os requisitos sob uma perspectiva dos usuários, isto é, os
modelos gerados procuram definir as funcionalidades e restrições que devem ser consideradas para
atender às necessidades dos usuários;
A etapa de Especificação de Requisitos é independente do modelo de processo escolhido, uma
vez que trata os requisitos do sistema sob uma perspectiva externa.
***************************
Definição de Requisitos gerais (funcionais e não funcionais) de um sistema
Levantar os requisitos do sistema como um todo, envolve consultas com os clientes e usuários finais
do sistema.
Três tipos de requisitos compõem essa atividade:
1- Requisitos funcionais abstratos – funções básicas que o sistema deve oferecer, definidas em
um nível abstrato. A especificação detalhada de requisitos funcionais ocorre no nível de
subsistema. Ex: controle de tráfego aéreo, essa atividade de definição de requisitos,
provavelmente, identificaria a necessidade de uma base de dados de plano de vôo para
armazenar os planos de vôos de todas as aeronaves que ingressarem no espaço aéreo
controlado.
EX: •Considere um sistema, para um prédio de escritórios, que deve oferecer proteção contra
incêndios e detecção de intrusos.
Declaração de Objetivos:
Fornecer um sistema de alarme contra incêndios e contra intrusos para o edifício, com o objetivo
de divulgar avisos internos e externos referentes a incêndios ou à entrada de pessoa não
autorizada.
Existem níveis de requisitos que devem ser respeitados para que se tenha uma boa definição de
requisitos:
- Requisitos dos usuários - para designar os requisitos abstratos de alto nível. São declarações,
em linguagem natural e também em diagramas, sobre as funções que o sistema deve
fornecer e as restrições sob as quais deve operar.
Devem ser escritos para gerentes do clientes e dos fornecedores que não tenham um
conhecimento detalhado do sistema.
- Requisitos de sistema - para indicar a descrição detalhada que o sistema deverá fazer.
Estabelecem detalhadamente as funções e as restrições de sistemas. O documento de
requisitos de sistema, algumas vezes chamado de especificação funcional, deve ser preciso e
pode servir como um contrato entre o comprador do sistema e o desenvolve-dor de software.
Devem ter como alvo os profissionais técnicos de nível sênior e os gerentes de projeto.
- Especificação de projeto de software– é uma descrição abstrata do projeto de software que é
uma base para o projeto e a implementação mais detalhados. Essa especificação acrescenta
detalhes à especificação de requisitos do sistema.
É um documento orientado à implementação, deve ser escrito para os engenheiros de
software que desenvolverão o sistema.
Exemplos:
Requisitos do usuário: 1. O software deve oferecer um meio de representar e acessar arquivos
externos criados por outras ferramentas.
Requisitos do sistema:
1.1. O usuário deve dispor de recursos para definir o tipo dos arquivos externos.
1.2. Cada tipo de arquivo externo pode ter uma feramenta asscoiada que pode ser aplicada a ele.
1.3. Cada tipo de arquivo externo pode ser representado como um ícone especifico na tela do
usuário.
1.4. Devem ser fornecidos recursos para o ícone que representa um arquivo externo, a ser definido
pelo usuário.
1.5. Quando um usuário seleciona um ícone que representa um arquivo externo, o efeito dessa
seleção é aplicar a ferramenta associada como tipo de arquivo externo representado pelo ícone
selecionado.
A Tabela 4 apresenta os diferentes leitores para os tipos de especificação de software.
9
Tabela 4 – Leitores para os diferentes tipos de especificação
Requisitos dos usuários
Gerentes de clientes, usuários finais de sistemas, engenheiros
de clientes, gerentes do fornecedor, arquitetos de sistemas
Requisitos de sistema
Usuários finais de sistemas, engenheiros do cliente, arquitetos
de sistemas, desenvolvedores de software.
Especificação de projeto Engenheiros do cliente (talvez), arquitetos do sistema,
de software
desenvolvedores de software.
10
estabelecem a taxa aceitável de falhas, os requisitos de portabilidade e os requisitos de
facilidade de uso.
Requisitos do
produto
Requisitos de
confiabilidade
Definindo Requisitos Funcionais e Não Funcionais
Requisitos de
eficiência
Requisitos funcionais: São declarações de funções que o sistema deve fornecer, como o sistema
deve reagir a entradas específicas e como deve se comportar em determinadas situações. Em alguns
casos, os requisitos funcionais, podem também explicitamente declarar o que o sistema não deve
fazer. Especificação deve ser completa e consistente.
Completa – que todas as funções requeridas pelo usuário devem estar definidas.
Consistente – requisitos não devem ter informações contraditórias.
A maioria dos problemas na especificação/desenvolvimento de sistemas ocorre devido ao não
cuidado nessa fase.
Os requisitos não funcionais nem sempre dizem respeito ao sistema de software a ser desenvolvido.
Alguns requisitos não funcionais podem restringir o processo que pode ser utilizado para
desenvolver o sistema.
Exemplos: Especificação de padrões de qualidade, que deve ser utilizada no processo, uma
especificação de que o projeto deve ser produzido com um conjunto especificado de ferramentas
CASE e uma descrição de processo a ser seguido.
A Figura 4 exibe os tipos de requisitos não funcionais existentes.
1. Requisitos de produtos: são os requisitos que especificam o comportamento do produto.
Entre os exemplos estão os requisitos de desempenho sobre com que rapidez o sistema deve
operar e a quantidade de memória que ele requer, os requisitos de confiabilidade, que
estabelecem a taxa aceitável de falhas, os requisitos de portabilidade e os requisitos de
facilidade de uso.
2. Requisitos de produtos: são os requisitos que especificam o comportamento do produto.
Entre os exemplos estão os requisitos de desempenho sobre com que rapidez o sistema deve
operar e a quantidade de memória que ele requer, os requisitos de confiabilidade, que
Requisitos de
desempenho
Requisitos de
espaço
Requisitos de
portabilidade
Requisitos não
funcionais
Requisitos
organizacionais
Requisitos de
entrega
Requisitos de
implementação
Requisitos não funcionais: São aqueles que não dizem respeito diretamente às funções específicas
fornecidas pelo sistema. Eles podem estar relacionados a propriedades de sistemas como :
confiabilidade, tempo de resposta e espaço em disco. Como alternativa, eles podem definir
restrições para o sistema como a capacidade dos dispositivos de E/S e as representações de dados
utilizadas nas interfaces de sistema.
O não cumprimento de um requisito não funcional pode tornar o sistema inútil.
Exemplo: Se um sistema de aviação não atender aos seus requisitos de confiabilidade, ele não será
atestado como seguro para operação; se um sistema de tempo real falhar em cumprir com seus
requisitos de desempenho, as funções de controle não operarão corretamente.
Requisitos de
facilidade de
uso
Requisitos de
padrões
Requisitos
externos
Requisitos de
interoperabilidade
Requisitos de
éticos
Requisitos de
legais
Requisitos de
privacidade
Requisitos de
segurança
Figura 4 - Classificação dos Tipos de Requisitos Não Funcionais
3. Requisitos organizacionais: são procedentes de políticas e procedimentos nas organizações
do cliente e do desenvolvedor. Exemplos: padrões de processo que devem ser utilizados, os
requisitos de implementação, como a linguagem de programação ou o método de projeto
utilizado, e os requisitos de fornecimento, que especificam quando o produto e seus
documentos devem ser entregues.
4. Requisitos externos: abrange todos os requisitos procedentes de fatores externos ao sistema
e a seu processo de desenvolvimento. Dentre eles destacam-se os requisitos de
interoperabilidade, que definem como o sistema interage com outras organizações, os
requisitos legais, que devem ser seguidos para assegurar que o sistema opera de acordo com
a lei, e os requisitos éticos. Os requisitos éticos são definidos em um sistema para garantir
que este será aceitável para seus usuários e o publico em geral.
11
Exemplos de requisitos não funcionais
Requisito de produto: Deve ser possível que toda a comunicação necessária entre o ambiente
APSE e o usuário seja expressa no conjunto-padrão de caracteres Ada.
Requisito organizacional: O processo de desenvolvimento de sistema e os documentos a serem
entregues deverão estar de acordo com o processo e os produtos a serem entregues, definidos
em XYZCo-SP-STAN-95.
Requisito Externo: O sistema não deverá revelar aos operadores nenhuma informação pessoal
sobre os clientes, além de seus nomes e o número de referencia.
Tratamento dos Requisitos de usuário – Problemas e formas de Solução
Os requisitos de usuário para um sistema devem descrever os requisitos funcionais e não funcionais
de modo compressível pelos usuários do sistema que não têm conhecimentos técnicos detalhados.
Eles devem especificar somente o comportamento externo do sistema, evitando tanto quanto
possível as características de projeto de sistema. Conseqüentemente, não devem ser definidos
utilizando-se um modelo de implementação. Eles podem ser descritos com o uso de linguagem
natural, formulários e diagramas intuitivos simples.
Problemas que normalmente ocorrem:
1- Falta de clareza – é difícil utilizar a linguagem de maneira precisa e sem ambigüidade, sem
produzir um documento de difícil leitura.
2- Confusão de requisitos – quando os requisitos funcionais e não funcionais, os objetivos do
sistema e as informações sobre o projeto não estão claramente definidos.
3- Fusão de requisitos – quando vários requisitos diferentes são expressos junto como um
único requisito.
12
Os requisitos de sistema deveriam em principio definir o que o sistema deveria fazer, e não como
ele teria de ser implementado. A linguagem natural por ser ambígua pode gerar problemas nesse
documento. Dessa forma existem outras formas: linguagem natural estruturada, linguagem de
descrição de projeto, notações gráficas, especificações matemáticas.
Formalização: O documento de requisitos de software
É a declaração oficial do que é exigido dos desenvolvedores de sistema. Ele deve incluir os
requisitos de usuário para um sistema e uma especificação detalhada dos requisitos de sistema.
Algumas vezes, esses dois tipos de requisitos podem ser integrados em uma única descrição. Em
outros casos, os requisitos de usuários são definidos em uma introdução à especificação dos
requisitos de sistema. Podem ser apresentados em documentos separados se possuírem um número
grande de requisitos.
Vários usuários utilizam o documento de requisitos:
Conselhos de Heninger (1980) sobre seis requisitos aos quais um documento de requisitos de
software deveria satisfazer:
1. Especificar somente o comportamento externo do sistema.
2. Especificar as restrições à implementação
3. Ser fácil de ser modificado
4. Servir como uma ferramenta de referencia para os responsáveis pela manutenção do sistema
5. Registrar a estratégia sobre o ciclo de vida do sistema
6. Caracterizar respostas aceitáveis para eventos indesejáveis.
A Tabela 5 apresenta os diferentes usuários de um documento de requisitos e a forma como o
utilizam.
Diretrizes para redação de requisitos:
1. Adote um formato-padrão e certifique-se de que todas as definições de requisitos
estejam conforme esse formato. Padronizar o formato significa que as omissões
podem ser menos freqüentes e faz com que os requisitos sejam verificados com mais
facilidade. “O formato que utilizo inclui “reforçar”o requisito inicial, considerando
uma declaração da lógica, com cada requisito de usuário e uma referencia à
especificação mais detalhada de requisitos de sistema”
2. Utilize a linguagem de modo consistente. Em particular, faça distinção entre os
requisitos obrigatórios (utiliza-se o verbo deve) e os que são desejáveis (utiliza-se o
verto deveria).
3. Utilize destaques no texto (negrito ou itálico) para ressaltar partes importantes dos
requisitos.
4. Evite, tanto quanto possível, o uso de jargões de informática. Contudo, ocorrerá que
termos técnicos detalhados, utilizados no domínio da aplicação do sistema, sejam
incluídos nos requisitos dos usuários.
Tabela 5 – Usuários de um documento de requisitos
Usuários
Utilização
Clientes de sistema
Especificam os requisitos e os têm para verificar se eles
atendem a suas necessidades. Especificam mudanças nos
requisitos
Gerentes
Utilizam o documento para planejar um pedido de proposta
para o sistema e para planejar o processo de
desenvolvimento do sistema
Engenheiros de sistema
Utilizam os requisitos para compreender que sistema deve
ser desenvolvido
Engenheiros de teste de Utilizam os requisitos para desenvolver testes de validação
sistema
para o sistema.
Engenheiros de manutenção Utilizam os requisitos para ajudar a compreender o sistema
de sistema
e as relações entre suas partes.
Tratamento dos Requisitos de sistema
Padrão do IEEE – IEEE/ANSI 830-1993
São descrições mais detalhadas dos requisitos dos usuários. Eles podem servir de base para um
contrato destinado à implementação do sistema e, portanto, devem ser uma especificação completa
e consistente de todo o sistema. São utilizados pelos engenheiros de software como ponto de partida
para o projeto de sistema.
Um padrão sugerido para o documento de requisitos tem a seguinte estrutura e foi proposta pelo
IEEE.
1. Introdução
14
13
1.1
Propósito
Deve delinear o propósito do documento de requisitos.
1.2
Escopo do produto
Deve identificar, pelo nome, o software a ser produzido; deve explicar, o que o software
fará e, se necessário, o que ele não fará.
1.3
Definições, Acrônimos e Abreviações
Deve fornecer as definições de todos os termos, acrônimos e abreviações utilizados no
documento, para que se possa interpreta-lo adequadamente.
1.4
Visão Geral do restante do documento
Deve descrever o restante do documento de requisitos e explicar como esse documento está
organizado.
2. Descrição Geral
Descreve os fatores gerais que afetam o produto e seus requisitos. Essa seção não declara
requisitos específicos. Ao invés disso, ela fornece um background para os requisitos
específicos, os quais são definidos em detalhes na Seção 3.
2.1 Perspectiva do produto
Deve colocar o produto em perspectiva com outros produtos relacionados. Se o produto é
independente e totalmente auto-contido, esse fato deve ser declarado aqui. Se o Documento
de Requisitos define um produto que é um componente de um sistema maior, como
freqüentemente ocorre, então essa subseção deve relatar os requisitos daquele sistema maior
que têm alguma relação com a funcionalidade do software identificando as interfaces entre
aquele sistema e o software em questão.
2.2 Funções do Produto
Deve fornecer um resumo das maiores funcionalidades que o software deve realizar.
2.3 Características do Usuário
Deve descrever as características gerais dos usuários do produto, incluindo nível de
educação, experiência e conhecimento técnico.
1.4 Restrições Gerais
Deve descrever as restrições que o sistema tem.
2.5 Suposições e Dependências
Deve listar cada um dos fatores que afetam os requisitos declarados na Seção 3.
3. Requisitos
Deve conter todos os requisitos do software (funcionais, não funcionais e de interface)
em um nível de detalhe suficiente para permitir que os projetistas possam elaborar um
projeto que satisfaça esses requisitos. Os requisitos podem ser divididos em Requisitos
Funcionais e Requisitos não funcionais. Cada requisito declarado deve possuir uma
identificação única.
3.1 Requisitos funcionais
descrição
entrada exigida
processamento
saída gerada
3.2 Requisitos não funcionais
do produto
organizacionais
externos
3.3 Atributos
Conter todos os atributos necessários para o software. Exs: de confiabilidade, segurança,
portabilidade, manutenção.
4. Apêndices
5. Índice
A estrutura de um documento de requisitos pode conter modificações, a partir da proposta do IEEE:
Capítulo
Prefácio
Descrição
Definir o público alvo a que se destina o documento e descrever
seu histórico da versão, incluindo lógica para a criação de uma
nova versão e um sumário das mudanças feitas em cada versão.
Deve descrever: a necessidade do sistema, brevemente suas
Introdução
funções e explicar como ele deverá operar com outros sistemas;
como o sistema se ajusta aos negócios em geral ou aos objetivos
estratégicos da organização que está solicitando o software.
Deve definir os termos técnicos utilizados no documento. Não
Glossário
deve fazer suposições sobre a experiência ou o conhecimento do
leitor.
Definição
de Descrever os serviços fornecidos para o usuário e os requisitos não
requisitos de usuário funcionais do sistema. Podem ser utilizadas: linguagem natural,
diagramas ou outras notações que sejam compreensíveis pelo
cliente.
Arquitetura
de Apresentar uma visão geral de alto nível da arquitetura prevista de
sistema, mostrando a distribuição de funções por meio de módulos
sistemas
de sistemas. Se houver reuso, os componentes devem ser
destacados.
Especificação
de Descrever requisitos funcionais e não funcionais com mais
requisitos do sistema detalhes.
Devem mostrar o relacionamento entre os componentes de sistema
Modelos de Sistema
e o sistema e seu ambiente. Podem ser modelos de fluxos de
dados, de objetos, etc.
Evolução do sistema Devem ser descritas as suposições fundamentais nas quais o
sistema se baseia e as mudanças previstas, devidas à evolução do
hardware, mudanças de usuário, etc.
Detalhes e informações específicas relacionadas à aplicação que
Apêndices
está sendo desenvolvida (Exs: descrições de hardware, banco de
dados)
Alfabético, índice de diagramas, de funções, etc..
Índice
Referencia Bibliográfica: Engenharia de Software – Ian Sommerville, 6a edição, Addison Wesley,
2003.
16
15
Dicas Para a elaboração do Documento de Requisitos
"Sei que você acredita que entendeu o que acha que eu disse, mas não estou certo de
que aquilo que ouviu não é o que eu pretendia dizer".
Possibilitando ao Engenheiro de Software:
•
•
•
•
•
especificar a função e o desempenho do software
indicar a interface do software com outros elementos do sistema
estabelecer quais são as restrições de projeto que o software deve enfrentar
construir modelos do processo, dos dados e dos domínios comportamentais.
traduzir em um projeto procedimental, arquitetônico e de dados a representação da
informação e a função.
Para se obter a declaração do escopo do sistema (1.2 IEEE) deve-se seguir os seguintes passos:
1.
2.
3.
4.
5.
entender as funções globais do sistema
descrever a função principal do sistema
identificar as principais entradas e saídas
listar todas as restrições que afetam o sistema
escrever um parágrafo claro
1. - Entender as funções globais do sistema
Antes que o processo de engenharia de software comece, deve-se entender as principais
funções do sistema computacional e o papel do software dentro do sistema. Idealmente, uma
descrição detalhada das funções do sistema seria fornecida pelo cliente. No entanto, na realidade, o
analista deve formular uma série de questões para o cliente a fim de descrever suas necessidade de
maneira concisa e não ambígua.
O conjunto inicial de questões deve focalizar as saídas:
•
•
•
•
•
Que tipo de informação ou sinais de controle o sistema deve produzir?
Qual é o formato, o conteúdo e a estrutura de dados de saída?
Eles são produzidos na forma de relatório, necessita de periféricos gráficos ou em algum
formato especial?
Quem faz uso dos dados de saída?
Outros sistemas fazem uso dos dados de saída?
Respostas a tais questões auxiliam o analista a isolar os principais objetivos do sistema e
fornecem indicações implícitas das funções do sistema.
O segundo conjunto de questões deve focalizar as entradas:
•
•
•
•
Quais as informações ou sinais de controle o sistema deve aceitar como entrada?
Os dados de entrada são fornecidos através de um diálogo interativo homem-máquina?
Qual é o nível de validação de dados requerida?
Qual é o formato dos dados de entrada?
•
Quem fornece os dados?
Respostas às questões de entrada e saída fornecerão informações substanciais sobre as
funções do sistema.
O terceiro conjunto de questões é formulado para melhor compreender as funções do
sistema. São desenvolvidas questões para esclarecer cada função inferida. Essas respostas em
conjunto com as anteriores permitem escrever a declaração do escopo do sistema.
2. - Descrever a função principal do sistema
Normalmente, essa função é expressa em um parágrafo que identifica o principal objetivo do
sistema computacional. Utiliza uma linguagem clara para descrever:
•
•
•
Qual a função o sistema irá realizar
As informações necessárias
As informações produzidas
Por exemplo, uma declaração do escopo para um programa de integração numérica pode ser:
Será desenvolvido um sistema que utiliza técnicas numéricas para calcular
a integral de uma função f(x) entre os valores a e b. Apenas funções da
forma: f(x) = px3 + qx2 + rx + s serão consideradas.
A declaração do escopo pode levar a muitas outras questões. O sistema é computadorizado
ou manual? Qual o nível de precisão desejado? Como são fornecidas as funções f(x) e os valores
limites a e b ? Com que velocidade a integração deve ser feita?
Com o refinanciamento da declaração do escopo (após as respostas destas e outras questões),
duas coisas acontecem: a função é identificada e analisada, e o papel de cada elemento é
determinado. Por exemplo, se apenas uma aproximação é requerida, a velocidade não for
importante, e o método de implementação não importa, a melhor alocação pode ser puramente
manual – integração gráfica usando papel e caneta. Os elementos apropriados seriam pessoa,
instruções (procedimentos) e uma representação gráfica de f(x) no papel (informação). Por outro
lado, se for necessária uma alta precisão e milhões de integrações por minuto, uma solução baseada
em computador é indicada. Nestes casos, os elementos apropriados do sistema seriam: hardware,
software, pessoas, documentos, informação e procedimentos.
Para começar uma abordagem mais sistemática, considere um problema mais complicado:
um piloto automático. Uma declaração do escopo poderia ser descrita inicialmente como:
O sistema Piloto- automático irá manter constante a velocidade do
automóvel uma vez que ela tenha sido indicada pelo motorista. A velocidade
irá ser mantida até que o sistema seja desligado ou até que o motorista
pressione o freio.
A declaração acima descreve tanto os objetivos do sistema como sua função principalmente.
Indica também a informação requerida (uma velocidade indicada) e produzida (manter a velocidade
17
constante). Porém, muitos detalhes não foram tocados. A descrição dos objetivos e da principal
função do sistema está em muito alto – nível. Isto é, detalhes funcionais não foram descritos, não
foram identificadas as entradas e saídas específicas, e detalhes de implementação foram omitidos. É
importante notar, no entanto, que estas omissões são completamente aceitáveis no inicio. O objetivo
é desenvolver uma declaração inicial do escopo que descreve a função principal do sistema.
Pode parecer desnecessário e redundante desenvolver uma declaração do escopo para o
sistema Piloto – automático. Porém deve se ter em mente que:
“Todos sabem o que o sistema deverá fazer até que alguém decida
descreve-lo”.
Uma declaração de escopo deve ser o mais simples possível no início. A primeira declaração
os rascunho das principais funções do sistema devem ser sentenças simples (sujeito, verbo e objeto).
Por exemplo, uma primeira declaração de um sistema de piloto automático poderia ser:
O sistema piloto automático mantém constante a velocidade do automóvel.
Interações subseqüentes dessa sentença pode refinar o sujeito, verbo e objeto, para fornecer
maiores detalhes e menor ambigüidade.
3. - Identificar as principais entradas e saídas
Independente da área de aplicação, todo sistema computacional transforma informações. Isto
é, dados fornecidos são transformados pelo sistema para produzir dados de saídas.O próximo passo
na criação de uma declaração de escopo é uma descrição das principais entradas e saídas do sistema
computacional. Durante os primeiros estágios do trabalho de análise, sempre é útil classificar os
dados transformados pelo sistema em duas grandes categorias genéricas: itens de dados e itens de
controle Um item de dados é qualquer entrada ou saída do sistema cujo conteúdo da
informação é transformado (isto é, modificado, reorganizado, calculado, combinado) pelo
elemento software. Em geral, algoritmos computacionais ou combinatoriais transformam itens de
dados de uma forma ou de outra . Um item de controle geralmente implica na ocorrência de
uma ação ou evento específico, ou requisito a inicialização de uma ação ou evento específico.
Para ilustrar a diferença entre itens de dados e itens de controle, considere que o sistema
Piloto automático permite ao motorista definir a velocidade desejada usando um teclado numérico
do painel. A velocidade desejada é um item de dados – isto é, uma entrada do sistema que é
processada pelo software e transformada em velocidade. Para desligar o sistema, o motorista deve
pressionar o freio ou o botão de desliga. Ambas ações causam um pulso que é lido pelo software.
Devido ao pulso não ser transformado (modificado, reorganizado, calculado, combinado) de alguma
forma, mas representar um evento que provoca uma mudança imediata na função do sistema, ele
será considerado um item de controle.
4. - Listar todas as restrições que afetam o sistema
A especificação e projeto de um sistema computacional são restringidos por muitas razões:
•
•
Considerações econômicas podem limitar tanto os recursos técnicos como humanos.
As características de um elemento do sistema podem restringir a maneira como um outro
elemento do sistema é especificado e, conseqüente, projetado.
18
•
ambiente e que o sistema será desenvolvido poderá impor restrições quando as funções e
desempenho do sistema.
É importante reconhecer que atitudes fatalistas podem, muitas vezes, ser improdutivas.
Embora o hardware tenha sido selecionado, pode não ser tão tarde efetuar mudanças, se as
restrições impostas no software forem tão severas que: (1) uma quantidade exorbitante de tempo
seja necessária para desenvolver o software, aumentando dramaticamente o custo de
desenvolvimento; (2) a habilidade de alcançar o desempenho de controle esteja em risco ou (3)
modificações no sistema operacional sejam possíveis.
Por listar as restrições, está se conduzindo uma revisão implícita. Por exemplo, considere o
desenvolvimento de uma rede de caixas eletrônicas para um grande banco. O sistema é composto de
diferentes computadores e softwares, uma base de dados, operadores humanos, e substancial
documentação e procedimentos. A capacidade de processamento do hardware, a organização da
base de dados, os registros impostos para operadores humanos (clientes do banco), e muitos outros
fatores irão criar um conjunto de restrições para o sistema. Além disso, a natureza da aplicação dita
as suas próprias restrições implícitas:
1.
2.
3.
4.
A necessidade da segurança apropriada para proteger os interesses do banco e de seus clientes
A necessidade da disponibilidade de um caixa ao cliente
A necessidade de expandir a rede de acordo com o crescimento do banco
A necessidade de estender características e funções devido à pressões da concorrência.
Cada uma dessas restrições implícitas deve ser listada nesta fase. Cada uma implica que
certos elementos do sistema devem ter características especificas e, em muitos casos, especificas
funções de desempenho.
5. - Escrever um parágrafo claro
Se tiver sido realizado cada um dos passos associados com o desenvolvimento de uma
declaração de escopo, têm-se agora as seguintes informações:
•
•
•
Uma descrição da função principal do sistema.
Uma lista das principais entradas e saídas.
Uma lista de restrições que afetam o sistema.
Estas informações são a base para um parágrafo claro que descreva todas as operações e
características do sistema. O parágrafo deve descrever as funções importantes do sistema de forma
objetiva, correta e simples. Deve conter referências á item de dados e de controle e, também, a
maneira como eles interagem com as principais funções do sistema. Devido ao parágrafo ser a
entrada essencial os próximos passos da análise de sistemas, ele deve ser desenvolvido com muito
cuidado. De fato, é sempre vantajoso desenvolver o parágrafo interativamente. Isto é, começa-se a
escrever um rascunho inicial, então se faz refinamentos, até a versão final.
A cada elaboração da declaração do escopo as ambigüidades devem ser eliminadas e mais
detalhes são fornecidos. Para ilustrar, considere o rascunho inicial da declaração de escopo do
sistema Piloto-automático.
O sistema "Piloto-automático" mantém constate a velocidade do automóvel.
19
Embora este rascunho defina a principal função do sistema, fornece poucos detalhes e deve
ser refinado. Após dialogar com o cliente, escreve-se:
O sistema Piloto automático irá manter constante a velocidade do
automóvel uma vez que ela tenha sido indicada pelo motorista. A velocidade
irá ser mantida até que o sistema seja desligado ou até que o motorista
pressione o freio.
Melhor, mais ainda vago. Existe a necessidade de se conhecer qual é a variação da
velocidade aceitável, qual o mecanismo que será usado para “indicar” a velocidade, qual o
mecanismo será usado para desligar o sistema. Além disso, falta determinar alguns requisitos
implícitos ou restrições (por exemplo: características de segurança). Note-se, no entanto, que não há
necessidade de se determinar como o sistema irá realizar esta função. Isso será feito posteriormente.
Neste ponto, o enfoque está sobre o problema e não sobre como resolve-lo. O terceiro rascunho
pode ser:
O sistema "Piloto Automático" mantém constate a velocidade do
automóvel, podendo variar ±3 milhas por hora (mph) de um valor nominal
especificado pelo motorista. O valor da velocidade nominal é indicado pelo
motorista de duas formas: (1) ou pressionando-se um botão set speed
enquanto o automóvel estiver andando com velocidade igual ou maior que
45 mph, ou (2) teclando-se a velocidade desejada no painel do carro. O
dado da potência será monitorado em intervalos de 0,1 segundo e a média
calculada a cada segundo. O sistema irá ajustar a velocidade a cada
segundo. O sistema é automaticamente desligado quando a velocidade
nominal ficar abaixo de 45 mph. Além disso, o motorista pode desligar o
sistema pressionando o freio ou pressionando o botão off.
Em cada elaboração, maiores detalhes são fornecidos e futuras questões são levantadas e
respondidas. O processo termina quando o analista der-se por satisfeito, ou seja, não tiver mais
questões a levantar.
Para execução desse processo de definição do escopo do sistema, várias técnicas podem ser
utilizadas. A seguir, são apresentadas as principais técnicas para apoiar a etapa de levantamento de
requisitos.
Download

Introdução aos Sistemas de Informação Aula 2