Introdução à Engenharia de Software

Documentos relacionados
As 10 Áreas da Engenharia de Software, Conforme o SWEBOK Prof. Elias Ferreira

Rational Unified Process (RUP)

Curso de Sistemas de Informação. Karla Donato Fook DESU / DComp. Modelagem de Dados UML

Ciência da Computação ENGENHARIA DE SOFTWARE. Capítulo 1 Introdução

FUNDAMENTOS DA ANÁLISE E PROJETO DE SISTEMAS. Projeto de Programas PPR0001

ENGENHARIA DE SOFTWARE

Requisitos de sistemas

Notas de Aula 03: Introdução a Orientação a Objetos e a UML

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

ISO/IEC Processo de ciclo de vida

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

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPI JOÃO CÂMARA RATIONAL UNIFIED PROCESS - RUP

Análise e projeto de sistemas

UML (Unified Modelling Language)

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

Engenharia de Software I Processos de desenvolvimento de SW. profa. Denise Neves

Modelagem Usando Orientação à Objetos (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus

Manutenção de Software

Introdução a UML (Unified Modeling Language)

Prof. Esp. Fabiano Taguchi

Engenharia de Software

ORGANIZAÇÃO CURRICULAR TÉCNICO NA ÁREA DE INFORMÁTICA: HABILITAÇÃO TÉCNICO EM INFORMÁTICA NA MODALIDADE A DISTÂNCIA /1

Visão Geral de Engenharia de Software

Análise de Sistemas. Aula 5

Engenharia de Software

Engenharia de Software

Ciclo de vida: fases x atividades

Visão Geral do RUP (Rational Unified Process)

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

Manutenção de Software. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1º semestre de 2015

Processos de software

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

MANUAL PARA DESENVOLVIMENTO DE SOFTWARE TRABALHO DE CONCLUSAO DE CURSO EM SISTEMAS DE INFORMAÇÃO

Paradigmas de Software

Visão Geral do RUP.

Título PROCESSO LABES ESPECIALIZADO PARA DESENVOLVIMENTO SEGUNDO O PARADIGMA ESTRUTURADO. Projeto. Analista; Requisitos Funcionais Escopo; Cliente;

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

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

MODELAGEM COM A UML (UNIFIED MODELING LANGUAGE)

Análise e Projeto de Sistemas

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

Engenharia de Software

Introdução INTRODUÇÃO AO SWEBOK. Origens do corpo de conhecimentos da Engenharia de Software: Introdução a Computação e Engenharia de Software

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

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

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

PCS3413 Engenharia de Software e Banco de Dados

Requisitos de Sistemas

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

Análise e Projeto Orientados a Objetos

Engenharia de Software: Uma Visão Geral. SSC Engenharia de Software I Profa. Dra. Elisa Yumi Nakagawa 2 o semestre de 2012

Introdução à UML. Prof. Jesus José de Oliveira Neto

MODELAGEM DE SISTEMAS. Introdução a Computação e Engenharia de Software. Profa. Cynthia Pinheiro

Unidade II MODELAGEM DE PROCESSOS. Profa. Gislaine Stachissini

UML Unified Modeling Language Linguagem de Modelagem Unificada

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

Manutenção de Software. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1º semestre de 2016

Análise de Sistemas CONTEXTUALIZAÇÃO

Especificação de Sistemas de Software e a UML

27) Em relação aos Projetos de Sistemas de Software, assinale a sequência correta de desenvolvimento de um sistema:

UML 2.0 Método, Linguagem e Ferramenta. Prof. Cesar Augusto Tacla

Introdução Diagrama de Classes Diagrama de Seqüência Diagrama de Atividades. Diagramas UML. Classe, Seqüência e Atividades. Marcio E. F.

PROJETO DE BANCO DE DADOS

ENGENHARIA DE SOFTWARE

As Visões. Visões arquiteturais (revisão)

Professor Emiliano S. Monteiro

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

UML UNIFIED MODELING LANGUAGE LINGUAGEM DE MODELAGEM UNIFICADA

UML e seus diagramas

CK119: Engenharia de Software

Engenharia de Software I: Introdução. Graduação em Informática 2009 Profa. Itana Gimenes

6.1. Teste Baseado em Gramática e Outras Abordagens de Teste

Processo Unificado. Leonardo Gresta Paulino Murta

Prova Discursiva Engenharia de Software

Introdução à Engenharia de Software

QUALIDADE DE SOFTWARE

Gerência de Projetos de Software. Prof. Dr. João Dovicchi INE / CTC / UFSC.

INF1013 MODELAGEM DE SOFTWARE

Tópicos desta Aula: O que é Engenharia de Software? O que é Software? Para que serve? Qual sua importância?

Visão Geral da Norma ISO/IEC 12207

Normas ISO:

Conhecendo um pouco sobre RUP

Tópicos da Aula. A Linguagem UML. A Linguagem UML. De onde surgiu? Fundadores da UML. Introdução à UML e Diagrama de Casos de Uso.

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE

Princípios da Engenharia de Software aula 03

Engenharia de Software: Uma Visão Geral. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1 o semestre de 2015

Engenharia de Software: Uma Visão Geral. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1 o semestre de 2017

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

Engenharia de Software

DIVISÃO DE ASSUNTOS ACADÊMICOS Secretaria Geral de Cursos PROGRAMA DE DISCIPLINA

Cadeira: Engenharia de Software

Engenharia de Software

Disciplina que reúne metodologias, métodos e ferramentas a serem utilizados, desde a percepção do problema até o momento em que o sistema

Manutenção Leitura: Sommerville; Pressman

2

Transcrição:

Introdução à Engenharia de Software U N I V E R S I D A D E T E C N O L Ó G I C A F E D E R A L D O P A R A N Á D E P A R T A M E N T O A C A D Ê M I C O D E E L E T R Ô N I C A P R O F. V I T O R Y A N O

O que é Engenharia de Software? O que é Engenharia? O que é Software? Engenharia de Software Por que Engenharia de Software? Qualidade de software

O que é Engenharia? Ciência ou profissão de adquirir e de aplicar os conhecimentos matemáticos, técnicos e científicos na criação, aperfeiçoamento e implementação de utilidades, tais como materiais, estruturas, máquinas, aparelhos, sistemas ou processos, que realizem uma determinada função ou objetivo. Arte de aplicar conhecimentos científicos, conhecimentos empíricos e habilitações específicas para a criação de estruturas, dispositivos e processos que se utilizam para converter recursos naturais em formas adequadas ao atendimento das necessidades humanas.

O que é Engenharia? Ramos da engenharia: Elétrica Eletrônica Civil Mecânica Química Agrária Ambiental Genética Tráfego Florestal Naval Aeronáutica Segurança Sanitária Biomédica Alimentos Nuclear Produção Aeroespacial Computação...

O que é Engenharia? Características da Engenharia (SWEBOK, 1999): Educação de iniciação profissional validada e legitimada pela sociedade Registro da adequação à prática através de certificação voluntária ou licenciamento compulsório Desenvolvimento de habilidades especializadas e educação profissional continuada Suporte através de sociedades profissionais Compromisso a normas de conduta frequentemente estabelecidas em um código de ética

O que é Engenharia? Hoje, Engenharia tornou-se um título profissional, regulamentado, em áreas específicas do conhecimento; A diferença fundamental entre as Engenharias está nos materiais e nas teorias utilizadas; A Engenharia de Software, particularmente, se difere das outras Engenharias por não tratar de materiais concretos nem de teorias da Física.

O que é Software? Sentença escrita em uma linguagem computável, para a qual existe uma máquina capaz de interpretála. A sentença é composta por uma sequência de instruções e declarações de dados, armazenável em meio digital. Ao interpretar o software, a máquina computável é direcionada à realização de tarefas especificamente planejadas, para as quais o software foi projetado.

O que é Software? (...) o termo Programa significa o programa original e todas as cópias completas ou parciais do mesmo. Um Programa consiste em instruções legíveis por máquina, seus componentes, dados, conteúdo audiovisual (tal como imagens, texto, gravações ou figuras) e materiais licenciados relacionados. (Licença de uso de software da IBM)

O que é Software? Sistema é um conjunto de elementos e processos que se relacionam para o desempenho de um objetivo comum; O software afeta e depende do sistema utilizado; Sistema e Software não são a mesma coisa!

Engenharia de Software Engenharia de Software é uma área da Ciência da Computação voltada especificamente ao desenvolvimento de software; É a aplicação dos princípios científicos, métodos, modelos, padrões e teorias que possibilitem gerenciar, planejar, modelar, projetar, implementar, medir, analisar, manter e aprimora um sistema de software

Engenharia de Software As técnicas muito se assemelham as utilizadas por engenheiros no projeto e desenvolvimento de equipamentos, automóveis, construções, etc. Alguns conceitos estão mais relacionados à Administração empresarial do que Ciência da Computação.

Engenharia de Software Corpo de conhecimentos da Engenharia de Software: Matemática Ciência da Computação Administração de Projetos Ciências Cognitivas e Fatores Humanos Engenharia de Computadores Administração e Ciências Administrativas Engenharia de Sistemas

Engenharia de Software Conceitos fundamentais: Abstração Métodos e Notações de Análise e Design Prototipação de Interface com Usuário Modularidade e Arquitetura Ciclo de Vida e Processo de Software Reuso Métricas Suporte Automatizado

Engenharia de Software 10 áreas da Engenharia de Software (SWEBOK, 1999): Gerência de Configuração de Software Gerência de Engenharia de Software Processo de Engenharia de Software Ferramentas e Métodos Qualidade de Software Requisitos de software Design de software Construção de Software Teste de Software Manutenção de Software

Engenharia de Software Quem é o Engenheiro de Software? Programador / Gerente de projetos / Analista de negócios Contato com o cliente Conhecimento das necessidades do cliente e requisitos para o desenvolvimento do software

Por que Engenharia de Software? O processo de desenvolvimento de software não está restrito à programação; Pesquisa do Gartner Group (2002) sobre problemas no desenvolvimento de software: 80% estão relacionados ao levantamento de requisitos 20% erros de implementação

Por que Engenharia de Software? Mitos no desenvolvimento de software (Pressman): Mitos administrativos Mitos do cliente Mitos do profissional

Mitos administrativos Mito: Se a equipe dispõe de um manual de padrões e procedimentos de desenvolvimento de software, então a equipe está apta a encaminhar bem o desenvolvimento. Realidade: É necessário que o que conste no dado manual reflita a prática de desenvolvimento de software e que esta prática seja verificada com frequência, para confirmar o uso do conhecimento.

Mitos administrativos Mito: A equipe tem ferramentas de desenvolvimento de software de última geração, uma vez que eles dispõe de computadores de última geração. Realidade: Mais importante que ter um hardware de última geração é ter ferramentas para a automatização do desenvolvimento de software. As chamadas ferramentas CASE (Computer-Aided Software Engineering).

Mitos administrativos Mito: Se o desenvolvimento do software estiver atrasado, basta aumentar a equipe para honrar o prazo de desenvolvimento. Realidade: Quanto mais pessoas pegarem o barco andando, pior. Por que os novos profissionais deverão ser treinados e isto será feito por membros da equipe, o que vai implicar em maiores atrasos no cronograma.

Mitos do cliente Mito: Uma descrição breve e geral dos requisitos do software é o suficiente para iniciar o seu projeto. Maiores detalhes podem ser definidos posteriormente. Realidade: Este é um dos problemas que pode levar um projeto ao fracasso. O cliente deve ser questionado a fim de definir o mais precisamente possível os requisitos importantes para o software: funções, desempenho, interfaces, restrições de projeto e critérios de validação. Estes são pontos fundamentais para o sucesso do projeto.

Mitos do cliente Mito: Os requisitos de projeto mudam continuamente durante o seu desenvolvimento, mas isto não representa um problema, uma vez que o software é flexível e poderá suportar facilmente as alterações. Realidade: O software é mais flexível que a maioria dos produtos manufaturados, mas não existe software que suporte uma alteração significativa em seu escopo sem influenciar no custo e no prazo de entrega.

Mitos do profissional Mito: Após a edição do programa e a sua colocação em funcionamento, o trabalho está terminado. Realidade: A realidade é justamente o contrário. Segundo estatísticas, após a implantação ocorrerão 50% a 70% do esforço do desenvolvimento de software (manutenção).

Mitos do profissional Mito: Enquanto o programa não entrar em funcionamento, é impossível avaliar a sua qualidade. Realidade: A preocupação com a qualidade do software deve ocorrer durante todo o processo de desenvolvimento, ao final de cada etapa deve ser feita uma verificação dos critérios de qualidade.

Mitos do profissional Mito: O produto a ser entregue no final do projeto é o programa funcionando. Realidade: O produto final não é apenas o software funcionando, mas também um conjunto importante de documentos, que acompanham o mesmo.

Por que Engenharia de Software?

Qualidade de software O objetivo da Engenharia de Software é melhorar a qualidade dos produtos desenvolvidos. Mas o que é qualidade de software? Cliente: baixo custo, produtividade, agregação de valor ao negócio; Usuário: facilidade de uso, estabilidade, eficiência; Desenvolvedor: bem documentado, código otimizado, fácil manutenção; Infraestrutura: baixo consumo de recursos, portabilidade.

Qualidade de software Qualidade de software, como qualidade de produto, depende do propósito do software; Exemplos: controle de tráfego aéreo / editor de textos, software educacional / venda de passagens aéreas; A qualidade deve ser incorporada ao longo do processo de desenvolvimento; A qualidade do software depende da qualidade dos processos usados para desenvolvê-lo e mantê-lo.

Processo de software Processo de software é o conjunto de atividades, métodos, práticas e transformações que guiam a produção de software; A definição do processo envolve análise e especificação de requisitos, projeto, desenvolvimento e testes, mas também escolha de um paradigma, métodos, técnicas e procedimentos; Não existe uma abordagem em particular que seja a melhor para a solução da aflição de software. (Pressman)

Processo de software A definição do processo deve levar em conta: Tipo de software (sistema de informação, sistema de tempo real, etc.); Paradigma de programação (estruturado, orientado a objetos); Domínio da aplicação; Tamanho; Complexidade; Características da equipe. Diversas normas já foram propostas: ISO 9001, ISO/IEC 12207, ISO/IEC 15504, CMM e CMMI, porém o objetivo não é apresentar uma receita pronta a ser repetida, mas sim apontar caraterísticas de um bom processo.

Ciclo de vida clássico Planejamento/Engenharia de Sistemas: obtenção de dados a nível de sistema, com base em conversas com o usuário. Ter uma visão global do sistema, incluindo hardware, software e as pessoas envolvidas. Também chamado estudo de viabilidade.

Ciclo de vida clássico Análise/Especificação de Requisitos: definição dos requisitos de software, com relação a recursos. Devem ser documentados e revistos com o cliente antes de iniciar a execução do projeto.

Ciclo de vida clássico Projeto: envolve muitos passos, para transformar os requisitos da análise, o modelo lógico em modelo físico. Nesta etapa, definem-se estruturas de dados, arquitetura de software, detalhes procedimentais e interface.

Ciclo de vida clássico Construção/Codificação: o projeto é transformado em programa, usando uma linguagem de programação.

Ciclo de vida clássico Teste e Integração: realizar os testes no sistema e realizar as integrações com eventuais sistemas atuais.

Ciclo de vida clássico Operação e Manutenção: indubitavelmente o software sofrerá mudanças depois que foi entregue ao cliente. A manutenção ocorre basicamente com a correção de erros (manutenção corretiva), adaptação da aplicação a mudanças do ambiente (manutenção adaptativa) e adição de novas características ao software (manutenção evolutiva).

Ciclo de vida clássico Planejamento Análise Projeto Codificação Teste Manutenção

Gerência de projetos de software A gerência de projetos envolve: Produto: a primeira coisa a se fazer é definir o escopo do projeto. A idéia é decompor o problema. O sistema deve ser decomposto em subsistemas que são, por sua vez, decompostos em módulos. Os módulos podem, ainda, ser recursivamente decompostos em sub-módulos ou funções, até que se tenha uma visão geral das funcionalidades a serem tratadas no projeto; Processo;

Gerência de projetos de software A gerência de projetos envolve: Pessoas: diversas pessoas são envolvidas em diferentes papéis: gerente de projeto, analistas, projetistas, engenheiros de software, programadores, engenheiros de testes, gerente de qualidade, clientes, usuários, etc. Estes papéis e denominações variam bastante dependendo da organização e até mesmo do projeto. As pessoas devem ser organizadas em equipes, o que não é uma tarefa fácil.

Gerência de projetos de software Atividades típicas da gerência de projetos: Determinação do Escopo do Software Definição do Processo de Software do Projeto Estimativa de Tamanho Estimativa de Esforço Estimativa (Alocação) de Recursos Estimativa de Tempo (Elaboração do Cronograma do Projeto) Estimativa de Custos Gerência de Riscos Elaboração do Plano de Projeto

Gerência de projetos de software Ferramentas CASE auxiliam no gerenciamento de projetos de desenvolvimento de software; A documentação é de vital importância em todas as etapas do desenvolvimento. Sem documentação não há Engenharia de Software; A UML (Unified Modeling Language) é a linguagem padrão para elaboração da estrutura de projetos de software. É empregada para empregada para a visualização, a especificação, a construção e a documentação de artefatos que façam uso de sistemas complexos de software.

UML Unified Modeling Language A UML pretende ser a linguagem de modelagem padrão para modelar sistemas concorrentes e distribuídos; Os objetivos da UML são: especificação, documentação, estruturação para sub-visualização e maior visualização lógica do desenvolvimento completo de um sistema de informação.

Objetivos da UML Ajudar a conceber as ideias, em relação ao sistema projetado; Apresentar as ideias ao grupo de forma que todos possam interagir e discutir; Documentar as ideias quando elas já estiverem bem consolidadas.

Conceitos UML Ator Atividade Interface Pacote (Package) Classe Evento

Diagramas UML Estrutural: estática Diagrama de Classes Diagrama de Objetos Diagrama de Componentes Diagrama de Implantação Comportamental: dinâmica Diagrama de Casos de Uso Diagrama de Sequência Diagrama de Atividades Diagrama de Estados Diagrama de Colaboração

Diagrama de Casos de Uso

Diagrama de Casos de Uso

Diagrama de Atividades

Diagrama de Sequência

Diagrama de Estados

Diagrama de Pacotes

Diagrama de Componentes

Diagrama de Implantação

Diagrama de Objetos

Diagrama de Classes Uma classe é representada por um retângulo. Internamente deve constar seu nome, em negrito com primeira letra em maiúscula; Pessoa Uma classe possui atributos, que são exibidos em sessão inferior ao nome da classe; +nome +idade Pessoa

Diagrama de Classes Atributos e operadores possuem uma visibilidade, que pode ser: Public (+): atributos e métodos sempre acessíveis em todos os métodos de todas as classes. É o nível menos rígido de encapsulamento, que equivale a não encapsular; Private ( ): acessíveis somente nos métodos (todos) da própria classe. É o nível mais rígido de encapsulamento; Protected (#): acessíveis no pacote, nos métodos da própria classe e suas subclasses; Package (~): visível no pacote e na classe.

Diagrama de Classes Atributos têm um tipo de dado e podem ainda apresentar um valor padrão; Por fim, as operações são representadas em uma terceira sessão do retângulo, abaixo dos atributos: Pessoa +nome: String +idade: int = 18 #posiçãoxy: float[2] = {0,0} +andar(float direcaox, direcaoy): bool +dormir(): bool

Diagrama de Classes Relacionamentos: Agregação Associação (bidirecional ou unidirecional) Composição Generalização

Conceitual Diagrama de Classes

Especificação Diagrama de Classes

Implementação Diagrama de Classes