Cardinalidade de um relacionamento
Entidade: é uma representação abstrata de um objeto do mundo Relacionamentos n As entidades são contectadas umas às outras através de relacionamentos Cardinalidade de um Relacionamento Indica o número de instâncias de entidades que podem estar associadas umas as outras através de um relacionamento Quantidade de ocorrências de entidades que podem estar associa entidade que se que • É uma “regra de ne envolvidas no relacio org tc next*ge A notação original foi proposta por Peter Chen e é composta de entidades (retângulos), relacionamentos (losangos), atributos c(rculos) e linhas de conexão (linhas) que indicam a cardinalidade de uma entidade em um relacionamento. Chen ainda propõe simbolos para entidades fracas e entidades associativas. Administrador de Dados – AD Responsável – pelo projeto lógico do banco de dados. – pela interface entre analistas de sistemas e analistas de suporte. – pelo gerenciamento do dicionário de dados. Modelo de dados Um modelo de dados é o conjunto de um banco de dados de maneira independente de um SGBD particular.
Modelo lógico Descreve as estruturas que estarão contidas no banco de dados, de acordo com as possibilidades ermitidas pela abordagem, mas sem considerar ainda nenhuma característica específica de um SGBD Desenvolvimento ágil de software Existem inúmeros frameworks de processos para desenvolvimento de software. A maioria dos métodos ágeis tenta minimizar o risco pelo desenvolvimento do software em curtos períodos, chamados de iteração, os quais gastam tipicamente menos de uma semana a até quatro. Cada iteração é como um projecto de software em miniatura de seu próprio, e inclui todas as tarefas necessárias para implantar o mini-incremento da nova funcionalidade: planejamento, análise de requisitos, projeto, odificação, teste e documentação.
Enquanto em um processo convencional, cada iteração não está necessariamente focada em adicionar um novo conjunto significativo de funcionalidades, um projecto de software ágil busca a capacidade de implantar uma nova versão do software ao fim de cada iteração, etapa a qual a equipe responsavel reavalia as prioridades do projecto. Métodos ágeis enfatizam comunicações em tempo real, preferencialmente face a face, a documentos escritos. A maioria dos componentes de um grupo ágil deve estar agrupada em uma sala. Isso Inclui todas as pessoas necessárias para terminar o oftware: no mínimo, os programadores e seus clientes (clientes são as pessoas que definem o produto, eles podem ser os gerentes, analistas de negócio, ou realmente os clientes). Nesta sala PAGFarl(Fq produto, eles podem ser os gerentes, analistas de negócio, ou realmente os clientes). Nesta sala devem também se encontrar os testadores, projectistas de iteração, redactores técnicos e gerentes.
Métodos ágeis também enfatizam trabalho no software como uma medida primária de progresso. Combinado com a comunicação face-a-face, métodos ágeis produzem pouca ocumentação em relação a outros métodos, sendo este um dos pontos que podem ser considerados negativos. É recomendada a produção de documentação que realmente será útil. [ed’tar] Princípios Os princípios do desenvolvimento ágil valorizam: Garantir a satisfação do consumidor entregando rapidamente e continuamente softwares funcionais; Softwares funcionais são entregues frequentemente (semanas, ao invés de meses); Softwares funcionais são a principal medida de progresso do projecto; Até mesmo mudanças tardias de escopo no projecto são bem- vindas.
Cooperação constante entre pessoas que entendem do ‘negócio’ e desenvolvedores; Projetos surgem através de indivíduos motivados, entre os quais existe relação de confiança. Design do software deve prezar pela excelência técnica; Simplicidade; Rápida adaptação às mudanças; Indivíduos e interações mais do que processos e ferramentas; Software funcional mais do que documentação extensa; Colaboração com clientes mais do que negociação de contratos; Responder a mudanças mais do que seguir um plano. Metodologias Programação extrema Programação extrema (do AGF30Fq e Programming), ou Programming), ou simplesmente XP, é uma metodologia ágil para equipes pequenas e médias e que irão desenvolver software com requisitos vagos e em constante mudança.
Para isso, adota a estratégia de constante acompanhamento e realização de vários pequenos ajustes durante o desenvolvimento de software. Os cinco valores fundamentais da metodologia XP são: comunicação, simplicidade, feedback, coragem e respeito. A partir desses valores, possui como princípios básicos: feedback rápido, presumir simplicidade, mudanças incrementais, abraçar udanças e trabalho de qualidade. Dentre as variáveis de controle em projetos (custo, tempo, qualidade e escopo), há um foco explicito em escopo. para isso, recomenda-se a priorização de funcionalidades que representem maior valor possível para o negócio. Desta forma, caso seja necessário a diminuição de escopo, as funcionalidades menos valiosas serão adiadas ou canceladas.
A XP incentiva o controle da qualidade como variável do projeto, pois o pequeno ganho de curto prazo na produtividade, ao diminuir qualidade, não é compensado por perdas (ou até impedimentos) a médio e longo prazo Scrum O Scrum é um processo de desenvolvimento iterativo e incremental para gerenciamento de projetos e desenvolvimento ágil de softv. ‘are. Apesar de a palavra não ser um acrônimo, algumas empresas que implementam o processo a soletram com letras maiúsculas como SCRUM. Isto pode ser devido aos primeiros artigos de Ken Schwaber, que capitalizava SCRUM no título. Scrum não é um processo prescribente, ou seja, ele não descreve o que fazer em cada situação. E o que fazer em cada situação. Ele é usado para trabalhos complexos nos quais é impossível predizer tudo o que irá ocorrer.
Apesar de Scrum ter sido destinado para gerenciamento de projetos de software, ele pode ser utilizado em equipes de manutenção de software ou como uma abordagem geral de gerenciamento de projetos/programas. Desenvolvimento Guiado por Funcionalidades Com relação às outras metodologias de desenvolvimento de software, situa-se numa posição intermediária entre as abordagens mais prescrltlvas (Processo Unlficado, Cascata tradicional – Waterfall) e as abordagens Ágeis (XP – Programação Extrema, Scrum, Crystal, etc. ). Oferece um conjunto coeso de princípios e práticas tanto para a Gestão de Projetos quanto para a Engenharia de Software, mas convive bem com abordagens mais especialistas, como Scrum.
Apesar de algumas divergências pontuais com a XP, várias práticas propostas por esta última também são utilizadas por equipes usando FDD, como os testes unitários, refatoração, programação em pares, integração continua, entre outras. Apenas a ênfase na FDD é que não é tão grande quanto na XP. A FDD também propõe práticas como inspeção formal (de desenho e de código) e posse individual/situacional de código/classe, que podem contrastar com algumas das práticas fundamentais da XP. A experiência da equipe e dos gerentes é que deve julgar quais práticas são mais apropriadas. Metodologia de Desenvolvimento de Sistemas Dinâmicos do inglês Dynamic Systems Development Method – DSDM) é uma metodolog Desenvolvimento de Sistemas Dinâmicos metodologia de desenvolvimento de software originalmente baseada em “Desenvolvimento Rápido de Aplicação” (RAD).
DSDM é uma metodologia de desenvolvimento iterativo e incremental que enfatiza o envolvimento constante do usuário. Seu objetivo é entregar softwares no tempo e com custo estimados através do controle e ajuste de requisitos ao longo do esenvolvimento. DSDM é um dos modelos de Metodologia Ágil de desenvolvimento de software, e seu formato é propriedade da Agile Alliance. Como uma extensão do RAD, o DSDM é aplicado em projetos de Sistemas caracterizados pelos cronogramas e custos limitados. Aponta falhas de informação mais comuns destes projetos, incluindo custos excedentes, perda de prazos, falta de envolvimento de usuários e acompanhamento da alta gerência.
Através do uso do RAD, contudo, sem os devidos cuidados com o DSDM pode aumentar ainda mais o risco em outros quesitos. DSDM consiste em: fases: pré-projeto, ciclo de vida, e pós-projeto. A fase ciclo de vida é subdivldida em 5 estágios: análise de viabilidade, análise de negócio, Iteração do Modelo Funcional, iteração de elaboração e construção e, por fim, implantação. Em alguns casos, é poss[vel integrar práticas de outras metodologias, como do Rational Unified Process (RUP), Programação Extrema (XP) e PRINCE2, como complemento ao DSDM. Outro método ágil que o DSDM possui muita similaridade quanto ao processo e conceitos é o Scrum. Originado no Reino Unido em 1990 através do DSDM Consort PAGFsrl(Fq e conceitos é o Scrum.
Originado no Reino Unido em 1990 através do DSDM Consortium, uma associação de consultores e experts no ramo de Engenharia de Software criado com o intuito de “unir desenvolvimento e promoção de um framework RAD independente” combinando suas experiencias em boas práticas. O DSDM Consortium – organização não governamental e independente que detém e administra seu próprio framework DSDM. Sua primeira versão foi conclu[da em Janeiro de 1995 e publicada no mês seguinte. A versão atualmente utilizada (de Abril de 2006) é a 4. 2: Framework aplicado ao desenvolvimento centrado em negócios, e liberado m Maio de 2003. Em julho de 2006, a versão pública do DSDM 4. 2[1] foi dlsponibilizada para os interessados.
Desenvolvimento Orientado a Testes Esse artigo apresenta a técnica de desenvolvimento orientado a testes, que tem como um de seus objetivos antecipar a identificação e correção de falhas durante o desenvolvimento. Será utilizado um pequeno exemplo para demonstrar o uso dessa técnica, conhecida em inglês como Test-driven development ou TDD. Modelos de Processos Evolucionários Assumindo que os sistemas tendem a evoluir durante o desenvolvimento eessa evolução acrescenta novas uncionalidades ao projeto, que aumenta as especi-ficações e, como uma “bola de neve”, crescem até que estouram o prazo definido nanegociação, os modelos evolucionários têm como principal caracteristica a interativi-dade, com isso é possivel desenvolver versões do sistema que a cada novo lança-mento (release ) agrega novas funcionalidades.
As seções a seguir descrevem alguns ex cada novo lança-mento (release ) agrega novas funcionalidades. As seções a seguir descrevem alguns exemplos de Modelos Evolucionários[PRESSMAN 02], [SOMMERVILLE 00]. 2. 41 Modelo Incremental Esse modelo é a “versão” evolucionária do Modelo Sequencial Linear. Apenasassume que o software desenvolvido pode sempre crescer e agregar novas funcio-nalidades, sendo que cada uma dessas funcionalidades, ou o conjunto delas, serádesenvolvido por um incremento e esse incremento segue todas as etapas descritasno modelo linear [PRESSMAN 02]. 0 primeiro incremento deste modelo é chamado de Núcleo do produto, POIS nele estarão as principais funcionalidades do sistema, aquelas consideradas vitais.
Os próximos incrementos desenvolvidos agregarão as funções do Núcleo do Produ-to e dos incrementos nteriores já desenvolvidos. Esse modelo é análogo a uma”bola de neve” que cresce e atinge sua totalidade quando o produto está completa-mente desenvolvido [PRESSMAN 02]. 0 modelo incremental é muito utilizado em projetos longos e que tendem acrescer com o passar do tempo e o prazo de entrega é curto. Como, ao final de cada ncremento, é gerada uma versão do produto final, é possível mostrar ao cliente co-mo está o andamento do projeto e atingir as metas definidas no começo do projeto. 2. 4. 2 Modelo Espiral O Modelo Espiral é um modelo iterativo, como o modelo de rototipagem, esistemático como o Modelo Linear.
Isso facilita com que sejam lançadas versõesutilizáveis do projeto ao final de cada iteração do modelo, similar ao modelo Incre-mental. É multo utilizado no desenvolvimento de softwar PAGF8rl(Fq iteração do modelo, similar ao modelo incre-mental. É muito utilizado no desenvolvimento de softwares em conjunto com o para-digma da orientação a objetos, onde o desenvolvimento em módulos, somado aoprocesso de integração, se encaixa nos conceitos do paradigma [PRESSMAN 02 Esse modelo se subdivide em Regiões de Tarefa. Essas regiões brigam con- juntos de tarefas que crescem proporcionalmente ao risco e ao tamanho do projeto. gasicamente existem 6 regiões, sendo que todas podem ser usadas, ou não, em umprojeto.
Sáo elas: Comunicação com o Cliente, a fim de manter contato com o clien-te, adquirindo informações úteis ao sistema; Planejamento, que definirá custo e tem-po de desenvolvimento; Análise de Risco, gerenciamento e recuperação de rlscos;Engenharia, que á construção da representação da aplicação; Construção e Libera- «o, onde acontecem a implementação, testes, instalação e uporte da aplicação, eAvaliaçao pelo Cliente, quando se tem o feedback quanto ao incremento desenvolvi-do [PRESSMAN 02 Uma forte característica desse modelo, que o difere de outros modelos e otorna bastante utilizado pelas empresas, é o fato de acompanhar toda a vida dosoftware, mesmo depois da entrega ao cliente, pois é na manutenção que muitasempresas desenvolvedoras têm o principal foco de atuação. 17Este modelo é o considerado mais realístico possível, pois assume que usuá-rios, analistas e desenvolvedores adquirem maior conhecimento sobre o projeto como decorrer do tempo [SOMMERVILLE OO PAGFgrl(Fq