Engenharia de Sistemas e Software

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

Download "Engenharia de Sistemas e Software"

Transcrição

1 Resumo Este é um material de estudo (notas de aula) da disciplina de engenharia de sistemas e software do curso de pós-graduação Lato Sensu em da UEG, Câmpus Itaberaí. Tem como objetivo garantir aos estudantes uma leitura auxiliar dos referenciais teóricos da disciplina e não deve substituí-los. Consta de um apanhado de autores das disciplinas de engenharia de software, análise de sistemas e gestão de sistemas de informação. O foco da disciplina é gestão, portanto, passa pelos aspectos iniciais da engenharia de software, buscando abranger, além de técnicas, distintos papeis envolvidos nos processos de concepção de sistemas de computação, com foco especial em projetos relacionados a software. Introdução Do ponto de vista da gestão da tecnologia da informação, a engenharia de sistemas e software é uma importante área que demanda habilidades e conhecimentos de técnicas e ferramentas específicas para construção e manutenção de sistemas de informação (softwares em grande parte) que certamente farão parte da vida profissional dos gestores. A boa prática muitas vezes é fundamental para o sucesso, mas nem sempre é garantia dele. A experiência, criatividade, capacidade de adaptação a diferentes realidades, e até mesmo um pouco de sorte (sobretudo com pessoas) podem fazer a diferença em projetos bem sucedidos. Além do mais, estamos lidando com informação, e como bem sabemos, ela é totalmente suscetível a falhas e diferentes interpretações. Estamos também lidando com tecnologia, e esta por sua vez, é completamente suscetível ao tempo. Não há nada que resista ao chamado da evolução tecnológica e da informação. Assim foram os primeiros veículos da imprensa arcaica, passando por muitas revoluções, e chegando à era da geração de

2 computadores que conhecemos desde o século passado e suas inovações dos dias atuais. E, não menos importante, na era da informação massiva em inúmeras facetas que permitem, além do consumo, diferentes formas de análise para tomadas de decisão. A engenharia de sistemas e software deve ir além de tecnologias específicas, em especial, no que diz respeito ao manuseio, armazenamento, e recuperação das informações, pois como é possível analisar até aqui, tanto a tecnologia como a informação são volúveis ao tempo e às experimentações sociais. Ainda assim, essa mesma engenharia deve estar alinhada com o tempo e com o espaço em que se coexiste a tríplice: sociedade, tecnologia e informação; já que é do jogo de interações entre essas três grandezas que se obtém os caminhos para criação de soluções viáveis que levam o ser humano à construção do conhecimento.

3 Aula 1: Tópicos abordados: Sistema, sistema de informação e software; Engenharia de sistemas e engenharia de software; I Princípios de Engenharia de Sistemas e Software 1. Introdução à engenharia de Software Segundo (Sommerville, 2011) o mundo não poderia existir sem software. O mundo imaginado em um recorte que vai além do modelo físico, claro. Ao se avaliar os países, as organizações, as pessoas vivendo em sociedade, é praticamente impossível encontrar algum setor da sociedade que não seja controlado, por menor que seja o controle, por softwares. Os sistemas de software são abstratos e intangíveis. Eles não são restringidos pelas propriedades dos materiais, nem governados pelas leis da física ou pelos processos de manufatura. (Sommerville, 2011) Esses pressupostos iniciais da natureza dos softwares obrigam os profissionais responsáveis pelos diversos processos das fases de sua existência a lançarem mão de estratégias que vão além daquelas conhecidas em outros ramos da engenharia. No entanto essa diferença fundamental não exclui a necessidade de criar softwares que respeitem critérios de qualidade, custo e prazo. Não temos todo o tempo do mundo, não temos todo o dinheiro disponível e precisamos que os softwares atendam nossas necessidades com garantias que irão funcionar quando forem exigidos. Fundamentos da engenharia de software (Sommerville, 2011) 1. Softwares devem ser desenvolvidos em um processo gerenciado e compreendido. A organização que desenvolve o software deve planejar o processo de desenvolvimento e ter ideias claras do que será produzido e quando estará finalizado, Respeitando que processos diferentes são usados para tipos diferentes de software. 2. Confiança e desempenho são importantes para todos os tipos de sistema. O software deve se comportar conforme o esperado, sem falhas, e deve estar disponível para o uso quando requerido. Deve ser seguro em suas operações e protegido contra ataques externos. O sistema deve funcionar de forma equilibrada e eficiente e não deve desperdiçar recursos. 3. É importante entender e gerenciar as especificações e os requisitos de software ( o que fazer). Você deve saber o que os clientes e usuários esperam dele e deve gerenciar suas expectativas para que um sistema útil possa ser entregue dentro do orçamento e do cronograma. 4. Você deve fazer o melhor uso possível dos recursos existentes. Isso significa que, quando apropriado, você deve reusar o software já desenvolvido, em vez de escrever um novo. A Engenharia de Software é importante por dois motivos: 1) cada vez mais indivíduos e sociedades dependem dos sistemas e softwares avançados. Temos ser capazes de produzi-los confiáveis de forma econômica e rápida. 2) Geralmente é mais barato, a longo prazo, usar métodos e técnicas da engenharia de software para sistemas de software para sistemas de

4 software, em vez de simplesmente escrever programas como se fossem projetos pessoais. Para a maioria dos sistemas, a maior parte do custo é mudar o software depois que ele começa a ser usado Sistemas versus Software Muitas vezes confundimos o termo sistema com software. Isto é comum, e até certo ponto aceitável, uma vez que o costume social com a tecnologia da informação fez que com que esse termo fosse apossado, e por algumas vezes entendido como sinônimo um do outro dentro e fora do mundo da computação. (Rosini, 2014) afirma a palavra muitas vezes é usada de forma indiscriminada e sem qualquer critério. Um sistema pode ser entendido como um mecanismo composto por um conjunto de parte inter-relacionadas, onde cada parte está sempre relacionada a, pelo menos, uma das outras (Pompilho, 2002). Isto é, há interdependência entre as partes do sistema. Estes componentes, vistos de forma separada, podem ser entendidos como subsistemas de um sistema maior, trazendo, portanto, a ideia que os sistemas apresentam uma hierarquia que pode ser interna ou externa, dependendo de como se visualiza um sistema em relação às suas partes. A Teoria geral dos sistemas é quem abrange os aspectos teóricos relacionados aos sistemas de uma maneira geral, tendo sido desenvolvida por Ludwig Von Bertalanffy, no século passado. (Pesquise mais informações sobre a teoria geral dos sistemas na internet). Em uma visão geral, os softwares são produtos desenvolvidos por profissionais que o desenvolvem e dão suporte a longo prazo. Abrange programas executáveis e outros artefatos (arquitetura, conteúdos, documentos, etc) que fazem parte das fases de sua existência, desde sua concepção até sua manutenção (Pressman, 2011). E qual a diferença entre engenharia de software e engenharia de sistemas? A engenharia de sistemas diz respeito a todos os aspectos do desenvolvimento e da evolução de sistemas complexos, nos quais, o software desempenha um papel importante. A engenharia de sistemas envolve o desenvolvimento de hardware, projeto de políticas e de processos e implantação do sistema, assim como com a engenharia de software. Os engenheiros de sistema estão envolvidos com a especificação de sistema, com a definição de sua arquitetura geral, e, em seguida, com a integração de diferentes partes necessárias para criar o sistema final A natureza do software (Pressman, 2011): Hoje, o software assume um duplo papel. Ele é produto e, ao mesmo tempo, veículo para distribuir um produto. Como produto fornece potencial computacional representado pelo hardware, ou de forma mais abrangente, por uma dede de computadores que podem ser acessados por hardware local. Independente de estar num celular ou num mainframe, o software age como um transformador de informação, produzindo, gerenciando, adquirindo, exibindo, ou transmitindo informações que podem ser tão simples quanto um único bit, ou complexas, como uma apresentação de multimídia. Como veículo de distribuição, o software

5 pode atuar como a base para o controle do computador (sistemas operacionais). Comunicação de informações (redes), criação e controle de outros programas (ferramentas de software e ambiente). O software distribui o produto mais importante de nossa era: a informação. Transforma dados de forma a ser mais útil em um determinado contexto. Gerencia informações comerciais; fornece um portal para redes mundiais de informação (internet) e os meios para obter informações sob todas as suas formas. O papel desempenhado pelo software tem passado por grandes modificações nos últimos 50 anos. Aperfeiçoamentos significativos de hardware, mudanças profundas de arquiteturas computacionais, aumento de capacidade de memória e armazenamento e uma grade variedade de dispositivos de entrada e saída resultou em sistemas computacionais mais sofisticados e complexos. Todos esses fatores podem trazer resultados impressionantes quando o software é bem sucedido, porém podem trazer diversos problemas para quem precisa desenvolver sistemas robustos. Atualmente, uma enorme indústria de software tornou-se fator nas economias do mundo industrializado. Equipes de especialistas em software substituíram a figura do programador solitário de antigamente. Ainda assim, as questões levantadas por esse programador solitário continuam as mesmas até hoje: Por que concluir um software leva tanto tempo? Por que os custos de desenvolvimento são tão altos? Por que não conseguimos encontrar todos os erros antes da entrega do software aos clientes? Por que gastamos tanto tempo e esforço mantendo programas existentes? Por que continuamos a ter dificuldade em medir o progresso enquanto o software está sendo desenvolvido e mantido? Diferentemente do hardware, o software apresenta algumas características peculiares que devem ser levadas em consideração: 1. Software não é fabricado (no sentido geral da palavra). 2. Software não se desgasta 3. Embora a indústria caminhe para a construção com base em componentes, a maioria dos softwares continua a ser construída de forma personalizada. 2. Sistemas Sociotécnicos Sistemas sociotécnicos envolvem hardware, software, pessoas e processos. Suas características essenciais são: 1. Eles possuem propriedades emergentes, que são propriedades do sistema como um todo. (interdependência) 2. São sistemas não determinísticos. 3. A entidade que usa o sistema não depende apenas do sistema em si.

6 Exercícios 1. Como o uso universal da internet mudou os sistemas de software? Como isso te afeta como profissional de TI? 2. De maneira geral, quais atributos um software deve possuir para ser um bom produto nos dias atuais? 3. Quais as diferenças entre desenvolver um produto genérico e software sob demanda? O que isso implica em relação a custos? 4. Pense em cenários envolvendo sistemas com três níveis de complexidade (Pequena, média e alta). Extraia quais aspectos são relevantes para a construção e manutenção de cada um desses sistemas. Pense em termos de recursos humanos e materiais, o que é preciso pra esses sistemas funcionarem? Pense em termos de evolução tecnológica, quanto tempo esse sistema pode viver e quais estratégias pra que ele não morra. Pense em termos de tempo e custo para cada um (sem entrar em detalhes demasiado técnicos)

7 Aula 2 Tópicos abordados: Ciclo de vida, modelagem de sistemas, engenharia de requisitos; I - Processos de Software Um processo de software é um conjunto de atividades relacionadas que levam à produção de um produto de software. Podem estar relacionadas à concepção de um software do zero, ou extensão e modificação de sistemas já existentes. (Businness Intelligence, por exemplo) Todo processo de software deve possuir uma metodologia, isto é, um conjunto de regras, diretrizes e estratégias a serem seguidas para que o trabalho seja desenvolvido. (Não se engane. Mesmo aqueles que dizem não seguir uma metodologia estão seguindo, mesmo que intuitivamente). As atividades fundamentais para a engenharia de software são: (Sommerville, 2011) 1. Especificação do software 2. Projeto e implementação 3. Validação 4. evolução 1. Modelos de processos de software Modelos de processo de software são representações simplificadas de um processo de software. Cada modelo representa uma perspectiva particular do processo (fornecendo informações parciais sobre ele). Um modelo de atividades foca nas atividades e sua sequência, mas pode não ser relevante mostrar papeis. Dessa forma, os modelos devem ser usados sempre para visualizar o software ou parte dele sobre determinadas perspectivas. Os modelos mais vistos na engenharia de software são o modelo em cascata, desenvolvimento incremental, e engenharia de software orientada a reuso (Sommerville, 2011). 1.1 Modelo em cascata

8 No modelo em cascata, em princípio, você deve planejar e programar todas as atividades do processo antes de começar a trabalhar nelas. Os principais estágios do modelo em cascata refletem diretamente as atividades fundamentais do desenvolvimento. 1. Análise e definição dos requisitos: Os serviços, ou restrições e metas do sistema são estabelecidos por meio de consultas a usuários. Em seguida são definidos em detalhes e funcionam como uma especificação do sistema. 2. Projeto de sistema e software: O processo de projeto de sistemas aloca os requisitos tanto para sistemas de hardware como para sistemas de software, por meio de uma arquitetura geral para o sistema. O projeto de software envolve identificação e descrição das abstrações fundamentais do sistema de software e seus relacionamentos. 3. Implementação e teste unitário: durante esse estágio, o projeto de software é desenvolvido como um conjunto de programas ou unidades de programa. O teste unitário envolve a verificação de que cada unidade atenda sua especificação. 4. Integração e teste de sistema: As unidades individuais do programa ou programas são integradas e testadas como um sistema completo para assegurar que os requisitos do software tenham sido atendidos. Após o teste, o sistema de software é entregue ao cliente. 5. Operação e manutenção: 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 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 e em resposta às descobertas de novos requisitos. Como boa prática, o resultado de cada estágio é a aprovação de um ou mais documentos assinados. O estágio seguinte não pode ser iniciado até que a fase anterior seja concluída. Na prática, esses estágios se sobrepõem e alimentam uns aos outros de informações. Durante o projeto, os problemas com os requisitos são identificados. Durante a codificação os problemas de projeto são encontrados e assim por diante.

9 O processo de software não é um modelo linear simples. Envolve feedback de uma fase pra outra. Assim documentos produzidos em cada fase podem ser modificados para refletirem as alterações feitas em cada um deles. Por causa dos custos de produção e aprovação dos documentos, as iterações podem ser dispendiosas e envolver significativo retrabalho. Assim, após um pequeno número de iterações, é normal congelarem as partes do desenvolvimento, como a especificação, e dar-se continuidade aos estágios posteriores de desenvolvimento. A solução do problema fica pra mais tarde, ignorada ou programada, quando possível. Esse congelamento prematuro dos requisitos pode resultar em um sistema que não atenda em partes o que o usuário quer. Também pode levar a sistemas mal estruturados, quando os problemas de projeto são contornados por artifícios de implementação. Durante o estágio final do ciclo de vida, o software é colocado em uso. Erros e omissões nos requisitos originais do software são descobertos. Os erros de programa e projeto aparecem e são identificadas novas necessidades funcionais. O sistema deve evoluir para permanecer útil. Fazer essas alterações (manutenção do software) pode implicar em repetições de estágios anteriores do processo. O modelo em cascata é consistente com outros modelos de processo de engenharia e a documentação é produzida em cada fase do ciclo. Dessa forma, o processo torna-se visível, e os gestores podem monitorar o progresso de acordo com o plano de desenvolvimento. Seu maior problema é a divisão inflexível do projeto em estágios distintos. Os compromissos devem ser assumidos em um estágio inicial do processo, o que dificulta que antedá as mudanças de requisitos dos clientes. Em princípio, o modelo em cascata deve ser usado apenas quando os requisitos são bem compreendidos e pouco provavelmente alterados durante o desenvolvimento do sistema. No entanto, o modelo em cascata reflete o tipo de processo usado em outros projetos de engenharia. Como é mais fácil usar um modelo de gerenciamento comum para todo o projeto, projetos de software baseados no modelo em cascata ainda não comumente utilizados Desenvolvimento incremental O desenvolvimento incremental é baseado na ideia de desenvolver uma implementação inicial, expô-la aos comentários dos usuários e continuar por meio da criação de várias versões até que um sistema adequado seja desenvolvido. Atividades de especificação, desenvolvimento e validação são intercaladas, e não separadas, como rápido feedback entre todas as atividades.

10 O desenvolvimento incremental é base fundamental para as atividades de desenvolvimento ágeis. É melhor do que o modelo em cascata para a maioria dos sistemas de negócio e-commerce e sistemas pessoais. Desenvolvimento incremental reflete a maneira como resolvemos os problemas. Raramente elaboramos uma solução completa para um problema de forma antecipada. Normalmente movemos para a solução passo a passo, recuando quando percebemos que cometemos um erro. Ao se apoiar no modelo incremental, torna-se mais barato e mais fácil fazer mudanças no software durante o desenvolvimento. Cada incremento ou função do sistema incorpora uma funcionalidade necessária para o cliente. Frequentemente os incrementos iniciais incluem as funcionalidades mais importantes ou mais urgentes (ou aquelas que são base para as demais). Isso significa que o cliente pode avaliar o sistema em um estágio relativamente inicial do desenvolvimento para ver se ele oferece o que foi requisitado. Em caso negativo, só o incremento que estiver em desenvolvimento no momento precisará ser alterado e, possivelmente, nova funcionalidade deverá ser definida para incrementos posteriores. O desenvolvimento incremental apresenta três vantagens em relação ao modelo em cascata. 1. Custo de acomodar as mudanças nos requisitos do cliente é reduzido. A quantidade de análise e documentação a ser refeita é muito menor. 2. É mais fácil obter feedbacks dos clientes sobre o desenvolvimento que foi feito. Os clientes podem fazer comentários sobre as demonstrações do software e ver o quanto foi implementado. Os clientes têm dificuldade em avaliar a evolução por meio de documentos de projeto de software. 3. É possível obter entrega e implementação rápida de um software útil ao cliente, mesmo se toda funcionalidade não for incluída. Assim os clientes podem ter ganhos com o software mesmo antes do que é possível com um modelo em cascata.

11 Esta atualmente a abordagem mais comum. Pode ser dirigida a planos, ágil, ou mais comum, uma combinação entre elas. Em abordagens a planos, os incrementos são identificados previamente. Se uma abordagem ágil for adotada, os incrementos iniciais são identificados, mas o desenvolvimento de incrementos posteriores depende do progresso e das prioridades dos clientes. Do ponto de vista do gerenciamento, a abordagem incremental tem dois problemas: 1. O processo não é visível (totalmente). Os gerentes precisam de entregas regulares para mensurar o progresso. Se os sistemas são desenvolvidos com rapidez, não é economicamente viável produzir documentos que reflitam cada uma das versões do sistema. 2. A estrutura do sistema tende a se degradar com a adição de novos incrementos. A menos que tempo e dinheiro sejam dispendidos em refatoração para melhoria do software, as constantes mudanças tendem a corromper sua estrutura. Incorporar futuras mudanças do software torna-se cada vez mais difícil e oneroso. O problemas do desenvolvimento incremental são especialmente críticos para os sistemas de vida longa, grandes e complexos, no qual várias equipes desenvolvem partes diferentes do sistema. Sistemas de grande porte necessitam de um framework ou arquitetura estável, e as responsabilidades das diferentes equipes de trabalho do sistema precisam ser claramente definidas, respeitando essa arquitetura. Isso deve ser planejado com antecedência, e não ser desenvolvido de forma incremental. Você pode desenvolver um sistema de forma incremental e expô-lo aos comentários dos clientes, sem realmente entrega-lo e implantá-lo no ambiente operacional do cliente. Entrega e implantação incremental significa que o software é usado em processos operacionais reais. Isso nem sempre é possível, pois experimentações com o novo software podem interromper os processos normais do negócio Engenharia de software orientada a reuso. Na maioria dos projetos de software, há algum reuso de software. Isso acontece muitas vezes informalmente, quando as pessoas envolvidas no projeto sabem de projetos ou códigos semelhantes. Elas buscam, fazem adequações necessárias e incorporam a seu projeto. Esse reuso informal ocorre independente do processo de desenvolvimento que se use. No entanto, nos últimos anos os processos com foco no reuso tornaram-se amplamente usados. Abordagens orientadas no reuso dependem de uma boa base de componentes reusáveis e de um framework de integração para a composição desses componentes, que podem ser sistemas completos, capazes de fornecer uma funcionalidade específica, como um processamento de texto ou planilha. Embora as etapas iniciais do processo possa ser semelhante com as demais, a parte intermediária apresenta diferenças fundamentais. Esses estágios são:

12 1. Análise de componentes. A partir das especificações dos requisitos, é feita uma busca por componente para implementar essa especificação. Em geral, não há correspondência exata, e os componentes que podem ser usados fornecem apenas algumas funcionalidades necessárias. 2. Modificação de requisitos: durante esse estágio, os requisitos são analisados usando-se informações sobre os componentes disponíveis. No caso de modificações impossíveis, a atividade de análise dos componentes pode ser reinserida na busca por soluções alternativas. 3. Projeto do Sistema com reuso: durante esse estágio, o framework do sistema é projetado ou algo existente é reusado. Os projetistas tem em mente os componentes que serão reusados e organizam o framework para reuso. Alguns softwares novos serão necessários se componentes reusáveis não estiverem disponíveis. 4. Desenvolvimento e integração: software que não podem ser adquiridos externamente são desenvolvidos, e os componentes e sistemas completos são integrados para criar um novo sistema. A integração de sistema, neste modelo, pode ser parte do processo de desenvolvimento, em vez de uma atividade separada. Existem três tipos de componentes de software que podem ser usados em um processo de reuso: 1. Web services desenvolvidos de acordo com padrões de serviço e que estão disponíveis para invocação remota. 2. Coleções de objetos que são desenvolvidas como um pacote a ser integrado com um framework de componentes como o J2EE e o.net. 3. Sistemas de software stand-alone configurados para um em um ambiente particular. Este modelo de processo apresenta vantagens óbvias em relação aos vistos até o momento. Pode ser mais rápido, mais barato e possuir menos riscos. No entanto, não se pode abandonar o compromisso com os requisitos. Isso pode levar a um software que não atende as reais necessidade do usuário. Além disso, algum controle sobre a evolução do sistema é perdido, pois as novas versões dos componentes reusáveis não estão sob o controle da organização que o está utilizando.

13 2. Atividades do processo. Processos reais de software são intercalados com sequências de atividades técnicas, de colaboração e de gerência, com o intuito de especificar, projetar, implementar e testar um sistema de software. Os desenvolvedores de software usam uma variedade de diferentes ferramentas para seu trabalho. Elas são úteis para apoiar a edição de diferentes tipos de documentos e para gerenciar o imenso volume de informação que gerado em um projeto (em especial de grande porte). As quatro atividades básicas do projeto são organizadas de forma diferente conforme o processo de desenvolvimento. 2.1 Especificação de software (ou engenharia de requisitos) É o processo de compreensão e definição dos serviços requisitados do sistema e identificação de restrições relativas à operação e ao desenvolvimento do sistema. A engenharia de requisitos é um estágio particularmente crítico do processo de software, pois erros nessa fase inevitavelmente geram problemas no projeto e na implementação do sistema. O processo de engenharia de requisitos tem como objetivo produzir um documento de requisitos acordados que especifica um sistema que satisfaz os requisitos dos clientes. Requisitos são geralmente apresentados em dois níveis de detalhe. Os usuários finais e os clientes precisam de uma declaração de requisitos em alto nível; desenvolvedores de sistemas precisam de uma especificação mais detalhada. Existem quatro atividades do processo de engenharia de requisitos: 1. Estudo de viabilidade 2. Elicitação e análise de requisitos 3. Especificação de requisitos 4. A validação dos requisitos 2.2. Projeto e implementação de software

14 O estágio de implementação do desenvolvimento do software é o processo de conversão de uma especificação em um sistema executável. Sempre envolve processos de projeto e programação de software. Mas se for usada uma abordagem incremental para o desenvolvimento, também pode envolver o refinamento da especificação do software. O projeto de software é uma descrição da estrutura do software a ser implementado, dos modelos e estruturas de dados usados pelo sistema, das interfaces entre os componentes do sistema, e às vezes, dos algoritmos usados. Os projetistas não chegam a um projeto final imediatamente, mas desenvolvem-no de forma iterativa. Eles acrescentam formalidade e detalhe, enquanto desenvolvem seu projeto por meio de revisões constantes para correção de projetos anteriores. As atividades no processo de projeto podem variar, dependendo do tipo de sistema ser desenvolvido. 1. Projeto de arquitetura: identificar a estrutura geral do sistema, componentes principais, subsistemas, módulos, seus relacionamentos e como eles são distribuídos. 2. Projeto de interface: define as interfaces entre os componentes do sistema. Essa especificação de interface deve ser inequívoca. Com uma interface precisa, um componente pode ser usado de maneira que outros componentes não precisam saber como ele é implementado. Uma vez que a especificação de interfaces é acordada, os componentes podem ser projetos e desenvolvidos simultaneamente. 3. Projeto de componente. Projeta como é o funcionamento de cada componente do sistema. Pode ser uma simples declaração de funcionalidade que se deseja implementar com um projeto específico para cada programador. O modelo de projeto pode ser usado para gerar automaticamente uma implementação. 4. Projeto de banco de dados: como os dados do sistema devem ser representados no banco de dados. Atenção para o mapeamento objeto-relacional Validação de Software

15 Tem a intenção de mostrar que se um software se adequa a especificação de seus requisitos. A principal técnica de validação é execução do sistema com dados simulados. A validação também envolve processo de verificação com inspeções e revisões de cada etapa do processo. A maior parte dos custos de testes está após a implementação. Com exceção de pequenos programas, os sistemas não devem ser testados como uma unidade única e monolítica. Quando defeitos são descobertos, o programa deve ser depurado e isso pode requerer que outros estágios do processo de testes sejam repetidos. O processo de testes é iterativo com informações realimentadas de estágios posteriores para partes anteriores do processo. 1. Testes de desenvolvimento Componentes são testados pelos desenvolvedores. Cada componente é testado de forma independente Componentes podem ser entidades simples ou agrupamento destas. Podem ser utilizadas ferramentas de testes automatizados (JUnit). 2. Testes de sistema Componentes do sistema são integrados para criar um sistema completo. Se preocupa em encontrar erros resultantes das iterações inesperadas entre componentes e problemas de interface do componente. Visa mostrar também que o sistema satisfaz seus requisitos funcionais e não funcionais Testa propriedades emergentes do sistema 3. Testes de aceitação É o estágio final do processo de testes O sistema é testado com dados fornecidos pelo cliente Pode revelar erros na definição dos requisitos

16 2.4. Evolução do software A flexibilidade dos sistemas de software é uma das principais razões pelas quais os softwares vem sendo, cada vez mais, incorporados em sistemas grandes e complexos. Uma vez que a decisão pela fabricação do hardware foi tomada, é muito caro fazer alterações em seu projeto. Entretanto, as mudanças no software podem ser feitas a qualquer momento durante ou após o desenvolvimento do sistema. Mesmo grandes mudanças são muito mais baratas do que as correspondentes alterações no hardware. Historicamente sempre houve uma separação entre processo de desenvolvimento e processo de evolução do software. As pessoas pensam no desenvolvimento como uma atividade criativa de um sistema a partir de um conceito inicial. A distinção entre desenvolvimento e manutenção é cada vez mais irrelevante. Poucos sistemas são completamente novos. Faz muito mais sentido ver o desenvolvimento e a evolução como processos contínuos. 3. Lidando com Mudanças Existem duas abordagens que podem ser adotadas para redução de custos de retrabalho: 1. Prevenção de mudanças Capacidade do software de se antecipar a mudanças Usar protótipos é uma boa para refinar requisitos. 2. Tolerância a mudanças Processo projetado de forma que mudanças possam ser acomodadas a custo relativamente baixo. O desenvolvimento incremental é uma das estratégias. 3.1 Prototipação Protótipo é uma versão inicial de um sistema de software. Serve para demonstrar conceitos e experimentar opções de projeto Serve para descobrir sobre problemas e suas possíveis soluções O desenvolvimento rápido e iterativo de protótipos é essencial para o controle de custos

17 Permite que usuários possam experimentar o sistema no início do processo Um protótipo de software pode ser usado em um processo de desenvolvimento para ajudar a antecipar mudanças que podem ser requisitadas: 1. No processo de engenharia de requisitos, pode ajudar na elicitação e validação dos requisitos de sistema 2. No processo de projeto de sistema, pode ser usado para estudar soluções específicas do software e para apoiar o projeto de interface com o usuário Pontos de atenção com protótipos: 1. Protótipos quase sempre não se preocupam com requisitos não funcionais 2. Um protótipo pode deixar transparecer que o problema é mais fácil de ser resolvido do que realmente o é. 3. Protótipos podem ser feitos em papel ou ferramentas específicas. 4. O cuidado com o tempo gasto na realização de protótipos Entrega incremental As entregas das partes do software são feitas de maneira incremental para o cliente. Eles identificam quais os serviços são mais importantes. Uma série de incrementos são definidos. Primeiros incrementos agem como protótipos.

18 Exercícios 1. Qual é o modelo mais eficaz para o desenvolvimento de sistemas de software de negócio? Por quê? 2. qual é o modelo mais eficaz para a construção de um sistema crítico de tempo real? Por quê? 3. Observe os cenários: Cenário 1: Precisamos desenvolver uma solução de matrícula online para uma universidade. Temos uma infraestrutura razoável com base em software livre. Temos uma equipe de analistas e desenvolvedores de tamanho médio. Já existe um banco de dados com todos os estudantes, cursos, disciplinas, etc. Cenário 2: Nossa equipe de analistas e gestores precisa de um sistema para controle dos projetos que desenvolvimentos. Temos todas as informações referentes as projetos em documentos de texto, planilhas, em nossas cabeças. Todo projeto tem cliente, prazo, custos, materiais, etc De acordo com os cenários apresentados desenvolva um ensaio com: Características gerais para a solução dos dois cenários em cada um dos três modelos de processo de software. Quais os comportamentos possíveis em cada um deles? Qual a melhor estratégia para cada um dos cenários? Seminários I. Tópicos abordados: Ciclo de vida, processos ágeis, processo unificado. 1. Metodologias de desenvolvimento de software 1.1. Desenvolvimento Ágil de Software 1.2. Processo unificado Realizar um trabalho comparativo entre as metodologias com base no Capítulo 3 Sommerville e Capítulo 3 Pressman. Relatório com 5 a 12 páginas. Constando: Resumo, Introdução, Conteúdo (Características, Diretrizes, Práticas e Métodos), Estudo de caso com base em um dos cenários. Conclusão.

19 Bibliografia Pompilho, S. (2002). Análise Essencial - guia prático de Análise de Sistemas. Rio de Janeiro: Ciência Moderna. Pressman, R. S. (2011). Engenharia de Software: Uma abordagem profissional. São Paulo: Bookman. Rosini, A. M. (2014). Administração de Sistemas de Informação e a Gestão do Conhecimento. São Paulo: Cengage Learning. Sommerville, I. (2011). Engenharia de Software 9a Ed. São Paulo: Pearson.

Aula 3 - Modelos de Processo - cascata, iterativo e incremental e ágil

Aula 3 - Modelos de Processo - cascata, iterativo e incremental e ágil Aula 3 - Modelos de Processo - cascata, iterativo e incremental e ágil Análise de Sistemas Prof. Filipe Arantes Fernandes filipe.arantes@ifsudestemg.edu.br 2 Vale a pena ver de novo Modelo de Processo:

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

Aula 2 - Modelos de Processo - cascata, iterativo e incremental e ágil

Aula 2 - Modelos de Processo - cascata, iterativo e incremental e ágil Aula 2 - Modelos de Processo - cascata, iterativo e incremental e ágil Análise de Sistemas Prof. Filipe Arantes Fernandes filipe.arantes@ifsudestemg.edu.br 2 Vale a pena ver de novo O que é um processo?

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

Engenharia de Software Engenharia de Software Processos de Software Professor: Charles Leite O processo de software Um conjunto estruturado de atividades, procedimentos, artefatos e ferramentas necessários para o desenvolvimento

Leia mais

14/11/2013. Capítulo 2. Processos de Software. Tópicos apresentados. Oprocessodesoftware. Modelos de processo de software. Atividades de processo.

14/11/2013. Capítulo 2. Processos de Software. Tópicos apresentados. Oprocessodesoftware. Modelos de processo de software. Atividades de processo. Capítulo 2 Processos de Software slide 1 Tópicos apresentados Modelos de processo de software. Atividades de processo. Lidando com mudanças. Rational Unified Process (RUP). Um exemplo de um processo de

Leia mais

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

Processos de Software

Processos de Software Processos de Software Capítulo 2 Processos de Software slide 47 2011 Pearson Prentice Hall. Todos os direitos reservados. 1 Tópicos apresentados Modelos de processo de software. Atividades de processo.

Leia mais

Capítulo 2 - Processos de Software

Capítulo 2 - Processos de Software Capítulo 2 - Processos de Software Capítulo 2 Processos Software 1 Assuntos abordados Modelos de processo de software Atividades no processo de software Mudança no processo de software Melhoria de processos

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

Introdução a Engenharia de Software

Introdução a Engenharia de Software Engenharia de Software Aula 02 Introdução a Engenharia de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo dcc603@dcc.ufmg.br ou disciplina.eduardo@gmail.com 7 Março de 2018 Bibliografia

Leia mais

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini /

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini   / Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini E-mail: prof.andre.luis.belini@gmail.com / andre.belini@ifsp.edu.br MATÉRIA: ENGENHARIA DE SOFTWARE Aula N : 02 Tema:

Leia mais

PDS. Aula 1.6 Modelos de Processo. Prof. Dr. Bruno Moreno

PDS. Aula 1.6 Modelos de Processo. Prof. Dr. Bruno Moreno PDS Aula 1.6 Modelos de Processo Prof. Dr. Bruno Moreno bruno.moreno@ifrn.edu.br Tipos de Modelos Modelo em Cascata; Prototipação; RAD; Modelo Incremental; Desenvolvimento Evolucionário; Desenvolvimento

Leia mais

Processos de Software

Processos de Software DCC / ICEx / UFMG Processos de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Processos Procedimentos e métodos definindo relação entre tarefas PROCESSO Pessoas com habilidades, treinadas

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

Modelos de Processo de Software. Profª Jocelma Rios

Modelos de Processo de Software. Profª Jocelma Rios Modelos de Processo de Software Profª Jocelma Rios Jun/2013 O que pretendemos: Apresentar os conceitos básicos de processos de software Descrever os principais modelos de processos de software, elucidando

Leia mais

15/03/2018. Professor Ariel da Silva Dias Modelos de Processo de Software

15/03/2018. Professor Ariel da Silva Dias Modelos de Processo de Software Professor Ariel da Silva Dias Modelos de Processo de Software Conjunto de atividades que leva à produção de um produto de Software [Sommerville,2011]; Podemos contar com ferramentas de apoio com o objetivo

Leia mais

INTRODUÇÃO A ENGENHARIA DE SOFTWARE

INTRODUÇÃO A ENGENHARIA DE SOFTWARE Universidade Estadual Vale do Acaraú AGENDA INTRODUÇÃO A ENGENHARIA DE SOFTWARE Processos Modelos de Desenvolvimento de Software Engenharia de Requisitos Projeto de Interface com o Usuário Projeto Arquitetural

Leia mais

PDS. Aula 1.4 Modelos de Processo. Prof. Dr. Bruno Moreno

PDS. Aula 1.4 Modelos de Processo. Prof. Dr. Bruno Moreno PDS Aula 1.4 Modelos de Processo Prof. Dr. Bruno Moreno bruno.moreno@ifrn.edu.br 2 Introdução Há alguns anos, o desenvolvimento de softwares era muito obsoleto; Existiam diversos problemas relacionados

Leia mais

Desenvolvimento de Projetos

Desenvolvimento de Projetos Desenvolvimento de Projetos Aula 1.3 Modelos de Processo Prof. Dr. Bruno Moreno bruno.moreno@ifrn.edu.br Tipos de Modelos Modelo em Cascata; Prototipação; Modelo Incremental; Desenvolvimento Evolucionário;

Leia mais

Processos de Software

Processos de Software Processos de Software Centro de Informática - Universidade Federal de Pernambuco Kiev Gama kiev@cin.ufpe.br Slides originais elaborados por Ian Sommerville e adaptado pelos profs. Márcio Cornélio, Vinicius

Leia mais

ENGENHARIA DE SOFTWARE

ENGENHARIA DE SOFTWARE ENGENHARIA DE SOFTWARE Curso: Sistemas de Informação Profª: Janaide Nogueira ENGENHARIA DESOFTWARE APRESENTAÇÃO Formação Técnica: Informática(IFCE-Campus Tianguá-CE) Secretária Escolar(FDR) Graduação:

Leia mais

Engenharia de Software

Engenharia de Software PLANO DE AVALIAÇÕES Engenharia de Software 1ª AP: 08 de setembro 2ª AP: 13 de outubro 3ª AP: 10 de novembro NAF: 17 de novembro Referência bibliográfica: SOMMERVILLE, I. Engenharia de Software. 8ª ed.

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

Processo de Desenvolvimento. Edjandir Corrêa Costa

Processo de Desenvolvimento. Edjandir Corrêa Costa Processo de Desenvolvimento Edjandir Corrêa Costa edjandir.costa@ifsc.edu.br Processo de Desenvolvimento Definição: É um roteiro que determina quais são as tarefas necessárias e em que ordem elas devem

Leia mais

Desenvolvimento de Software. Testes de Software. Tópicos da Aula. Onde estamos... Verificação x Validação. Testes de Software

Desenvolvimento de Software. Testes de Software. Tópicos da Aula. Onde estamos... Verificação x Validação. Testes de Software Engenharia de Software Aula 17 Desenvolvimento de Software Testes de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo dcc603@gmail.com 7 Maio 2012 1. Especificação de requisitos 2. Projeto

Leia mais

Engenharia Software. Ení Berbert Camilo Contaiffer

Engenharia Software. Ení Berbert Camilo Contaiffer Engenharia Software Ení Berbert Camilo Contaiffer Características do Software Software não é um elemento físico, é um elemento lógico; Software é desenvolvido ou projetado por engenharia, não manufaturado

Leia mais

Princípios da Engenharia de Software aula 03

Princípios da Engenharia de Software aula 03 Princípios da Engenharia de Software aula 03 Prof.: José Honorato Ferreira Nunes Material cedido por: Prof.: Franklin M. Correia Na aula anterior... Modelos de processos de software: Evolucionário Tipos

Leia mais

Capítulo 2. Processos de So2ware Pearson Prentice Hall. Todos os direitos reservados. slide 1

Capítulo 2. Processos de So2ware Pearson Prentice Hall. Todos os direitos reservados. slide 1 Capítulo 2 Processos de So2ware slide 1 Tópicos apresentados Modelos de processo de so+ware. A0vidades de processo. Lidando com mudanças. Ra0onal Unified Process (RUP). Um exemplo de um processo de desenvolvimento

Leia mais

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Prof. Fabiano Papaiz IFRN

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Prof. Fabiano Papaiz IFRN PROCESSO DE DESENVOLVIMENTO DE SOFTWARE Prof. Fabiano Papaiz IFRN Um Processo de Desenvolvimento de Software, ou simplesmente Processo de Software, é um conjunto de atividades realizadas por pessoas cujo

Leia mais

Aula 2 Processo de Software

Aula 2 Processo de Software Aula 2 Processo de Software Processo de software O que é processo de software? Deve incluir 4 partes fundamentais Não existe um processo ideal Certo ou errado? O tipo de software influencia no tipo de

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

ENGENHARIA DE SOFTWARE

ENGENHARIA DE SOFTWARE ENGENHARIA DE SOFTWARE AULA 1 Introdução à Engenharia de Software 05/02/2014 Sobre o professor... Geovani Sajorato Engenheiro de Software Pleno na IOB Folhamatic S.A (Sage Group Brazil). 5 anos de experiência

Leia mais

ENGENHARIA DE SOFTWARE

ENGENHARIA DE SOFTWARE ENGENHARIA DE SOFTWARE Teste de Software Verificação e validação Testes de desenvolvimento Testes de release Testes de usuário Desenvolvimento dirigido a testes Kele Teixeira Belloze kelebelloze@gmail.com

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 I Processos de desenvolvimento de SW. profa. Denise Neves

Engenharia de Software I Processos de desenvolvimento de SW. profa. Denise Neves I Processos de desenvolvimento de SW profa. Denise Neves profa.denise@hotmail.com 2018 Projeto Um projeto é um empreendimento temporário empreendido para alcançar um único conjunto de objetivos. (PMI,PMBOK

Leia mais

Processos de Software. O que é modelo de processo? Vantagens. Modelos de Processo Gerais. O que é um processo de software?

Processos de Software. O que é modelo de processo? Vantagens. Modelos de Processo Gerais. O que é um processo de software? DCC / ICEx / UFMG O que é um processo de software? Processos de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Conjunto de atividades que leva ao desenvolvimento do produto software Um

Leia mais

Modelos de Processo de Software

Modelos de Processo de Software Modelos de Processo de Software Engenharia de Software Profa. Dra. Rosana T. Vaccare Braga 1 o semestre de 2017 (material produzido e atualizado pelos professores do grupo de pesquisa em Engenharia de

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

Bibliografia. Quais são os problemas? capacidade de construção. acompanha a demanda por novos programas. ameaçada por projetos ruins.

Bibliografia. Quais são os problemas? capacidade de construção. acompanha a demanda por novos programas. ameaçada por projetos ruins. Bibliografia Quais são os problemas? 4 A sofisticação do software ultrapassou nossa capacidade de construção. 4 Nossa capacidade de construir programas não acompanha a demanda por novos programas. 4 Nossa

Leia mais

15/03/2018. Professor Ariel da Silva Dias Introdução a Engenharia de Software. O mundo moderno poderia existir sem software?

15/03/2018. Professor Ariel da Silva Dias Introdução a Engenharia de Software. O mundo moderno poderia existir sem software? O mundo moderno poderia existir sem software? Professor Ariel da Silva Dias Introdução a Engenharia de Software 1 Software Associação de programas de computador e documentação; Atributos de um bom software

Leia mais

PDS. Aula 1.5 Modelos de Processo. Prof. Dr. Bruno Moreno

PDS. Aula 1.5 Modelos de Processo. Prof. Dr. Bruno Moreno PDS Aula 1.5 Modelos de Processo Prof. Dr. Bruno Moreno bruno.moreno@ifrn.edu.br Tipos de Modelos Modelo em Cascata; Prototipação; RAD; Modelo Incremental; Desenvolvimento Evolucionário; Desenvolvimento

Leia mais

Engenharia de Software. Projeto de Arquitetura

Engenharia de Software. Projeto de Arquitetura Engenharia de Software Projeto de Arquitetura O que já vimos? Introdução a Engenharia de Software Processos de Software Desenvolvimento Ágil de Software Engenharia de Requisitos Modelagem de sistemas (outra

Leia mais

Departamento de Sistemas de Computação Universidade de São Paulo Análise e Projeto Orientados a Objetos Aula 2 O Processo Unificado (PU)

Departamento de Sistemas de Computação Universidade de São Paulo Análise e Projeto Orientados a Objetos Aula 2 O Processo Unificado (PU) Departamento de Sistemas de Computação Universidade de São Paulo Análise e Projeto Orientados a Objetos Aula 2 O Processo Unificado (PU) Prof. Seiji Isotani (sisotani@icmc.usp.br) Modelos de Processo de

Leia mais

Engenharia de Software

Engenharia de Software Instituto Superior Politécnico de Ciências e Tecnologia Engenharia de Software Prof Pedro Vunge www.pedrovunge.com I Semestre de 2018 Capítulo 1 Introdução SUMÁRIO Engenharia de Software Definição; Objectivos

Leia mais

Projeto e Desenvolvimento de Software

Projeto e Desenvolvimento de Software Projeto e Desenvolvimento de Software Prof. Ronaldo C. de Oliveira, Dr. ronaldo.co@ufu.br UFU - 2018 Processo de Software Processos de Software Conjunto coerente de atividades para especificar, projetar,

Leia mais

Engenharia de Software Processo de Desenvolvimento. Ciclo de Vida - Modelo Cascata

Engenharia de Software Processo de Desenvolvimento. Ciclo de Vida - Modelo Cascata Processo de Desenvolvimento Também chamado de ciclo de vida do software Reflete os passos necessários para se construir um produto de software Existem vários modelos de ciclo de vida Cascata (1956) Iterativo

Leia mais

ENGENHARIA DE SOFTWARE. Aula 17 Reuso de software

ENGENHARIA DE SOFTWARE. Aula 17 Reuso de software ENGENHARIA DE SOFTWARE Aula 17 Reuso de software OBJETIVOS Entender os benefícios e problemas de reuso de software durante o desenvolvimento de novos sistemas; Entender o conceito de um framework de aplicações

Leia mais

TESTES DE SOFTWARE Unidade 1 Importância do Teste de Software. Luiz Leão

TESTES DE SOFTWARE Unidade 1 Importância do Teste de Software. Luiz Leão Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático 1.1 - O teste nas fases de vida e de desenvolvimento de um software. 1.2 - O teste na engenharia de sistemas e na engenharia de

Leia mais

Ainda que muitos modelos sejam semelhantes entre os modelos de ciclo de vida, existem alguns aspectos que os diferenciam:

Ainda que muitos modelos sejam semelhantes entre os modelos de ciclo de vida, existem alguns aspectos que os diferenciam: Prof. Edson dos Santos Cordeiro 1 Tópico: Objetivo: Introdução a Ciclo de Vida do Software Conhecer os principais conceitos relacionados a ciclo de vida do software. Bibliog. Base: McCONNEL, Steve. Rapid

Leia mais

Engenharia de Software

Engenharia de Software Engenharia de Software Marcelle Mussalli Cordeiro {mmussalli@gmail.com} Cordeiro Reflexão O que é software?? Cordeiro 2 O que é Software? Programa Dados de configuração Dados de documentação Tudo que esteja

Leia mais

Engenharia de Software I

Engenharia de Software I Engenharia de Software I Fundamentos da Engenharia de Software Modelos de desenvolvimento Importância do software Importância do Software Qualidade é fundamental Consequências de erros no software podem

Leia mais

Desenvolvimento ágil de software

Desenvolvimento ágil de software Desenvolvimento ágil de software Prof. Cristiane Aparecida Lana slide 1 Bibliografia utilizada: Mais opções visite meu site, clique aqui para acessá-lo. slide 2 2011 Pearson 2011 Pearson Prentice Prentice

Leia mais

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos Universidade Federal do Espírito Santo Centro Tecnológico Departamento de Informática Disciplina: INF 09289 Prof.: (monalessa@inf.ufes.br) Conteúdo 1. Introdução 3. Especificação e Análise de Requisitos

Leia mais

Engenharia de Software

Engenharia de Software Engenharia de Software Tópico 1 - Visão Geral da Engenharia de Software Sistemas Computacionais o Definição e conceitos básicos o Evolução do desenvolvimento Natureza do produto software Definição de Engenharia

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

Tópicos da Aula. O que é anunciado. Falha de Comunicação no Desenvolvimento de Software. Engenharia de Software: Conceitos Fundamentais

Tópicos da Aula. O que é anunciado. Falha de Comunicação no Desenvolvimento de Software. Engenharia de Software: Conceitos Fundamentais Engenharia de Software Aula 02 Tópicos da Aula Engenharia de Software: Conceitos Fundamentais Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo dcc603@gmail.com 07 Março 2012 Motivação e Conceitos

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

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

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

INSTITUTO FEDERAL DE SÃO PAULO CAMPUS PRESIDENTE EPITÁCIO MODELO DOS PROCESSOS DE SOFTWARE

INSTITUTO FEDERAL DE SÃO PAULO CAMPUS PRESIDENTE EPITÁCIO MODELO DOS PROCESSOS DE SOFTWARE INSTITUTO FEDERAL DE SÃO PAULO CAMPUS PRESIDENTE EPITÁCIO CURSO ANÁLISE E DESENVOLVIMENTO DE SISTEMA MODELO DOS PROCESSOS DE SOFTWARE ALUNO SAMUEL BRAGA LOPES SUMÁRIO - AGENDA INTRODUÇÃO MODELO CASCATA

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

Processos de Software

Processos de Software Riscos Processos de Software Gidevaldo Novais (gidevaldo.vic@ftc.br) Muitos problemas no desenvolvimento de software provêm de riscos Seriam problemas potenciais que poderão ocorrer em um futuro próximo

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

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

ENGENHARIA DE SOFTWARE

ENGENHARIA DE SOFTWARE INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE Curso Técnico em Informática : ENGENHARIA DE SOFTWARE Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br Um conjunto estruturado

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

Atividades típicas do processo de desenvolvimento

Atividades típicas do processo de desenvolvimento Atividades típicas do processo de desenvolvimento Elicitação de Requisitos Qual o problema? O que será feito? Análise e projeto de software Como será feito? Descrição computacional Projeto de arquitetura

Leia mais

Definições e ciclo de vida

Definições e ciclo de vida Definições e ciclo de vida A aplicação de uma abordagem sistemática, disciplinada e quantificável para o desenvolvimento, operação e manutenção do software. É a aplicação sistemática de conhecimentos científicos

Leia mais

ICET CURSO: Ciência da Computação e Sistemas de Informação (Engenharia de Software) Campus: Data: / / Nome:

ICET CURSO: Ciência da Computação e Sistemas de Informação (Engenharia de Software) Campus: Data: / / Nome: ICET CURSO: Ciência da Computação e Sistemas de Informação (Engenharia de Software) Estudos Disciplinares Campus: Data: / / Nome: RA: Turma: Questão 1: Assinale a função correta de engenharia de requisitos:

Leia mais

Processos de Software

Processos de Software Processos de Software Um processo de software é um conjunto de atividades que leva à produção de um produto de software Um modelo de processo de software é uma representação abstrata de um processo de

Leia mais

4/14/11. Processos de Engenharia de Requisitos. Engenharia de requisitos. Elicitação e análise. A espiral de requisitos

4/14/11. Processos de Engenharia de Requisitos. Engenharia de requisitos. Elicitação e análise. A espiral de requisitos Processos de engenharia de requisitos Processos de Engenharia de Requisitos Os requisitos e as formas de obtê-los e documentálos variam drasticamente de um projeto para o outro Contudo, existe uma série

Leia mais

Fábricas de Software. Processos de Software. Fábricas de Software. Fábricas de Software 17/08/2010. Jorge Dias

Fábricas de Software. Processos de Software. Fábricas de Software. Fábricas de Software 17/08/2010. Jorge Dias Fábricas de Software Processos de Software Jorge Dias Um processo estruturado, controladoe melhoradode forma contínua, considerando abordagens de engenharia industrial, orientado para o atendimento a múltiplas

Leia mais

MODELOS DE PROCESSOS (PARTE 2)

MODELOS DE PROCESSOS (PARTE 2) MODELOS DE PROCESSOS (PARTE 2) Introdução a Computação e Engenharia de Software Profa. Cynthia Pinheiro Recordando nossas Datas Provas (novas datas): 3ª Prova (1ª chamada): 03/07 2ª Prova (2ª chamada):

Leia mais

- 1ª Lista de Exercícios -

- 1ª Lista de Exercícios - - 1ª Lista de Exercícios - Introdução à Engenharia de Software Questão 1) A engenharia de software está relacionada com todos os aspectos da produção de software, desde os estágios iniciais de especificação

Leia mais

ENGENHARIA DE SOFTWARE

ENGENHARIA DE SOFTWARE 2016-1 ENGENHARIA DE SOFTWARE Histórico Produtos de software Tipos de aplicações de software Mitos do software Kele Teixeira Belloze kelebelloze@gmail.com HISTÓRICO (ERA PRÉ-ES) 1940s: Primeiro computador

Leia mais

Agenda TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ANÁLISE E PROJETO DE SISTEMAS. Aula 3 21/08/2012

Agenda TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ANÁLISE E PROJETO DE SISTEMAS. Aula 3 21/08/2012 TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ANÁLISE E PROJETO DE SISTEMAS Aula 3 Agenda O processo de desenvolvimento de software Processo Unificado e as fases do Processo Unificado Requisitos

Leia mais

Engenharia de Software Sistemas Sociotécnicos

Engenharia de Software Sistemas Sociotécnicos Engenharia de Software Sistemas Sociotécnicos Prof. Carlos Lucas uma vela não perde sua chama acendendo outra Apenas 5% dos professores fizeram, fazem e farão a diferença 1 Sistema Sistemas Sociotécnicos

Leia mais

Verificação e Validação. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 22 Slide 1

Verificação e Validação. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 22 Slide 1 Verificação e Validação Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 22 Slide 1 Objetivos Apresentar a verificação e validação de software e discutir a distinção entre elas Descrever

Leia mais

Introdução a Engenharia de Software

Introdução a Engenharia de Software Introdução a Engenharia de Software Proj. Desenvolvimento de Software Prof. Cleverton Hentz cleverton.hentz@ifrn.edu.br 5 de abril de 2017 Material Apresentado Sumário de Aula 1 O que é Engenharia de Software

Leia mais

Gerência de Projetos e Qualidade de Software. Prof. Walter Gima

Gerência de Projetos e Qualidade de Software. Prof. Walter Gima Gerência de Projetos e Qualidade de Software Prof. Walter Gima 1 OBJETIVO Compreender uma série de técnicas de testes, que são utilizadas para descobrir defeitos em programas Conhecer as diretrizes que

Leia mais

Processos de. Desenvolvimento de Software

Processos de. Desenvolvimento de Software Processos de Desenvolvimento de Software O processo de software Um conjunto estruturado de atividades, procedimentos, artefatos e ferramentas necessários para o desenvolvimento de um sistema de software

Leia mais

Gerência de Projetos e Qualidade de Software. Prof. Walter Gima

Gerência de Projetos e Qualidade de Software. Prof. Walter Gima Gerência de Projetos e Qualidade de Software Prof. Walter Gima 1 OBJETIVOS Compreender o processo de gerenciamento de qualidade e as principais atividades do processo de garantia, planejamento e controle

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

Guia do Processo de Teste Metodologia Celepar

Guia do Processo de Teste Metodologia Celepar Guia do Processo de Teste Metodologia Celepar Agosto de 2009 Sumário de Informações do Documento Documento: guiaprocessoteste.odt Número de páginas: 11 Versão Data Mudanças Autor 1.0 26/12/07 Criação.

Leia mais

ENGENHARIA DE SOFTWARE

ENGENHARIA DE SOFTWARE CURSO TÉCNICO DE INFORMÁTICA Módulo A ENGENHARIA DE SOFTWARE Processos de Software O PROCESSO É LENTO... Todo software deve ser construído de forma organizada, através de processos. Um processo pode ser

Leia mais

Análise e projeto de sistemas

Análise e projeto de sistemas Análise e projeto de sistemas Conteúdo: UML O processo de desenvolvimento de software Prof. Patrícia Lucas A linguagem de modelagem unificada (UML) A UML teve origem em uma tentativa de se unificar os

Leia mais

Leitura: Cap : Sommerville; cap20: Pressman

Leitura: Cap : Sommerville; cap20: Pressman Leitura: Cap26-27 - 28: Sommerville; cap20: Pressman Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / Ian Sommerville 2000 Slide 1/47 Manutenção de software É modificar um programa depois que

Leia mais

Conceitos de Engenharia de Software. Prof.ª: Érika A. Barrado

Conceitos de Engenharia de Software. Prof.ª: Érika A. Barrado Conceitos de Engenharia de Software Prof.ª: Érika A. Barrado Introdução Conceitos de Software Conceitos de Engenharia de Software Ciclo de Vida do Software Software Consiste em instruções (programas de

Leia mais

Teste de Software. Prof. Camila. Pedro de Assis Sobreira Jr.

Teste de Software. Prof. Camila. Pedro de Assis Sobreira Jr. Teste de Software Prof. Camila Pedro de Assis Sobreira Jr. 2 Técnicas de Testes Técnica de Teste Funcional Técnica de Teste Estrutural 3 Testes Funcionais Teste de Especificação de Requisitos. Teste de

Leia mais

CAPÍTULO 1 O AMBIENTE DE DESENVOLVIMENTO DE SISTEMAS. Tereza Gonçalves Kirner

CAPÍTULO 1 O AMBIENTE DE DESENVOLVIMENTO DE SISTEMAS. Tereza Gonçalves Kirner CAPÍTULO 1 O AMBIENTE DE DESENVOLVIMENTO DE SISTEMAS Tereza Gonçalves Kirner Apresentação elaborada com base em: Hoffer, Jeffrey A., George, Joey F. Modern Systems Analysis and Design (Capítulo 1), Pearson,

Leia mais

REUSO E REUSABILIDADE

REUSO E REUSABILIDADE REUSO E REUSABILIDADE Manutenção de Software Profa. Cynthia Pinheiro Antes de mais nada... 2ª Lista de Exercícios Já está disponível no site a 2ª Lista de Exercícios Entrega: dia 03/10, no horário da aula.

Leia mais

Visão Geral do RUP (Rational Unified Process)

Visão Geral do RUP (Rational Unified Process) Visão Geral do RUP (Rational Unified Process) Objetivos deste módulo Apresentar as características do RUP Discutir os conceitos que existem no RUP: fases, fluxos de atividades (worklows), iterações, responsáveis,

Leia mais

RUP/PSDS. Introdução e Comparação

RUP/PSDS. Introdução e Comparação RUP/PSDS Introdução e Comparação Agenda RUP Introdução Mlehores Práticas Estrutura Tempo Conteúdo Contraponto PSDS Introdução Objetivos Promover planejamento, medição e controle dos projetos Reduzir riscos

Leia mais

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

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 01 PROFª BRUNO CALEGARO UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 01 PROFª BRUNO CALEGARO Santa Maria, 06 de Setembro de 2013. Analise inicial O software de computadores continua a ser a tecnologia única mais

Leia mais

Instituto Federal Sul-rio-grandense. Placa universal para controle de máquinas de lavar roupa Plano de Projeto - versão 1.0

Instituto Federal Sul-rio-grandense. Placa universal para controle de máquinas de lavar roupa Plano de Projeto - versão 1.0 Instituto Federal Sul-rio-grandense Campus Pelotas Curso de Engenharia Elétrica Planejamento e Gerenciamento de Projetos Placa universal para controle de máquinas de lavar roupa Plano de Projeto - versão

Leia mais

Introdução a Teste de Software

Introdução a Teste de Software Universidade Católica de Pelotas Tecnólogo em Análise e Desenvolvimento de Sistemas Disciplina de Qualidade de Software Introdução a Teste de Software Prof. Luthiano Venecian 1 Conceitos Teste de software

Leia mais

Engenharia de Software II

Engenharia de Software II Engenharia de Software II Aula 7 http://www.ic.uff.br/~bianca/engsoft2/ Aula 7-12/05/2006 1 Ementa Processos de desenvolvimento de software Estratégias e técnicas de teste de software (Caps. 13 e 14 do

Leia mais