FACULDADE DO LITORAL SUL PAULISTA – FALS
CLAYTON DE SOUZA SILVA
REQUISITOS DE SOFTWARE
PRAIA GRANDE
2010
CLAYTON DE SOUZA SILVA
REQUISITOS DE SOFTWARE
Trabalho de conclusão de curso, Faculdade do
Litoral Sul Paulista, sob orientação do Prof.
Ana Lucia Pegetti.
PRAIA GRANDE
2010
CLAYTON DE SOUZA SILVA
REQUISITOS DE SOFTWARE
Trabalho de conclusão de curso, Faculdade do
Litoral Sul Paulista, sob orientação do Prof.
Ana Lucia Pegetti.
AVALIAÇÃO:_________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
NOTA: ____(____________)
________________, ___de____________de______.
Local
data
RESUMO
A Engenharia de Software é uma disciplina distinta que utiliza um conjunto de
métodos, técnicas e ferramentas para analisar, projetar e gerenciar desenvolvimento
e manutenção de software. O conjunto de técnicas de levantamento, documentação
e análise forma a engenharia de requisitos, que é uma das disciplinas da Engenharia
de Software, após ser estabelecido os requisitos teremos um projeto que definirá os
objetivos e necessidades que deverão ser alcançados, possibilitando a definição do
escopo do projeto com precisão, nesta fase é necessário detalhar todos os aspectos
funcionais e não-funcionais estabelecendo um conjunto de especificações com um
nível máximo de detalhamento, neste caso os requisitos de software é o processo de
identificação de todos os envolvidos onde é documentado para análise e posterior
implementação.
PALAVRAS CHAVES: Requisitos e projetos.
ABSTRACT
Software Engineering is a discipline that uses a distinct set of methods, techniques
and tools to analyze, design and manage development and maintenance of software.
The set of elicitation techniques, documentation and analysis as to requirements
engineering, which is one of the disciplines of Software Engineering, having been
established requirements will have a project that will define the goals and needs to
be achieved, allowing for the scoping project with precision at this stage is necessary
to detail all the functional and nonfunctional establishing a set of specifications with a
maximum level of detail, in this case the software requirements is the process of
identifying all those involved where it is documented for analysis and subsequent
implementation.
KEYWORDS TOOL: Requirements and projects.
SUMÁRIO
1.
INTRODUÇÃO ............................................................................................................................ 1
2.
JUSTIFICATIVA .......................................................................................................................... 2
3.
OBJETIVO DO TRABALHO ..................................................................................................... 3
4.
REFERENCIAL CONCEITUAL ................................................................................................. 4
4.1. Objetivos da Engenharia de Software............................................................................5
4.2. Princípios da Engenharia de Software...........................................................................6
4.3. Processos de Software...................................................................................................7
4.4. Tipos de Processos.........................................................................................................8
5.
ENGENHARIA DE REQUISITOS E SEUS PROCESSOS ................................................... 12
5.1 Ciclos de Vida do Software.........................................................................................13
5.2 Etapas do Projeto de elaboração de Software..............................................................17
5.3 Projetos e seus processos.............................................................................................18
6.
REQUISITOS DE SOFTWARE .............................................................................................. 21
6.1 Modelo do Problema....................................................................................................24
6.2 Modelo do Sistema......................................................................................................25
6.3 Modelagem do Processo, Caso de Uso e Qualidade de Software...............................26
7.
TIPOS DE REQUISITOS DE SOFTWARE .......................................................................... 30
7.1 Requisitos de Usuários.................................................................................................32
7.2 Especificação e Analise de requisitos de software......................................................34
7.3 Requisitos e interfaces externas...................................................................................35
8.
CONCLUSÃO............................................................................................................................. 36
9.
ANEXOS MODELOS DE DOCUMENTOS DE REQUISITOS............................................ 37
10. REFERENCIAS BIBLIOGRAFICAS ...................................................................................... 41
11. REFERENCIAS ELETRONICAS ............................................................................................ 42
SUMÁRIO DAS FÍGURAS
1.
FIGURA 1 (Processo de engenharia de software) ........................................... 7
2.
FIGURA 2 (Modelo Cascata) .............................................................................................. 8
3.
FIGURA 3 (Desenvolvimento de software)..................................................... 10
4.
FIGURA 4 (Espiral ............................................................................................ 10
5.
FIGURA 5 (Analíse de requisitos de software) .............................................. 13
6.
FIGURA 6 (Gerenciamento dos requisitos).................................................... 23
7.
FIGURA 7 (Processo interativo) ...................................................................... 27
8.
FIGURA 8 (As macro atividades da fase de RU) ........................................... 33
1.
INTRODUÇÃO
Nos projetos da engenharia de software evoluem da necessidade para a
idéia e desta para a realidade, a disciplina de requisitos de software auxiliará a reunir
as atividades que procuram obter o enunciado completo, claro e preciso dos
requisitos de um projeto de software. Requisitos são objetivos ou restrições estabelecidos
por clientes e usuários que definem as suas diversas propriedades do sistema. Os requisitos de
software são, obviamente, os requisitos de sistema que dizem respeito a propriedades do
software. Os requisitos de software de uma maneira objetiva é a base para a criação de um
sistema com a menor probabilidade de erro ou falha. Um sistema de software é caracterizado
por um conjunto de componentes abstratos como uma estrutura de dados e um algoritmo,
unidos como uma forma de procedimento, funções, módulos, objetos ou agentes que de certa
forma estão ligados compondo assim a Engenharia de Software, onde deverão ser executados
em sistemas computacionais. Os fundamentos da Engenharia de Software são os modelos
abstratos e preciosos, permitindo à especificação, o planejamento, a implementação e até
mesmo manter um sistema com uma avaliação continua, garantindo assim sua qualidade.
A importância da Engenharia de Software é que tem como objetivo principal o
melhoramento da qualidade do software e um aumento da produtividade, por este motivo é
fundamental ser bem estabelecido antecipadamente os requisitos de desenvolvimento de
software, estes requisitos auxiliarão tanto para o desenvolvimento quanto para diagnosticar
possíveis falhas no momento de implantação do sistema, isso ocorrera devido ao fato dos
requisitos terem como finalidade serem utilizados ate mesmo como base para um
desenvolvimento, sendo estabelecidos por pessoas ligadas diretamente ao produto final.
7
2.
JUSTIFICATIVA
A grande importância de se abordar os requisitos de software é chegar a um
alcance da qualidade e quando é possível se alcançar todos os requisitos pré
estabelecidos, antecipando e satisfazendo as necessidades do cliente, a qualidade é
escrever previamente tudo o que devera ser realizado e se cumprir este relatório pré
estabelecido, quanto maior a precisão e menor a margem de erro no
desenvolvimento e implantação do projeto, será mais fácil de obter o sucesso.
Por isso é fundamental constantes analises dos relatórios onde são
denominados de requisitos de software, normalmente estes requisitos são
estabelecidos antes do desenvolvimento de processos, onde esses requisitos
deverão ser levantados pela equipe do projeto juntamente com o representante do
cliente, usuário, e possivelmente, especialistas na área de aplicação.
A engenharia de requisitos é o principal passo para o desenvolvimento de um
bom produto em qualquer caso, os requisitos de alta qualidade são aqueles que
possuem uma linguagem clara, consistentes, completos e testáveis. A definição dos
requisitos consiste em uma lista em que são relatados todos os requisitos funcionais
e os principais requisitos não-funcionais, sendo fundamental a identificação dos
atores, dos casos de uso, dos relacionamentos entre atores, dos relacionamentos
entre atores e os casos de uso, dos diagramas de contexto, das restrições de
memória, dos modos de operação, dos requisitos de adaptação ao ambiente, das
restrições ao produto, das hipóteses de trabalho.
A principal função do analista de requisitos é auxiliar o gerente de projeto e
também do desenvolvedor, pois são lançados fundamentos das atividades de
análise. O principal resultado devera ser um pacote de descrição geral, da visão de
requisitos do modelo do problema.
8
3.
OBJETIVO DO TRABALHO
O principal objetivo desta monografia é abordar de uma forma mais detalhada as
principais restrições estabelecidas por clientes e usuários e apresentar as principais
dificuldades e falhas que ocorrem em um projeto de software na elaboração de seus
requisitos.
“Desenvolver software é uma atividade complexa por natureza. Uma
das razões para esta afirmação é que não existe uma única solução para
cada cenário de desenvolvimento. Além disso, lidamos o tempo todo com
pessoas, o que torna o sucesso do projeto bastante relacionado à
competência da equipe e à forma como trabalham, e, para dificultar ainda
mais, muitas vezes não fazemos uso de um processo bem definido para
apoiar as atividades do projeto”. (Artigo Engenharia de Software – Ana
Luiza Ávila – UNIFACS – 2008)
Conforme o artigo citado anteriormente, o que leva a uma motivação para
aprofundamento do estudo sobre requisitos de software, é a busca por um resultado
positivo no final da elaboração do projeto, para que isso ocorra é muito importante
que os requisitos sejam bem definidos.
Outro foco desta monografia é demonstrar com uma linguagem clara e objetiva
as definições e a importância de cada fase do desenvolvimento de um projeto, para
que se possa conquistar uma validação da empresa
9
4.
REFERENCIAL CONCEITUAL
Engenharia de Software – Fundamentos, métodos e padrões
Visando melhorar a qualidade dos produtos de software e aumentar a
produtividade no processo de desenvolvimento, surgiu a Engenharia de Software. A
Engenharia de Software trata de aspectos relacionados ao estabelecimento de
processos, técnicas, métodos, ambientes e ferramentas de suporte ao desenvolvimento
de software, os processos seguem os métodos e estes de utilizam de ferramentas
visando solucionar problemas referentes ao processo e ao produto, seu objetivo é
estabelecer uma abordagem de desenvolvimento, através de ferramentas e técnicas
apropriadas, considerando restrições e recursos disponíveis.
Os métodos utilizados na engenharia de software são abordagens estruturadas
para o desenvolvimento de software que também incluem os modelos de software,
notações, regras e maneiras de desenvolvimento.
Segundo MARTIN e McCLURE (1991) a engenharia de software é: “o estudo dos
princípios e sua aplicação no desenvolvimento e manutenção de sistemas de software...
tanto a engenharia de software como as técnicas estruturadas são coleções de
metodologias de software e ferramentas...”
Para MAFFEO (1992) a engenharia de software é: “a área interdisciplinar que
engloba vertentes tecnológica e gerencial visando a abordar de modo sistemático
(modular), os processos de construção, implantação e manutenção de produtos de
software com qualidade assegurada por construção segundo cronogramas e custos
previamente definidos”.
Segundo SOMMERVILLE (1992) a engenharia de software envolve questões
técnicas e não-técnicas, tais como a especificação do conhecimento, técnicas de projeto
e implementação, conhecimentos dos fatores humanos pelo engenheiro de software e
ainda, gestão de projetos.
Para PAULA FILHO (2001) a engenharia de software é conexa. Porém distinta, e
envolve múltiplas variáveis, tais como arte, atendimento das necessidades humanas,
10
conhecimentos científicos, conhecimentos empíricos, habilidades especificas, recursos
naturais, formas adequadas, dispositivos, estruturas e processos. Não deve ser
confundida com a ciência e fornece problemas para seus estudos.
Segundo CARVALHO e CHIOSSI (2001) a engenharia de software é uma
disciplina que reúne metodologias, métodos e ferramentas a serem utilizados, desde a
percepção do problema até o momento que o sistema desenvolvido deixa de ser
operacional, visando resolver problemas inerentes ao processo de desenvolvimento e ao
produto de software.
Outras definições de engenharia de software costumam omitir a vertente gerencial.
Concentram-se apenas no aspecto tecnológico do problema. Os aspectos gerenciais do
desenvolvimento de software devem receber uma atenção cada vez maior nessa
disciplina (PRESSMAN, 1995).
Nesse sentido, a engenharia de software pode de caracterizar por um
desenvolvimento de software pratico, ordenado e medido para produzir sistemas
satisfatórios aos usuários e que respeitem prazos e orçamentos (PETERS; PEDRYCZ,
2001).
Os benefícios dos novos ambientes de desenvolvimento de software sejam
significativos, porém é importante ressaltar que os seus elementos básicos são as
pessoas. Desta forma é essencial estabelecer que seja feito um planejamento no
contexto de engenharia de software, para que assim suas necessidades sejam atendidas.
Ao englobar as duas vertentes, tecnológica e gerencial, a definição para Engenharia de
Software indica para a necessidade dos dois temas, desta forma ocorrera uma
aprimoramento dos conhecimentos e métodos dessa disciplina, além de colaborar para
os aspectos particulares de cada vertente.
4.1 - Objetivos da engenharia de software
A engenharia de software tem como objetivo sistematizar a produção, evolução, a
manutenção e a recuperação de produtos de software, de maneira que seja executado
dentro de prazos e custos estimados, sempre utilizando métodos, tecnologia e processos.
Os produtos que são desenvolvidos seguindo efetivamente esse processo e os preceitos
11
da Engenharia de Software tendem a atender uma qualidade satisfatória, deixando assim
os seus usuários satisfeitos com suas tarefas.
De modo geral, considera-se que os objetivos primários da Engenharia de
Software são o aprimoramento da qualidade dos produtos de software e o aumento da
produtividade dos engenheiros de software, além do atendimento aos requisitos de
eficácia e eficiência, ou seja, efetividade (MAFFEO, 1992)
Nesses casos de elaboração de produtos industriais e elaboração de sistemas de
software, é necessário que seja feita a analise e especificação dos requisitos de forma
rigorosa, à medida que seja considerado um produto que se deve haver manutenção
durante esse tempo, essa característica impõe ao software uma complexidade em
relação aos produtos tradicionais da engenharia, mas dificilmente modificam-se durante a
operação.
Associação a esses objetivos, o termo engenharia pretende indicar que o
desenvolvimento de software deve submeter-se a leis similares as que governam a
manufatura dos produtos industriais e engenharias tradicionais, pois ambos são
metodológicos (MAFFEO, 1992).
4.2 - Princípios da engenharia de software
Alguns princípios fundamentais deram inicio a engenharia de software, que devem
ser levadas em consideração nas aplicações dos softwares nas organizações, esses
elementos podem ser utilizados no processo em um produto final do software. O
relacionamento entre processo e produto são muito próximo, quando um está correto o
resultado do outro também estará.
Os princípios requerem metodologias pertinentes e adequadas aos métodos e
ferramentas que incorporam as propriedades desejadas aos processos e aos produtos do
software (CARVALHO; CHIOSSI, 2001).
Segundo (GUEZZU; JAZAYERI, 1991) alguns princípios podem ser destacados:
formalidade para evitar a dependência e determinadas pessoas ou processos; abstração
para identificar aspectos importantes de determinado fenômeno; decomposição para
12
subdividir problemas complexos; generalização para disseminar soluções semelhantes e
reutilizar resultados; e flexibilização para facilitar eventuais mudanças modulares.
4.3 - Processos de software
Os processos de software têm fundamentos e conceitos que equivalem a
metodologias de desenvolvimento e manutenção de software, ambos são bases para a
elaboração de software que contenham fases, subfases, produtos externados e pontos de
avaliação de qualidade.
Figura 1 - www.alexandrebartie.spaces.live.com
Conforme a demonstração anterior, um processo de engenharia de software pode
ser caracterizado por um tipo de modelo que estabeleça a forma de sistematização e que
consiga controlar todas as atividades relacionadas à construção de softwares. Um bom
processo deve ser estruturado em disciplinas que possibilitem o gerenciamento dos
aspectos que estejam em um nível mais critico. Cada disciplina tem um determinado foco
dentro do processo e define de que forma irá se organizar, conduzir e avaliar os
procedimentos relacionados a estes aspectos críticos.
13
Porém, um processo de software é um modelo estático que indica de que maneira
deve lidar com seus projetos de softwares. Conforme novas técnicas e ferramentas são
criadas, naturalmente novas tecnologias são disponibilizadas e novos obstáculos são
superados.
Um processo é um conjunto de passos parcialmente ordenados, constituídos por
atividades, métodos, práticas e transformações, usado para atingir uma meta. Essa meta
está associada a uma ou mais resultados concretos finais, que são os produtos da
execução do processo (PAULA FILHO, 2001).
Um processo deve conter documentações para que se possa relatar o que será
feito, quando e quem irá desenvolver, é preciso os requerimentos de necessidades e os
resultados, o nível de aprofundamento e detalhamento dos processos a serem
executados é decidido pela equipe de desenvolvimento do software. Os integrantes dessa
equipe têm a liberdade de acrescentar detalhes ou até mesmo suprimir partes, desta
forma é permitido alterar a sua ordem e executar paralelamente outras atividades, um
subprocesso é caracterizado por elementos de um processo
4.4. Tipos de processos
Modelo Cascata
Figura 2 - Artigo: Metodologias Ágeis para desenvolvimento de software – www.cpdti.com.br
14
O modelo cascata tem como referência fases bem definidas, com inicio e término
para as próximas fases, de forma seqüencial. Para que possa dar sequencia às próximas
fases é necessário obter um laudo da fase anterior com a aprovação para a próxima
etapa. Um processo pode ser subdividido em diversas formas, mas basicamente o
contexto principal consiste nas fases acima demonstradas na figura 2.
Requisitos: Tem como embasamento os famosos stakeholders (clientes, usuários,
gerentes, etc.), pois são eles que estão ligados diretamente ao projeto em questão,
podendo ser usuários ou até mesmo futuros usuários.
Análise: As especificações de requisitos transformam-se em modelos de software,
mas sem obter muito detalhamento técnico.
Projeto: São baseados na análise, nesta fase os modelos são detalhados para uma
futura aplicação, os modelos representam de uma forma mais “concreta” o problema que
for especificado.
Implementação: Nesta fase o projeto e análise são implementados, de uma maneira
mais automatizada utilizando linguagens de programação.
Testes: São realizados testes unitários e conseqüentemente testes integrados, desta
forma contendo todo o software.
Implantação: É a fase em que o software é colocado em prática, diversas atividades
são relacionadas, como por exemplo: bases de dados com dados reais, treinamento,
instalação, etc. Porém as suas atividades dependeram muito da empresa e do ambiente
em que o software irá ser executado.
Com ou sem especificações dos requisitos funcionais os desenvolvedores de
software codificam ou programam os processos.
15
Figura 3 - Artigo: Modelo de desenvolvimento de software – www.inf.unisul.br
Os processos são determinados por uma seqüência de desenvolvimento de software
com demarcações predefinidas de avaliação. Caso o processo não permita certa
flexibilidade do retorno nas seqüências, ele causará percas valiosas para seu usuário
final.
As suas fases são: definição e analise dos requerimentos do software; projeto do
software, implementação e testes; implantação e integração do produto, em cada tipo de
fases são definidas suas respectivas atividades e a partir desse conceito os produtos de
saída são gerados.
Espiral
Figura 4 - www.engsoftwaredpsi.blogspot.com
16
Esse processo permite varias repetições entre as fases do desenvolvimento, cada
repetição implica numa volta ao modelo espiral, desta maneira os desenvolvedores
podem alcançar os resultados desejados em menos tempo, esse tipo de modelo de
processos necessita de uma atenção especial dos seus gestores no que diz respeito ao
processo de repetições, principalmente quanto à qualidade de seus produtos gerados.
Entrega por estágios
Esse processo de software libera partes do software aos clientes ou usuários finais.
É uma combinação dos modelos cascata e prototipagem evolutiva.
17
5.
ENGENHARIA DE REQUISITOS E SEUS PROCESSOS
Todo projeto de software deverá ser desenvolvido a partir dos requisitos que
deverão ser estabelecidos, antes mesmo de sua inicialização. Antes da analise e
determinação dos requisitos é importante que os pré-requisitos sejam estabelecidos,
pois a partir deles é que será tomada a grande maioria das decisões para o seu
desenvolvimento.
De uma forma mais ampla pode-se dizer que a palavra “projeto” possui um
significado de “empreendimento”, e é um trabalho que visa à criação de um produto
ou a execução de um serviço especifico temporário, ou não repetitivo, e que envolve
de certa forma um grau de incerteza na sua realização. O trabalho de uma forma
geral normalmente é executado por pessoas que irão consumir horas, estão
limitadas no prazo, custo e escopo. Como em qualquer momento, empreendimento
ou realização é necessário que seja feito, um planejamento, programados, e durante
a sua execução é fundamental um monitoramento.
O perfil do profissional de qualidade é ser um profissional que tenha a
desenvoltura de se encaixar a todos os tipos de cliente final, ou seja, um profissional
eclético, que tenha conhecimentos técnicos, mas que também tenha o conhecimento
de negócios e principalmente do comportamento humano, isto é importante para que
possa atender as necessidades dos clientes de acordo com o seu perfil.
O comportamento humano, etnias e políticas estão de certa forma ligada às
atividades de sistemas ou software.
Existem também algumas atividades e habilidades que são adquiridas pelo
mercado, para que se possa atingir a qualidade, produtividade e efetividade total,
porém é necessário, que se tenha uma postura adequada e domínio das habilidades
técnicas.
18
5.1. Ciclos de vida do software;
O processo inclui a elaboração de um produto, esta elaboração poderá ser
referida como ciclo de vida, pois ela relata a “vida” do produto de software, desde a
concepção até a implantação, entrega, utilização e manutenção
É fundamental no momento de desenvolvimento, estabelecer o ciclo de vida,
determinar o usuário final, podendo ser um funcionário da organização, um cliente,
departamento de marketing ou vendas da organização produtora, este ciclo de vida
normalmente é feito a partir da percepção das necessidades, estará sujeito à
manutenção quando necessário e será retirado de operação ao final de sua vida útil.
Figura 5 - Análise de requisitos de software – www.eps.ufsc.br
Um ciclo de vida possui divisões e subdivisões, é fundamental observar a
codificação que representa a escrita final, essa codificação é uma das principais
tarefas do desenvolvedor de software.
Muitas vezes o ciclo de vida é confundido com modelo de processo, o ciclo de
vida descreve as fases do software, desde a sua criação até o fim de seu uso.
Diversas denominações podem ser usadas para as fases do ciclo de vida de um
software, neste modelo que veremos a seguir são 4 fases, cada fase possui suas
atividades. Essas fases são:
19
Definição
Desenvolvimento
Operações
Retirada
Nesta fase de definição do software é possível agir em conjunto com outras
atividades como a análise de sistemas e a modelagem de processos de negócios. É
essencial saber primeiramente identificar os problemas, para que a partir daí possa
criar uma proposta de solução de sistemas computacionais, nesta proposta deve-se
incluir a analise e o custo-benefício do projeto, informações sobre hardware,
software, procedimentos, informação e documentação.
Não existe uma regra para se determinar o fim da fase de definição, isto varia
muito com a complexidade do modelo de processo, dependendo do modelo adotado
a fase de desenvolvimento pode iniciar antes mesmo que a fase de definição seja
totalmente concluída.
Na fase de desenvolvimento é subdividido em etapas como design,
implementação, verificação e validação de software.
Design é a parte ilustrativa do projeto que é subdividido em design conceitual,
design de interface do usuário, design da arquitetura de software e design dos
algoritmos e estruturas de dados.
Design conceitual é a determinação dos elementos fundamentais de um
software exercendo uma influencia da interface de usuário e na arquitetura do
software.
Design da interface de usuário é a estrutura principal para o sucesso do
software, pois é a maneira do usuário realizar suas tarefas o layout das janelas e
telas.
Design de arquitetura de software é subdividida em visão conceitual, visão
módulos, visão de códigos e visão de execução; A visão conceitual é de uma
20
maneira geral uma arquitetura de camadas e arquitetura cliente/servidor é composta
por componentes conceituais.
Design de algoritmo e estruturas de dados é a linguagem de programação
adotada, soluções algorítmicas e estruturas de dados associados.
A implementação são as atividades de codificação, compilação, integração e
testes. A codificação é a transparência da estrutura e o comportamento descrito no
design, seu principal objetivo é traduzir design no programa, utilizando-se de
linguagem e ferramentas adequadas. No momento da implementação é fundamental
um gerenciamento de versões para um controle correto de tudo que esta sendo
codificado.
Verificação e validação, principal função é analisar se o sistema esta de
acordo com as expectativas de cliente e usuário, a validação assegura se o
programa está de acordo com a definição e especificação, a verificação visa analisar
se possui erros de execução, existem formas que podem ser utilizadas antes do
programa ser codificado, como inspeção analítica e revisão de modelos, documentos
e código fonte. A partir da execução de software existem vários fatores para uma
analise de qualidade como, teste de correção, desempenho, confiabilidade,
robustez, usabilidade, dentre outros, dentre estes fatores pode-se utilizar variadas
técnicas para aplicação.
A fase de operação do software é subdividida em atividades;
Distribuição e entrega;
Instalação e configuração
Utilização
Manutenção
A distribuição e entrega pode ser feita de uma forma mais direta pelo
desenvolvedor (quando personalizado), ou em pacote que poderão ser vendido por
prateleiras de lojas, ou ate mesmo para ser baixado pela internet.
21
O processo de instalação e configuração. Poderá ser feito com o auxilio de
softwares de instalação, que são disponibilizados por fabricantes de ambientes
operacionais.
O processo de utilização assim como o nome já diz é a usabilidade do
software.
O processo de manutenção poderá ser feito de duas maneiras: corretiva e
evolutiva. A manutenção corretiva tem como seu objetivo principal a solução de
problemas que poderão interferir na qualidade do software, como: falhas, baixo
desempenho, entre outros. A manutenção evolutiva que também poder ser nomeada
como evolução adaptativa, procura atender todos os requisitos do cliente através da
criação de novas versões de software, ou adaptando as novas tecnologias que
poderão surgir como (hardware, plataformas, linguagens, entre outros). No momento
em que ocorrem novas mudanças, novas tecnologias de software e hardware,
requerem uma evolução continuada.
A fase Retida é uma das etapas mais difíceis, principalmente nos tempos
atuais, pois a empresa de certa forma esta operando softwares que possuem
excelentes níveis de confiabilidade e de correção, mas é necessário uma evolução
para uma acompanhamento do desenvolvimento de uma maneira geral, para
acompanhar os novos requisitos exigidos, também é considerada uma situação
difícil, pois isso pode exigir ate mesmo que haja um treinamento da equipe operante,
pois será um software novo, com novas exigências e comandos, onde a equipe não
estará acostumada a lidar.
Um fator também que dificulta este processo é a questão da confiabilidade,
pois de uma maneira geral a organização já esta acostumada, confia no
desenvolvimento de seu trabalho, tem consciência que o novo software servira para
um aperfeiçoamento do anterior, mais muitas vezes poderão existir resistências do
setor, no período de adaptação.
O processo de software poderá ser aplicado para viabilizar a transferência de um
software anterior para um novo proporcionando assim uma substituição suave.
22
O projeto de uma maneira geral é dividido em fases para se ter um controle
gerencial e permitir uma melhor sintonia com os processos gerenciais, essas são
determinadas como ciclo de vida de um projeto.
O desenvolvimento de software é feito através do projeto, em todo projeto é
indispensável uma data de inicio e uma data de fim, uma equipe juntamente a um
gerente de projeto e outros recursos, ou seja, um projeto é a execução de um
processo.
Se o processo é bem estabelecido deverá ter subdivisões que permita a
avaliação e correção, em caso de problema essas subdivisões são denominadas de
fases, atividades ou interações, as subdivisões devem ser terminadas por marcos,
sendo associados a resultados concretos como documentos, modelos ou porções do
produto. O produto será associado ao marco de conclusão do projeto.
5.2. Etapas do Projeto de elaboração do software;
A base de um projeto é a identificação das partes interessadas (stakeholders),
ou seja, os responsáveis pelo resultado do empreendimento, mas existem outros
interesses que devem ser considerados como os próprios desenvolvedores, os
dirigentes da organização, os fornecedores de insumos e subcontratados e
autoridades reguladoras. Estas partes no momento de atividade de especificação,
planejamento, decisão, comunicação, revisões e avaliações, podem ter suas
participações. Nem sempre será viável o envolvimento de todas as partes, exceto o
seu ponto de vista que deverá ser representado por um componente da equipe.
Este plano de projeto poderá ser composto de uma variedade componente para
o seu desenvolvimento.
Para o desenvolvimento de software é necessária a estruturação das tarefas
requeridas para a elaboração com alta qualidade, pois o foco principal do
desenvolvimento de software é a qualidade utilizando processos, métodos e
ferramentas.
23
Caso o processo de desenvolvimento de um produto o resultado não seja
satisfatório, sem duvida o produto obtido também será de baixa qualidade, desta
forma vale ressaltar que não se deve focar apenas no processo, mas também no
produto.
O desenvolvedor de software necessita de uma resulto satisfatório tanto no
processo de desenvolvimento como no resultado final.
5.3. Projeto e seus processos;
“Um fator que impulsiona o gerenciamento de projetos é o crescimento da
competitividade. Quem for mais rápido e competente certamente conseguira
melhores resultados”. (VARGAS, 1999, p.5)
Processo de gerenciamento do projeto é composta de um conjunto de processos
que geram um produto final, este produto final precisa ser avaliado pela equipe
envolvida ao seu termino. Alguns desses processos são:
Processo de inicialização que é o momento em que o seu objetivo é reconhecer
que um produto ou fase devera começar e se comprometer para a sua execução.
Processo de Planejamento que tem como objetivo planejar e manter o esquema
de trabalho com um meio de se atingir as exigências do projeto.
Processo de execução tem como objetivo e foco principal a coordenação de
pessoas e outros recursos para se executar o plano como um todo.
Processos
de
controle
procuram
se
manter
um
controle
quanto
ao
desenvolvimento do projeto em questão, por meio de monitoramento e avaliação do
seu processo, tomando ações e decisões quando necessário.
Para se atingir os níveis de organização independente da quantidade de
pessoas envolvidas o projeto muitas vezes extrapola fronteiras atingindo até os
24
fornecedores, clientes, parceiros e governo podendo fazer parte da estratégia de
negocio da companhia.
Alguns exemplos de projetos:
Redação de uma livro
Remuneração de um determinado setor
Remuneração de um departamento da empresa
Elaboração de um plano de marketing e publicidade
Lançamento de um novo produto ou serviço
Informatização de um determinado setor da empresa
Aperfeiçoamento e substituição do software utilizado
Realização de uma viagem
O gerenciamento de processo de produção esta associado ao desenvolvimento
tendo a necessidade de aplicação de métodos, técnicas e ferramentas, para isto é
necessário que se tenha um planejamento de custos e prazos, montagem da equipe
qualificada e garantia de qualidade do produto e do processo.
A área de gestão de projetos normalmente é composta por nove áreas de
conhecimento em gerenciamento de projetos:
Gerenciamento de integração é um subconjunto do gerenciamento de projetos
que procura assegurar que todos os elementos do projeto sejam coordenados de
forma adequada.
Gerenciamento de escopo é um subconjunto do gerenciamento de projetos que
analise se todas as exigências e contextos que estão inclusos para uma elaboração
bem sucedida.
Gerenciamento de tempo é um subconjunto do gerenciamento de projetos que
visa que o projeto e seu desenvolvimento ocorram dentro do prazo previsto.
25
Gerenciamento de custos é um subconjunto do gerenciamento de projetos que
analise e vistoria se o projeto esta de acordo com Orçamento pré-estabelecido.
Gerenciamento de qualidade é um subconjunto do gerenciamento de projetos
que visa que seu produto esteja em conformidade com o cliente e ou contratante,
com a melhor qualidade conforme contratada.
Gerenciamento de recursos humanos é um subconjunto do gerenciamento de
projetos que tem como objetivo melhor o envolvimento de uma forma adequada das
pessoas do projeto.
Gerenciamento das comunicações é um subconjunto do gerenciamento de
projetos que visa que assegurar que as informações obtidas, comunicadas e
disseminadas, ocorram de uma forma adequada.
Gerenciamento de riscos é um subconjunto do gerenciamento de projetos onde
são analisados todos os riscos que estabelecidos, previamente, durante e após a
elaboração dos projetos. Na maioria das vezes estes riscos são determinados de
acordo com o perfil principal do cliente em questão.
Gerenciamento de suprimentos é um subconjunto do gerenciamento de projetos
administra a forma de aquisição de bens e serviços fora da organização provedora
do projeto em questão.
26
6.
REQUISITOS DE SOFTWARE:
A fase inicial para a elaboração dos requisitos é a elicitação de
requisitos, onde nesta fase serão determinadas as funções do software, ou seja,
identificar de uma forma conjunta com o cliente/usuário quais serão os objetivos do
sistema, de que maneira o sistema deverá se adequar as necessidades do negócio.
A parte mais complexa na criação de um software é conseguir identificar de maneira
correta o que se deve construir, para que assim a aplicabilidade do sistema possa se
encaixar com o que o projeto esteja impondo, essa fase do projeto pode
comprometer o resultado final caso não seja elaborado um escopo de forma
completa, os limites do sistema bem definidos e também é muito importante uma
boa comunicação e compreensão entre o desenvolvedor e o cliente/usuário, é
importantíssimo que o cliente/usuário detalhe as informações para o desenvolvedor
definindo as necessidades que o sistema deverá abranger. A forma mais utilizada
para superar esses obstáculos é a simplicidade na hora de abordar os requisitos,
quanto mais direta e objetiva a informação for passada, mais fácil ficará o
entendimento de ambas as partes.
Na fase da análise dos requisitos é preciso que tenha um grande
conhecimento e entendimento dos requisitos de software, nada adianta ser feito se o
programa for analisado e especificado de maneira errada, o resultado final com
certeza não irá satisfazer o cliente-usuário. A análise de requisitos requer um
processo de modelagem, refinamento e especificação, diagramas, modelos, e fluxos
também são utilizados para que o problema a ser resolvido possa ser bem
explicitado de uma maneira que faça com que o entendimento seja visivelmente
identificado. A analista é tido como um consultor e solucionador de problemas,
porém a análise e especificação de requisitos não são tarefa fácil, a
comunicabilidade entre as partes é constante, por este motivo a chance de ocorrer
algum tipo de erro é maior devido a má interpretação de alguma informação que
tenha sido passada.
A documentação dos requisitos é a parte formal do processo, significa
a especificação oficial dos requisitos do sistema para cliente/usuário final, e para o
desenvolvedor do software. A documentação de requisitos deve descrever todos os
27
serviços e funcionalidades que o sistema deve oferecer, quais são suas restrições,
informações sobre o domínio da aplicação, a documentação dos requisitos é tido
também como um contrato entre o cliente/usuário e o gerente de projeto, pois válida
o acordo firmado segundo a especificação requerida dos requisitos do cliente. A
documentação de requisitos é utilizada também para que possa comunicar as
necessidades do sistema a todos os envolvidos no processo de desenvolvimento de
software. É necessária uma estrutura para a elaboração dessa documentação dos
requisitos, esta estrutura deverá conter introdução, propósito do documento, escopo,
definições, acrônimos e abreviações, referências, casos de uso, diagramas, entre
outros.
O processo de verificação e validação dos requisitos de software serve
como base para que o software possa cumprir com as suas especificações e assim
atenda às necessidades dos clientes/usuários. O processo de validação e
verificação é muito abrangente, devem ser aplicados a cada etapa no que se diz
respeito ao processo de desenvolvimento, seus principais objetivos são relatar
algum possível erro no sistema e garantir se o sistema será ou não plausível de
utilização operacional. É necessária a realização de testes de programas que
auxiliará na identificação de possíveis erros ou ausência, existem alguns tipos de
testes, dois exemplos de testes são os testes de defeito e os testes estatísticos. Os
testes de defeito realizam testes com o intuito de descobrir defeitos do sistema, para
que um teste seja bem sucedido é necessária a presença de defeitos no sistema, os
testes estatísticos normalmente
utilizados para
testes de desempenho
e
confiabilidade dos programas, ou seja, tempo de execução e tempo de resposta,
devendo ser utilizados de forma paralela com a verificação estática para a validação
tendo uma cobertura total das atividades.
As metas estabelecidas no processo de validação e verificação dos requisitos
de software estabelecem um vínculo de confiança se adequando ao seu propósito,
devendo ser suficientemente adequado para o uso, o tipo de uso identificara o grau
de confiança que será necessário, não significando que será totalmente livre de
defeitos. A confiança estabelecida no processo de validação e verificação será de
acordo com o propósito do sistema, atendendo as necessidades dos usuários e do
ambiente de mercado, a função e as expectativas do software será de acordo com
28
as exigências da organização, o ambiente de mercado tem como o objetivo principal
inserir produtos no mercado, sendo mais importante esta inserção do que encontrar
os defeitos dos programas. A verificação e validação e teste, tem como foco principal
estabelecer a existência dos problemas e defeitos de um programa, já a depuração
esta com um foco maior na eliminação desses defeitos
O Processo de gerenciamento dos requisitos de software é o conjunto de
todas essas etapas descritas anteriormente estando associada aos principais
problemas e necessidades do desenvolvimento de software ele serve como um
estrutura base para as próximas etapas.
1. FIGURA 6 - ARTIGO DA REVISTA ENGENHARIA DE SOFTWARE – ARTIGO
ENGENHARIA DE SOFTWARE – INTRODUÇÃO A ENGENHARIA DE REQUISITOS.
WWW.DEVMEDIA.COM.BR
As atividades de produção de requisitos é uma concentração da maioria
dos processos de engenharia de requisitos, com o fluxo entre as atividades, na há
limites impostos entre elas.
29
No dia-a-dia há muita relação entre as atividades, no inicio do processo
são consideradas:
As descrições estabelecidas pelos stakeholders,
As informações necessárias para a substituição do sistema com qualquer
sistema que seja necessária a substituição, sendo primordial a interação entre
eles;
Seguir uma padronização adequada para auxiliar na pratica de
desenvolvimento de sistema, gerencia de qualidade, entre outros;
Obter um regulamento externo, como leis e regulamento de segurança ou
saúde;
Aquisição de domínio gerais de aplicação
6.1. Modelo do problema
O modelo problema é um processo de elaboração de requisitos de um projeto,
podendo referir-se a um produto indivisível de software ou um conjunto de componentes
de software, as principais características deste modelo incluem, funcionalidades,
interfaces externas, desempenho, outros atributos, restrições impostas pela aplicação.
A confecção deste modelo problema é constituída por equipes de desenvolvimento
de projeto tendo como participação obrigatória usuários do produto em pauta, este
usuário deverá ser indicado pelo cliente para definir os requisitos do produto, sendo
necessário ter o conhecimento e autoridade suficiente para definir as necessidades do
produto. Normalmente esse usuário passa por treinamentos sobre técnicas e noções que
serão utilizadas nas atividades da disciplina de requisitos.
Os usuários devem ter a consciência da função indispensável que desempenham
na modelagem do problema, é preciso também, informar o papel que terão no restante do
projeto, como no desenho das interfaces de usuário, avaliações do produto, revisões,
testes de aceitação e em todos os demais procedimentos de implantação que façam
parte do projeto.
30
A especificação de requisitos serve apenas para a elaboração de um relatório
destinado ao consumo dos clientes/usuários, quando se faz necessário uma
documentação que sirva de base contratual para que se possam definir os requisitos que
deverão ser suprimidos pelo produto. O conteúdo deste documento pode ser retirado do
modelo do problema de uma forma automatizada.
6.2. Modelo do sistema
Um produto de software deve conter toda a funcionalidade que o cliente necessita,
ou fazer parte de um sistema maior, no caso do modelo do problema ele é relativo ao
sistema maior, os requisitos de nível de sistema podem ser contidos nos seguintes
artefatos, um modelo do sistema, documento de definição do produto ou uma proposta de
desenvolvimento de sistema.
O artefato mais completo é o modelo de sistema, ele define os requisitos aplicáveis
ao sistema, os requisitos podem ser repassados aos componentes de software, já a parte
de desenho do modelo do sistema define interfaces e os outros componentes de
software. Os requisitos dos componentes de software não podem colidir com os requisitos
do sistema total.
Quando o software passar a fazer parte de um sistema maior, os requisitos do
sistema e de seus componentes passaram a ser definidos em conjunto pelas equipes do
sistema e negociados entre elas. Equipes com que as quais a equipe de modelagem dos
requisitos de software pode ter de interagir, são os desenvolvedores de hardware,
especialistas da área de aplicação, redes, banco de dados, além do departamento de
marketing e das áreas financeira e administrativa.
Esses grupos devem trabalhar em conjunto e também com os clientes e usuários
chaves para a definição dos requisitos nos níveis de sistema, seu dever é indicar para os
participantes do levantamento de requisitos de sistema se os requisitos que serão
aplicados são viáveis, a equipe de produto de software deve aprovar o requisito de
sistema caso ele tenha um grande impacto no desenvolvimento de software.
31
No decorrer do desenvolvimento dos requisitos de sistema, os participantes
precisam definir quais as características dos requisitos são mais críticas, principalmente
do ponto de vista dos clientes e usuários, é preciso estabelecer regras para o critério de
aprovação de cada componente do sistema que um grupo deva fornecer aos outros
grupos.
6.3. Modelagem de Processo, casos de uso e qualidade de software
Modelagem de processos de software serve como auxilio para a equipe entender as
descrições e os caminhos para elaboração do desenvolvimento do software, entre
algumas razoes para a modelagem do processo estão a necessidade de a equipe
registrar as descrições do processo de desenvolvimento do software, a criação de um
modelo de processo refletindo os objetivos de desenvolvimento, sendo necessário
primeiramente ser definida a situação na qual será utilizado.
Um caso de uso representa uma unidade de funcionalidade, casos de uso são mais
utilizados para descrever funções completas de um sistema, mas também podem ser
usados no nível de subsistemas e até de classes. Os serviços oferecidos pelo caso de
uso agregam valores externos que interagem com ele.
No nível de sistema, um caso de uso realiza um aspecto maior da funcionalidade do
produto, gerando benefícios para os clientes, usuários e sistemas, o conjunto dos casos
de uso cobre a funcionalidade do produto, e cada caso de uso tem a sua
representatividade em relação à funcionalidade.
32
Figura 7 - http://jonysberg.wordpress.com/category/mda/
A engenharia de requisitos se preocupa com o colhimento de informações para
elaborar os requisitos de um sistema de software, armazenamento e gerenciamento. Um
requisito é uma determinada função ou condição que o sistema tem que atender. O
requisito funcional descreve uma determinada função que o sistema deve suportar já um
requisito não funcional descreve um aspecto não funcional, mas que o sistema deve
acolher, requisitos não funcionais estão ligados com os aspectos do sistema, como:
desempenho, distribuição, segurança, integração com a internet, entre outros.
Devido à influência de métodos desenvolvidos por volta da metade da década de
1990, a UML incluiu os diagramas de casos de uso que permitem uma aproximação mais
focada nos usuários do sistema. A modelagem de requisitos funcionais, em meio à
especificação e casos de uso, é considerada extremamente adequada, pois facilita a
comunicação entre a equipe de projeto e os clientes, e, ainda viabiliza a comunicação, o
gerenciamento e a forma como é conduzida o desenvolvimento do projeto.
Essa relação entre casos de uso e requisitos é bem conturbada, há autores que
consideram os casos de uso uma boa forma de representar os requisitos, já outros
consideram requisitos e casos de uso como conceitos bem distintos; no entanto há
relações entre eles que devem ser notadas.
33
Há
algumas
características
importantes
na
especificação
de
requisitos,
características ligadas com a sua apresentação, organização e nível de detalhe.
Referente à sua organização e apresentação, há autores que defendem que os requisitos
devem ser apresentados visualmente através de diagramas de casos de uso, e cada caso
deve ser especificado detalhadamente em meio a uma descrição textual (definido pela
equipe de projeto) e também por diagramas de colaboração ou projetos de interfaces
homem-máquina.
Quando os requisitos são descritos de forma textual, é recomendado que sejam
organizados dentro de uma seqüência numérica e que haja pelo menos duas seqüências
diferentes: uma para os requisitos funcionais e outra para os requisitos não funcionais.
Por outro lado quando os casos de uso servem como base para os requisitos, é
importante que se use o pacote da UML como estrutura, essas duas posições vão ser
validas conforme forem utilizadas com freqüência e consistência. Porém a organização
dos requisitos em conjunto com os casos de uso facilita a comunicação com os usuários
e torna mais fácil o entendimento.
Quanto à especificação de requisitos e casos de uso, esta inteiramente ligada ao
tipo de projeto, perfil do cliente e ao tipo de sistema especificado. Porém é preciso estar
ciente que é possível haver um caso de uso descrito com apenas 3 paginas ou em um
com 40 páginas, em conseqüência desse fato é possível haver um sistema especificado
em uma dezena ou em uma centena de paginas
Qualidade de Software é estar em consonância com os requisitos estabelecidos com
o cliente, qualidade é satisfazer e ate mesmo antecipar as necessidades e desejos do
cliente, ter um controle e um relatório escrito a ser seguido também pode ser um
significado de qualidade.
34
Toda decisão tomada no decorrer do processo de desenvolvimento do software
poderá afetar a sua qualidade final. O produto final do processo de desenvolvimento é a
soma das decisões e operações realizadas juntamente com o ciclo de desenvolvimento.
Para que se possa produzir um software com alta qualidade é indispensável um
investimento em qualidade e todos os outros pontos do processo.
“Qualidade de Software é um processo sistemático que focaliza todas as etapas e
artefatos produzidos com o objetivo de garantir a conformidade de processos e produtos,
prevenindo e eliminando defeitos” (Alexandre Bartié,Garantia da Qualidade de Software,
pag. 16) .
Softwares mal testados ocasionam grandes prejuízos as organizações, um pequeno
erro que venha a ocorrer internamente no projeto poderá acarretar gastos desnecessários
para a organização, como solicitação de manutenção antecipadamente, manutenção de
equipamentos, gerar estatísticas incoerentes, por este motivo é muito importante se obter
a qualidade.
35
7.
TIPOS DE REQUISITOS DE SOFTWARE:
Existem vários tipos de requisitos de software entre eles estão os requisitos de
usuário que possui uma linguagem bem natural onde também poderá ser
representado por diagramas que explicitam as funções que o sistema ira ter e as
suas restrições, seu desenvolvimento esta voltado para leitores como os Gerentes
de clientes, usuários finais do sistema, engenheiros do cliente, gerentes do
fornecedor e arquitetos de sistema.
Requisitos do sistema, neste tipo de requisito exigem uma documentação um
pouco mais detalhada relatando as funções e restrições do sistema, sua escritura
deverá ser basicamente como se fosse um contrato entre o cliente e o
desenvolvedor do software, estão voltados para leitores como usuário final de
sistema, engenheiros do cliente, arquitetos do sistema e desenvolvedores de
software.
Especificação do software neste tipo de requisito exige se que a prescrição seja
um pouco mais detalhada com relação ao software, pois servirá como base para o
projeto e a implantação, sua escritura normalmente é feita diretamente para os
desenvolvedores ou arquitetos de sistemas e raramente para engenheiros do
cliente.
Os Requisitos também podem ser definidos como requisitos funcionais,
requisitos não funcionais e requisitos de domínio, os requisitos funcionais são
basicamente as definições de serviços que o sistema devera fornecer e as reações
que o sistema devera ter em situações como a entradas especificas, os requisitos
não funcionais neste caso são as restrições sobre os serviços e funções que o
sistema fornecerá, já os requisitos de domínio se origina da aplicação do sistema os
refletem as características e definições do domínio, podendo ser ate mesmo
requisitos funcionais e não funcionais.
36
Basicamente os requisitos de software são metas que são determinadas por
usuários estabelecendo propriedades do sistema, ou seja, são os requisitos de
sistema que relatam as propriedades do software.
Requisitos de Software
“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”.
F. P. Brooks Jr, “No Silver Bullet: Essence and Accidents in
Software
Engineering”, IEEE Computer, abril 1987.
Os requisitos podem ser relatados como uma condição ou capacidade do
software, podendo solucionar problemas ou atingir um determinado objetivo, atender
necessidades ou limitações impostas pelos componentes do sistema.
Basicamente os requisitos são subdivididos em requisitos funcionais e nãofuncionais, os funcionais descrevem funções ou objetivos estabelecidos por clientes
e usuários, a função é utilizada no sentido similar de operação que poderá ser
utilizado pelo sistema através de comandos, eventos internos ou externos do
sistema. A especificação determinará o que se espera que o software execute, é
imprescindível estabelecer a diferença da atividade que ocorre no período de design
do software e das atividades de especificação. O design de software servirá para a
tomada de decisões onde as funções do sistema deverá satisfazer os usuários.
Os não-funcionais são as qualidades de um modo geral, como usabilidade,
desempenho, entre outros. De uma forma geral são descritos de maneira informal e
são difíceis de validar. Na medida em que o software de expande, a necessidade de
se obter requisitos precisos influência a determinação da maior dificuldade do
processo, como grande portabilidade fazendo-se necessária associação dos
requisitos em relação ao ciclo de vida do sistema.
37
Requisitos funcionais descrevem as funcionalidades ou
serviços que se espera do sistema (funções precípuas do
sistema). Exemplo: “o sistema deve notificar o requisitante por
e-mail quando sua requisição estiver disponível para retirada”.
Requisitos não funcionais são requisitos não diretamente
relacionados às funções precípuas do sistema. Exemplos:
requisitos de confiabilidade, robustez, eficiência e segurança.
EA976 – Prof. Eleri Cardozo – FEEC/Unicamp
7.1. Requisitos de usuários
Identifica a necessidade, destacando o problema e sua solução, iniciando-se
o estudo de detalhes para facilitar o domínio do problema, para uma solução mais
rápida. Com a aprovação dos requisitos de usuários é definido o inicio do ciclo de
desenvolvimento de um software, que tem como termino de validade a data
estipulada pelos desenvolvedores do software. A etapa operacional ocorre após a
aprovação provisória do software pelo operador e tem a sua desativação ao termino,
basicamente o ciclo de vida de um software ocorre com a aprovação da
documentação dos requisitos do usuário e termina com a sua desativação.
Nesta fase inicial descreve-se a formalização de um processo interativo, onde
o usuário pode definir suas necessidades, de forma precisa, completa, verificável e
viável, cujo é o principal meio de comunicação entre usuários e desenvolvedores,
esta fase só terá fim com a aprovação do DRU, após um processo classificado como
revisão formal.
Requisitos de usuário especificam o comportamento externo do
sistema sob a perspectiva do usuário (humano ou não).
Problemas na identificação dos requisitos de usuário:
• Falta de clareza ou ambigüidades, por serem descritos em
linguagem natural (ex.: “o usuário deve ser alertado sobre
operações perigosas”);
• Confusão entre requisitos funcionais, não funcionais e objetivos
do sistema (ex.: “o sistema deve facilitar a solicitação de
declarações”);
• Fusão de requisitos onde um único requisito é na verdade uma
condensação de vários requisitos (Ex.: “O sistema deve permitir
38
ao usuário escolher a imagem a ser processada (dentre os
diversos formatos permitidos) por meio de um file chooser”).
EA976 – Prof. Eleri Cardozo – FEEC/Unicamp
Acrogramas
PGQS Plano de Garantia Qualidade de Software
DRU Documento Requisito do Usuário
PGPS Plano Gerencial do Projeto de Software
.../RS secção Requisito de Software do...
PGCS Plano Gerencial de Configuração de Software .../RU secção Requisitos do Usuário do...
PVVS Plano de Verificação e Validação de Software .../TA secção Testes de Aceitação do....
Figura 8 - As Macro Atividades da Fase de RU - www.dem.inpe.br
A figura ilustra uma fase que compõe o desenvolvimento do ciclo de vida,
as atividades gerenciais administram as atividades executivas apoiando e
direcionando-as. As quatro atividades gerenciais maiores estão ilustradas na parte
inferior da figura e o restante é representado por corre-mãos. Os requisitos de
usuários estabelecem as necessidades do que deve ser feito e não como deve ser
feito.
39
7.2. Especificação e análise de requisitos de software
São atividades que determinam os objetivos do software e as restrições,
como elaborar a especificação do software podendo ser vista como parte da análise
do sistema normalmente iniciada com a análise do sistema, podendo ser estendida
após a elaboração de documentos de especificação, onde serão especificados os
requisitos de software.
Analise e especificações devem ser realizadas em conjunto, porém são
atividades interdependentes. A análise representa a modelagem dos elementos, é
necessário que se identifique a pessoas, atividades e informações do domínio, desta
forma será decidido o que fará ou não parte do sistema. Os componentes que não
são informatizados são automaticamente considerados uma entidade externa ao
software.
Especificação é basicamente a descrição do que o software pode fazer, seja
ela de uma forma sistemática ou abstrata, apresentando como solução os problemas
na análise e resolvidos pelo software do sistema visando descrever as propriedades
funcionais, tendo como objetivo solucionar o problema do domínio. A especificação é
uma forma de comunicação sistemática com arquitetos, programadores e testadores
do software em questão.
Requisitos de Sistema
Requisitos de sistema (funcionais, não funcionais e de domínio)
descrevem mais detalhadamente os requisitos de usuário. São
base para um contrato de implementação do sistema.
Problemas na identificação dos requisitos de sistema:
• Requisitos de sistema ainda são descritos em linguagem natural
acompanhada de diagramas ilustrativos (a ambigüidade persiste);
• Idealmente, os requisitos de sistema não devem conter decisões
de projeto, mas requisitos impostos pela arquitetura e sistemas
legados acabam sendo incorporados nos requisitos de sistema.
EA976 – Prof. Eleri Cardozo – FEEC/Unicamp
40
7.3. Requisitos e interfaces externas
Nesta etapa, descreve de forma detalhada os dados trocados e os
componentes de controle desta interface, de forma especifica os requisitos de
interface externa.
Interfaces externas estabelecem requisitos para que o sistema
possa interoperar com outros sistemas e com os usuários
humanos (são, portanto, requisitos de sistema). O IEEE
classifica as interfaces externas em:
• Interfaces de usuário;
• Interfaces de hardware;
• Interfaces de software;
• Interface de comunicação.
As interfaces de software definem:
• procedimentos (serviços providos/requeridos);
• estruturas de dados (trocados entre sistemas);
• representação de dados trocados (XML, Base64, ...).
EA976 – Prof. Eleri Cardozo – FEEC/Unicamp
41
8. CONCLUSÃO
Após as abordagens realizadas nesta monografia foi possível estabelecer
a importância dos requisitos de software, sendo eles fundamentais no que se diz
respeito à parte de um sistema computacional, porém para colocá-la em prática é
necessário que seja feita uma análise complexa contendo o máximo de informações
possíveis, pois desta forma viabiliza a criação do software com o mínimo de falhas
possíveis, identificando assim os problemas que venham a atrapalhar a criação de
um sistema de software.
Após o encerramento da fase de modelagem e verificação de requisitos
teremos um projeto que definirá os objetivos e necessidades que deverão ser
alcançados, possibilitando a definição do escopo do projeto com precisão, nesta
fase é necessário detalhar todos os aspectos funcionais e não-funcionais
estabelecendo um conjunto de especificações com um nível máximo de
detalhamento
Como já dito anteriormente, porém é sempre bom ressaltar que nunca
deixe de lado os desejos do cliente, pois é nele que é preciso se basear para que
possam ser elaborados os requisitos do software, tomando como base uma idéia
principal de desenvolvimento e o objetivo que o cliente deseja alcançar com a
criação do software.
É fundamental que os requisitos possam ser bem compreendidos pelos
desenvolvedores, para isso é preciso que se use uma linguagem clara e objetiva na
descrição dos requisitos de software, feito isso a chance de alcançar o êxito em sua
aplicação será bem maior.
42
9. ANEXOS – MODELOS DE DOCUMENTOS DE REQUISITOS
VOLATILIDADE DOS REQUISITOS
RQ
Alta
Média
Baixa
MATRIZ DE RASTREABILIDADE - REQUISITOS CLIENTE X PRODUTO
RQC
RQ
MATRIZ DE RASTREABILIDADE - REQUISITOS FUNCIONAIS E NÃO
FUNCIONAIS DO PRODUTO
RQC
RQ
MATRIZ DE RASTREABILIDADE - REQUISITOS DO PRODUTO X
COMPONENTES
Com
RQ
43
9. DOCUMENTO DE REQUISITOS
ID documento:
Data:
/
/
Versão
:
Responsável pelo documento:
ID Projeto:
HISTÓRICO DE REVISÕES
Data de
criação/
atualização
Descrição da(s) Mudança(s)
Ocorrida(s)
Autor
Versão do
Documento
ID.
Solicitação
de Mudança
44
MODELO DE DOCUMENTO DE ESPECIFICAÇÃO DE REQUISITOS
Título: Documento de Especificação de Requisitos
Dados Gerais:
Projeto: <<Nome do Projeto>>
Versão: <<Número da Versão do Documento de Especificação de Requisitos>>
Responsáveis: <<Nomes dos Responsáveis>>
Seções do Documento e Instruções para seu preenchimento:
1. Introdução
Texto livre introdutório descrevendo o documento.
2. Propósito do Sistema
Texto apresentando uma descrição sucinta do negócio a ser tratado pelo
sistema em questão.
3. Modelo de Casos de Uso
Apresentação do modelo de casos de uso. Caso o sistema seja decomposto
em subsistemas, para cada subsistema, apresentar primeiro o diagrama de casos de
uso correspondente, seguido das descrições dos casos de uso desse diagrama,
observando a conformidade ao padrão de descrição de casos de uso apresentado a
seguir.
Observar, ainda, que os casos de uso devem ser nomeados com verbos no
infinitivo, seguidos por complemento.
45
1. Projeto:
Sub-Sistema:
Caso de Uso:
Data:
Descrição do Propósito: Descrição sucinta do propósito do caso de uso.
Cursos Normais: Descrição dos cursos normais dos fluxos de eventos relacionados
a esse caso de uso, abrindo um item específico para a descrição do curso normal de
cada um dos fluxos de eventos.
Nome do Fluxo de Eventos
Descrição
Cursos Alternativos: Para cada fluxo alternativo ou tratamento de exceção
identificado e não tratado na seção anterior, abrir um item para sua descrição.
Nome do Fluxo de Eventos
Descrição
Entidades: Relacionar as entidades do modelo ER que são relevantes para modelar
os conceitos envolvidos no caso de uso.
46
10. REFERÊNCIAS BIBLÍOGRAFICAS
Livro: Engenharia de Software (Fundamentos, métodos e padrões) – 3º
edição Autor: Wilson de Pádua Paula Filho, 2005.
Livro Engenharia de Software e Sistemas de Informação – 3ª Edição Autor:
Denis Alcides Rezende, 2003
Livro Projeto de Software - Autor Eric Braude, 2004.
Livro Gerenciando Projetos de Desenvolvimento de Software – 4ª Edição
Autor: Jose Carlos Cordeiro Martins. 2005
Livro Gerenciando Projetos – 6º edição autor Ricardo Vargas, 2006
Livro Engenharia de Software Teoria e Pratica 2ª Edição – Shari Lawrence
Pfleeger
Livro Garantia da Qualidade de Software – Alexandre Bartié
47
11. REFERÊNCIAS ELETRÔNICAS
http://www.wthreex.com/rup/process/activity/ac_prdsrs.htm#Detail the
software requirements - Copyright
(c) 1987 - 2001 Rational Software
Corporation
www.swebok.org
www.computer.org/certification
http://www.inf.ufpr.br/silvia/ES/SweES/SweESalunos.pdf
http://engenharia-de-software.nuvvo.com/lesson/11092-requisitos-de-software
http://www2.dem.inpe.br/ijar/ProdProcPadroes.html
http://www.lenep.uenf.br/~bueno/DisciplinaCpp/Aulas/aula_06-2Elaboracao.pdf
http://engenhariadesoftware.blogspot.com/2007/02/ciclo-de-vida-do-softwareparte-1.html
http://www.tiagodemelo.info/aulas/cefet/2007/aula-engenharia-software.pdf
http://www.inf.ufes.br/~falbo/download/aulas/es-g/2005-1/NotasDeAula.pdf
http://alexandrebartie.spaces.live.com/?_c11_BlogPart_pagedir=Next&_c11_B
logPart_handle=cns!7F918BA9DA86720C!285&_c11_BlogPart_BlogPart=blo
gview&_c=BlogPart
http://www.devmedia.com.br/articles/viewcomp.asp?comp=8034
http://engenhariadesoftware.blogspot.com/2007/05/requisitos-de-software.html
http://www2.dem.inpe.br/ijar/EngSofRequisitosUsuario.html
48
Download

faculdade do litoral sul paulista – fals clayton de souza silva