Escolar Documentos
Profissional Documentos
Cultura Documentos
Conceitos gerais
Sistema de informação pode ser definido como "qualquer sistema utilizado para prover
informações qualquer que seja sua utilização" (POLLONI, 2000). Todo sistema de informação
pode ser visto, do ponto de vista mais técnico, como um conjunto de programas e de estruturas
de dados. Os métodos de análise e projeto de sistemas historicamente enfocaram dados e
processos. Mas de uma ênfase inicial em algoritmos, programas e processos, as metodologias
de desenvolvimento migraram para uma abordagem centrada nos dados. A partir dai, as
preocupações dos desenvolvedores e dos usuários foram passando dos dados operacionais para
as informações agregadas envolvidas no processo de tomada de decisão. Os sistemas evoluíram
para acompanhar a gerência de negócios.
Apesar da importância dos sistemas de informação no apoio a decisões estratégicas, os
resultados obtidos pelo uso da informação nos processos decisórios não têm sido satisfatórios.
Uma das prováveis causas das limitações dos sistemas de informação pode ser creditada à visão
unilateral da informação por parte dos responsáveis pelo desenvolvimento de metodologias de
análise estruturada de sistemas. Esta diferença explica as limitações dos sistemas de informação
para uso em decisões estratégicas.
É possível classificar os sistemas de informações em sistemas de processamento de transações
e sistemas de suporte à decisão. "Os sistemas de processamento de transações têm como
principal objetivo o registro acurado das operações e fatos relevantes das áreas de negócio. A
ênfase nesses sistemas é com a validação dos dados, visando maior qualidade e depuração das
bases de dados. Já os sistemas de suporte à decisão "são projetados para apoiar os gestores de
negócio no processo de tomada de decisão numa perspectiva de mais longo prazo, no trato da
informação, do que os sistemas de processamento de transações e envolvendo um maior
julgamento humano" (DHAR e STEIN, 1997).
Outras definições
Sistema de Informação (em inglês, Information System) é a expressão utilizada para descrever
um sistema automatizado (que pode ser denominado como Sistema de Informação
Computadorizado), ou mesmo manual, que abrange pessoas, máquinas, e/ou métodos
organizados para coletar, processar, transmitir e disseminar dados que representam informação
para o usuário.
Além disso, o termo também é utilizado para descrever a área de conhecimento encarregada
do estudo de Sistemas de Informação, Tecnologia da Informação e suas relações com as
organizações. Neste contexto, esta disciplina é comumente classificada como uma Ciência
Social Aplicada, ao contrário de sua disciplina correlata Ciência da Computação, considerada
uma Ciência Exata.
A área de conhecimento Sistemas de Informação é considerada pelos pesquisadores como uma
área multi ou trans-disciplinar, devido às inter-relações com outras área de conhecimento, tais
como Ciência da Computação, Administração, Economia, Sociologia, Direito, Engenharia de
Produção, Ciência da Informação e outras.
Um terceiro uso para a expressão Sistemas de Informação refere-se a um curso de graduação
cujo foco é o desenvolvimento e aplicação de Sistemas de Informação Computadorizados nas
organizações. O conteúdo deste curso abrange aspectos técnicos, gerenciais e sociológicos,
abrangendo, em linhas gerais, os conteúdos relevantes estudados na área de conhecimento
Sistemas de Informação.
As concepções mais modernas de Sistemas de Informação contemplam também os Sistemas
de telecomunicações e/ou equipamentos relacionados; sistemas ou subsistemas interconectados
que utilizam equipamentos na aquisição, armazenamento, manipulação, gestão, movimento, no
controle, na exposição, na troca, no intercâmbio, na transmissão, ou na recepção da voz e/ou
dos dados, e inclui o software e hardware utilizados. Em relação a esta última definição, é
comum nos meios acadêmicos a utilização do termo Tecnologias da Informação e
Comunicação (ICT - Information and Communication Technologies).
Um Sistema de Informações pode ser então definido como todo sistema usado para prover
informação (incluindo o seu processamento), qualquer que seja o uso feito dessa informação.
Um sistema de informação possui vários elementos inter-relacionados que coletam (entrada),
manipulam e armazenam (processo), disseminam (saída) os dados e informações e fornecem
um mecanismo de feedback.
Segundo a definição adotada pelo Ministério da Educação e Cultura brasileiro, o curso de
Sistemas de Informação estuda a computação como atividade-meio, ou seja, estuda a aplicação
da computação nas organizações. Esta definição é oposta à definição do MEC para os cursos
de Ciência da Computação e Engenharia da Computação, que estudam a computação como
atividade-fim.
Ao analisarmos a Figura, acima, percebemos que as organizações são vistas como locais de
procedimentos operacionais e administrativos, que podem estar formalizados, escritos ou
registrados, ou serem originários de práticas informais. Esses procedimentos normalmente são
passados para um sistema de informação. As pessoas são vistas como os usuários que se
aproveitam das informações de um sistema para executar o seu trabalho. São elas que inserem
entradas no sistema, utilizam suas saídas e tornam o sistema todo produtivo. Eles devem estar
preparados para realizar as suas tarefas e usar eficientemente os sistemas de informação, pois
a sua atitude afeta profundamente o desempenho organizacional. A desmotivação e um
ambiente de trabalho não adequado contribuem para uma atitude negativa perante o uso da
informação disponível. Portanto, os sistemas devem ser construídos às necessidades daqueles
que os utilizam, e não o contrário (MÜLBERT e AYRES, 2007).
Podemos afirmar, então, que se a organização tiver as melhores condições em termos de
procedimentos, pessoas e tecnologia a possibilidade de ter um excelente sistema de
informações é grande e isso é de extrema importância em um cenário tão competitivo que se
vive actualmente no mundo. Esses sistemas devem proporcionar ganhos ou no mínimo
equivaler ao investimento realizado neles.
Os sistemas de informação desempenham 3 papéis vitais em qualquer tipo de organização:
● Suporte de seus processos e operações
● Suporte nas tomadas de decisões de seus funcionários e gerentes
● Suporte em suas estratégias em busca de vantagem competitiva
Bibliografia
VER EM ANEXO
TEMA II: DESENVOLVIMENTO NO CONTEXTO DA ENGENHARIA
DE SOFTWARE E RISCOS
Categoria Descrição
Técnico e Riscos associados a aspectos técnicos do projeto. Pode estar
Desempenho relacionado ao grau de inovação tecnológica do projeto em
questão.
IDENTIFICANDO CONFLITOS
A resolução de conflitos sem dúvidas é uma das tarefas mais difíceis de executar, normalmente
esses conflitos estão relacionados à: comunicação entre analista e o cliente, a complexidade do
sistema a ser desenvolvido e as mudanças que podem ocorrer antes mesmo de terminar o
processo de análise de requisitos. Uma das formas de solucionar esses conflitos é determinar a
prioridade dos requisitos junto ao cliente, alguns requisitos são considerados mais urgentes do
que outros, então a parti dele pode se montar uma hierarquia de requisitos. Fazer uma
hierarquização requisitos e subrequisitos é uma solução que pode ser usada para resolução de
alguns conflitos, desta forma é possível identificar como os requisitos estão interligados,
avaliar as dependências desses requisitos. Outra técnica que pode auxiliar ao analista na solução
de conflitos é o checklist e pode ser usada como ferramenta para justificar a prioridade de um
requisito. Checklist é uma lista de questões usadas para avaliar os requisitos. O requisito é
mesmo necessário? O requisito é testável? O requisito poderia ser decomposto em
subrequisitos? Essas são algumas perguntas que servem como observação daquilo que é
importante considerar na análise. Priorizar um requisito muitas vezes se torna um problema
para o analista uma vez que os stakeholders considerem todos os requisitos essenciais, ou seja,
todos eles são de grau importância. Cabe ao analista saber lidar com essa situação e possuir
bons argumentos na hora da negociação dos requisitos. Primeiro ele deve identificar os
requisitos considerados problemáticos e então entrar na fase de negociação desses requisitos.
A negociação de requisitos se dá sobre os requisitos que foram considerados problemáticos,
aqueles que apresentaram alguma inviabilidade ou simplesmente demonstram dúvidas quanto
a sua existência, a intenção é aqui é encontrar um objetivo global, nessa negociação aspectos
como tecnologia, custo, regras jurídicas, fatores políticos e sociais devem ser considerados.
Gerência de Requisitos e seus pontos críticos
Diversos fatores contribuem para a instabilidade dos requisitos ao longo do tempo, mudanças
externas no ambiente tais como: mudança na legislação, mudança no mercado, mudança e
posicionamento estratégico da empresa, ou até mesmo erros incorridos no processo de
requisitos, entre outros, levam a necessidade de alterar os requisitos e tais alterações precisam
ser conduzidas ordenadamente a fim de não se perder o controle de prazo e custo do
desenvolvimento. De acordo com Sommerville (2003) o Gerenciamento de Requisitos é o
processo de compreender e controlar as mudanças nos requisitos de sistemas. Esse processo é
realizado em conjunto com os outros processos da Engenharia de Requisitos, o seu
planejamento tem início desde levantamento inicial dos requisitos, ou seja, no processo de
Identificação de Requisitos, a partir do momento em que um esboço da versão do documento
de requisitos estiver disponível. O processo de Gerenciamento é de extrema importância, é nele
que são tratados os riscos bem como a sua prevenção. São realizadas várias atividades dentro
deste processo como: o gerenciamento de mudanças, rastreabilidade, configuração e qualidade
dos requisitos. Que os requisitos podem sofrer constantes mudanças ao longo do
desenvolvimento do sistema é incontestável, saber como lidar com essas mudanças é árduo
trabalho que o analista deve realizar, essa será algumas das preocupações a serem discutidas
no processo de Gerenciamento de Requisitos como tratar as mudanças de requisitos e também
como rastrear esses requisitos.
MUDANÇAS DE REQUISITOS
Por natureza alguns requisitos sofrem alterações devido ao ramo de atividade da empresa, uma
solicitação feita por parte do cliente que pode de alguma forma acarretar modificações nos
requisitos do projeto e também da legislação do país. Essas mudanças precisam ser controladas
a fim de não atrapalhar o desenvolvimento do sistema. O Gerenciamento de Mudanças de
requisitos tem por objetivo elaborar procedimentos, processos e padrões que serão utilizados
para gerenciar as mudanças dos requisitos do sistema, saber quando e qual foi o motivo da
mudança. Primeiramente o problema de requisito deve ser identificado, essa identificação
poder sido feita por uma análise mais detalhada do documento de requisitos ou até mesmo
como já foi dito de novas necessidades do cliente. Posteriormente a essa identificação a
solicitação de mudança será analisada, observa-se então se outros requisitos serão afetados pela
esta solicitação e qual o custo que essa mudança pode gerar após essa a análise a solicitação de
mudança pode ser aceita ou não. É importante possuir formulários de solicitação de mudanças
de requisitos e armazená-los e também informar as partes interessadas as mudanças solicitadas
e se elas afetarão o orçamento e o cronograma do projeto. Novamente nota-se a necessidade de
comunicação.
RASTREABILIDADE DE REQUISITOS
A rastreabilidade de requisitos é uma habilidade que tem por finalidade identificar e
compreender as ligações, os relacionamentos entre os requisitos, arquitetura e implementação
final do sistema, alguns requisitos são originados de outros requisitos, logo, a alteração de um
requisito pode afetar outro requisito, e conseqüentemente a arquitetura e implementação do
sistema. Além disso, a rastreabilidade também pode apoiar a detecção precoce de alguns
requisitos não atendidos pelo software. A rastreabilidade serve também como auxilio em outros
processos, desde identificação de requisitos até a validação de requisitos, durante o processo
de identificação a resolução de requisitos em conflito é um problema para o analista, este
problema muitas vezes persiste até análise de requisitos e validação, a rastreabilidade pode
auxiliar na identificação das origens do requisito conflitante e assim buscar uma solução para
o problema detectado, ela também pode auxiliar o gerenciamento de riscos uma vez que ela
serve de apoio para identificar os artefatos atingidos por cada fator de risco levantado,
possibilitando a elaboração de estratégias para tratamento ou redução dos riscos. Se o analista
souber qual a relação entre os mais diversos produtos, e sistemas, o risco será bem menor e
conseqüentemente o custo para a empresa também. A ratreabilidade de um requisito pode-se
se dar em dois sentidos: pré-rastreabilidade e pós-rastreabilidade. A pré-rastreabilidade ou
rastreabilidade para frente localiza quais os resultados do desenvolvimento serão afetados por
cada requisito, a ratreabilidade para trás ou pósrastreabilidade procura saber existência de cada
requisito, e quem ou o que o originou.
A Engenharia de Requisitos é base para o desenvolvimento de software, ela pode ser
considerada como um pré-requisito para obtenção de sucesso. Se um projeto começar de forma
errada, significará que todo o seu desenvolvimento estará comprometido. Na Engenharia de
Requisitos pode se avaliar diversos fatores de riscos que podem comprometer o
desenvolvimento de software, ela não produz a apenas documentos que pra muitos são
considerados como desperdício de tempo, ela também produz uma política de segurança, de
prevenção e de tratamento para redução de riscos, e também facilita as relações pessoais, entre
analista e cliente/ usuário como os relacionamentos dentro da própria equipe de TI, que
necessita de uma Engenharia de Requisitos bem definida e clara para o desenvolvimento do
sistema, afinal de contas nenhum sistema pode ser considerado de qualidade se houver
requisitos problemáticos. Os requisitos de software são a fundação a partir da qual a qualidade
é medida. A falta de conformidade com os requisitos é falta de qualidade (PRESSMAN. 2006).
Portanto apenas cumprir atividades contidas na Engenharia de Requisitos não é suficiente para
garantia de qualidade de software deve-se observar o fator risco em cada atividade
desenvolvida, desde identificação de requisitos bem como a sua gerência, até a fase de
validação e testes, a fim de se obter um produto de qualidade que principalmente atenda e
satisfaça os clientes, a organização, empresa, pessoa que solicitou o sistema, dessa forma a
possibilidade de criar um software de qualidade será maior.
A definição de um evento pode ser feita através de uma ocorrência que podem ser originadas
através de fontes internas ou externas que influenciam nos objetivos de forma positiva, negativa
ou ambas.
Os eventos em potenciais, internos ou externos, que trarão impacto negativo exigem uma
análise e um planejamento de uma resposta. Também podemos considerar os eventos de
impacto positivo, esses representam oportunidades para ajudar os objetivos a serem alcançados.
Com o objetivo de melhorar a análise dos eventos, pode ser útil fazer o agrupamento por
categorias. Através dessas informações podemos formar uma base mais consolidada de
informações, é possível ter uma visão melhor sobre as semelhanças, grau de completude de
seus esforços e outras informações que irão facilitar a identificação de riscos. As categorias
podem ser feitas de acordo com as necessidades do objetivo.
Bibliografia
VER EM ANEXO
TEMA III: DIFERENTES TIPOS DE MODELOS DE SISTEMA DE
INFORMAÇÃO
Modelo é representação abstrata e simplificada de um sistema real, com a qual se pode explicar
ou testar o seu comportamento, em seu todo ou em partes. (Cougo, 1997). O mundo real é
complexo e dinâmico. Assim, modelos são necessários para entendimento e documentação de
decisões. Um modelo é uma abstração ou uma aproximação que pode ser usada para simular
uma realidade. O desenvolvimento de software, assim como todo projeto complexo, é sempre
associado a atrasos, atualizações de cronograma e revisão de orçamentos. Mas pode se animar,
porque o desafio de criar um plano viável, fazer uma boa gestão do trabalho e monitorar o
andamento ganhou novos aliados com a evolução da tecnologia. Prepare-se para aumentar a
previsibilidade dos projetos e a precisão dos movimentos da sua empresa. Isso porque a era da
análise preditiva já começou. Um estudo da McKinsey levantou que, entre mais de 1.800
softwares desenvolvidos, apenas 30% dos projetos foram entregues no prazo. Além disso, 5%
só conseguiram seguir o cronograma porque tiraram do escopo do projeto algumas
funcionalidades. E você sabe muito bem o que significa um atraso no projeto: mais custos de
desenvolvimento e o aumento considerável de custos indiretos.
Ou pior ainda: a solução pode não ser lançada de acordo com o planejado. Com isso, o processo
perde eficiência, o cliente perde vendas, concorrentes ganham mais uma chance de superar o
seu trabalho e há um prejuízo institucional para a sua marca.
A primeira causa desse descompasso é subestimar a complexidade de um projeto. É preciso
entender que, muitas vezes, os métodos convencionais de análise não são o suficiente. É só
pensar em como é difícil prever quantas linhas de código serão necessárias, simplesmente
seguindo a intuição e o histórico dos programadores. Então, como diversas equipes estão
trabalhando no mesmo projeto, a estimativa vira um chute, uma meta sem embasamento. Isso
porque não são levados em conta os estilos de programação de cada time ou os desafios que a
equipe enfrentará pela primeira vez.
É nesse contexto que ganharam força, no mercado, ferramentas de análise preditiva. Com essa
prática, as empresas já começam a colher os frutos de poder estimar o esforço e os recursos
necessários para concluir um projeto com maior precisão. Isso é possível, porque, apesar de
cada projeto ser único, os recursos que influenciam o andamento e compõem o trabalho de um
desenvolvimento de software possuem similaridades. A análise preditiva, então, permite
encontrar esses padrões e jogar luz ao trabalho de planejar com exatidão.
Segundo a mesma pesquisa da McKinsey, o planejamento com análise preditiva provoca
ótimos resultados. A variação nas datas do cronograma chega a cair em 90% com a utilização
do modelo. E o efeito não é só no prazo, mas na qualidade do desenvolvimento. Os defeitos
por linha de código mostram uma redução de 30% a 40%.
ara entender como a análise preditiva contribui para o desenvolvimento de software, é preciso
pensar sobre como explorar ao máximo os dados. Neste artigo sobre data mining, mostramos
os modelos utilizados com mais frequência na mineração de dados. Além dos benefícios desse
método, que se apoia em machine learning para dar novos usos ao big data.
Demandas e insights
O surpreendente dessa nova vertente dos negócios guiados por dados, também conhecidos
como data driven business, é a possibilidade de encontrarmos respostas para perguntas que
nem sabíamos que eram relevantes. O machine learning voltado para a mineração de dados
reconhece padrões diferentes do que estamos habituados a identificar.
A partir dessas análises que desenham o futuro, é possível alinhar o planejamento estratégico
da empresa com as tendências levantadas. Agora, pense como essa análise pode fornecer
insights valiosos em diversas camadas. Tanto no desenvolvimento de software, quanto no de
produtos, serviços e projetos. Desde demandas ocultas, até detalhes de user experience (como
por exemplo, o aperfeiçoamento de um e-commerce voltado para melhorar a experiência do
usuário), e características que farão seu trabalho ser bem-sucedido.
Análise preditiva na sua gestão de projetos
Além de insights para o desenvolvimento de software, você pode contar com a prática no
trabalho de desenvolvimento em si. Isso inclui gestão de horas da equipe, coordenação dos
talentos e controle de prioridade das tarefas que compõem o projeto.
E a ferramenta para coletar e analisar os dados do seu fluxo de trabalho já existe. Braço direito
dos gestores, o Runrun.it é a solução para o seu negócio. Com algoritmos poderosos, a
plataforma fornece estimativas reais das entregas dos projetos, prevê possíveis atrasos e se o
orçamento tende a estourar. Com isso, você pode tomar medidas para evitar que o prazo estoure
e os custos extrapolem o programado.
Além de contar com a análise preditiva para antever problemas, você também consegue
planejar melhor os projetos. Isso porque o sistema organiza o fluxo de trabalho, ajuda a
distribuir demandas e gerenciar a equipe. E, mais do que estar a par do monitoramento das
tarefas, quem faz a gestão de um time sabe quando poderá alocar uma nova demanda de acordo
com a agenda da pessoa.
O Modelo Descritivo contém informações sobre o problema a ser solucionado, bem como a
maneira de fazê-lo. Especificamos isso utilizando textos.
Objetivo do Projeto
Aqui especificamos como podemos solucionar o Problema a ser solucionado, por exemplo:
Desenvolver um sistema de software que acesse um banco de dados que terá as informações
das horas de entrada e saída dos funcionários, precisará ponto eletrônico para realizar a
marcação do ponto e cada funcionário deverá ter um cartão magnético, cujo terá as informações
de se respectivo portador (funcionário). O sistema deverá gerar relatórios com o total de horas
trabalhadas e não trabalhadas de cada funcionário.
Requisitos funcionais
Aqui definimos todas as funcionalidades do sistema, por exemplo:
● Cadastrar novos funcionários
● Gerar relatório
● Definir folgas de funcionários
● Definir feriados
● Realizar compensação de horas
● Calcular horas extras
● Marcar ponto de funcionário
● Funcionários poderem realizar consultas de suas respectivas horas trabalhadas.
Bibliografia
VER EM ANEXO
TEMA IV: DIFERENTES NÍVEIS DE ABSTRAÇÃO DE SISTEMAS DE
INFORMAÇÃO
É o o modelo de mais alto nível, ou seja, que esta mais próximo da realidade dos usuários. O
nível conceitual é desenvolvido com alto nível de abstração, a partir dos requisitos do sistema,
extraídos na fase de levantamento de requisitos. Esse modelo pode ser elaborado por meio de
dois diagramas: Diagrama de Entidade e Relacionamento e/ou o Diagrama de Classes.
Exemplo de um DER – Diagrama de Entidade e Relacionamento
Descreve como os dados serão armazenados no banco e também seus relacionamentos. Esse
modelo adota alguma tecnologia, pode ser: relacional, orientado a objetos, orientado a colunas,
entre outros.
Exemplo de um Banco de dados relacional
Turma
idTurma capacidade
2235 30
7984 32
Professor
78 957465512 Augusto
Paulo
96 987453687
Descreve, por meio de alguma linguagem, como será feita a armazenagem no banco. Nesse
nível se escolhe qual Sistema gerenciador de Banco de dados (SGBD) será usado, levando em
consideração o modelo lógico adotado. Pode ser: PostgreSQL, MySQL, dentre outros.
Também podemos utilizar o modelo cascata quando um software necessita de uma nova
funcionalidade e os requisitos estão bem definidos e são estáveis.
O modelo cascata também é chamado de ciclo de vida clássico ou tradicional.
O modelo proposto por Boehm em 1988 trata de uma abordagem cíclica das fases do processo,
onde a cada “volta” ou iteração temos versões evolucionárias do sistema.
Este é um modelo guiado por risco, suporta sistemas complexos e/ou de grande porte, onde
falhas não são toleráveis. Para isso, a cada iteração há uma atividade dedicada à análise de
riscos e apoiada através de geração de protótipos, não necessariamente operacionais (desenhos
de tela, por exemplo) para que haja um envolvimento constante do cliente nas decisões.
Cada iteração ou volta é dedicada a uma fase do processo de vida de um software (viabilidade
do projeto, definição de requisitos, desenvolvimento e teste,...). Ao mesmo tempo, cada volta
é seccionada em 4 setores, da seguinte forma:
Os quatro setores são explicados da seguinte forma:
Na Definição de Objetivos, desempenhos, funcionalidade, entre outros objetivos, são
levantados. Visando alcançar esses objetivos são listadas alternativas e restrições, e cria-se um
plano gerencial detalhado.
Na Análise de Riscos, as alternativas, restrições e riscos anteriormente levantados são
avaliados. Neste setor (porém não apenas neste) protótipos são utilizados para ajudar na análise
de riscos.
No Desenvolvimento e Validação um modelo apropriado para o desenvolvimento do sistema
é escolhido, de acordo com o risco analisado no setor anterior (cascata, interativo,...).
No Planejamento da Próxima fase ocorre a revisão do projeto e a decisão de partir para a
próxima fase.
Ou seja, cada volta ou iteração do processo é vista por quatro ângulos.
No final da Viabilidade do Projeto teremos como resultado a Concepção das Operações; da
Definição de Requisitos o produto serão os requisitos; no final do Desenvolvimento e Testes o
projeto é criado e os testes habilitados. Pode-se parar por aí, pode-se incluir mais fases, pode a
espiral ficar adormecida até uma nova alteração do sistema se requisitada, e desta forma
estender até o fim de vida do sistema.
Neste modelo, apenas o início é definido. A evolução e amadurecimento dos requisitos
demandam tempo ajustável (assim como custo). Isto torna o sistema difícil de ser vender ao
cliente e exige um alto nível de gerenciamento em todo o processo.
Este modelo formalizado por James Martin em 1991, como uma evolução da “prototipagem
rápida”, destaca-se pelo desenvolvimento rápido da aplicação. O ciclo de vida é extremamente
comprimido, de forma a encontrarem-se exemplos, na literatura, de duração de 60 e 90 dias. É
ideal para clientes buscando lançar soluções pioneiras no mercado.
É um ciclo de vida incremental, iterativo, onde é preferível que os requisitos tenham escopo
restrito. A diferença principal do ciclo anterior é o forte paralelismo das atividades, requerendo,
assim, módulos bastante independentes. Aqui os incrementos são desenvolvidos ao mesmo
tempo, por equipes diferentes.
Além do paralelismo, a conquista do baixo tempo se dá graças à compressão da fase de
requisitos e da fase de implantação. Isso significa que, na obtenção dos requisitos, costumam-
se optar por metodologias mais dinâmicas e rápidas, como workshops ao invés de entrevistas.
Permite-se também um desenvolvimento inicial no nível mais alto de abstração dos requisitos
visto o envolvimento maior do usuário e visibilidade mais cedo dos protótipos.
As fábricas de software que resolvem por adotar este modelo devem ter uma estrutura prévia
diferencial de pessoas e ferramentas, tais como:
Pessoas:
Profissionais experientes (funcional e gerência);
Profissionais de rápida adaptação;
Equipes de colaboração mútua;
Maior quantidade de pessoas;
Gerenciamento:
Empresas pouco burocráticas que encorajem a eliminação de obstáculos;
Alto controle do tempo;
Uso de Ferramentas:
CASE;
Muita diagramação;
Prévia biblioteca de componentes reutilizáveis (APIs, wizards, templates,...);
Fácil manutenção (ex.: linguagens de programação que suportem Orientação a Objetos,
tratamento de exceção, ponteiros);
Adoção de ferramentas maduras, pois não há tempo de atualizar versões e tratar erros
inesperados;
Os sistemas desenvolvidos no ciclo RAD tendem a ter uma padronização de telas muito forte,
devido a bibliotecas reutilizáveis e templates, porém tendem a perder em desempenho do
sistema e na análise de risco (atividades estas que demandam tempo em qualquer projeto).
Assim, é preferível seu uso para softwares de distribuição pequena.
Bibliografia
VER EM ANEXO
TEMA VI: PROPOSTA DE UM PROCESSO DE DESENVOLVIMENTO
DE SOFTWARE
Bibliografia
VER EM ANEXO
Por fim, são os diagramas estruturais que definem a estrutura do sistema tanto na parte de
software, quanto de hardware. Da mesma forma, nem todos os diagramas estruturais se fazem
necessários para a documentação de um sistema, onde a seleção correta dos diagramas, bem
como a combinação destes, se torna um detalhe importante para uma modelagem eficiente.
São eles:
● Diagrama de Classes
● Diagrama de Objetos
● Diagrama de Componentes
● Diagramas de Instalação
● Diagramas de Pacotes
● Diagramas de Estrutura Composta
Diagramas comportamentais são aqueles onde existe alguma alteração de comportamento das
classes. Os principais diagramas comportamentais da UML são: Diagrama de Caso de Uso,
Diagrama de Seqüência e Diagrama de Atividade. Este artigo tem o objetivo de descrever as
principais características destes diagramas.
Os diagramas comportamentais demonstrados aqui são uma pequena parte do que a linguagem
UML pode trazer, apesar disso, esses diagramas são muito úteis para se ter uma melhor
visualização do funcionamento (ou comportamento) do sistema.
Individualmente o diagrama de caso de uso auxilia e facilita a comunicação entre o cliente e o
analista de sistemas, e os diagramas de estado e atividade podem ser muito úteis para alterações
posteriores já que demonstram as funcionalidades do sistema onde é possível visualizar o que
pode ser alterado e não ocasionar erros em partes do sistema que estão funcionando.
São eles:
● Diagrama de Caso de Uso
● Diagrama de Sequência
● Diagrama de Estados
● Diagrama de Atividades
● Diagrama de Comunicação
Bibliografia
VER EM ANEXO
TEMA VIII: MODELAÇÃO ESTRUTURAL CLASSES E
RELACIONAMENTOS
Perspectivas
Um diagrama de classes pode oferecer três perspectivas, cada uma para um tipo de observador
diferente. São elas:
Conceitual
● Representa os conceitos do domínio em estudo.
● Perspectiva destinada ao cliente.
Especificação
● Tem foco nas principais interfaces da arquitetura, nos principais métodos, e não como
eles irão ser implementados.
● Perspectiva destinada as pessoas que não precisam saber detalhes de desenvolvimento,
tais como gerentes de projeto.
Implementação - a mais utilizada de todas
● Aborda vários detalhes de implementação, tais como navegabilidade, tipo dos atributos,
etc.
● Perspectiva destinada ao time de desenvolvimento.
Um diagrama de classes contém:
Entidades
● Classe
Representação gráfica
Classe Concreta
Uma classe é representada na forma de um retângulo,
contendo duas linhas que separam 3 partes. A primeira
contém no nome da classe, a segunda os atributos da classe
e a última os métodos da mesma.
Classe Abstrata
A representação de uma classe abstrata em UML é quase
igual à representação de uma classe concreta, a única
diferença é o estilo da fonte do nome da classe, que, neste
caso, está em itálico.
● Interface
Representação Gráfica
Representação Icon
Representação Label
Perspectivas:
● Conceitual
Apenas classes são utilizadas. Neste tipo de perspectiva, uma classe é interpretada como
um conceito. Apenas atributos são utilizados.
● Especificação
Tanto classes como interfaces são utilizados neste tipo de perspectiva. O foco consiste
em mostrar as principais interfaces e classes juntamente com seus métodos.
Não é necessário mostrar todos os métodos, pois o objetivo deste diagrama nesta
perspectiva é prover uma maior entendimento da arquitetura do software a nível de
interfaces.
● Implementação
Nesta perspectiva, vários detalhes de implementação podem ser abordados, tais como:
○ visibilidade de atributos e métodos;
○ parâmetros de cada método, inclusive o tipo de cada um;
○ tipos dos atributos e dos valores de retorno de cada método.
Relacionamentos
● Papel
● Descreve o relacionamento.
Tipos Significa
Exemplos:
Perspectiva:
● Conceitual
Define um relacionamento entre duas entidades conceituais do sistema.
● Especificação
Define responsabilidades entre duas classes. Implica que existem métodos que tratam
desta responsabilidade.
● Implementação
Permite saber quem está apontando para quem, através da representação gráfica da
navegabilidade. Além disto, é possível compreender melhor de que lado está a
responsabilidade.
Perspectiva:
Seja B uma generalização (extensão) de A.
○ Conceitual
Considera que B é um subtipo ou um tipo especial de A. O que é válido para A,
também é válido para B.
○ Especificação
Ocorre uma herança de interface.
○ Implementação
Ocorre uma herança de implementação.
● Exemplo de uma herança de implementação:
Uma empresa possui um trabalhador, como também um trabalhador trabalha em uma empresa.
Utilizando a propriedade de navegabilidade, podemos restringir a forma de ler um
relacionamento. Isto é, em vez de termos duas direções, teremos apenas uma direção (de acordo
com a direção da navegação). Ex.:
Exemplo
VER EM ANEXO
TEMA IX: MODELAÇÃO COMPORTAMENTAL
Diagramas comportamentais são aqueles onde existe alguma alteração de comportamento das
classes. Os principais diagramas comportamentais da UML são: Diagrama de Caso de Uso,
Diagrama de Seqüência e Diagrama de Atividade. Este artigo tem o objetivo de descrever as
principais características destes diagramas.
Os diagramas comportamentais demonstrados aqui são uma pequena parte do que a linguagem
UML pode trazer, apesar disso, esses diagramas são muito úteis para se ter uma melhor
visualização do funcionamento (ou comportamento) do sistema.
Individualmente o diagrama de caso de uso auxilia e facilita a comunicação entre o cliente e o
analista de sistemas, e os diagramas de estado e atividade podem ser muito úteis para alterações
posteriores já que demonstram as funcionalidades do sistema onde é possível visualizar o que
pode ser alterado e não ocasionar erros em partes do sistema que estão funcionando.
Objetivo
O Diagrama de Use Cases tem o objetivo de auxiliar a comunicação entre os analistas e o
cliente.
Um diagrama de Use Cases descreve um cenário que mostra as funcionalidades do sistema do
ponto de vista do usuário.
O cliente deve ver no diagrama de Use Cases as principais funcionalidades de seu sistema.
Notação
O diagrama de Use Cases é representado por:
● atores;
● use cases;
● relacionamentos entre estes elementos.
Estes relacionamentos podem ser:
● associações entre atores e use cases;
● generalizações entre os atores;
● generalizações, extends e includes entre os use cases.
Estes use cases podem opcionalmente estar envolvidos por um retângulo que representa os
limites do sistema.
Em maiores detalhes:
● Atores
● Use case
● Relacionamentos
○ Ajudam a descrever os use cases
○ Entre um ator e um use case
■ Associação
○ Entre atores
■ Generalização
Comportamento base Use case base Use case base Use case Pai
O novo use case pode Pode acessar e O use case base Acessar e modificar.
ver os atributos do use modificar. provê os atributos
case base? necessário para o
use case de inclusão.
O use case base pode ver Não. O use case Sim, mas não pode Não. O pai é
o novo use case? base é independente acessar os seus independente do
do filho. atributos. filho.
● Sistema
○ Limites do sistema: representado por um retângulo envolvendo os use cases que
compõem o sistema.
○ Nome do sistema: Localizado dentro do retângulo.
Exemplo 1
Exemplo 2
Unidade 9.2. Diagramas de Interacção (sequência e colaboração)
Diagramas de Interação são modelos que descrevem como grupo de objetos colaboram em um
determinado comportamento.
Um diagrama de interação captura o comportamento entre objetos dentro um único use case.
Utiliza-se o diagrama de atividade para representar o comportamento de objetos entre vários
use cases.
Tipos:
● Diagrama de Sequência
● Diagrama de Colaboração
Diagrama de Sequência
Consiste em um diagrama que tem o objetivo de mostrar como as mensagens entre os objetos
são trocadas no decorrer do tempo para a realização de uma operação.
Em um diagrama de seqüência, os seguintes elementos podem ser encontrados:
● Linhas verticais representando o tempo de vida de um objeto (lifeline);
● Estas linhas verticais são preenchidas por barras verticais que indicam exatamente
quando um objeto passou a existir. Quando um objeto desaparece, existe um "X" na
parte inferior da barra;
● Linhas horizontais ou diagonais representando mensagens trocadas entre objetos. Estas
linhas são acompanhadas de um rótulo que contém o nome da mensagem e,
opcionalmente, os parâmetros da mesma. Observe que também podem existir
mensagens enviadas para o mesmo objeto, representando uma iteração;
● Uma condição é representada por uma mensagem cujo rótulo é envolvido por colchetes;
● Mesagens de retorno são representadas por linhas horizontais tracejadas. Este tipo de
mensagem não é freqüentemente representada nos diagramas, muitas vezes porque sua
utilização leva a um grande número de setas no diagrama, atrapalhando o entendimento
do mesmo. Este tipo de mensagem só deve ser mostrada quando forfundamental para a
clareza do diagrama.
Observe a figura abaixo.
Representado processos concorrentes
Este tipo de diagrama também permite representar mensagens concorrentes assíncronas
(mensagens que são processadas em paralelo sem um tempo definido para a sua realização).
Exemplo:
Diagrama de colaboração
A grande diferença entre um diagrama de colaboração e um de seqüência consiste no fato de
que o tempo não é mais representado por linhas verticais, mas sim através de uma numeração,
que pode ser de duas formas:
● simples (1,2,3,...)
● composta (1.1, 1.2, 1.2.1, ...)
Um objeto é representado como um retângulo, contendo no seu interior um rótulo, que informa
o nome do objeto e o nome da classe, separados por dois pontos. Detalhe: ambos podem ser
omitidos.
A troca de mensagens entre os objetos segue o mesmo padrão que o apresentado nos diagramas
de seqüência.
Veja o exemplos abaixo:
VER EM ANEXO
O Diagrama de Implantação é o diagrama com a visão mais física da UML (GUEDES, 2007).
Este diagrama foca a questão da organização da arquitetura física sobe a qual o software irá ser
implantado e executado em termos de hardware, ou seja, as máquinas (computadores pessoais,
servidores etc.) que suportam o sistema, além de definir como estas máquinas serão conectadas
e por meio de quais protocolos se comunicarão e transmitirão as informações. Os elementos
básicos deste diagrama são os Nós, que representam os componentes, Associações entre Nós,
que são as ligações entre os Nós do diagrama, e os Artefatos, representações de entidades
físicas do mundo real. Veremos cada um dos componentes que compõem o Diagrama de
Implantação a seguir.
Nós são componentes fundamentais do Diagrama de Implantação. Um nó pode ilustrar um item
de hardware, como um servidor em que um ou mais módulos do software são executados ou
que armazene arquivos consultados pelos módulos do sistema, ou pode representar um
ambiente de execução, ou seja, um ambiente que suporta o sistema de alguma forma.
Nós podem conter outros nós, sendo comum encontrar um nó que representa um item de
hardware contendo outro nó que representa um ambiente de execução, embora nó que
represente um item de hardware possa conter outros nós representando itens de hardware, e um
nó que represente um ambiente de execução possa conter outros ambientes de execução.
Os Nós possuem ligações físicas entre si de forma que possam se comunicar e trocar
informações. Essas ligações são chamadas associações e são representadas por retas ligando
um Nó a outro. Uma associação pode conter estereótipos utilizados para determinar, por
exemplo, o tipo de protocolo e comunicação utilizado entre os nós.
A Figura abaixo demonstra um exemplo de associação entre o Nó que representa o Servidor de
Comunicação e o Nó que representa o Servidor de Firewall. O protocolo de comunicação é
descrito na Associação como um estereótipo <<TCP/IP>>.
Bibliografia
VER EM ANEXO
TEMA XI: GESTÃO E ORGANIZAÇÃO DE MODELOS (DIAGRAMAS
DE PACKAGE)
Para RICARTE (2001), no desenvolvimento de pequenas aplicações Java, pode ser viável
manter o código em um mesmo diretório. Entretanto, para aplicações maiores, colocar todos
os arquivos em um mesmo local, sem organização, pode aumentar a possibilidade de colisão
de classes (classes com o mesmo nome no mesmo escopo) e dificultar a localização de um
determinado código.
Em Java, a solução para esses problemas está na organização de classes em pacotes. Um pacote
ou package na tecnologia Java nada mais é do que um conjunto de classes localizadas na mesma
estrutura hierárquica de diretórios. Usualmente, são colocadas em um package classes
relacionadas, construídas com um propósito comum para promover a reutilização de código;
assim, sobre certos aspectos, os packages reproduzem a ideia das bibliotecas de código
(libraries e units), de outras linguagens de programação.
Na programação Java a reutilização de código pode ser apoiada pela construção de pacotes de
classes com métodos destinados a solucionar tarefas bastante corriqueiras, como por exemplo,
validação de CPF e CNPJ, operações com data, manipulação de vetores, cálculos matemáticos
como médias e percentuais, entre outras.
O próprio código base da tecnologia Java está todo estruturado em pacotes, como pode ser
observado na especificação da API (Application Programming Interface, ou Interface de
Programação de Aplicações) da plataforma Java SE, apresentada parcialmente na Tabela
abaixo.
Assim, no desenvolvimento de novos sistemas, os programadores Java podem escolher entre
as inúmeras classes da API do Java e classes disponibilizadas em pacotes implementadas por
terceiros, de modo que a quantidade de código realmente novo a ser implementado seja
minimizada, acelerando o processo de desenvolvimento de aplicações (RAD – Rapid
Application Development).
Pretende-se demonstrar como organizar um conjunto de classes relacionadas em pacotes, como
realizar a distribuição dos pacotes através de um arquivo JAR (Java ARchive) e como
implementar a importação de uma ou mais classes de um pacote conhecido.
Os estudos de casos que serão apresentados foram implementados usando o ambiente de
desenvolvimento NetBeans e estão estruturados, como mostra a Figura 1, em dois projetos
denominados de “Pacotes” e “UsandoPacotes”. No primeiro projeto (Pacotes), as classes
Matematica, FuncaoMatematica e Vetor foram organizadas em dois pacotes:
pr.com.profomero.pacoteum e pr.com.profomero.pacotedois. Já no segundo projeto
(UsandoPacotes), as aplicações Exemplo1, Exemplo2 e Exemplo3 utilizam as classes
importadas dos pacotes definidos no primeiro projeto.
Pacote
Dependência
Exemplo:
Bibliografia
VER EM ANEXO
TEMA XII: ESTUDO DE CASOS
Bibliografia
VER EM ANEXO
TEMA XIII: ESTUDO DE UM AMBIENTE DE SUPORTE AO
DESENVOLVIMENTO DE SISTEMAS DE INFORMAÇÃO
MODELADOS EM UML
IDE na nuvem
IDEs fornecidos na nuvem como Software como Serviço (SaaS) oferecem benefícios
exclusivos quando comparados a ambientes locais de desenvolvimento. Por exemplo, nas
soluções SaaS, não existe a necessidade de fazer o download de softwares e configurar
ambientes e dependências locais. Assim, os desenvolvedores podem começar a contribuir
imediatamente com o projeto. Isso também viabiliza um nível de padronização dos ambientes
da equipe, o que reduz problemas de incompatibilidade como "se funciona na minha máquina,
por que não funciona na sua?". Além disso, já que o gerenciamento do ambiente de
desenvolvimento é centralizado, os códigos não ficam no computador de uma só pessoa, o que
ajuda com questões de propriedade intelectual e segurança.
O Eclipse é uma ferramenta IDE que compreende vários tipos de linguagem e que aceita a
instalação de plugins para emular o desenvolvimento da plataforma.
Uma das principais vantagens é o uso do SWT (alternativa para quem desenvolve em SWING),
e a forte orientação ao desenvolvimento baseado em plugins ampliando o suporte do
desenvolvedor com centenas deles que procuram atender as diferentes necessidades.
Para a simulação do sistema que irá ser desenvolvido é necessário possuir o IDE Eclipse Java
EE;
Primeiramente baixe exatamente essa versão “Eclipse IDE for Java EE Developers” e escolha
para a versão Windows 32bit (mesmo se a máquina for 64bit) através da Página oficial do
Eclipse.
Para criar o projeto, insira o nome do mesmo como no item 1 acima e clique no botão
Next. Após isso aparecerá a janela conforme a Figura 11.
Figura 11. Configuração do Projeto
Para adicionar uma biblioteca pode-se instalar através da janela ilustrado na Figura
11, clicando na aba Libraries.
Figura 12. Configuração Libraries (Bibliotecas)
Podemos deixar tudo padrão, apenas clique no botão Finish para criar o projeto. O
projeto deve estar parecido com a Figura 13.
´Figura 13. Visualização do projeto criado
Criando packages
Os packages também conhecidos por pacotes são criados para armazenar as classes
facilitando a organização do projeto e ajuda na reutilização de código.
Para criar uma package clique com o botão direito do mouse em cima do projeto vá
em New > Package então coloque o nome e clique no botão Finish.
Figura 14. Criando Package
Após isso a estrutura do projeto tem que estar parecida com a Figura 15.
Figura 15. Estrutura do projeto com um package
Na Figura 16 vamos criar uma classe testadora que irá gerar apenas uma saída.
Clique com o botão direito em cima do package e vá em New > Class, preencha
conforme a Figura 16. Observe que ao criar uma classe algumas propriedades
vieram já definidas como Source Folder (1), Package (2), SuperClass (5).
Figura 16. Criação da Classe
Para criar a classe insira o nome no indicador 3 e deixe selecionado a opção public
static void main(String[] args), onde estamos dizendo que criará uma classe de execução.
Ao término da criação da classe é gerada a tela conforme a Figura 17.
Figura 17. Exibição da classe testadora
Observe que por padrão já é inserido alguns comentários, você pode escolher em
deixá-los ou apagá-los.
Console
O Console do Eclipse é onde podem ser vistas saídas do programa através dos
objetos de saída, status dos servidos, logs de erros gerados pela aplicação entre
outros. Para mostrar o console siga os passos da Figura 18.
Figura 18. Visualização do Console
Após isso vamos gerar a saída de um texto, escreva conforme está apresentado na
Figura 19 e clique no botão Run destacado com um círculo.
Figura 19. Imprimindo um objeto de saída do console
Após essa ação pode aparecer uma tela para salvar e rodar a classe conforme a
Figura 20, apenas confirme.
Figura 20. Tela para salvar e executar a classe
Por final veja na aba do console a saída do texto que foi gerado, veja na Figura 21
o teste final.
Figura 21. Teste Final
VER EM ANEXO