Profa. MSc. Daniela Gibertoni

Slides:



Advertisements
Apresentações semelhantes
Desenvolvimento de Sistemas
Advertisements

Análise e Projeto de Sistemas I
Gerenciamento de Projetos
Objetivos do Capítulo Utilizar o processo de desenvolvimento de sistemas delineado neste capítulo e o modelo de componentes de SI, do Capítulo 1, como.
Engenharia de Software
Engenharia de Software
Análise e Projeto de Sistemas I
Engenharia de Software
Engenharia de Software
Rational Unified Process(RUP)
Engenharia de Software Professor Sandro de Paiva Carvalho.
Centrado na arquitetura
INTRODUÇÃO A INFORMÁTICA
FACULDADE DOS GUARARAPES
Faculdade de Ciências Sociais de Aplicadas de Petrolina – FACAPE
Processo Desenvolvimento de Software Tradicional
SISTEMA DE INFORMAÇÕES DESENVOLVIMENTO DE SISTEMAS
TIPOS DE TESTES APLICÁVEIS E NÃO APLICÁVEIS AO PROJETO
Como Desenvolver Sistemas de Informação
TSDD Teste de segurança durante o desenvolvimento.
Modelos de Processos de Software
Engenharia de Software
ENTERPRISE RESOURSE PLANNING
Configuração de manutenção
Engenharia de Software Respostas do Questionário 01
Engenharia de Software Conceitos
Desafios do desenvolvimento de software
Prof.Alfredo Parteli Gomes
Fundamentos de Engenharia de SW
Cap 2 – Processo de Software
Processos de Desenvolvimento de Software – Parte 2
Projeto: Capacitação em GP
Análise e Projeto de Sistemas
Análise e Projeto de Sistemas
Prof. Alexandre Vasconcelos
Engenharia de Software
Introdução e Fundamentos Engenharia de Requisitos
Modelos de Processo de Software
Engenharia de Software
PSBD II Projeto de Sistemas de Banco de Dados II
O Processo de desenvolvimento de software
Especificação em Projeto de Sistemas
Bruno Silva Desenvolvido a partir de
O Processo Unificado (UP)
Análise e Projeto de Sistemas UNIVERSIDADE DE CRUZ ALTA Ciência da Computação 2010/1.
Engenharia de Software
Engenharia de software I
O que é? É o processo de investigação técnica com intuito de identificar a qualidade, a segurança e a exatidão do software desenvolvido. A validação do.
Engenharia de Software
Processos de Software.
Processos de Software.
Técnicas e Projeto de Sistemas
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE AULA 5
Gestão de projetos de Software GTI-16
Engenharia de Software
Engenharia de Software
Engenharia de Software
Uma Introdução à Engenharia de Software
APSI II Análise e Projeto de Sistemas de Banco de Dados II.
RUP – Rational Unified Process Márcia Seabra Cabral Prof. Augusto Sampaio Centro de Informática - UFPE.
ISO9001:2000 para Software Professor: Alexandre Vasconcelos Equipe: Amanda Pimentel Börje Karlsson Danielly Karine Erika Pessoa Jorge Cavalcanti Jose Edson.
Apresentação Leonardo Brussolo de Paula
Programa criado em Apoio ao programa: Ministério da Ciência e Tecnologia da Finep Banco Interamericano de Desenvolvimento Universidades e Governo.
Introdução – ISO Conceitos relacionados a Norma NBR ISO/IEC 12207; Procedimentos de ciclo de vida e desenvolvimento de software; Objetivos e a estrutura.
Desenvolvimento de Software I
Processos de Software Ludimila Monjardim Casagrande 1º Semestre Desenvolvimento e Qualidade.
TESTES DE SOFTWARE – AULA 1 Prof. Me. Ronnison Reges Vidal
CMMI Capability Maturity Model Integration
O Processo Unificado (PU). 2 O que é o Processo Unificado (PU)? É um modelo de processo de software baseado no modelo incremental, visando a construção.
Disciplina: Análise e Projeto de Sistemas I Aula 04: Engenharia de Software Profa. MSc. Daniela Gibertoni.
Transcrição da apresentação:

Profa. MSc. Daniela Gibertoni Disciplina: Análise e Projeto de Sistemas I Aula: Engenharia de Software Profa. MSc. Daniela Gibertoni

Profa. MSc Daniela Gibertoni Software Software não é apenas o programa, mas todos os dados de documentação e configuração associados, necessários para que o programa opere corretamente. Um sistema de software consiste, geralmente, de um conjunto de programas separados; arquivos de configuração, que são utilizados para configurar esses programas; documentação do sistema, que descreve a estrutura do sistema; a documentação do usuário , que explica como usar o sistema; e sitesWeb por meio dos quais os usuários obtém informações recentes sobre o produto. Profa. MSc Daniela Gibertoni

Profa. MSc Daniela Gibertoni Dois tipos de software Produtos genéricos: são sistemas do tipo stand-alone, produzidos por uma organização de desenvolvimento e vendidos no mercado para qualquer cliente disposto a comprá-los. Dentre os exemplos deste tipo de produtos estão os softwares para PCs, como banco de dados, processadores de texto e ferramentas de gerenciamento de projetos. Produtos sob encomenda (ou personalizados): são os sistemas encomendados por um determinado cliente. O software é desenvolvido especialmente para aquele cliente por uma empresa de software. Profa. MSc Daniela Gibertoni

Profa. MSc Daniela Gibertoni Dois tipos de software Uma diferença importante entre esses dois tipos de software é que, em produtos genéricos, a organização que desenvolve o software controla sua especificação. Para produtos encomendados, a especificação é normalmente desenvolvida e controlada pela organização que compra o software Profa. MSc Daniela Gibertoni

Profa. MSc Daniela Gibertoni ERP Muitas empresas de software desenvolvem um produto genérico e modificam-no de acordo com as necessidades de um cliente específico. Sistemas de planejamento de recursos empresariais (ERP – Enterprise Resource Planning), como sistemas SAP, são os melhores exemplos desse método. Nesse caso, um sistema grande e complexo é adaptado a uma empresa, incorporando informações sobre as regras e os processos de negócio, relatórios necessários, etc. Profa. MSc Daniela Gibertoni

O que é Engenharia de Software É uma disciplina de engenharia relacionada com todos os aspectos da produção de software, desde os estágios iniciais de especificação do sistema até sua manutenção, depois que este entrar em operação. Dois pontos importantes: Disciplina de engenharia: os engenheiros fazem as coisas funcionarem. Eles aplicam teorias, métodos e ferramentas onde for apropriado, mas eles os usam de forma seletiva e sempre procuram descobrir soluções para os problemas. Os engenheiros reconhecem também que devem trabalhar sob restrições organizacionais e financeiras, e procuram soluções sem perder de vista essas restrições. Profa. MSc Daniela Gibertoni

O que é Engenharia de Software Todos os aspectos da produção de software: a engenharia de software não está relacionada apenas com os processos técnicos de desenvolvimento de software, mas também com atividades como gerenciamento de projeto de software e o desenvolvimento de ferramentas, métodos e teorias que apóiem a produção de software. Profa. MSc Daniela Gibertoni

A diferença entre engenharia de software e ciência da computação Ciência da computação diz respeito às teorias e aos métodos que constituem a base de computadores e sistemas de software; Engenharia de software se dedica aos problemas práticos da produção de software. Algum conhecimento da ciência da computação é essencial para os engenheiros de software. Profa. MSc Daniela Gibertoni

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 está relacionada ao desenvolvimento de hardware, projeto de políticas e de processos e implantação do sistema, assim como com a engenharia de software. Profa. MSc Daniela Gibertoni

Profa. MSc Daniela Gibertoni Processo de software Um processo de software é um conjunto de atividades e resultados associados que produz um produto de software. Existem quatro atividades fundamentais de processo: Especificação de software: clientes e engenheiros definem o software a ser produzido e as restrições para a sua operação; Desenvolvimento de software: o software é programado e projetado; Validação de software: na qual o software é verificado para garantir que é o que o cliente deseja; Evolução do software: o software é modificado para se adaptar às mudanças dos requisitos do cliente e do mercado. Profa. MSc Daniela Gibertoni

Modelo de processo de software Um modelo de processo de software é uma descrição simplificada desse processo de software que apresenta uma visão dele. Os modelos de processo incluem as atividades, que fazem parte do processo de software, os produtos de software e os papéis das pessoas envolvidas. Exemplos: Um modelo de workflow: mostra a sequência de atividades ao longo do processo, com suas entradas, saídas e dependências entre elas. As atividades neste modelo representam ações humanas; Profa. MSc Daniela Gibertoni

Modelo de processo de software Um modelo de fluxo de dados: representa o processo como um conjunto de atividades, no qual cada atividade realiza alguma transformação de dados. Mostra como a entrada de um processo, como uma especificação é transformada em uma saída. As atividades nesse modelo podem representar transformações realizadas por pessoas ou por computadores; Um modelo de papel ação: representa os papéis das pessoas envolvidas no processo de software e as atividades pelas quais são responsáveis. Profa. MSc Daniela Gibertoni

Modelo de processo de software O modelo em cascata: considera as atividades apresentadas anteriormente e as representa como fases separadas de processo, como especificação de requisitos, projeto de software, implementação, teste e assim por diante. Depois que cada estágio é concluído, ele é aprovado e o desenvolvimento prossegue para o estágio seguinte; Desenvolvimento iterativo: esta abordagem intercala as atividades de especificação, desenvolvimento e validação. Um sistema inicial é desenvolvido rapidamente com base em especificações muito abstratas. É então refinado com as informações do cliente, para produzir um sistema que satisfaça as necessidades deste. O sistema pode, então, ser entregue. Como alternativa, ele pode ser reimplementado, utilizando uma abordagem mais estruturada, para produzir um sistema mais robusto e mais fácil de ser mantido. Profa. MSc Daniela Gibertoni

Modelo de processo de software Engenharia de software baseada em componentes (Component Based Software Engineering): esta técnica supõe que partes do sistema já existam. O processo de desenvolvimento concentra-se mais na integração dessas partes do que no seu desenvolvimento a partir do início. Profa. MSc Daniela Gibertoni

Custos da engenharia de software Modelo cascata 25 50 75 100 Especificação Projeto Desenvolvimento Integração e teste Desenvolvimento iterativo 25 50 75 100 Especificação Desenvolvimento iterativo Teste de sistema Engenharia de software baseada em componentes 25 50 75 100 Especificação Desenvolvimento Integração e teste Profa. MSc Daniela Gibertoni

Profa. MSc Daniela Gibertoni Custos de desenvolvimento e evolução ao longo da vida do software 100 200 300 400 Desenvolvimento de sistema Evolução do sistema Custos de desenvolvimento do produto Modelo cascata 25 50 75 100 Especificação Desenvolvimento Teste de sistema Profa. MSc Daniela Gibertoni

Métodos de engenharia de software É uma abordagem estruturada para o desenvolvimento de software, cujo objetivo é facilitar a produção de software de alta qualidade dentro de custos adequados. Métodos tais como Análise Estruturada, orientado para função (ainda usado), método orientados a objetos e agora com a fusão de ambas, a UML (Unified Modeling Language) Profa. MSc Daniela Gibertoni

Atributos de um bom software Características do produto Descrição Facilidade de manutenção O software deve ser escrito de modo que possa evoluir para atender as necessidades de mudança dos clientes. É um atributo fundamental, pois a mudança de software é uma consequência inevitável de um ambiente de negócios em constante mutação Confiança O nível de confiança do software tem uma série de características, incluindo confiabilidade, proteção e segurança. Um software confiável não deve causar danos físicos ou econômicos no caso de falha no sistema Profa. MSc Daniela Gibertoni

Atributos de um bom software Características do produto Descrição Eficiência O software não deve desperdiçar os recursos do sistema, como memória e ciclos do processador. Portanto, a eficiência inclui tempo de resposta, tempo de processamento, utilização de memória etc Usabilidade O software deve ser usável, sem esforço excessivo, pelo tipo de usuário para o qual ele foi projetado. Isso significa que ele deve apresentar uma interface com o usuário e documentação adequadas. Profa. MSc Daniela Gibertoni

Responsabilidade profissional e ética Confidencialidade: você deve respeitar a confidencialidade de seus funcionários ou clientes, independentemente de ter ou não assinado um acordo formal; Competência: você não deve desvirtuar seu nível de competência. Você não deve conscientemente aceitar um trabalho que esteja fora de sua competência; Direitos sobre propriedade intelectual: você deve estar ciente das leis locais que regem o uso de propriedade intelectual tais como patentes e direitos autorais. Você deve tomar cuidado para assegurar que a propriedade intelectual de funcionários e clientes seja protegida; Mau uso de computadores: você não deve usar suas habilidades técnicas para fazer mau uso dos computadores de outras pessoas. O mau uso de computadores varia desde o relativamente trivial (execução de jogos na máquina do funcionário, por exemplo) até o extremamente sério (disseminação de vírus). Profa. MSc Daniela Gibertoni

Profa. MSc Daniela Gibertoni Exercícios 1- Quais são as diferenças entre o desenvolvimento de produto genérico de software e o desenvolvimento de software sob encomenda? 2 – Por que é apropriado considerar que o software é mais do que os programas que podem ser executados pelos usuários finais do sistema? 3- Quais são os quatro principais atributos que todos os produtos de software devem ter? Sugira quatro outros atributos que às vezes podem ser significativos. Profa. MSc Daniela Gibertoni

Modelo em cascata – ciclo de vida de software Definição de requisitos Projeto de sistema e software Implementação e teste de unidade Integração e teste de sistema Operação e manutenção Profa. MSc Daniela Gibertoni

Modelo em cascata – ciclo de vida de software Análise e definição de requisitos: os serviços, restrições e objetivos do sistema são definidos por meio de consulta aos usuários do sistema. Eles são, portanto, definidos detalhadamente e servem como uma especificação de sistema; Projeto de sistema e software: o processo de projeto de sistema divide os requisitos em sistemas de hardware ou de software. Ele estabelece uma arquitetura geral do sistema. O projeto de software envolve a identificação e a descrição das abstrações fundamentais do sistema de software e suas relações; Profa. MSc Daniela Gibertoni

Modelo em cascata – ciclo de vida de software Implementação e teste de unidade: durante esse estágio, o projeto de software é realizado como um conjunto de programas ou unidades de programa. O teste unitário envolve a verificação de que cada unidade atende à sua especificação; Integração e teste de sistema: as unidades individuais de programa ou os programas são integrados e testados como um sistema completo para garantir que os requisitos de software foram atendidos. Após os testes, o sistema de software é liberado para o cliente; Operação e manutenção: geralmente (embora não necessariamente) esta é a fase mais longa do ciclo de vida. O sistema é instalado e colocado em operação. A manutenção envolve a correção de erros não detectados nos estágios anteriores do ciclo de vida, no aprimoramento da implementação das unidades de sistema e na ampliação dos serviços de sistema à medida que novos requisitos são identificados. Profa. MSc Daniela Gibertoni

Comentários importantes – modelo cascata O resultado de cada fase consiste de um ou mais documentos aprovados (‘assinados’); A fase seguinte não deve começar antes que a fase anterior tenha terminado. Obs.: na prática, esses estágios se sobrepõem e trocam informações entre si; durante o projeto são identificados problemas com requisitos; durante a codificação, são encontrados problemas de projeto e assim por diante. O processo de software não é um modelo linear simples; envolve uma sequência de iterações das atividades de desenvolvimento. Profa. MSc Daniela Gibertoni

Vantagens e desvantagens do modelo cascata Documentação produzida em cada fase Aderência a outros modelos de processo de engenharia Desvantagens: Divisão inflexível do projeto em estágios distintos. Os compromissos devem ser assumidos no estágio inicial do processo, o que torna difícil reagir às mudanças de requisitos do usuário Profa. MSc Daniela Gibertoni

Considerações finais modelo cascata O modelo cascata deve ser usado apenas quando os requisitos forem bem compreendidos e houver pouca probabilidade de mudanças radicais durante o desenvolvimento do sistema. No entanto, o modelo em cascata reflete o tipo de modelo de processo usado em outros projetos de engenharia. Consequentemente, processos de software baseados nessa abordagem são ainda usados para o desenvolvimento de software. Profa. MSc Daniela Gibertoni

Modelo em espiral O modelo em espiral

Desenvolvimento em espiral Foi originalmente proposto por Boehm, 1988 Cada loop na espiral está dividido em quatro setores: 1- Definição de objetivos: os objetivos específicos dessa fase do projeto são definidos. As restrições sobre o processo e o produto são identificadas e um plano detalhado de gerenciamento é elaborado. Os riscos de projeto são identificados; 2- Avaliação e redução de riscos: para cada risco de projeto identificado, uma análise detalhada é realizada. Providências são tomadas para reduzir o risco. Por exemplo, se houver risco de que os requisitos não sejam apropriados, um protótipo do sistema poderá ser desenvolvido; Profa. MSc Daniela Gibertoni

Desenvolvimento em espiral 3- Desenvolvimento e validação: após a avaliação de risco, um modelo de desenvolvimento para o sistema é selecionado. Por exemplo, se os riscos da interface com o usuário forem dominantes, um modelo de desenvolvimento apropriado pode ser a prototipação evolucionária. Se os riscos de segurança constituírem a principal consideração, o desenvolvimento baseado em transformações formais pode ser o mais apropriado e assim por diante. O modelo em cascata pode ser o mais apropriado se o principal risco identificado for a integração de subsistemas. Profa. MSc Daniela Gibertoni

Desenvolvimento em espiral 4- Planejamento: o projeto é revisado e uma decisão é tomada para prosseguimento ao próximo loop da espiral. Se a decisão for pelo prosseguimento, serão elaborados planos para a próxima fase do projeto. Um ciclo da espiral começa com a elaboração dos objetivos, como desempenho e funcionalidade. Os caminhos alternativos para alcançar esses objetivos e as restrições impostas sobre cada um deles são, então, enumerados.Cada alternativa é avaliada em relação a cada objetivo e as fontes de riscos de projeto são identificadas. O próximo passo é resolver esses riscos por meio de atividades de coleta de informações, tais como análise mais detalhada, prototipação e simulação. Após a avaliação dos riscos, é realizada uma parte do desenvolvimento, seguida pela atividade de planejamento para a próxima fase do processo. Profa. MSc Daniela Gibertoni

Profa. MSc Daniela Gibertoni Exercícios 1- Explique como o modelo em cascata de processo de software pode ser acomodado no modelo do processo espiral. Profa. MSc Daniela Gibertoni

Referência bibliográfica SOMMERVILLE, Ian. Engenharia de software. Ed. Prentice Hall, São Paulo, 2007. Cap.1 e 4 Profa. MSc Daniela Gibertoni