Domain-Driven Design

Tamanho: px
Começar a partir da página:

Download "Domain-Driven Design"

Transcrição

1 Domain-Driven Design ATACANDO AS COMPLEXIDADES NO CORAÇÃO DO SOFTWARE Eric Evans 3 a Edição Revisada Rio de Janeiro, 2010

2 SUMÁRIO Introdução Prefácio Agradecimentos xvii xix xxvii Parte I Colocando o modelo de domínios em ação 1 A utilidade de um modelo no Domain-Driven Design 3 O coração do software 4 Capítulo 1: Assimilando o conhecimento 7 Os ingredientes de uma modelagem eficaz 12 Assimilando o conhecimento 13 Aprendizado contínuo 15 Design rico em conhecimentos 16 Extraindo um conceito oculto 16 Modelos profundos 19 Capítulo 2: Comunicação e uso da linguagem 21 LINGUAGEM ONIPRESENTE 22 Criando um roteador de cargas 25 Cenário 1: Abstração mínima do domínio 26 Cenário 2: Enriquecimento do modelo do domínio para sustentar a discussão 27 Modelando em voz alta 28 Uma equipe, uma linguagem 30 Documentos e diagramas 32 Documentos de design escritos 34 Base executável 37 Modelos explanatórios 37 Operações de rotas de transporte de cargas 38 Capítulo 3: Ligando o modelo à implementação 41 Paradigmas da modelagem e assistência às ferramentas 46 ix

3 De procedimental a DIRIGIDO POR MODELOS 48 Design mecânico 48 UM DESIGN DIRIGIDO POR MODELOS 50 Mostrando tudo: por que os modelos interessam aos usuários 53 Parte II Os tijolos da construção de um design baseado em modelos 59 Capítulo 4: Isolando o domínio 63 Dividindo em camadas a funcionalidade de transações bancárias on-line 67 Relacionando as camadas 68 Estruturas arquitetônicas 70 É na camada do domínio que reside o modelo 71 Outros tipos de isolamento 75 Capítulo 5: Um modelo expresso em software 77 Associações 78 Modelando ENTIDADES 88 Criando o design da operação de identidade 89 Criando o design de OBJETOS DE VALOR 95 Sintonizando um banco de dados com OBJETOS DE VALOR 97 Criando designs para associações que envolvem Objetos De Valor 97 SERVIÇOS e a camada do domínio isolada 101 Granularidade 102 Acesso a SERVIÇOS 103 MÓDULOS Agile 106 Convenções de codificação de pacotes em Java 106 As armadilhas do empacotamento dirigido pela infraestrutura 107 Paradigmas da modelagem 110 Por que o paradigma do objeto predomina 111 Não objetos em um mundo de objetos 113 Usando o DESIGN DIRIGIDO POR MODELOS ao misturar paradigmas 114 Capítulo 6: O ciclo de vida de um objeto do domínio 117 Integridade de um pedido de compras 123 Escolhendo FÁBRICAS e seus locais 132 Quando um construtor é tudo que você precisa 134 Criando o design da interface 135 x SUMÁRIO

4 Onde entra a lógica das invariantes? 136 Reconstituindo objetos armazenados 137 Consultando um REPOSITÓRIO 145 Os códigos do cliente ignoram a implementação do REPOSITÓRIO; mas isso não acontece com os desenvolvedores 146 Implementando um REPOSITÓRIO 147 Trabalhando dentro das suas estruturas 149 A relação com as FÁBRICAS 150 Criando objetos para bancos de dados relacionais 151 Capítulo 7: Usando a linguagem: exemplo expandido 155 Introduzindo o sistema de transporte de cargas 155 Isolando o domínio: introduzindo os aplicativos 158 Distinguindo ENTIDADES e OBJETOS DE VALOR 158 Função e outros atributos 160 Criando associações no domínio de transporte de cargas 160 Limites dos AGREGADOS 162 Selecionando REPOSITÓRIOS 163 Percorrendo os cenários 165 Amostra de um recurso do aplicativo: mudando o destino de uma Carga 165 Amostra de um recurso do aplicativo: negócios repetidos 165 Criação de objetos 166 FÁBRICAS e construtores para Carga 166 Acrescentando um Evento de manuseio 167 Pausa para refatoração: design alternativo do AGREGADO Carga 169 MÓDULOS no modelo do transporte de cargas 171 Introduzindo um novo recurso: verificação de alocações 173 Ligando os dois sistemas 174 Aprimorando o modelo: segmentando o negócio 175 Sintonizando o desempenho 177 Uma última olhada 178 Parte III Refatorando em direção a uma visão mais profunda 179 Capítulo 8: Oportunidade de avanço 185 História de uma oportunidade de avanço 186 Um modelo decente, porém A oportunidade de avanço 188 SUMÁRIO xi

5 Um modelo mais profundo 190 Uma decisão sóbria 192 A recompensa 193 Oportunidades 193 Foco no básico 193 Epílogo: uma cascata de novas visões 194 Capítulo 9: Tornando explícitos conceitos implícitos 197 Cavando conceitos 198 Ouça a linguagem 198 Escutando um conceito ausente no modelo de transporte de cargas 199 Examine minuciosamente o que há de estranho 203 Ganhando juros pelo caminho difícil 203 Contemple as contradições 208 Leia o livro 209 Ganhando juros segundo o livro 209 Tente e tente novamente 211 Como modelar tipos de conceitos menos óbvios 211 Restrições explícitas 211 Revisão: política de overbooking 213 Processos como objetos de domínio 214 Aplicando e implementando uma ESPECIFICAÇÃO 218 Embalador em um depósito de produtos químicos 226 Protótipo operacional do embalador do depósito 228 Capítulo 10: Design flexível 233 Interfaces reveladoras de intenções 235 Refatorando: um aplicativo para misturas de tintas 237 Refatorando novamente o aplicativo para misturas de tintas 241 De volta à mistura de tintas 245 Agora podemos ver com clareza 246 Os CONTORNOS de provisões 251 Uma mudança não antecipada 252 Selecionando a partir de coleções 257 Design declarativo 258 Linguagens específicas de um domínio 260 Um estilo declarativo de design 261 Estendendo ESPECIFICAÇÕES em um estilo declarativo 261 Uma implementação alternativa da ESPECIFICAÇÃO DE COMPOSTO 265 xii SUMÁRIO

6 Ângulos de ataque 269 Vá esculpindo os subdomínios 269 Baseie-se em formalismos já estabelecidos, quando possível 270 Integrando os padrões: matemática das participações 270 Design inicial para a distribuição de pagamentos 271 Separando comandos e FUNÇÕES ISENTAS DE EFEITOS COLATERAIS 272 Tornando explícito um conceito implícito 273 O Bolo de participações se transforma em um OBJETO DE VALOR: 274 Cascata de visões 274 A flexibilidade do novo design 276 Capítulo 11: Aplicando padrões de análise 281 Ganhando juros com contas 283 Modelos de contabilidade em Analysis Patterns 283 Uma nova visão sobre o lote noturno 288 Regras de lançamento 288 Executando as regras de lançamentos 289 Padrões de análise são um conhecimento no qual nos devemos basear 293 Capítulo 12: Relacionando padrões de projeto com o modelo 295 Políticas para se achar uma rota 298 Rotas para transporte de carga formadas por rotas 302 Por que não FLYWEIGHT? 306 Capítulo 13: Refatorando em direção a uma visão mais profunda 307 Iniciação 307 Equipes de exploração 308 Arte anterior 309 Um design para desenvolvedores 310 Definição do tempo 310 Crise como oportunidade 311 Parte IV Design Estratégico 313 Capítulo 14: Mantendo a integridade do modelo 317 Contexto de reserva de cargas 323 Reconhecendo fragmentações dentro de um CONTEXTO DELIMITADO 325 SUMÁRIO xiii

7 Dois CONTEXTOS em um aplicativo de transporte de carga 331 Testando nos limites do CONTEXTO 336 Organizando e documentando MAPAS DE CONTEXTO 336 Relações entre CONTEXTOS DELIMITADOS 337 Análise de preferência versus reservas 342 Projetando a interface da ANTICORRUPTION LAYER 350 Implementando a ANTICORRUPTION LAYER 350 O aplicativo legado de reservas 353 Uma história de cautela 353 Um projeto de seguros é reduzido 356 Uma LINGUAGEM PUBLICADA para química 360 Unificando um elefante 361 Escolhendo a estratégia de contexto do seu modelo 364 A decisão da equipe ou superior 365 Inserindo-nos no contexto 365 Transformando as fronteiras 365 Aceitando aquilo que não podemos mudar: delineando os sistemas externos 366 Relações com os sistemas externos 367 O sistema em fase de design 368 Atendendo a necessidades especiais com modelos distintos 369 Aplicação 370 A compensação 370 Quando seu projeto já está em andamento 371 Transformações 372 Mesclando CONTEXTOS: 372 CAMINHOS SEPARADOS NÚCLEO COMPARTILHADO 372 Mesclando CONTEXTOS: 374 NÚCLEO COMPARTILHADO INTEGRAÇÃO CONTÍNUA 374 Tirando um sistema legado de circulação 375 SERVIÇO DE HOST ABERTO LINGUAGEM PUBLICADA 377 Capítulo 15: Destilação 379 Escolhendo o NÚCLEO 383 Quem realiza o trabalho? 384 Escalonamento de destilações 385 A história dos dois fusos horários 391 Genérico não significa reutilizável 393 Gerenciamento dos riscos de projeto 394 O documento de destilação 398 xiv SUMÁRIO

8 O NÚCLEO sinalizado 399 O documento de destilação como ferramenta do processo 400 Um mecanismo em um organograma 402 SUBDOMÍNIO GENÉRICO versus MECANISMO COESIVO 403 Quando um MECANISMO faz parte do DOMÍNIO PRINCIPAL 404 Círculo completo: o organograma reabsorve seu MECANISMO 404 Destilando rumo a um estilo declarativo 405 Os custos de se criar um NÚCLEO SEGREGADO 407 Evoluindo a decisão da equipe 407 Segregando o NÚCLEO de um modelo para transporte de cargas 408 Destilação de modelos profundos 414 Capítulo 16: Estrutura em larga escala 417 A Metáfora ingênua e por que não precisamos dela 425 Em profundidade: divisão de camadas de um sistema de transporte de carga 429 Responsabilidades de Operações 430 Responsabilidades de Capacidade 430 Responsabilidades de Apoio a decisões 432 Como é que essa estrutura afeta o design em andamento? 433 Escolhendo camadas adequadas 436 Folha de pagamento de funcionários e pensão, Parte Folha de pagamento de funcionários e pensão, Parte 2: NÍVEL DE CONHECIMENTO 447 A estrutura SEMATECH CIM 451 Veja como criar um painel para a colcha 454 Até que ponto uma estrutura deve ser restritiva? 455 Refatorando em direção a uma estrutura adequada 456 Minimalismo 456 Comunicação e autodisciplina 457 A reestruturação gera um design flexível 457 A destilação alivia a carga 458 Capítulo 17: Unindo as peças da estratégia 459 Combinando estruturas em larga escala e CONTEXTOS DELIMITADOS 459 Combinando estruturas em larga escala e a destilação 462 Avalie primeiro 464 Quem define a estratégia? 464 Estrutura emergente a partir do desenvolvimento do aplicativo 465 SUMÁRIO xv

9 Uma equipe de arquitetura enfocada no cliente 465 Seis pontos essenciais para a tomada de decisões em um design estratégico 466 O mesmo se aplica às estruturas técnicas 469 Cuidado com o plano diretor 470 Conclusão 473 Apêndice: O uso de padrões neste livro 481 Glossário 485 Referências 489 Créditos Fotográficos 491 Índice Remissivo 493 xvi SUMÁRIO

10 INTRODUÇÃO São várias as coisas que tornaram complexo o desenvolvimento de softwares. Mas o coração dessa complexidade está na dificuldade essencial do próprio domínio-problema. Se você estiver tentando adicionar automação a uma empresa humana complicada, seu software não tem como fugir dessa complexidade tudo que ele pode fazer é controlá-la. A chave para controlar complexidades é um bom modelo de domínio, um modelo que vá além da visão superficial de um domínio introduzindo uma estrutura subjacente, que ofereça aos desenvolvedores de software o máximo de aproveitamento que eles procuram. Um bom modelo de domínio pode ser extremamente valioso, mas não é algo fácil de se fazer. Poucas pessoas o podem fazer bem, e é difícil ensinar. Eric Evans é uma dessas poucas pessoas que conseguem criar modelos de domínio bem. Descobri isso trabalhando com ele um daqueles maravilhosos momentos em que você encontra um cliente mais capacitado que você. Nossa colaboração foi curta, mas um grande prazer. Desde então, temos mantido contato, e pude acompanhar lentamente a gestação deste livro. Valeu a pena esperar. Este livro evoluiu e se transformou em uma obra que satisfaz uma grande ambição: descrever e construir um vocabulário sobre a arte da modelagem de domínios. Oferecer uma estrutura de referência através da qual possamos explicar essa atividade bem como ensinar essa capacidade de difícil aprendizado. Este é um livro que me proporcionou muitas novas ideias à medida que foi tomando forma, e ficaria bastante surpreso se mesmo pessoas já altamente experientes em modelagem conceitual não conseguirem tirar várias novas ideias de sua leitura. Eric também solidifica muitas das coisas que aprendemos ao longo dos anos. Primeiro, na modelagem de domínios, não se devem separar conceitos de implementação. Um modelador de domínios eficaz tem a capacidade não só de usar uma lousa branca com um profissional da área contábil, mas também escrever Java com um programador. Em parte, isto é verdade porque você não pode construir um modelo conceitual útil sem considerar as questões de implementação. Mas o principal motivo pelo qual conceitos e implementação pertencem um ao outro é que o maior valor de um modelo de domínio está no fato de ele proporcionar uma linguagem onipresente (ou, em inglês, ubiquitous language, linguagem comum, ubíqua, que está em toda parte, daí onipresente) que serve de união para especialistas e tecnólogos em domínios. xvii

11 Outra lição que você vai aprender neste livro é que os modelos de domínio não são modelados primeiro e, depois, implementados. Como muitas pessoas, acabei rejeitando o pensamento antiquado de projetar e depois construir. Mas a lição aprendida com a experiência de Eric é que os modelos de domínio verdadeiramente bons evoluem com o tempo, e até mesmo os modeladores mais experientes acreditam que adquirem suas melhores ideias após o lançamento inicial de um sistema. Acredito, e espero, que este seja um livro de grande influência. Um livro que acrescente estrutura e coesão a um campo bastante incerto ensinando ao mesmo tempo muitas pessoas a usarem uma valiosa ferramenta. Os modelos de domínios podem trazer grandes consequências para o controle do desenvolvimento de software sejam quais forem a linguagem e o ambiente em que eles sejam implementados. Um último pensamento, de extrema importância. Uma das coisas que mais respeito neste livro é que Eric não tem medo de falar sobre os momentos em que não obteve sucesso. A maioria dos autores prefere manter um ar de onipotência desinteressada. Eric deixa claro que, como a grande maioria, ele já teve sucessos e decepções. O importante é que ele pode aprender com ambos e, para nós, o mais importante é que ele pode transmitir suas lições. Martin Fowler xviii INTRODUÇÃO

12 PREFÁCIO Há pelo menos 20 anos, os grandes designers de software reconhecem que a modelagem e o design de domínios são tópicos fundamentais; ainda assim, muito pouco tem sido escrito sobre o que precisa ser feito ou como fazê-lo. Embora nunca tenha sido claramente formulada, uma filosofia surgiu como uma subcorrente na comunidade de objetos, uma filosofia que chamo de domain-driven design ou design dirigido (conduzido) por domínios ou simplesmente DDD. Passei a última década desenvolvendo sistemas complexos em vários domínios de negócios e técnicos. Em meu trabalho, tentei usar as melhores práticas existentes nos processos de design e desenvolvimento, já que estas surgiram com os líderes em desenvolvimento orientado a objetos. Alguns projetos meus tiveram bastante sucesso; alguns fracassaram. Uma característica comum aos sucessos obtidos foi um modelo de domínio rico que evoluiu através de iterações de design e passaram a fazer parte do tecido que compunha o projeto. Este livro oferece um framework para que se possam tomar decisões de design e um vocabulário técnico para discutir design de domínios. Ele é uma síntese das melhores práticas amplamente aceitas e minhas próprias opiniões e experiências. Equipes de desenvolvimento de software que se deparam com domínios complexos podem se valer desse framework para abordar o DDD de forma sistemática. Contrastando três projetos Três projetos se destacam em minha memória como exemplos vivos de como a prática do design de domínios pode afetar drasticamente os resultados de um desenvolvimento. Embora todos os três projetos tenham gerado softwares de grande utilidade, somente um atingiu seus objetivos ambiciosos e produziu um software complexo que continuou a evoluir até satisfazer as contínuas necessidades da organização. Pude presenciar um projeto decolando rapidamente, oferecendo um sistema comercial simples e de grande utilidade baseado na Web. Os desenvolvedores guiavam-se com base em suas próprias experiências, mas isso nunca foi um obstáculo para eles, pois softwares simples podem ser escritos com pouquíssima atenção dada ao design. Em consequência deste sucesso inicial, as expectativas foram altas com relação a um futuro desenvolvimento. É aí que me foi solicitado trabalhar na segunda versão. Quando examinei de perto, vi que faltava um xix

13 modelo de domínio, ou até mesmo uma linguagem comum no projeto, e restava apenas um design desestruturado. Os líderes do projeto não concordaram com minha avaliação, e rejeitei o serviço. Um ano depois, a equipe se viu em apuros e impossibilitada de lançar uma segunda versão. Embora o uso que fizessem da tecnologia não fosse exemplar, foi a lógica de negócio que os arrebatou. O seu primeiro lançamento havia se solidificado prematuramente transformando-se em um legado que exigia alta manutenção. Para enfrentar essa complexidade é necessária uma abordagem mais séria com relação ao design da lógica de domínios. No início de minha carreira, tive a sorte de acabar trabalhando em um projeto que enfatizava o design de domínios. Esse projeto, em um domínio pelo menos tão complexo quanto o primeiro, também começou com um sucesso inicial modesto, lançando um aplicativo simples para comerciantes institucionais. Mas, neste caso, o lançamento inicial foi seguido de sucessivas acelerações de desenvolvimento. Cada iteração abria novas e excelentes opções para integração e elaboração de funcionalidades do lançamento anterior. A equipe pôde responder às necessidades dos clientes com flexibilidade e uma capacidade cada vez maior. Essa trajetória ascendente estava diretamente ligada a um modelo de domínios incisivo, repetidamente refinado e expresso em códigos. À medida que a equipe aprendia com o domínio, o modelo se aprofundava. A qualidade de comunicação melhorou não só entre os desenvolvedores, mas também entre desenvolvedores e especialistas do domínio, e o design longe de impor um fardo de manutenção ainda mais pesado tornou-se mais fácil de modificar e expandir. Infelizmente, os projetos não atingem um ciclo tão virtuoso assim simplesmente enfrentando-se os modelos com seriedade. Um de meus antigos projetos começou com ambiciosas aspirações para construir um sistema corporativo global baseado em um modelo de domínios, mas, após anos de decepção, o projeto baixou suas expectativas e se acomodou no convencional. A equipe dispunha de boas ferramentas e um bom conhecimento do negócio, e deu especial atenção à modelagem. Mas uma separação mal elaborada entre os papéis desempenhados pelos desenvolvedores desassociou a modelagem da implementação de forma que o design acabou não refletindo a profunda análise que estava em andamento. De qualquer forma, o projeto de objetos de negócios detalhados não foi vigoroso o suficiente para sustentar sua combinação em aplicativos mais elaborados. A realização de várias iterações não gerou nenhum avanço nos códigos, devido a um nível de conhecimento desigual entre os desenvolvedores, que não tinham nenhuma consciência do corpo informal de estilo e técnica para se criarem objetos baseados em modelos que também funcionam como um software prático e operacional. Com o passar dos meses, o trabalho de desenvolvimento se atolou na complexidade e a equipe perdeu sua visão coesa do sistema. Após anos de esforço, o projeto acabou produzindo um software modesto e útil, mas a equipe abandonara suas ambições iniciais e o foco do modelo. xx PREFÁCIO

14 O desafio da complexidade Muitas coisas podem fazer um projeto perder seu rumo: a burocracia, objetivos pouco claros e a falta de recursos, para citar apenas alguns. Mas é a abordagem dada ao design que, em grande parte, determina até que ponto os softwares podem se tornar complexos. Quando a complexidade foge ao controle, os desenvolvedores já não podem entender o software bem o suficiente para alterá-lo ou expandi-lo com facilidade e segurança. Por outro lado, um bom design pode criar oportunidades para explorar essas características complexas. Alguns fatores relativos ao design são tecnológicos. Boa parte dos esforços tem sido direcionada ao design de redes, bancos de dados e outras dimensões técnicas de softwares. Muitos livros têm sido escritos sobre como resolver esses problemas. Legiões de desenvolvedores têm cultivado suas habilidades e acompanhado cada avanço técnico. Contudo, a complexidade mais significativa de muitos aplicativos não é técnica. Ela está no próprio domínio, a atividade ou negócio do usuário. Quando essa complexidade de domínio não é tratada no design, não fará diferença se a tecnologia de infraestrutura foi bem concebida. Um design de sucesso deve sistematicamente trabalhar com este aspecto fundamental do software. São duas as premissas deste livro: 1. Na maioria dos projetos de software, o principal foco deve ser o domínio e a lógica do domínio. 2. Designs de domínios complexos devem se basear em um modelo. O DDD é uma maneira de pensar e um conjunto de prioridades, voltado para a aceleração de projetos de software que têm que trabalhar com domínios complicados. Para atingir este objetivo, este livro apresenta um conjunto completo de práticas, técnicas e princípios de design. Design versus processo de desenvolvimento Livros de design. Livros de processos. Eles raramente fazem referência um ao outro. Cada tópico já é complexo por si só. Este é um livro de design, mas acredito que design e processos sejam inseparáveis. Os conceitos de design devem ser implementados com sucesso ou acabarão se tornando uma discussão acadêmica. Ao aprenderem técnicas de design, as pessoas se sentem entusiasmadas com as possibilidades existentes. Logo em seguida, baixam sobre elas as realidades confusas de um projeto real. Elas não conseguem enquadrar as novas ideias de design com a tecnologia que devem usar. Ou não sabem quando deixar de lado um determinado aspecto do design em função do tempo disponível, ou quando lutar com PREFÁCIO xxi

15 unhas e dentes em busca de uma solução adequada. Os desenvolvedores podem e devem conversar uns com os outros de forma abstrata sobre a aplicação dos princípios do design, mas é mais natural falar sobre como a realidade acontece. Por isso, embora este seja um livro de design, vou passar por esse limite artificial e ir direto aos processos, quando for necessário. Isso ajudará a inserir os princípios de design dentro do contexto. Este livro não está associado a uma determinada metodologia, mas é orientado a uma nova família de processos de desenvolvimento Agile. Especificamente, ele considera que existem duas práticas em ação no projeto. Essas duas práticas são pré-requisitos para que se possa aplicar a abordagem neste livro. 1. O desenvolvimento é iterativo. O desenvolvimento iterativo tem sido defendido e praticado há décadas, e é a pedra fundamental dos métodos de desenvolvimento Agile. Existem várias boas discussões nos textos referentes a desenvolvimento Agile e Extreme Programming (ou XP), entre elas, Surviving Object-Oriented Projects (Cockburn 1998) e Extreme Programming Explained (Beck 1999). 2. Desenvolvedores e especialistas em domínio têm uma relação íntima. O DDD compacta uma grande quantidade de conhecimento em um modelo que reflete uma visão profunda do domínio e um enfoque nos conceitos principais. É uma colaboração entre quem conhece o domínio e quem sabe como construir softwares. Como o desenvolvimento é iterativo, essa colaboração deve continuar durante toda a vida do projeto. Extreme Programming, concebido por Kent Beck, Ward Cunningham e outros (veja Extreme Programming Explained [Beck 2000]), é o mais proeminente dos processos Agile e aquele com que tenho trabalhado com mais frequência. Durante todo este livro, para concretizar explicações, vou usar o XP como base para discussões sobre a interação entre design e processos. Os princípios ilustrados são facilmente adaptados a outros processos Agile. Nos últimos anos, tem havido uma rebelião contra metodologias de desenvolvimento mais elaboradas que sobrecarregam os projetos com documentos inúteis e estáticos além de planejamento e design obsessivos e abertos demais. Ao contrário destes, os processos Agile, tais como o XP, enfatizam a capacidade de lidar com mudanças e incertezas. O Extreme Programming reconhece a importância das decisões de design, mas resiste bastante ao design aberto. Em vez disso, ele dedica um esforço admirável a comunicar e melhorar a capacidade que o projeto tem de mudar de rumo rapidamente. Com essa capacidade de reação, os desenvolvedores podem utilizar aquilo que há xxii PREFÁCIO

16 de mais simples e funcional em qualquer etapa de um projeto e, em seguida, fazer contínuas refatorações, realizando várias pequenas melhorias no design, chegando finalmente a um design que satisfaça as verdadeiras necessidades do cliente. Esse minimalismo tem sido um antídoto de grande necessidade para alguns excessos cometidos pelos entusiastas do design. Alguns projetos têm ficado atolados por documentos incômodos que de pouco valem. Eles têm sofrido de paralisia analítica, onde os membros das equipes têm tanto medo de um design imperfeito que acabam não progredindo. Algo tinha que mudar. Infelizmente, algumas dessas ideias de processos podem ser mal interpretadas. Cada pessoa tem uma definição diferente do que vem a ser mais simples. A refatoração contínua é uma série de pequenos re-designs; desenvolvedores que não tenham solidificado os princípios do design vão gerar um banco de códigos difícil de entender ou mudar o contrário da agilidade. Embora o medo de exigências não antecipadas geralmente leve ao exagero na área de engenharia, a tentativa de se evitar o exagero na engenharia pode se transformar em outro medo: o medo de raciocinar profundamente sobre o design. Na verdade, o XP funciona melhor para desenvolvedores com um sentido de design aguçado. O processo do XP considera que seja possível melhorar um design através da refatoração, e que isso seja feito com frequência e rapidez. Mas as antigas opções de design facilitam ou dificultam a própria refatoração. O processo do XP tenta aumentar a comunicação das equipes, mas as opções de modelo e design clareiam ou confundem a comunicação. Este livro une a prática de design e desenvolvimento ilustrando como o DDD (domain-driven design) e o desenvolvimento Agile reforçam-se um ao outro. Uma abordagem sofisticada com relação à modelagem de domínios dentro do contexto de um processo de desenvolvimento Agile acelera o desenvolvimento. A interpelação de processo com desenvolvimento de domínios torna essa abordagem mais prática que qualquer outro tratamento de design puro lançado no vácuo. A estrutura deste livro Este livro é dividido em quatro seções principais: Parte I: Colocando o modelo de domínios em ação apresenta os objetivos básicos do desenvolvimento dirigido por domínio; esses objetivos motivam as práticas nas seções posteriores. Como existem tantas abordagens com relação ao desenvolvimento de softwares, a Parte I define termos e oferece uma visão geral das implicações do uso do modelo de domínios para conduzir a comunicação e o design. Parte II: Os tijolos da construção de um design baseado em modelos condensa o principal das melhores práticas utilizadas na modelagem de domí- PREFÁCIO xxiii

17 nios orientada a objetos transformando-as em um conjunto de tijolos básicos. Essa seção se concentra em transpor o espaço existente entre modelos e softwares práticos e operacionais. O compartilhamento desses padrões convencionais põe ordem ao design. Os membros das equipes podem facilmente entender o trabalho uns dos outros. O uso de padrões convencionais também contribui com terminologias para uma linguagem em comum, que todos os membros das equipes possam utilizar para discutir sobre modelos e decisões de design. Mas o principal objetivo dessa seção é concentrar-se nos tipos de decisões que mantêm o modelo e a implementação alinhados um com o outro, cada qual reforçando a eficácia do outro. Esse alinhamento requer atenção aos detalhes de cada elemento. A cuidadosa elaboração nessa minúscula escala dá aos desenvolvedores a solidez do alicerce a partir do qual eles podem aplicar as abordagens de modelagem apresentadas nas Partes III e IV. Parte III: A refatoração para um melhor entendimento vai além dos tijolos de construção com o desafio de colocá-los um sobre o outro e transformálos em modelos práticos que paguem o investimento. Em vez de ir direto a princípios esotéricos de design, essa seção enfatiza o processo de descobrimento. Os grandes modelos não surgem imediatamente; eles requerem um profundo entendimento do domínio. Esse entendimento provém de um mergulho a fundo no assunto, implementando um design inicial baseado em um modelo provavelmente ingênuo e, em seguida, transformando-o várias vezes. A cada nova visão adquirida pela equipe, o modelo é transformado para revelar esse conhecimento mais aprofundado e o código é refatorado para refletir esse modelo mais profundo e disponibilizar seu potencial para o aplicativo. É aí que, de vez em quando, esse descascar de batatas leva a uma oportunidade de se chegar a um modelo bem mais profundo, sustentado por várias mudanças no design. A exploração é inerentemente livre, mas não tem que ser aleatória. A Parte III mergulha nos princípios de modelagem que podem conduzir as escolhas ao longo do caminho e as técnicas que ajudam a direcionar a pesquisa. Parte IV: Design estratégico lida com as situações que surgem em sistemas complexos, organizações maiores e interações com sistemas externos e sistemas legado. Essa seção explora três princípios que se aplicam ao sistema como um todo: contexto, destilação e estrutura em larga escala. As decisões estratégicas de design são tomadas pelas equipes, ou até mesmo entre equipes. O design xxiv PREFÁCIO

18 estratégico permite que os objetivos da Parte I sejam realizados em uma escala mais larga, para um grande sistema ou um aplicativo que atenda a uma rede corporativa em expansão. Durante todo o livro, as discussões são ilustradas não só com problemas supersimplificados, mas com exemplos realistas adaptados a partir de projetos verdadeiros. Boa parte do livro é escrita como um conjunto de padrões. Os leitores provavelmente conseguirão entender o material sem se preocupar com esse artifício, mas quem estiver interessado no estilo e no formato dos padrões pode recorrer à leitura do apêndice. A quem se destina este livro Este livro é escrito principalmente para desenvolvedores de softwares orientados a objetos. A maioria dos membros de uma equipe de projetos de softwares pode tirar proveito de algumas partes do livro. Ele fará mais sentido para aqueles que estejam atualmente envolvidos em um projeto, tentando aplicar algumas dessas coisas no decorrer de seus trabalhos, e para aqueles que já possuem experiência profunda com esse tipo de projeto. Para tirar maior proveito deste livro, é necessário ter algum conhecimento de modelagem orientada a objetos. Os exemplos incluem diagramas UML e códigos Java; portanto, é importante ter a capacidade de ler essas linguagens em nível básico, mas é desnecessário dominar os detalhes de cada uma. O conhecimento de Extreme Programming dá uma maior perspectiva às discussões sobre processos de desenvolvimento, mas o material deve ser compreensível também para quem não tem conhecimento anterior sobre o assunto. Para desenvolvedores de software intermediários leitores que já sabem alguma coisa sobre design orientado a objetos e possivelmente já leram um ou mais livros sobre design de softwares este livro vai preencher as lacunas e oferecer perspectivas sobre como a modelagem de objetos se enquadra na vida real em um projeto de software. Este livro ajuda desenvolvedores intermediários a aprender como aplicar sofisticadas técnicas de modelagem e design em problemas práticos. Desenvolvedores de software avançados ou experientes vão se interessar pela estrutura abrangente do livro para lidar com domínios. Essa abordagem sistemática com relação ao design ajudará líderes técnicos a conduzir suas equipes ao longo deste caminho. Além disso, a terminologia coerente utilizada durante todo o livro ajudará os desenvolvedores avançados a se comunicar com seus colegas. Este livro é uma narrativa, e pode ser lido do início ao fim, ou a partir de qualquer capítulo. Leitores de vários ramos talvez prefiram seguir diferentes caminhos ao longo do livro, mas recomendo que todos os leitores comecem com a introdução à Parte I, bem como o Capítulo 1. Fora destes, as partes principais são provavel- PREFÁCIO xxv

19 mente os Capítulos 2, 3, 9 e 14. Quem já possui certo conhecimento de um tópico não deverá ter dificuldade em assimilar os principais pontos lendo os cabeçalhos e o texto em negrito. Leitores mais avançados talvez prefiram ler rapidamente as Partes I e II e ir para o seu ponto de maior interesse, que são as partes III e IV. Além dessa leitura fundamental, analistas e gerentes de projeto relativamente técnicos também tirarão proveito com a leitura do livro. Analistas podem usar a associação feita entre modelo e design para criar contribuições mais eficientes no contexto de um projeto Agile. Analistas talvez possam também utilizar alguns dos princípios de design estratégico para melhor enfocar e organizar seu trabalho. Gerentes de projeto provavelmente estarão interessados na ênfase dada em como fazer uma equipe mais eficiente e mais enfocada no design de softwares que sejam significativos para os especialistas e usuários de negócios. E como as decisões de design estratégico estão inter-relacionadas com a organização da equipe e os estilos de trabalho, essas decisões de design necessariamente envolvem a liderança do projeto e têm grande impacto sobre a trajetória do projeto. Uma equipe dirigida por domínios Embora um desenvolvedor que entenda sobre DDD possa adquirir excelentes técnicas e perspectivas de design, os maiores ganhos acontecem quando uma equipe se une para aplicar uma abordagem de DDD e trazer o modelo do domínio para o centro de discussão do projeto. Ao fazer isso, os membros da equipe compartilham uma linguagem que enriquece sua comunicação e a mantém ligada ao software. Eles conseguem produzir uma implementação lúcida em compasso com o modelo, alavancando o desenvolvimento do aplicativo. Eles compartilham um mapa da relação existente entre o trabalho de design de diversas equipes concentrando sistematicamente sua atenção nas características mais distintas e valiosas para a organização. O DDD é um desafio técnico difícil que pode ser compensado por grandes oportunidades de abertura exatamente quando a maioria dos projetos de software começa a se consolidar e a se transformar em um legado. xxvi PREFÁCIO

20 AGRADECIMENTOS De uma forma ou de outra, venho trabalhando neste livro há mais de quatro anos, e muitas pessoas me ajudaram e apoiaram ao longo do caminho. Agradeço aquelas pessoas que leram os manuscritos e fizeram seus comentários. Este livro simplesmente não teria sido possível sem esse retorno. Alguns deram às suas críticas uma atenção especialmente generosa. O Silicon Valley Patterns Group, sob o comando de Russ Rufer e Tracy Bialek, passou sete semanas examinando minuciosamente o primeiro rascunho completo do livro. O grupo de leitura da University of Illinois, sob o comando de Ralph Johnson, também passou várias semanas revisando uma das versões posteriores. Foi profundo o efeito proveniente das longas e animadas discussões desses grupos. Kyle Brown e Martin Fowler contribuíram com comentários detalhados, valiosas opiniões e incomensurável apoio moral (enquanto aguardávamos para saborear um peixe). Os comentários feitos por Ward Cunningham me ajudaram a trabalhar em alguns pontos fracos importantes. Alistair Cockburn, assim como Hilary Evans, me incentivou desde o início e me ajudou a descobrir o caminho a tomar ao longo do processo de publicação. David Siegel e Eugene Wallingford me ajudaram a evitar situações embaraçosas nas partes mais técnicas. Vibhu Mohindra e Vladimir Gitlevich analisaram minuciosamente todos os exemplos de códigos. Rob Mee leu parte das minhas primeiras explorações do material e me ajudou a colher ideias enquanto eu procurava uma forma de transmitir este estilo de design, ajudando-me também a analisar uma versão posterior. John Kerievsky é responsável por uma das principais viradas no desenvolvimento deste livro: ele me persuadiu a experimentar o formato de padrão alexandrino, que se tornou fundamental para a organização deste livro. Ele também me ajudou a reunir a parte do material agora na Parte II e dar-lhe uma forma coerente pela primeira vez, durante o processo intensivo de acompanhamento que precedeu a conferência PLoP em Esta foi a semente em torno da qual boa parte do restante do livro germinou. Agradeço também a Awad Faddoul pelas centenas de horas que passei sentado escrevendo em seu maravilhoso café. Esse lugar, aliado a muito windsurf, ajudoume a continuar a caminhada. Sou grato também a Martine Jousset, Richard Paselk e Ross Venables pela criação de belas fotografias para ilustração de alguns conceitos importantes (veja créditos de fotografias na página 491). xxvii

21 Antes de poder conceber este livro, tive que formar minha visão e compreensão sobre desenvolvimento de softwares. Essa formação deve muito à generosidade de algumas pessoas brilhantes que agiram como mentores informais e amigos para mim. David Spiegel, Eric Gold e Iseult White, cada qual de sua forma, me ajudaram a desenvolver minha forma de pensar em design de softwares. Ao mesmo tempo, Bruce Gordon, Richard Freyberg e Dr. Judith Segal, também de formas bastante diferentes, me ajudaram a encontrar meu caminho no mundo dos projetos bem-sucedidos. Minhas emoções próprias naturalmente se desenvolveram a partir de um conjunto de ideias que pairavam no ar naquela época. Algumas dessas contribuições aparecerão de forma clara no texto principal e, onde possível, serão feitas referências a elas. Outras são tão fundamentais que nem mesmo percebo sua influência sobre mim. Dr. Bala Subramanium, orientador de minha tese de mestrado, me despertou para a modelagem matemática, que aplicamos à cinética das reações químicas. Modelagem é modelagem, e esse trabalho fez parte do caminho que levou a este livro. Muito antes disso, minha forma de pensar foi moldada por meus pais, Carol e Gary Evans. E alguns professores especiais despertaram meu interesse e me ajudaram a construir minhas bases, principalmente Dale Currier (professor de matemática do ensino médio), Mary Brown (professora de redação e inglês do ensino médio) e Josephine McGlamery (professora de ciências da 6ª série). Por último, agradeço meus amigos e minha família, e a Fernando De Leon, por seu incentivo ao longo de todo o caminho. xxviii AGRADECIMENTOS

22 I Colocando o modelo de domínios em ação

23 Este mapa chinês do século 18 representa o mundo todo. No centro, e ocupando a maior parte do espaço, está a China, cercada por representações espalhadas de outros países. Este é um modelo do mundo adequado àquela sociedade, que intencionalmente havia sido fechada. A visão de mundo que o mapa representa não deve ter ajudado a lidar com estrangeiros. Certamente, ela não se aplicaria à China moderna. Mapas são modelos, e cada modelo representa algum aspecto da realidade com uma ideia que seja de interesse. Um modelo é uma simplificação. Ele é uma interpretação da realidade que destaca os aspectos relevantes para resolver o problema que se tem em mãos ignorando os detalhes estranhos. Cada programa de software está relacionado a alguma atividade ou interesse do seu usuário. Essa área de assunto em que o usuário aplica o programa é o domínio do software. Alguns domínios envolvem o mundo físico: o domínio de um programa de reservas de passagens aéreas envolve pessoas reais entrando em aeronaves reais. Alguns domínios são intangíveis: o domínio de um programa de contabilidade são o dinheiro e as finanças. Os domínios dos softwares geralmente têm pouco a ver com computadores, embora haja exceções: o domínio de um sistema de controle de códigos-fonte é o próprio desenvolvimento de softwares. Para criar softwares que tenham valor para as atividades desempenhadas pelos usuários, a equipe de desenvolvimento deve trazer consigo um conjunto de conhecimentos relacionados a essas atividades. A quantidade de conhecimento necessária pode ser estarrecedora. O volume e a complexidade de informações podem ser imensos. Modelos são ferramentas para atacar essa sobrecarga. Um modelo é uma forma de conhecimento seletivamente simplificada e conscien- 2 PARTE I

24 temente estruturada. Um modelo adequado faz com que as informações tenham sentido e se concentra em um problema. Um modelo de domínio não é um diagrama específico; ele é a ideia que o diagrama pretende transmitir. Ele não é simplesmente o conhecimento existente na cabeça de um especialista em domínios; ele é uma abstração rigorosamente organizada e seletiva daquele conhecimento. Um diagrama pode representar e comunicar um modelo, assim como acontece com um código cuidadosamente escrito, assim como uma frase em português. A modelagem de domínios não é uma questão de se criar um modelo o mais realista possível. Mesmo em um domínio de coisas tangíveis da vida real, nosso modelo é uma criação artificial. Ele também não é simplesmente a construção de um mecanismo de software que fornece os resultados necessários. Ele mais se assemelha ao processo de criação de um filme, representando livremente a realidade com uma determinada finalidade. Até mesmo um filme-documentário não mostra uma vida real inédita. Assim como um cineasta seleciona aspectos da experiência e os apresenta de forma idiossincrática para contar uma história ou se fazer entender, um modelador de domínios escolhe um modelo em particular pela sua utilidade. A utilidade de um modelo no Domain-Driven Design No DDD (domain-driven design), são três as utilidades básicas que determinam a escolha de um modelo. 1. O modelo e o coração do design dão forma um ao outro. É essa ligação íntima entre o modelo e a implementação que torna o modelo relevante e garante que a análise a ele dedicada se aplique ao produto final, um programa de execução. Essa ligação de modelo e implementação também ajuda durante a manutenção e contínuo desenvolvimento, pois o código pode ser interpretado com base na compreensão do modelo. (Veja o Capítulo 3). 2. O modelo é a espinha dorsal de uma linguagem utilizada por todos os membros da equipe. Devido à ligação de modelo e implementação, os desenvolvedores podem conversar sobre o programa nessa linguagem. Eles podem comunicar-se com os especialistas do domínio sem a necessidade de tradução. E como a linguagem é baseada no modelo, nossa capacidade linguística natural pode ser usada para refinar o próprio modelo. (Veja o Capítulo 2). 3. O modelo é um conhecimento destilado. O modelo é a forma aceita pela equipe de estruturar o conhecimento do domínio e distinguir os elementos de maior interesse. Um modelo capta a forma que escolhemos para pensar no domínio à medida que selecionamos termos, interpretamos conceitos e COLOCANDO O MODELO DE DOMÍNIOS EM AÇÃO 3

Processos de Software by Pearson Education Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 4 Slide 1

Processos de Software by Pearson Education Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 4 Slide 1 Processos de Software Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 4 Slide 1 Objetivos Apresentar modelos de processos de software Descrever três modelos genéricos de processo e quando

Leia mais

Rational Unified Process (RUP)

Rational Unified Process (RUP) Rational Unified Process (RUP) A Rational é bem conhecida pelo seu investimento em orientação em objetos. A empresa foi à criadora da Unified Modeling Language (UML), assim como de várias ferramentas que

Leia mais

Introdução à Análise e Projeto de Sistemas

Introdução à Análise e Projeto de Sistemas Introdução à I. O Que vamos fazer na Disciplina? Saber uma linguagem de programação orientada a objeto (OO) não é suficiente para criar sistemas OO Tem que saber Análise e Projeto OO (APOO) Isto é, Análise

Leia mais

Processos de software

Processos de software Processos de software 1 Processos de software Conjunto coerente de atividades para especificação, projeto, implementação e teste de sistemas de software. 2 Objetivos Introduzir modelos de processos de

Leia mais

ENGENHARIA DE SOFTWARE. Aula 03 Processos de Software

ENGENHARIA DE SOFTWARE. Aula 03 Processos de Software ENGENHARIA DE SOFTWARE Aula 03 Processos de Software AGENDA Modelos de processo de software Atividades do processo Lidando com mudanças Rational Unified Process (RUP) 14/03/2017 IFPR QUEDAS DO IGUAÇU -

Leia mais

Modelos de Processo de Software

Modelos de Processo de Software Modelos de Processo de Software Seiji Isotani, Rafaela V. Rocha sisotani@icmc.usp.br rafaela.vilela@gmail.com PAE: Armando M. Toda armando.toda@gmail.com (material produzido e atualizado pelos professores

Leia mais

XP EXTREME PROGRAMMING. AGO106 - Gestão

XP EXTREME PROGRAMMING. AGO106 - Gestão XP EXTREME PROGRAMMING AGO106 - Gestão de Processos de Desenvolvimento de Software DESENVOLVIMENTO TRADICIONAL Sequencial: Análise, Design, Implementação, Teste, Implantação e Manutenção Características:

Leia mais

Extreme Programming: Valores e Práticas

Extreme Programming: Valores e Práticas Programação Extrema Extreme Programming: Valores e Práticas Prof. Mauro Lopes 1-31 34 Objetivos Anteriormente trabalhamos os conceitos do Desenvolvimento Tradicional e do Desenvolvimento Ágil. Trouxemos

Leia mais

Engenharia de Software Simulado para a 1ª Avaliação Bimestral Professor: Danilo Giacobo - RESPOSTAS

Engenharia de Software Simulado para a 1ª Avaliação Bimestral Professor: Danilo Giacobo - RESPOSTAS Engenharia de Software Simulado para a 1ª Avaliação Bimestral Professor: Danilo Giacobo - RESPOSTAS 1. Com relação à engenharia de software, julgue os itens seguintes. Engenharia de software não está relacionada

Leia mais

Prof. Dr. Thiago Jabur Bittar

Prof. Dr. Thiago Jabur Bittar Prof. Dr. Thiago Jabur Bittar Uma representação abstrata e simplificada do processo de desenvolvimento software, tipicamente mostrando as principais atividades e dados usados na produção e manutenção de

Leia mais

Processos de Desenvolvimento de Software. Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 2

Processos de Desenvolvimento de Software. Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 2 Processos de Desenvolvimento de Software Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 2 A Engenharia de Software Uma Tecnologia em Camadas Gerenciamento da Qualidade Total e filosofias

Leia mais

Análise e Projeto de Sistemas

Análise e Projeto de Sistemas Análise e Projeto de Sistemas Prof. M.Sc. Ronaldo C. de Oliveira ronaldooliveira@facom.ufu.br FACOM - 2012 Paradigmas e Processo de Software Engenharia de Software: Abrangência Engenharia de Software possui

Leia mais

Introdução a UML (Unified Modeling Language)

Introdução a UML (Unified Modeling Language) Introdução a UML (Unified Modeling Language) O que é a UML? Linguagem Gráfica de Modelagem para: Visualizar Especificar Construir Documentar Comunicar Artefatos de sistemas complexos Linguagem: vocabulário

Leia mais

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE PROCESSO DE DESENVOLVIMENTO DE SOFTWARE Luiz Leão luizleao@gmail.com http://www.luizleao.com Questão 1 Para Sommerville a arquitetura de sistemas descreve o sistema em termos de um conjunto de unidades

Leia mais

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA ENGENHARIA DE SOFTWARE

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA ENGENHARIA DE SOFTWARE 1 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA ENGENHARIA DE SOFTWARE Nickerson Fonseca Ferreira nickerson.ferreira@ifrn.edu.br Introdução 2 Antes de qualquer

Leia mais

Engenharia de Software II

Engenharia de Software II Engenharia de Software II Aula 4 http://www.ic.uff.br/~bianca/engsoft2/ Aula 4-03/05/2006 1 Modelos Prescritivos de Processo Modelo em cascata Modelos incrementais Modelo incremental Modelo RAD Modelos

Leia mais

Engenharia de Software

Engenharia de Software Universidade São Judas Tadeu Prof. André Luiz Ribeiro Prof. Jorge Luis Pirolla Introdução à Computação Engenharia de Software Tópicos O que é Engenharia de Software? Engenharia de Software em camadas Processo

Leia mais

Levantamento, Análise e Gestão Requisitos. Aula 02

Levantamento, Análise e Gestão Requisitos. Aula 02 Levantamento, Análise e Gestão Requisitos Aula 02 Agenda RUP Visão Geral Qualidade de software Estrutura Fases Disciplinas Principais papéis Atualização dos Requisitos Visão Geral Conjunto Subjacente de

Leia mais

Luiz Fernando Maurício de Souza Sidemar Fidelis Cezario. FDD Desenvolvimento dirigido a funcionalidades

Luiz Fernando Maurício de Souza Sidemar Fidelis Cezario. FDD Desenvolvimento dirigido a funcionalidades Luiz Fernando Maurício de Souza Sidemar Fidelis Cezario FDD Desenvolvimento dirigido a funcionalidades 2 Agenda FDD; Melhores práticas do FDD; Principais papéis; Processos. FDD Metodologia interativa e

Leia mais

O Processo Unificado (PU) SSC 121 Engenharia de Software I Profa. Dra. Elisa Yumi Nakagawa 2 o semestre de 2012

O Processo Unificado (PU) SSC 121 Engenharia de Software I Profa. Dra. Elisa Yumi Nakagawa 2 o semestre de 2012 O Processo Unificado (PU) SSC 121 Engenharia de Software I Profa. Dra. Elisa Yumi Nakagawa 2 o semestre de 2012 Modelos de Processo de Software Desenvolver software é geralmente uma tarefa complexa e sujeita

Leia mais

RUP RATIONAL UNIFIED PROCESS

RUP RATIONAL UNIFIED PROCESS O que é RUP? É um metodologia para gerenciar projetos de desenvolvimento de software que usa a UML como ferramenta para especificação de sistemas. Ele é um modelo de processo híbrido Mistura elementos

Leia mais

Paradigmas da Engenharia de Software AULA PROF. ABRAHAO LOPES

Paradigmas da Engenharia de Software AULA PROF. ABRAHAO LOPES Paradigmas da Engenharia de Software AULA 03-04 PROF. ABRAHAO LOPES Introdução O processo de software é visto por uma sequência de atividades que produzem uma variedade de documentos, resultando em um

Leia mais

RUP RATIONAL UNIFIED PROCESS PRÁTICAS RECOMENDADAS. Prof. Fabiano Papaiz IFRN

RUP RATIONAL UNIFIED PROCESS PRÁTICAS RECOMENDADAS. Prof. Fabiano Papaiz IFRN RUP RATIONAL UNIFIED PROCESS PRÁTICAS RECOMENDADAS Prof. Fabiano Papaiz IFRN O RUP recomenda as seguintes práticas que devem ser utilizadas no desenvolvimento de um software: 1. Desenvolver de forma iterativa

Leia mais

Processo. Processo unificado. Principais Características do UP. Principais Características do UP RUP. Unified Process (Processo Unificado)

Processo. Processo unificado. Principais Características do UP. Principais Características do UP RUP. Unified Process (Processo Unificado) Processo UP Unified Process (Processo Unificado) Conjunto de passos que tem como objetivo atingir uma meta Processo de software na ES, processo que visa a produzir o software - de modo eficiente e previsível

Leia mais

QUESTÕES TESTES. Questão 1. O modelo de ciclo de vida em cascata:

QUESTÕES TESTES. Questão 1. O modelo de ciclo de vida em cascata: QUESTÕES 1. 0 que é domínio da aplicação (ou do problema)? 2. Qual a importância da engenharia de software e como se justificam os custos a ela associados? 3. O que é processo de desenvolvimento de software

Leia mais

Introdução a Sistemas de Informação

Introdução a Sistemas de Informação Introdução a Sistemas de Informação Orivaldo Santana Jr A partir de slides elaborados por Ivan G. Costa Filho, Fernando Fonseca & Ana Carolina Salgado Graduação 1 Introdução Sistema de Informação (SI)

Leia mais

UML. Modelando um sistema

UML. Modelando um sistema UML Modelando um sistema Fases do desenvolvimento de Software Análise de requisitos Análise Projeto Programação Análise de Requisitos Esta fase captura as intenções e necessidades dos usuários do sistema

Leia mais

Perguntas da Aula 2. Respostas da Pergunta 2. Respostas da Pergunta 1. Respostas da Pergunta 4. Respostas da Pergunta 3. Processos de Software

Perguntas da Aula 2. Respostas da Pergunta 2. Respostas da Pergunta 1. Respostas da Pergunta 4. Respostas da Pergunta 3. Processos de Software Engenharia de Software Aula 03 Perguntas da Aula 2 Processos de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo dcc603@gmail.com 12 Março 2012 Inconsistente: perguntei laranjas, respondeu

Leia mais

Tomada de Decisão Estratégica

Tomada de Decisão Estratégica EXERCÍCIO N N Tópico Tópico 1 2 Sistemas Tomada de de Informação Decisão Estratégica nos negócios DCC133 Introdução a Sistemas de Informação TÓPICO 2 Tomada de Decisão Estratégica Prof. Tarcísio de Souza

Leia mais

SISTEMA DE GESTÃO ERP

SISTEMA DE GESTÃO ERP SISTEMA DE GESTÃO ERP DEFINIÇÃO, CONCEITUAÇÃO E IMPLEMENTAÇÃO DE BPM E TÉCNICAS DE MODELAGEM DE PROCESSOS Walison de Paula Silva Agenda BPM MODELAGEM DE PROCESSOS Sistemas de Gestão ERP BPM - Business

Leia mais

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 15 PROFª BRUNO CALEGARO

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 15 PROFª BRUNO CALEGARO UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 15 PROFª BRUNO CALEGARO Santa Maria, 08 de Novembro de 2013. Contextualização Nas próximas aula iremos começar a modelar e projetar sistemas

Leia mais

O Processo Unificado: Workflow de Análise. Graduação em Informática Profa. Dra. Itana Maria de Souza Gimenes 2009

O Processo Unificado: Workflow de Análise. Graduação em Informática Profa. Dra. Itana Maria de Souza Gimenes 2009 O Processo Unificado: Workflow de Análise Graduação em Informática Profa. Dra. Itana Maria de Souza Gimenes 2009 Workflow de Análise Objetivos da análise: manter uma especificação precisa dos requisitos

Leia mais

Ciência da Computação. Análise e Projeto Orientado a Objetos UML. Anderson Belgamo

Ciência da Computação. Análise e Projeto Orientado a Objetos UML. Anderson Belgamo Ciência da Computação Análise e Projeto Orientado a Objetos UML Anderson Belgamo 1 Evolução do Software O rápido crescimento da capacidade computacional das máquinas resultou na demanda por sistemas de

Leia mais

Escolhendo um Modelo de Ciclo de Vida

Escolhendo um Modelo de Ciclo de Vida Escolhendo um Modelo de Ciclo de Vida Ciclos de Vida 1 Ciclo de Vida de um Produto Qualquer desenvolvimento de produto inicia com uma idéia e termina com o produto pretendido. O ciclo de vida de um produto

Leia mais

Requisitos de Software

Requisitos de Software Requisitos de Software Engenharia de requisitos Estabelece os serviços que o cliente requer de um sistema e as restrições sob as quais tal sistema operará e será desenvolvido. Tais serviços e restrições

Leia mais

Como Modelar com UML 2

Como Modelar com UML 2 Ricardo Pereira e Silva Como Modelar com UML 2 Visual Books Sumário Prefácio... 13 1 Introdução à Modelagem Orientada a Objetos... 17 1.1 Análise e Projeto Orientados a Objetos... 18 1.2 Requisitos para

Leia mais

UML (Linguagem Modelagem Unificada) João Paulo Q. dos Santos

UML (Linguagem Modelagem Unificada) João Paulo Q. dos Santos UML (Linguagem Modelagem Unificada) João Paulo Q. dos Santos joao.queiroz@ifrn.edu.br Roteiro A importância da UML para projetar sistemas. Principais características do diagrama de classes e de sequência.

Leia mais

PROJETO DE PROGRAMAS. Projeto de Programas PPR0001

PROJETO DE PROGRAMAS. Projeto de Programas PPR0001 PROJETO DE PROGRAMAS Projeto de Programas PPR0001 Desenvolvimento de Software 2 3 Desenvolvimento de Software Análise de Requisitos Distinguir e dividir o sistema em componentes: Analisar os componentes

Leia mais

Resolução dos exercícios da lista BD01

Resolução dos exercícios da lista BD01 Resolução dos exercícios da lista BD01 Pedro Losco Takecian Monitor João Eduardo Ferreira Professor 4 de abril de 2006 1. Quando faz sentido utilizar um SGBD ao invés de simplesmente utilizar o sistema

Leia mais

Prof. Esp. Fabiano Taguchi

Prof. Esp. Fabiano Taguchi UML Prof. Esp. Fabiano Taguchi http://fabianotaguchi.wordpress.com fabianotaguchi@hotmail.com UML COMPETÊNCIA: Conhecer e desenvolver estudos de caso usando modelagem orientada a objeto. HABILIDADE: Conhecer

Leia mais

Banco de Dados Relacional

Banco de Dados Relacional Centro Federal de Educação Tecnológica de Pernambuco Curso de Tecnologia em Sistemas de Informação Banco de Dados Relacional Renata Lúcia Mendonça Ernesto do Rêgo rlrego@yahoo.com 1 Plano de Ensino Objetivo

Leia mais

Unidade II MODELAGEM DE PROCESSOS. Profa. Gislaine Stachissini

Unidade II MODELAGEM DE PROCESSOS. Profa. Gislaine Stachissini Unidade II MODELAGEM DE PROCESSOS Profa. Gislaine Stachissini Modelagem de sistemas A fase do desenvolvimento do sistema exige: esforço; dedicação; envolvimento; um único objetivo. Estilo de desenvolvimento

Leia mais

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 12 PROFª BRUNO CALEGARO

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 12 PROFª BRUNO CALEGARO UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 12 PROFª BRUNO CALEGARO Santa Maria, 29 de Outubro de 2013. Revisão aula passada Modelagem de sistemas Perspectiva externa Perspectiva de iteração

Leia mais

Unidade 4 Projeto de Banco de Dados

Unidade 4 Projeto de Banco de Dados Unidade 4 Projeto de Banco de Dados Engenharia de Computação / Engenharia de Produção Banco de Dados Prof. Maria das Graças da Silva Teixeira Material base: Banco de Dados, 2009.2, prof. Otacílio José

Leia mais

1 Introdução. 1.1 Teoria dos Sistemas 23/4/2010

1 Introdução. 1.1 Teoria dos Sistemas 23/4/2010 1 1 Introdução 1.1 Teoria dos Sistemas 1.2 Constituição dos sistemas 1.3 Natureza dos sistemas 1.4 Parâmetros do sistema 1.5 Descrição de sistemas 1.6 Desafios enfrentados no desenvolvimento 1.7 Perfil

Leia mais

1.1. Declaração do Problema e Limitações dos Trabalhos Relacionados Um Framework Conceitual para SMAs

1.1. Declaração do Problema e Limitações dos Trabalhos Relacionados Um Framework Conceitual para SMAs 1 Introdução Os sistemas multiagentes (SMAs) estão tendo cada vez mais aceitação no setor da engenharia de software e no meio acadêmico como um paradigma para o desenvolvimento e a criação de sistemas

Leia mais

Por uma pesquisa de clima mais rica: saindo do padronizado em direção ao estratégico

Por uma pesquisa de clima mais rica: saindo do padronizado em direção ao estratégico Por uma pesquisa de clima mais rica: saindo do padronizado em direção ao estratégico Este artigo visa contribuir com os processos de gestão de clima organizacional das empresas. Procuramos apresentar melhorias

Leia mais

Aula 01 Conceito de Banco de Dados e SGBD

Aula 01 Conceito de Banco de Dados e SGBD Aula 01 Conceito de Banco de Dados e SGBD Dado: conjunto de símbolos arranjados a fim de representar a informação fora da mente humana. Elemento de Dado: subconjunto de símbolos que compõem um dado com

Leia mais

Universidade Regional de Blumenau

Universidade Regional de Blumenau Universidade Regional de Blumenau Curso de Bacharel em Ciências da Computação Protótipo de um Sistema de Informações Estratégicas para Consultórios Médicos utilizando Genexus Protótipo desenvolvido como

Leia mais

Engenharia de Software. Processos. Desenvolvimento de Software Tradicionais 2014/2. Prof. Luís Fernando Garcia

Engenharia de Software. Processos. Desenvolvimento de Software Tradicionais 2014/2. Prof. Luís Fernando Garcia Engenharia de Software Processos Desenvolvimento de Software Tradicionais 2014/2 Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Processos Um conjunto estruturado de atividades necessárias para o desenvolvimento

Leia mais

A modelagem é tida como a parte central de todas as atividades para a construção de um bom sistema, com ela podemos:

A modelagem é tida como a parte central de todas as atividades para a construção de um bom sistema, com ela podemos: Módulo 6 Análise Orientada a Objeto É interessante observar como a análise orientada a objeto utiliza conceitos que aprendemos há muito tempo: objetos, atributos, classes, membros, todos e partes. Só não

Leia mais

MINISTÉRIO DA EDUCAÇÃO INSTITUTO NACIONAL DE ESTUDOS E PESQUISAS EDUCACIONAIS ANÍSIO TEIXEIRA PORTARIAS DE 22 DE JUNHO DE 2012

MINISTÉRIO DA EDUCAÇÃO INSTITUTO NACIONAL DE ESTUDOS E PESQUISAS EDUCACIONAIS ANÍSIO TEIXEIRA PORTARIAS DE 22 DE JUNHO DE 2012 MINISTÉRIO DA EDUCAÇÃO INSTITUTO NACIONAL DE ESTUDOS E PESQUISAS EDUCACIONAIS ANÍSIO TEIXEIRA PORTARIAS DE 22 DE JUNHO DE 2012 O Presidente do Instituto Nacional de Estudos e Pesquisas Educacionais Anísio

Leia mais

TESTES DE SOFTWARE 1. Fundamentos sobre testes de software

TESTES DE SOFTWARE 1. Fundamentos sobre testes de software ENG SOFT - TESTES TESTES DE SOFTWARE 1. Fundamentos sobre testes de software A atividade de teste de software sempre foi considerada como um gasto de tempo desnecessário, uma atividade de segunda classe,

Leia mais

CICLO DE VIDA DE SOFTWARE

CICLO DE VIDA DE SOFTWARE WESLLEYMOURA@GMAIL.COM CICLO DE VIDA DE SOFTWARE ANÁLISE DE SISTEMAS Introdução ao ciclo de vida de software Qualificar um produto é muito bom para que tenhamos certeza de que há seriedade e preocupação

Leia mais

Desenvolvimento Ágil de Software. Prof. Edjandir Corrêa Costa

Desenvolvimento Ágil de Software. Prof. Edjandir Corrêa Costa Desenvolvimento Ágil de Software Prof. Edjandir Corrêa Costa edjandir.costa@ifsc.edu.br Métodos Ágeis História Na início da década de 90 havia uma visão de que a melhor maneira para se criar software era

Leia mais

UML. Rodrigo Leite Durães.

UML. Rodrigo Leite Durães. UML Rodrigo Leite Durães. rodrigo_l_d@yahoo.com.br O que é Análise de Software? UML: É o estágio de um sistema que captura os requisitos e o domínio do problema, focalizando no que deve ser feito, não

Leia mais

Mac TPOO. Ouro dos Tolos. Professor: Fábio Kon. Alunos: Paulo Cheque Bernardo nusp: Renato Pelizzari da Silva nusp:

Mac TPOO. Ouro dos Tolos. Professor: Fábio Kon. Alunos: Paulo Cheque Bernardo nusp: Renato Pelizzari da Silva nusp: Mac 413 - TPOO PlopIME 2005 Ouro dos Tolos Professor: Fábio Kon Alunos: Paulo Cheque Bernardo nusp: 3671381 Renato Pelizzari da Silva nusp: 3680523 Nome / Classificação Ouro dos Tolos / Padrão de análise

Leia mais

Gerenciamento das Partes Interessadas (PMBoK 5ª ed.)

Gerenciamento das Partes Interessadas (PMBoK 5ª ed.) Gerenciamento das Partes Interessadas (PMBoK 5ª ed.) Este é o capítulo 13 do PMBoK e é uma área muito importante para o PMI, pois antes de levar em consideração o cumprimento dos prazos, orçamento e qualidade,

Leia mais

Os s estão com os dias contados

Os  s estão com os dias contados Os emails estão com os dias contados Quando o assunto é comunicação interna (conversa entre membros de uma empresa), o email ainda é uma das ferramentas mais usadas no mundo empresarial. Seja para enviar

Leia mais

PADRÕES DE PROJETO: DESIGN PATTERNS

PADRÕES DE PROJETO: DESIGN PATTERNS PADRÕES DE PROJETO: DESIGN PATTERNS Jaime William Dias 1, Danilo Venturini 1, William Macxuel Muniz 1, Rodrigo Niehues Chagas 1 1 Universidade Paranaense (UNIPAR) Paranavaí PR Brasil danilo_tr98@hotmail.com,

Leia mais

Requisitos de Software e UML Básico. Janaína Horácio

Requisitos de Software e UML Básico. Janaína Horácio Requisitos de Software e UML Básico Janaína Horácio janaina@les.inf.puc-rio.br Agenda Requisitos O que é? Objetivos? Atividades?... UML O que é? Modelos... Casos de Uso O que é? Componentes 2 Requisitos

Leia mais

Análise e Projeto de Software

Análise e Projeto de Software Análise e Projeto de Software Proj. Desenvolvimento de Software Prof. Cleverton Hentz cleverton.hentz@ifrn.edu.br 8 de junho de 2017 Material Apresentado Sumário de Aula 1 Introdução 2 Estruturação do

Leia mais

Apresentação do Capítulo 4 MDA (Model-Driven Archtecture) ALUNO: DOMENICO SCHETTINI FILHO NÚMERO USP:

Apresentação do Capítulo 4 MDA (Model-Driven Archtecture) ALUNO: DOMENICO SCHETTINI FILHO NÚMERO USP: Apresentação do Capítulo 4 MDA (Model-Driven Archtecture) ALUNO: DOMENICO SCHETTINI FILHO NÚMERO USP: 8429016 Definição de MDA OMG (Object Management Group) propôs uma aplicação abrangente das práticas

Leia mais

Requisitos de Software

Requisitos de Software Requisitos de Software Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 6 Slide 1 Objetivos Apresentar os conceitos de requisitos de usuário e de sistema Descrever requisitos funcionais

Leia mais

Engenharia de Software.

Engenharia de Software. Engenharia de Software Prof. Raquel Silveira O que é (Rational Unified Process)? É um modelo de processo moderno derivado do trabalho sobre a UML e do Processo Unificado de Desenvolvimento de Software

Leia mais

Modelagem de Sistemas. Análise de Requisitos. Modelagem

Modelagem de Sistemas. Análise de Requisitos. Modelagem Modelagem de Sistemas Teoria Geral de Sistemas TADS 2. Semestre Prof. André Luís Para abordarmos de forma mais profunda os conceitos de Modelagem de Sistemas de Informação, precisamos também falar na Engenharia

Leia mais

Gerência e Planejamento de Projeto. Engenharia de Software Profa. Elisa Yumi Nakagawa 1 o semestre de 2016

Gerência e Planejamento de Projeto. Engenharia de Software Profa. Elisa Yumi Nakagawa 1 o semestre de 2016 Gerência e Planejamento de Projeto Engenharia de Software Profa. Elisa Yumi Nakagawa 1 o semestre de 2016 Conteúdo: Parte 1: Gerenciamento & Qualidade Plano de Projeto Aspectos Gerais Parte 2: Plano de

Leia mais

Desenvolvimento Ágil no Governo. Produtos de Software. Luís Dosso. Outubro/2011. Sistemas e aplicações sob medida para as necessidades do seu negócio.

Desenvolvimento Ágil no Governo. Produtos de Software. Luís Dosso. Outubro/2011. Sistemas e aplicações sob medida para as necessidades do seu negócio. Desenvolvimento Ágil no Governo Luís Dosso Outubro/2011 Produtos de Software Sistemas e aplicações sob medida para as necessidades do seu negócio. A Dextra Soluções de Software Projetos de software complexos

Leia mais

Sistemas de Informação (SI) Sistemas que abrangem toda a empresa II

Sistemas de Informação (SI) Sistemas que abrangem toda a empresa II Sistemas de Informação (SI) Sistemas que abrangem toda a empresa II Prof.ª Dr.ª Symone Gomes Soares Alcalá Universidade Federal de Goiás (UFG) Regional Goiânia (RG) Faculdade de Ciências e Tecnologia (FCT)

Leia mais

Engenharia de Software. Gerenciamento de Pessoal. Professor Joerllys Sérgio

Engenharia de Software. Gerenciamento de Pessoal. Professor Joerllys Sérgio Engenharia de Software Gerenciamento de Pessoal Professor Joerllys Sérgio Pessoas no Processo Pessoas constituem o bem mais valioso de uma organização. Atividades de um gerente são fortemente orientadas

Leia mais

Modelagem De Sistemas

Modelagem De Sistemas Modelagem De Sistemas UNIP Tatuapé - SP Aplicações em Linguagem de Programação Prof.Marcelo Nogueira Uma empresa de software de sucesso é aquela que consistentemente produz software de qualidade que vai

Leia mais

SBC - Sistemas Baseados em Conhecimento

SBC - Sistemas Baseados em Conhecimento Siglas, Símbolos, Abreviaturas DW - Data Warehouse KDD Knowledge Discovery in Database MD Mineração de Dados OLAP - On-line analytical processing SBC - Sistemas Baseados em Conhecimento 1. INTRODUÇÃO O

Leia mais

MODELAGEM DE SISTEMAS DE INFORMAÇÃO

MODELAGEM DE SISTEMAS DE INFORMAÇÃO Unidade I MODELAGEM DE SISTEMAS DE INFORMAÇÃO Prof. Daniel Arthur Gennari Junior A disciplina Nossa disciplina se divide em 4 unidades de aprendizagem: 1. Sistemas de Informação 2. Fases do Levantamento

Leia mais

4. Escrevendo a Monografia. TCC Profº C. J. M. Olguín

4. Escrevendo a Monografia. TCC Profº C. J. M. Olguín 4. Escrevendo a Monografia TCC 2013. Profº C. J. M. Olguín prof.olguin@gmail.com carlos.olguin@unioeste.br Sumário Ordem Física dos Capítulos; Ordem de Escrita Sugestão; Partes da Monografia. Ordem Física

Leia mais

Matriz dos resultados da aprendizagem Versão em Português

Matriz dos resultados da aprendizagem Versão em Português Learning Outcomes Matrix, English Version Matriz dos resultados da aprendizagem Versão em Português Compilado por: LMETB Título do módulo Perfil pessoal Matriz dos resultados da aprendizagem Nível introdutório

Leia mais

Declaração de Trabalho Banco Omega Sistema de Automação Bancária

Declaração de Trabalho Banco Omega Sistema de Automação Bancária Banco Sistema de Automação Bancária Cybertech CSE Informática HISTÓRICO DE REVISÕES Data Versão Descrição Autor 07/03/2008 1.0 Criação da primeira versão da Declaração de Hélio Engholm Jr Trabalho do Projeto

Leia mais

Como escolher um BPMS que trará resultados reais para seu negócio?

Como escolher um BPMS que trará resultados reais para seu negócio? Como escolher um BPMS que trará resultados reais para seu negócio? Leandro Jesus Vice-Presidente ABPMP Brasil Associação de Profissionais de BPM Associação sem fins lucrativos voltado à prática do gerenciamento

Leia mais

ATLAS: UNINDO SUAS EQUIPES

ATLAS: UNINDO SUAS EQUIPES ATLAS: UNINDO SUAS EQUIPES UNA AS EQUIPES DE DESENVOLVIMENTO DE NEGÓCIOS DURANTE TODO O CICLO DE VIDA ANALISTA DE NEGÓCIOS E CLIENTE: DOIS PÚBLICOS-ALVO, O MESMO RESULTADO Os analistas de negócios e os

Leia mais

Engenharia de Software

Engenharia de Software Engenharia de Software Design Principles Representando SW em UML OO em C Pattens úteis para embedded Rodrigo M A Almeida Design Principles Design Principles são guias para decompor as funcionalidades e

Leia mais

Gerência e Planejamento de Projeto. Engenharia de Software I Profa. Elisa Yumi Nakagawa 1 o semestre de 2015

Gerência e Planejamento de Projeto. Engenharia de Software I Profa. Elisa Yumi Nakagawa 1 o semestre de 2015 Gerência e Planejamento de Projeto Engenharia de Software I Profa. Elisa Yumi Nakagawa 1 o semestre de 2015 Conteúdo: Parte 1: Gerenciamento & Qualidade Plano de Projeto - aspectos gerais Parte 2: Plano

Leia mais

Soluções de Nivelamento de Cargos

Soluções de Nivelamento de Cargos Towers Watson Soluções de Nivelamento de Cargos Global Grading System (GGS) e Mapa de Carreira A abordagem sistemática da Towers Watson para nivelamento de cargos ajuda as organizações a gerenciar as

Leia mais

Objetivo do curso: Público Alvo: Critérios de admissão para o curso:

Objetivo do curso: Público Alvo: Critérios de admissão para o curso: A Faculdade AIEC, mantida pela Associação Internacional de Educação Continuada AIEC, iniciou, em 2002, o curso de Bacharelado em Administração, na metodologia semipresencial. Foi pioneira e até hoje é

Leia mais

3) Qual é o foco da Governança de TI?

3) Qual é o foco da Governança de TI? 1) O que é Governança em TI? Governança de TI é um conjunto de práticas, padrões e relacionamentos estruturados, assumidos por executivos, gestores, técnicos e usuários de TI de uma organização, com a

Leia mais

27/08/2013. Aula 05 Análise Estruturada de Sistemas

27/08/2013. Aula 05 Análise Estruturada de Sistemas Aula 05 Análise Estruturada de Sistemas A maior parte do trabalho do analista de sistema está baseada na construção de modelagem dos sistemas, ou seja, representar de forma gráfica aquilo que o usuário

Leia mais

Introdução aos Sistemas de Informação nas Empresas

Introdução aos Sistemas de Informação nas Empresas Introdução aos Sistemas de Informação nas Empresas Esse capitulo estuda o referencial do conhecimento de SI necessário aos usuários finais das empresas e abordagem revista sobre desdobramentos-chaves no

Leia mais

ENGENHARIA DOS REQUISITOS

ENGENHARIA DOS REQUISITOS Apostila Estácio: Engenharia de Software de Roger S. Pressman. 6º Edição/2006 1 2 A engenharia de requisitos é um processo que engloba todas as atividades que contribuem para a produção de um documento

Leia mais

Padrões de Análise. Martin Fowler, Analysis Patterns: Reusable Object Models, Addison-Wesley, Osvaldo Kotaro Takai João Eduardo Ferreira

Padrões de Análise. Martin Fowler, Analysis Patterns: Reusable Object Models, Addison-Wesley, Osvaldo Kotaro Takai João Eduardo Ferreira Padrões de Análise Martin Fowler, Analysis Patterns: Reusable Object Models, Addison-Wesley, 2000 última atualização: agosto 2005 Osvaldo Kotaro Takai João Eduardo Ferreira Capítulo 1 - Introdução Modelos

Leia mais

QUALIDADE DE SOFTWARE DEFINIÇÕES / RESUMO. Apostilas de NORMAS, disponíveis no site do professor. Prof. Celso Candido ADS / REDES / ENGENHARIA

QUALIDADE DE SOFTWARE DEFINIÇÕES / RESUMO. Apostilas de NORMAS, disponíveis no site do professor. Prof. Celso Candido ADS / REDES / ENGENHARIA DEFINIÇÕES / RESUMO Apostilas de NORMAS, disponíveis no site do professor. 1 NORMAS VISÃO GERAL Qualidade é estar em conformidade com os requisitos dos clientes; Qualidade é antecipar e satisfazer os desejos

Leia mais

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 02

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 02 Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 02 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação POR QUE APRENDER CONCEITOS

Leia mais

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Cronograma das Aulas. Hoje você está na aula Semana

Leia mais

profissões tendências em 2017

profissões tendências em 2017 17 profissões tendências em 2017 Analista de compras.1 Especializado em negociações com fornecedores, prospecção de novos profissionais e gestão de insumos diretos ou indiretos. Perfil com forte organização,

Leia mais

Engenharia de Software II

Engenharia de Software II Engenharia de Software II Aula 26 http://www.ic.uff.br/~bianca/engsoft2/ Aula 26-21/07/2006 1 Ementa Processos de desenvolvimento de software Estratégias e técnicas de teste de software Métricas para software

Leia mais

Manual do Aluno Engenharia Insper i

Manual do Aluno Engenharia Insper i Manual do Aluno Engenharia Insper i Capítulo 1 A visão do Insper para a Engenharia A missão dos cursos de engenharia do Insper é: Desenvolver jovens engenheiros que estarão preparados para reconhecer as

Leia mais

Ferramenta Web de Apoio à Elicitação de Requisitos de Software. Acadêmico: Ivan Wilhelm Orientador: Everaldo Artur Grahl

Ferramenta Web de Apoio à Elicitação de Requisitos de Software. Acadêmico: Ivan Wilhelm Orientador: Everaldo Artur Grahl Ferramenta Web de Apoio à Elicitação de Requisitos de Software Acadêmico: Ivan Wilhelm Orientador: Everaldo Artur Grahl Roteiro Introdução Objetivos do trabalho Fundamentação teórica Desenvolvimento Resultados

Leia mais

Como fazer o projeto (usando os formulários fornecidos)

Como fazer o projeto (usando os formulários fornecidos) Projeto de Desenvolvimento Pessoal e Ministerial Propósito A partir do entendimento e aplicação dos conteúdos aprendidos no CTL, cada participante deverá elaborar um projeto pessoal para seu crescimento

Leia mais

2. Modelos de Desenvolvimento de Software

2. Modelos de Desenvolvimento de Software 2. Modelos de Desenvolvimento de Software Patrícia Macedo Joaquim Filipe João Ascenso Engenharia de Software 2005/06 EST, Setúbal Ciclo de Vida do Software Um sistema de software é desenvolvido gradualmente

Leia mais

Introdução aos sistemas de informação

Introdução aos sistemas de informação Introdução aos sistemas de informação Sistemas de Informação Sistemas de Informação Um conjunto de informações relacionadas que coletam, manipulam e disseminam dados e informações e fornecem realimentação

Leia mais

Requisitos de Sistemas

Requisitos de Sistemas Requisitos de Sistemas Unidade II - Processos de Negócio Identificação Conceitos Modelagem - BPM - UML Processos x Requisitos 1 Processo de negócio CONCEITO Um processo de negócio, processo organizacional

Leia mais

Prof. Luiz A. Nascimento

Prof. Luiz A. Nascimento Prof. Luiz A. Nascimento Qual a importância da Engenharia de Software? O desenvolvimento de um software envolve processos muitos complexos. A engenharia de software estabelece um modelo para se construir

Leia mais

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 03 PROFª BRUNO CALEGARO

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 03 PROFª BRUNO CALEGARO UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 03 PROFª BRUNO CALEGARO Santa Maria, 13 de Setembro de 2013. Revisão aula anterior Processo de software Um modelo de processo de software consiste

Leia mais