disciplina: análise e projeto de sistemas i aula: engenharia de software profa. msc. daniela...

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

Upload: carmem-lobo-de-figueiredo

Post on 07-Apr-2016

213 views

Category:

Documents


0 download

TRANSCRIPT

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

Disciplina: Análise e Projeto de Sistemas I

Aula: Engenharia de Software

Profa. MSc. Daniela Gibertoni

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

Profa. MSc Daniela Gibertoni 2

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.

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

Profa. MSc Daniela Gibertoni 3

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.

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

Profa. MSc Daniela Gibertoni 4

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

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

Profa. MSc Daniela Gibertoni 5

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.

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

Profa. MSc Daniela Gibertoni 6

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.

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

Profa. MSc Daniela Gibertoni 7

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.

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

Profa. MSc Daniela Gibertoni 8

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.

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

Profa. MSc Daniela Gibertoni 9

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.

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

Profa. MSc Daniela Gibertoni 10

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.

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

Profa. MSc Daniela Gibertoni 11

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;

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

Profa. MSc Daniela Gibertoni 12

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.

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

Profa. MSc Daniela Gibertoni 13

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.

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

Profa. MSc Daniela Gibertoni 14

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.

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

Profa. MSc Daniela Gibertoni 15

Custos da engenharia de softwareModelo cascata

0 25 50 75

Especificação Projeto Desenvolvimento Integração e teste

0 25 50 75

Especificação Desenvolvimento iterativo Teste de sistema

Desenvolvimento iterativo

0 25 50 75

Especificação Desenvolvimento Integração e teste

Engenharia de software baseada em componentes

100

100

100

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

Profa. MSc Daniela Gibertoni 16

Custos de desenvolvimento e evolução ao longo da vida do software0 100 200 300

Desenvolvimento de sistema Evolução do sistema

0 25 50 75

Especificação Desenvolvimento Teste de sistema

Custos de desenvolvimento do produtoModelo cascata

400

100

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

Profa. MSc Daniela Gibertoni 17

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)

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

Profa. MSc Daniela Gibertoni 18

Atributos de um bom softwareCaracterí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

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

Profa. MSc Daniela Gibertoni 19

Atributos de um bom softwareCaracterí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.

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

Profa. MSc Daniela Gibertoni 20

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).

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

Profa. MSc Daniela Gibertoni 21

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.

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

Profa. MSc Daniela Gibertoni 22

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

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

Profa. MSc Daniela Gibertoni 23

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;

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

Profa. MSc Daniela Gibertoni 24

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.

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

Profa. MSc Daniela Gibertoni 25

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.

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

Profa. MSc Daniela Gibertoni 26

Vantagens e desvantagens do modelo cascata Vantagens:

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

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

Profa. MSc Daniela Gibertoni 27

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.

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

Profa. MSc Daniela Gibertoni

Modelo em espiral

O modelo em espiral

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

Profa. MSc Daniela Gibertoni 29

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;

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

Profa. MSc Daniela Gibertoni 30

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.

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

Profa. MSc Daniela Gibertoni 31

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.

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

Profa. MSc Daniela Gibertoni 32

Exercícios

1- Explique como o modelo em cascata de processo de software pode ser acomodado no modelo do processo espiral.

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

Profa. MSc Daniela Gibertoni 33

Referência bibliográfica

SOMMERVILLE, Ian. Engenharia de software. Ed. Prentice Hall, São Paulo, 2007. Cap.1 e 4