Prévia do material em texto
Modelagem de Software Processo de SW e Ciclo de Vida de Software Prof. MSc. Jonathan Bandeira - jonathan.bandeira@ulife.com.br mailto:jonathan.bandeira@animaeducacao.com.br Roteiro • O que é Modelagem? • O que é Software? • Modelagem de Software; • Tipos de Software; • Ferramentas CASE; • Processo de Software; • Processo de Engenharia de Requisitos; • Modelo de Processo de Software; • Modelos de Desenvolvimento de Software; • Ciclo de Vida de um Software; • Atividades do Desenvolvimento de Software; • Caso de Estudo: RUP; • Exercícios; • Bibliografia. 2 O que é Modelagem? • Modelo = um protótipo ou exemplo que se pretende reproduzir ou imitar. • Modelar = Elaborar/preparar um modelo; retratar de forma precisa; conceder formato a algo; moldar; controlar ou ajustar. • Modelagem = Ato de modelar. 3 O que é Software? • Software = Soft (leve, suave, amigável) + Ware (produtos manufaturados, objetos de natureza comercial). • Parte lógica de um sistema computacional, o que não é tangível. • Software é um programa (ou conjunto de programas), ou seja, instruções que devem ser seguidas e executadas por um mecanismo, seja ele um computador ou um aparato eletromecânico. • Instrução é cada comando de uma operação que um computador é capaz de executar; • Programa = Conjunto de instruções. • É o termo usado para descrever programas, apps, scripts, macros e instruções de código embarcado diretamente (firmware), de modo a ditar o que uma máquina deve fazer. • Software é abstrato, intangível, não é limitado por materiais, ou controlado por leis físicas ou por processos de manufatura (Sommerville, 2003). 4 O que é Software? • Software não é apenas o arquivo executável / Programa. • É o programa de computador, toda documentação associada (arquivos de configuração, manual de instalação e utilização) e o banco de dados. • Podem ser desenvolvidos para um cliente específico ou para um mercado geral. 5 Modelagem de Software • Modelagem de software é a atividade de construir modelos que expliquem as características ou o comportamento de um software ou de um sistema de software. • Na construção do software os modelos podem ser usados na identificação das características e funcionalidades que o software deverá prover (análise de requisitos), e no planejamento de sua construção. • Frequentemente a modelagem de software usa algum tipo de notação gráfica e são apoiados pelo uso de Ferramentas CASE. • A modelagem de software normalmente implica a construção de modelos gráficos que simbolizam os artefatos dos componentes de software utilizados e os seus inter- relacionamentos. • Uma forma comum de modelagem de programas procedurais (não orientados a objeto) é através de fluxogramas, enquanto que a modelagem de programas orientados a objeto normalmente usam a linguagem gráfica UML. • Para a modelagem de processos de negócios (BPM) existe uma ferramenta específica denominada BPMN (Business Process Modeling Notation). 6 Principais Atributos do Software • Manutenibilidade: O software deve ser escrito de forma que possa evoluir para atender às necessidades dos clientes. Esse é um atributo crítico, porque a mudança de software é um requisito inevitável de um ambiente de negócio em mudança. • Confiança e Proteção: A confiança do software inclui uma série de características como confiabilidade, proteção e segurança. Um software confiável não deve causar prejuízos físicos ou econômicos no caso de falha de sistema. Usuários maliciosos não devem ser capazes de acessar ou prejudicar o sistema. • Eficiência: O software não deve desperdiçar os recursos do sistema, como memória e ciclos do processador. Portanto, eficiência inclui capacidade de resposta, tempo de processamento, uso de memória etc. • Aceitabilidade: O software deve ser aceitável para o tipo de usuário para o qual foi projetado. Isso significa que deve ser compreensível, usável e compatível com outros sistemas usados por ele. 7 Falhas no Desenvolvimento de Software • Muitas falhas são consequência de dois fatores: • Aumento de demanda. Conforme novas técnicas de engenharia de software nos auxiliam a construir sistemas maiores e mais complexos, as demandas mudam. Os sistemas têm de ser construídos e entregues mais rapidamente; sistemas maiores e até mais complexos são requeridos; sistemas devem ter novas capacidades que antes eram consideradas impossíveis. Como os métodos de engenharia de software existentes não conseguem lidar com isso, novas técnicas de engenharia de software precisam ser desenvolvidas para atender a essas novas demandas. • Expectativas baixas. É relativamente fácil escrever programas computacionais sem usar técnicas e métodos de engenharia de software. Muitas empresas foram forçadas a desenvolver softwares à medida que seus produtos e serviços evoluíram. Elas não usam métodos de engenharia de software no dia a dia. Consequentemente, seu software é frequentemente mais caro e menos confiável do que deveria ser. Precisamos de educação e treinamento em engenharia de software para solucionar esses problemas. 8 Tipos de Produtos de Software • Produto de Software de Prateleira / Genéricos • Chamados de Stand alone. • Criados de forma genérica, para qualquer empresa (Ex.: controle de estoque, controle de farmácia, programas de contabilidade). • Produtos sob encomenda / Personalizados • Software criados com objetivo de prover uma solução específica para um cliente específico (Ex.: software para dispositivos eletrônicos, sistemas de controle de trafego aéreo. 9 Tipos de Software - Sommerville • 1. Aplicações stand-alone. Essas são as aplicações executadas em um computador local, como um PC. Elas contêm toda a funcionalidade necessária e não precisam estar conectadas a uma rede. Exemplos de tais aplicações são aplicativos de escritório em um PC, programas CAD, software de manipulação de fotos etc. • 2. Aplicações interativas baseadas em transações. São aplicações que executam em um computador remoto, acessadas pelos usuários a partir de seus computadores ou terminais. Certamente, aqui são incluídas aplicações Web como aplicações de comércio eletrônico em que você pode interagir com o sistema remoto para comprar produtos ou serviços. Essa classe de aplicações também inclui sistemas corporativos, em que uma empresa fornece acesso a seus sistemas através de um navegador Web ou um programa cliente especial e serviços baseados em nuvem, como é o caso de serviços de e-mail e compartilhamento de fotos. Aplicações interativas frequentemente incorporam um grande armazenamento de dados, que é acessado e atualizado em cada transação. • 3. Sistemas de controle embutidos. São sistemas de controle que controlam e gerenciam dispositivos de hardware. Numericamente, é provável que haja mais sistemas embutidos do que de qualquer outro tipo. Exemplos de sistemas embutidos incluem software em telefone celular, softwares que controlam antitravamento de freios em um carro e software em um micro-ondas para controlar o processo de cozimento. • 4. Sistemas de processamento de lotes. São sistemas corporativos projetados para processar dados em grandes lotes. Eles processam grande número de entradas individuais para criar as saídas correspondentes. Exemplos de sistemas de lotes incluem sistemas periódicos de cobrança, como sistemas de cobrança telefônica, e sistemas de pagamentos de salário. 10 Tipos de Software - Sommerville • 5. Sistemas de entretenimento. São sistemas cuja utilização principal é pessoal e cujo objetivo é entreter o usuário. A maioria desses sistemas é de jogos de diferentes tipos. A qualidade de interação com o usuário é a característica particular mais importante dos sistemas de entretenimento. • 6. Sistemas para modelagem e simulação. São sistemas que incluem vários objetos separados que interagem entre si, desenvolvidos por cientistas e engenheiros para modelar processos ou situações físicas. Esses sistemas geralmente fazem uso intensivo de recursos computacionais e requerem sistemas paralelosde alto desempenho para executar. • 7. Sistemas de coleta de dados. São sistemas que coletam dados de seu ambiente com um conjunto de sensores e enviam esses dados para outros sistemas para processamento. O software precisa interagir com sensores e frequentemente é instalado em um ambiente hostil, por exemplo, dentro de uma máquina ou em um lugar remoto. • 8. Sistemas de sistemas. São sistemas compostos de uma série de outros sistemas de software. Alguns deles podem ser produtos genéricos de software, como um programa de planilha eletrônica. Outros sistemas do conjunto podem ser escritos especialmente para esse ambiente. 11 Tipos de Software - Pressman • Software de sistema. São programas que apoiam outros programas, como o software que realiza a comunicação com o hardware (sistema operacional) e software que ajuda na construção de outro software (compiladores). • Software de aplicação. São programas que são desenvolvidos para executar no negocio de uma empresa determinada. • Software cientifico e de engenharia. São algoritmos que processam números. • Software embutido. São programas construídos para executarem dentro de um produto especifico como a teclas digitais de um forno micro ondas. • Software para linhas de produtos. São os softwares conhecidos como software de prateleiras. • Software de web. São aplicativos que são executados via Internet. • Software de inteligência artificial. São softwares que fazem os usos de algoritmos não numéricos. Estes tipos software se encaixam na robótica. • Computação ubíqua. São softwares que realiza a verdadeira computação distribuída. • Software aberto. São software que disponibiliza a visualização do código fonte da aplicação para o engenheiro de software modifica da maneira que deseja. 12 Software Legado • O nome de software legado é dado quando refere-se num programa de computador que foi desenvolvido por há muito tempo. A preocupação do engenheiro de software com os softwares legados esta na baixa qualidade do software. Muitas vezes não existem documentações e se existem são pobres de detalhes, os casos de teste são pobres quando tem e sem um controle de mudanças. E muitas vezes não mexem no software legado quando eles atentem as necessidades do cliente. 13 Ferramentas CASE 14 • Definição: • Ferramentas CASE (do inglês Computer-Aided Software Engineering) é uma classificação que abrange todas as ferramentas baseadas em computadores que auxiliam atividades de engenharia de software, desde análise de requisitos e modelagem até programação e testes. Podem ser consideradas como ferramentas automatizadas que tem como objetivo auxiliar o desenvolvedor de sistemas em uma ou várias etapas do ciclo de vida do desenvolvimento de um software. • Objetivos: • Melhoria da qualidade de software • Aumento da produtividade no processo de software Ferramentas CASE 15 • Vantagens do uso de ferramentas CASE: • Qualidade no produto final • Produtividade • Agilizar o tempo para tomada de decisão • Menor quantidade de códigos de programação • Melhoria e redução de custos na manutenção • Agilidade no retrabalho do software • Maior facilidade para desenvolvimento • Desvantagens do uso de ferramentas CASE: • Incompatibilidade de ferramentas • Formação para utilização Ferramentas CASE 16 • Categorização: • Front End ou Upper CASE: apoia as etapas iniciais de criação dos sistemas: as fases de planejamento, análise e projeto do programa ou aplicação. • Back End ou Lower CASE: dão apoio à parte física, isto é, a codificação, testes e manutenção da aplicação. • I-CASE ou Integrated CASE: classifica os produtos que cobrem todo o ciclo de vida do software, desde os requisitos do sistema até o controle final da qualidade. Ferramentas CASE 17 • Controle de Versão • CVS, Subversion, Git, Mercurial, Bazaar, StarTeam Borland, Rational Clearcase, entre outros. • Gerência de projetos • Microsoft Project, dotProject, Xplanner, Google Code • Edição • Microsoft Word, JBuilder, Wiki, Open Office, Eclipse, NetBeans, Rational Rose, Astah, ArgoUML, Star UML • Ferramentas de prototipagem • Adobe PageMaker, NetBeans, JBuilder, Delphi, Visual Basic, Lazarus Ferramentas CASE 18 • Suporte a programação • Compiladores - JDK • Banco de Dados - Oracle, MySQL, PostgreSQL • Teste - JUnit • Automação de tarefas - Apache Ant, Apache Maven • Análise de programas • Analisadores estáticos - HPROF • Teste • JUnit (unitários) Ferramentas CASE 19 • Depuração • Sistemas interativos de depuração • Geração de código • Transformica, Unitech CodeFSW, JEE Spider • Documentação • Editores de texto (Ex: Microsoft Word, OpenOffice) • Geradores de documentos (Ex: Javadoc) • Editores de texto colaborativo (Ex: wiki) • Reengenharia • Sistemas de reestruturação de programas Ferramentas CASE 20 • Ferramentas Integradas • Agrupam diversas funcionalidades • Ferramentas de Métricas • Costar, USC-COCOMO, Calico • Ferramentas de Planejamento • Foundation Processo de Software ● Método utilizado para desenvolver ou produzir um software. ● Define o que faz, como será feito e quando será feito. 21 Processo de Software • Capaz de responder as perguntas: • O que é feito? = = = = = → Produto • Como é feito? = = = = = → Passos • Por quem é feito? = = = = = → Agente • O que usa? = = = = = → Insumos • O que produz? = = = = = → Resultados 22 Processo de Software ● Existem muitos processos de software diferentes, mas todos devem incluir quatro atividades fundamentais para a engenharia de software: ● 1. Especificação de software. A funcionalidade do software e as restrições a seu funcionamento devem ser definidas. ● 2. Projeto e implementação de software. O software deve ser produzido para atender às especificações. ● 3. Validação de software. O software deve ser validado para garantir que atenda às demandas do cliente. ● 4. Evolução de software. O software deve evoluir para atender às necessidades de mudança dos clientes. 23 Processo de Engenharia de Requisitos • Estudo de Viabilidade • Econômica Relação custo/beneficio • Técnica Tecnologia e capacitação • Jurídica Aspectos Legais • Levantamento de Análise de Requisitos • Entrevista • Observação • Reuniões 24 Processo de Engenharia de Requisitos • Especificação de Requisitos • Documento contendo os requisitos do usuário e do sistema. • Funcionais e não funcionais. •Validação de Requisitos • Avaliação do documento de requisitos consistência e integridade. 25 Processo de Engenharia de Requisitos 26 Modelo de Processo de Software • O que é? • Simplificação da realidade • Os planos podem ser • Reais Organização do sistema • Comportamentais Dinâmica do Sistema • Porque é importante construir modelos? • Melhor entendimento do sistema que está sendo construído • Especificar a estrutura e comportamento • Guia a construção do sistema • Documenta as decisões tomadas 27 Modelo de Processo de Software • Um modelo de processo de software é uma representação simplificada de um processo de software. • Cada modelo representa uma perspectiva particular de um processo e, portanto, fornece informações parciais sobre ele. • Por exemplo, um modelo de atividade do processo pode mostrar as atividades e sua sequência, mas não mostrar os papéis das pessoas envolvidas. 28 Modelo de Processo de Software • Objetivo: • Auxiliar o líder: controlar o processo de desenvolvimento de sistemas de software. • Auxiliar o desenvolvedor: obter a base para produzir, de maneira eficiente, software que satisfaça os requisitos pré estabelecidos. 29 Modelo de Processo de Software 30 Modelo de Processo de Software • Exemplos de modelos de processo • Workflow: Sucessão de atividades. • Fluxo de dados: Fluxo de informação. • Papel Ação: Representa os papeis das pessoas e as atividades pelas quais elas são responsáveis. 31 Modelo x Processo • Modelo de software: documentos teóricos, conjunto de possíveis ações. • Processode software: deve determinar ações práticas a serem realizadas pela equipe como prazos definidos e métricas para se avaliar como elas estão sendo realizadas. 32 Modelos de Desenvolvimento de Software • Modelo em Cascata (Ciclo Clássico) • Modelo de Paradigma Evolucionário • Prototipação • Modelo Incremental • Modelo Espiral • Modelo RAD • Modelo RUP • Métodos Ágeis • Modelo de Desenvolvimento Formal de Sistemas • Métodos Formais • Técnicas de 4 ª Geração • Modelo de Desenvolvimento Orientado a Reuso 33 Ciclo de Vida de um Software • O que é? ● Uma estratégia de desenvolvimento que englobe processos, métodos e ferramentas, e as fases de desenvolvimento. 34 Atividades do Desenvolvimento de Software 1. Levantamento de Requisitos (ou Planejamento) ● Esta atividade tem como objetivo, compreender o problema, dando aos desenvolvedores e usuários, a mesma visão do que deve ser construído para resolução do problema. ● Desenvolvedores e clientes, em conjunto, buscam levantar e priorizar as necessidades dos futuros usuários do software (necessidades essas denominadas como requisitos). 35 Atividades do Desenvolvimento de Software 1. Levantamento de Requisitos (ou Planejamento) ● O Levantamento de Requisitos é a etapa mais importante, no que diz respeito ao retorno de investimentos no projeto. ● Vários projetos são abandonados pelo baixo levantamento de requisitos, ou seja, membros da equipe não disponibilizaram tempo suficiente para essa fase do projeto, em compreender as necessidades dos clientes em relação ao sistema a ser desenvolvido. 36 Atividades do Desenvolvimento de Software 2. Análise de Requisitos (ou Especificação de Requisitos) ● Esta etapa, também chamada de especificação de requisitos, é onde os desenvolvedores fazem um estudo detalhado dos dados levantados na atividade anterior. ● De onde são construídos modelos a fim de representar o sistema de software a ser desenvolvido. 37 Atividades do Desenvolvimento de Software 2. Análise de Requisitos (ou Especificação de Requisitos) ● O interesse nessa atividade é criar uma estratégia de solução, sem se preocupar como essa estratégia será realizada, ou seja, utilizar as necessidades dos clientes, depois de compreendido o problema, para resolução do problema solicitado. ● Assim é necessário definir o que o sistema deve fazer, antes de definir como o sistema irá fazer. 38 Atividades do Desenvolvimento de Software IMPORTANTE!!! ● O que acontece com frequência, é quando as equipes de desenvolvimento partem para a solução do problema do software, sem antes ter definido completamente o problema em questão. ● Nesta fase deve-se então realizar a validação e verificação dos modelos construídos, antes de partir para solução do problema. 39 Atividades do Desenvolvimento de Software IMPORTANTE!!! - AINDA NAS FASES DE REQUISITOS ● Validação: tem por objetivo, assegurar que o sistema de software está atendendo às reais necessidades do cliente; ● Verificação: verifica se os modelos construídos na análise estão em conformidade com os requisitos do cliente. 40 Atividades do Desenvolvimento de Software 3. Projeto ● Nesta fase é que deve ser considerado, como o sistema funcionará internamente, para que os requisitos do cliente possam ser atendidos. ● Alguns aspectos devem ser considerados nessa fase de projeto do sistema, como: arquitetura do sistema, linguagem de programação utilizada, Sistema Gerenciador de Banco de Dados (SGBD) utilizado, padrão de interface gráfica, entre outros. 41 Atividades do Desenvolvimento de Software 3. Projeto ● No projeto é gerada uma descrição computacional, mencionando o que o software deve fazer, e deve ser coerente com a descrição realizada na fase de análise de requisitos. ● O projeto possui duas atividades básicas: projeto da arquitetura (ou projeto de alto nível), e projeto detalhado (ou projeto de baixo nível). 42 Atividades do Desenvolvimento de Software 4. Implementação ● Nessa etapa, o sistema é codificado a partir da descrição computacional da fase de projeto em uma outra linguagem, onde se torna possível a compilação e geração do código- executável para o desenvolvimento software. ● Pode-se também utilizar na implementação ferramentas de software e bibliotecas de classes preexistentes para agilizar a atividade, como também o uso de ferramentas CASE, que dinamizam o processo de desenvolvimento, nas várias atividades, onde inclui-se geração de código-fonte, documentação, etc. 43 Atividades do Desenvolvimento de Software 5. Testes ● Diversas atividades de testes são executadas a fim de se validar o produto de software, testando cada funcionalidade de cada módulo, buscando, levando em consideração a especificação feita na fase de projeto. ● Onde o principal resultado é o relatório de testes, que contém as informações relevantes sobre erros encontrados no sistema, e seu comportamento em vários aspectos. ● Ao final dessa atividade, os diversos módulos do sistema são integrados, resultando no produto de software. 44 Atividades do Desenvolvimento de Software 6. Implantação / Manutenção ● Por fim a implantação compreende a instalação do software no ambiente do usuário. ● O que inclui os manuais do sistema, importação dos dados para o novo sistema e treinamento dos usuários para o uso correto e adequado do sistema. ● Em alguns casos quando da existência de um software anterior, também é realizada a migração de dados anteriores desse software. ● Normalmente (embora não necessariamente), essa é a fase mais longa do ciclo de vida. O sistema é instalado e colocado em uso. A manutenção envolve a correção de erros que não foram descobertos em estágios iniciais do ciclo de vida, com melhora da implementação das unidades do sistema e ampliação de seus serviços em resposta às descobertas de novos requisitos. 45 RUP • O que é o RUP? • Processo Unificado da Rational de desenvolvimento de software • Diz o quê, quando e por quem, mas não explica como • Necessidade a partir do sucesso da UML como padrão de fato para especificação de software 46 RUP - Fundamentos ● É um exemplo de modelo de processo moderno, derivado de trabalhos sobre a UML e o Unified Software Development Process associado; ● De todos os modelos de processo genéricos, ilustra boas práticas na especificação e no projeto e apoia a prototipação e a entrega incremental. ● O RUP reconhece que os modelos de processo convencionais apresentam uma visão única do processo. Em contrapartida, o RUP é normalmente descrito em três perspectivas: ● 1. Uma perspectiva dinâmica, que mostra as fases do modelo ao longo do tempo. ● 2. Uma perspectiva estática, que mostra as atividades realizadas no processo. ● 3. Uma perspectiva prática, que sugere boas práticas a serem usadas durante o processo. ● O RUP é um modelo constituído de fases que identifica quatro fases distintas no processo de software. No entanto, ao contrário do modelo em cascata, no qual as fases são equalizadas com as atividades do processo, as fases do RUP são estreitamente relacionadas ao negócio, e não a assuntos técnicos. 47 RUP - Fundamentos • Desenvolvimento Iterativo • “Impossível” desenvolver o sistema em uma única iteração; • A cada iteração mais detalhes são adicionados; • Diversas vantagens: • Redução da Complexidade; • Facilidade para lidar com mudanças nos requisitos, cronograma, etc. 48 Características do RUP • Usa UML • Baseado em componentes • Framework para processos • Orientado a casos de uso • Iterativo e incremental • Centrado na arquitetura 49 Iterativo e Incremental • Dividir para conquistar! • O desenvolvimento ocorre em várias iterações, cada uma delas resultando em extensão de funcionalidade e/ou maior conhecimento do sistema • Os maiores riscos devem ser tratados nas primeiras iterações 50 RUP - Ciclo de Vida 51 RUP - Fases 52 RUP- Fases ● 1. Concepção. O objetivo da fase de concepção é estabelecerum business case para o sistema. Você deve identificar todas as entidades externas (pessoas e sistemas) que vão interagir com o sistema e definir as interações. Então, você deve usar essas informações para avaliar a contribuição do sistema para o negócio. Se essa contribuição for pequena, então o projeto poderá ser cancelado depois dessa fase. ● 2. Elaboração. As metas da fase de elaboração são desenvolver uma compreensão do problema dominante, estabelecer um framework da arquitetura para o sistema, desenvolver o plano do projeto e identificar os maiores riscos do projeto. No fim dessa fase, você deve ter um modelo de requisitos para o sistema, que pode ser um conjunto de casos de uso da UML, uma descrição da arquitetura ou um plano de desenvolvimento do software. ● 3. Construção. A fase de construção envolve projeto, programação e testes do sistema. Durante essa fase, as partes do sistema são desenvolvidas em paralelo e integradas. Na conclusão dessa fase, você deve ter um sistema de software já funcionando, bem como a documentação associada pronta para ser entregue aos usuários. ● 4. Transição. A fase final do RUP implica transferência do sistema da comunidade de desenvolvimento para a comunidade de usuários e em seu funcionamento em um ambiente real. Isso é ignorado na maioria dos modelos de processo de software, mas é, de fato, uma atividade cara e, às vezes, problemática. Na conclusão dessa fase, você deve ter um sistema de software documentado e funcionando corretamente em seu ambiente operacional. 53 RUP - Fases e Atividades (Workflows) 54 RUP - Workflows 55 Artefatos e Papéis 56 • Durante as fases são gerados uma série de artefatos (Documentos) e necessários vários responsáveis (Papéis e perfis). • Os artefatos são resultantes das atividades e possuem modelos para indicar como devem ser feitos e padronizar os formatos dos documentos. São eles: • Protótipos • Casos de uso • Modelo de dados • Conjunto de testes • Já os Papéis não são pessoas. Eles descrevem o comportamento das pessoas no negócio, geralmente é desempenhado por um grupo ou uma pessoa específica. E são eles: • Gerente • Analista de Sistemas • Analista de Usabilidade • Arquiteto • Desenvolvedor • Testador • Documentador Benefícios e Pontos Fracos do RUP 57 • A utilização desse processo se faz muito benéfico para o desenvolvimento do projeto pois garante a qualidade de software, produtividade no desenvolvimento, operação e manutenção de software. • Além de que permite ao profissional controle sobre o desenvolvimento dentro de custos, prazos e níveis de qualidade desejados. • Apesar das vantagens, a escolha na utilização da metodologia RUP pode também gerar problemas por ser complexo e trabalhoso, muito caro para projetos de pequeno porte, exigir experiência da equipe e também equipes especialistas. Exercícios • 1. Escolha e pesquise sobre um dos modelos de desenvolvimento de software citados em aula (exceto o RUP), diga o que é, para que serve e descreva suas características, as fases no processo de desenvolvimento de software e as atividades desenvolvidas com este modelo. Por fim, destaque os benefícios e pontos fracos do modelo escolhido. • 2. Admita que você foi contratado(a) para desenvolver um software para hospital com o objetivo de gerenciar as marcações de consultas e histórico de pacientes do empreendimento. Enumere quais atividades seriam realizadas em cada etapa do desenvolvimento e o que seria produzido em cada uma delas (quais artefatos), considerando o modelo escolhido na questão anterior. 58 Bibliografia PRINCIPAL • MEDEIROS, Ernani. Desenvolvendo Software com UML 2.0. São Paulo: Pearson Education, 2004. • https://bv4.digitalpages.com.br/?term=uml&searchpage=1&filtro=todos&from=busca&page=- 20§ion=0#/legacy/2921 • RAMAKRISHNAN, Raghu; GEHRKE, Johannes.Sistemas de Gerenciamento de Bancos de Dados. 3. edição. Porto Alegre: Bookman, 2007. • https://integrada.minhabiblioteca.com.br/#/books/9788563308771/cfi/0!/4/2@100:0.00 • PRESSMAN, Roger; MAXIM, Bruce. Engenharia de Software. Uma abordagem profissional. 8a. Ed. Bookman, 2016. • https://integrada.minhabiblioteca.com.br/#/books/9788580555349/cfi/3!/4/2@100:0.00 59 https://bv4.digitalpages.com.br/?term=uml&searchpage=1&filtro=todos&from=busca&page=-20§ion=0#/legacy/2921 https://bv4.digitalpages.com.br/?term=uml&searchpage=1&filtro=todos&from=busca&page=-20§ion=0#/legacy/2921 https://integrada.minhabiblioteca.com.br/#/books/9788563308771/cfi/0!/4/2@100:0.00 https://integrada.minhabiblioteca.com.br/#/books/9788580555349/cfi/3!/4/2@100:0.00 Bibliografia COMPLEMENTAR • SOMMERVILLE, Ian. Engenharia de Software. 9. ed. São Paulo: Pearson Prentice Hall, 2011. • https://bv4.digitalpages.com.br/?term=engenharia%2520de%2520software&searchpage=1&fil tro=todos&from=busca&page=_14§ion=0#/legacy/276 • PFLEEGER, Shari Lawrence. Engenharia de software: teoria e prática. 2. ed. São Paulo: Prentice Hall, 2004. • https://bv4.digitalpages.com.br/?term=engenharia%2520de%2520software&searchpage=1&fil tro=todos&from=busca#/legacy/476 • LARMAN, Craig. Utilizando UML e padrões: uma introdução à análise e ao projeto orientados a objetos e desenvolvimento iterativo. 3. ed Porto Alegre: Bookman, 2007. • https://integrada.minhabiblioteca.com.br/#/books/9788577800476/cfi/0!/4/2@100:0.00 • FOWLER, Martin; SCOTT, Kendall. UML essencial: um breve guia para a linguagem-padrão de modelagem de objetos. 3ª. ed. Porto Alegre: Bookman, 2004. • https://integrada.minhabiblioteca.com.br/#/books/9788560031382/cfi/6/2!/4/2@0:0.131 • HEUSER, Carlos Alberto. Projeto de banco de dados. 6. ed. Porto Alegre: Bookman, 2011. • https://integrada.minhabiblioteca.com.br/#/books/9788577804528/cfi/0!/4/4@0.00:38.0 60 https://bv4.digitalpages.com.br/?term=engenharia%2520de%2520software&searchpage=1&filtro=todos&from=busca&page=_14§ion=0#/legacy/276 https://bv4.digitalpages.com.br/?term=engenharia%2520de%2520software&searchpage=1&filtro=todos&from=busca&page=_14§ion=0#/legacy/276 https://bv4.digitalpages.com.br/?term=engenharia%2520de%2520software&searchpage=1&filtro=todos&from=busca#/legacy/476 https://bv4.digitalpages.com.br/?term=engenharia%2520de%2520software&searchpage=1&filtro=todos&from=busca#/legacy/476 https://integrada.minhabiblioteca.com.br/#/books/9788577800476/cfi/0!/4/2@100:0.00 https://integrada.minhabiblioteca.com.br/#/books/9788560031382/cfi/6/2!/4/2@0:0.131 https://integrada.minhabiblioteca.com.br/#/books/9788577804528/cfi/0!/4/4@0.00:38.0 Modelagem de Software Processo de SW e Ciclo de Vida de Software Prof. MSc. Jonathan Bandeira - jonathan.bandeira@ulife.com.br mailto:jonathan.bandeira@animaeducacao.com.br Slide 1: Modelagem de Software Processo de SW e Ciclo de Vida de Software Slide 2: Roteiro Slide 3: O que é Modelagem? Slide 4: O que é Software? Slide 5: O que é Software? Slide 6: Modelagem de Software Slide 7: Principais Atributos do Software Slide 8: Falhas no Desenvolvimento de Software Slide 9: Tipos de Produtos de Software Slide 10: Tipos de Software - Sommerville Slide 11: Tipos de Software - Sommerville Slide 12: Tipos de Software - Pressman Slide 13: Software Legado Slide 14: Ferramentas CASE Slide 15: Ferramentas CASE Slide 16: Ferramentas CASE Slide 17: Ferramentas CASE Slide 18: Ferramentas CASE Slide 19: Ferramentas CASE Slide 20: Ferramentas CASE Slide 21: Processo de Software Slide 22: Processo de Software Slide 23: Processo de Software Slide 24: Processo de Engenharia de Requisitos Slide 25: Processo de Engenharia de Requisitos Slide 26: Processo de Engenharia de Requisitos Slide 27: Modelo de Processo de Software Slide 28: Modelo de Processo de Software Slide 29: Modelo de Processo de Software Slide 30: Modelo de Processo de Software Slide 31: Modelo de Processo de Software Slide 32: Modelo x Processo Slide 33: Modelos de Desenvolvimento de Software Slide 34: Ciclo de Vida de um Software Slide 35: Atividades do Desenvolvimento de Software Slide 36: Atividadesdo Desenvolvimento de Software Slide 37: Atividades do Desenvolvimento de Software Slide 38: Atividades do Desenvolvimento de Software Slide 39: Atividades do Desenvolvimento de Software Slide 40: Atividades do Desenvolvimento de Software Slide 41: Atividades do Desenvolvimento de Software Slide 42: Atividades do Desenvolvimento de Software Slide 43: Atividades do Desenvolvimento de Software Slide 44: Atividades do Desenvolvimento de Software Slide 45: Atividades do Desenvolvimento de Software Slide 46: RUP Slide 47: RUP - Fundamentos Slide 48: RUP - Fundamentos Slide 49: Características do RUP Slide 50: Iterativo e Incremental Slide 51: RUP - Ciclo de Vida Slide 52: RUP - Fases Slide 53: RUP- Fases Slide 54: RUP - Fases e Atividades (Workflows) Slide 55: RUP - Workflows Slide 56: Artefatos e Papéis Slide 57: Benefícios e Pontos Fracos do RUP Slide 58: Exercícios Slide 59: Bibliografia Slide 60: Bibliografia Slide 61: Modelagem de Software Processo de SW e Ciclo de Vida de Software