• Nenhum resultado encontrado

03-01EngSoft(IntroduçãoaEngenhariadeSoftware)

N/A
N/A
Protected

Academic year: 2021

Share "03-01EngSoft(IntroduçãoaEngenhariadeSoftware)"

Copied!
25
0
0

Texto

(1)

Engenharia de Software

Prof. Wilkerson de L. Andrade

Versão resumida e traduzida dos slides originais produzidos por Ian Sommerville, Software Engineering, 7th edition. Chapter 1.

Estes slides foram adaptados dos slides gentilmente cedidos pela professora Patrícia D. L. Machado (DSC/UFCG).

(2)

Objetivos

Introduzir Engenharia de Software e mostrar

sua importância.

Apresentar respostas para questões-chave

em engenharia de software.

Introduzir questões éticas e profissionais e

explicar porque precisam ser consideradas

por engenheiros de software.

(3)

Engenharia de Software

• As economias de todas as nações desenvolvidas são dependentes de software.

• Cada vez mais sistemas são controlados por software.

• Engenharia de Software baseia-se em teorias, métodos e ferramentas para o desenvolvimento profissional de software.

• Gastos com software representam uma parcela significativa do orçamento de países

(4)

Custos de Software

• Custos de software são geralmente dominantes em sistemas. Os custos de software em um PC são

usualmente maiores do que os custos de hardware.

• É mais caro manter um software do que

desenvolvê-lo. Para sistemas com longa vida, custos de manutenção podem ser muitas vezes maiores do que os custos de desenvolvimento.

• Engenharia de Software tem como foco o desenvolvimento de software com custos proporcionais a sua efetividade.

(5)

O que é Software?

• Programas de computador e documentação

associada tais como requisitos, modelos de projeto e manuais de uso.

• Produtos de software podem ser desenvolvidos para clientes particulares ou para um mercado mais geral.

• Software pode ser criado a partir do

desenvolvimento de novos programas,

configurando sistemas de software genéricos ou reusando software existente.

(6)

O que é Engenharia de Software?

Disciplina de engenharia que trata de todos

os aspectos da produção de software.

Engenheiros de software devem adotar uma

abordagem sistemática e organizada e usar

ferramentas e técnicas apropriadas

dependendo do problema a ser resolvido,

das restrições de desenvolvimento e dos

recursos disponíveis.

(7)

Qual a diferença entre Engenharia de

Software e Ciência da Computação?

• Ciência da Computação trata da teoria e fundamentos.

• Engenharia de software trata das práticas de

desenvolvimento e disponibilização de software.

• Teorias da Ciência da Computação ainda são insuficientes para servir como um alicerce

completo para engenharia de software (diferentemente, por exemplo de demais engenharias).

(8)

Qual a diferença entre Engenharia de

Software e Engenharia de Sistemas?

• Engenharia de sistemas trata de todos os aspectos de sistemas baseados em computador, incluindo hardware, software e processos de engenharia.

• Engenharia de software é uma parte deste

processo que trata do desenvolvimento da

infra-estrutura de software, controle, aplicações e bases de dados do sistema.

• Engenheiros de sistemas são responsáveis pela especificação, projeto arquitetural, integração e disponibilização de sistemas.

(9)

O que é um Processo de Software?

• Um conjunto de atividades cuja meta é

desenvolvimento ou evolução de software.

• São atividades genéricas em um processo de software:

Especificação - o que o sistema deve fazer quais as

restrições de desenvolvimento;

Desenvolvimento - produção do sistema de software;

Validação - Avaliação do software com relação às

demandas do seu cliente;

Evolução - Modificações no software em resposta a

(10)

O que é um Modelo de Processo de

Software?

• Uma representação simplificada de um processo de software, apresentada de acordo com uma

perspectiva específica.

• São exemplos de perspectivas de processo:

Workflow - seqüência de atividades;

Data-flow - fluxo de informação;

Role/action - quem faz o que.

• Modelos genéricos de processo:

Waterfall (Modelo Cascata);

▫ Desenvolvimento iterativo;

(11)

Quais são os custos de engenharia de

software?

• Geralmente 60% são custos de desenvolvimento e 40% são custos de teste. Para software de

particulares, os custos de evolução usualmente excedem os custos de desenvolvimento.

• Custos variam de acordo com o tipo de sistema sendo desenvolvido e os requisitos de seus

atributos tais como performance e confiabilidade.

• Custos de distribuição dependem do modelo de desenvolvimento que está sendo usado.

(12)

Distribuição de Custos por Atividade

Modelo cascata

Desenvolvimento iterativo

Engenharia de software baseada em componentes

Custos de desenvolvimento e evolução ao longo da vida do software

Evolução do sistema

10 200 30 400 0

Desenvolvimento de sistema

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

25 5 0 75 100 0

Especificação Desenvolvimento Integração e teste

2 5 5 0 75 1 00 0

Especificação Desenvolvimento iterativo Teste de sistema

2 5 5 0 75 1 00 0

(13)

Custos de Desenvolvimento do Produto

Especificação Desenvolvimento Teste de sistema

25 50 75 100

(14)

O que são Métodos de Engenharia de

Software?

• Abordagens estruturadas para o desenvolvimento de software que incluem modelos de sistemas, notações, regras, dicas de projeto e guias de processo.

• Descrições de modelos

▫ Descrições de modelos gráficos que devem ser produzidos; • Regras

▫ Restrições aplicadas a modelos do sistema; • Recomendações

▫ Sugestões sobre boas práticas de projeto; • Guias de Processo

(15)

O que é CASE

(Computer-Aided Software Engineering)

• Sistemas de software que objetivam prover suporte automático para atividades de processo de

software.

Ferramentas CASE são adotadas para dar suporte a métodos.

Upper-CASE

▫ Ferramentas de suporte a atividades iniciais do processo como análise e projeto de software;

Lower-CASE

▫ Ferramentas de suporte a atividades terminais do processo como programação, depuração e teste.

(16)

Quais são os Atributos de um

Software de Qualidade?

• O software deve prover a funcionalidade e performance requerida e deve ser manutenível, confiável e aceitável.

• Manutenibilidade

▫ Software deve permitir a incorporação de mudanças; • Confiabilidade

▫ Software deve apresentar comportamento correto e consistente;

• Eficiência

▫ Software não deve fazer mal uso de recursos do sistema; • Aceitabilidade

▫ Software deve ser aceitável por usuários para os quais foi projetado. Isto significa ser entendível, usável e compatível com outros sistemas.

(17)

Quais são os maiores desafios da

engenharia de software?

Heterogeneidade • Técnicas de

desenvolvimento que possam lidar com plataformas e ambientes de execução heterogêneos; Entrega • Técnicas de desenvolvimento que possam facilitar a entrega rápida de software; Confiança • Técnicas de desenvolvimento que possam demonstrar sua confiabilidade a usuários.

(18)

Responsabilidade Ética e Profissional

Engenharia de software envolve mais

responsabilidade do que habilidades para

aplicações de técnicas.

Engenheiros de software devem se portar de

forma ética e responsável a fim de serem

respeitados como profissionais.

Comportamento ético é mais do que

(19)

Responsabilidade Profissional

• Engenheiros devem normalmente respeitar a confidencialidade de seus empregadores ou clientes independente da existência de um contrato assinado de confidencialidade.

Confidencialidade

• Engenheiros devem ser fiéis ao

apresentar seu nível de competência.

Devem aceitar trabalho apenas dentro do escopo de sua própria competência.

(20)

Responsabilidade Profissional

• Engenheiros devem estar cientes das leis que governam o uso de propriedade intelectual tais como patentes, copyright, etc. Devem ser

cautelosos a fim de garantir que propriedade intelectual de empregadores e clientes está protegida.

Propriedade

intelectual

• Engenheiros de software não devem usar habilidades técnicas para mal uso de

computadores de terceiros. Mal uso varia de trivial (jogos na máquina do empregador) a extremamente sérios (disseminação de vírus).

Uso de

(21)

Código de Ética da ACM/IEEE

• Sociedades profissionais nos EUA têm cooperado para a produção de um código ético de prática.

• Membros destas organizações assinam o código de prática ao se juntar as mesmas.

• O código contém 8 Princípios relacionados ao comportamento e decisões tomadas por

profissionais de engenharia de software, incluindo praticantes, educadores, gerentes, supervisores, bem como estudantes da profissão.

(22)

Código de Ética - Preâmbulo

Preâmbulo

▫ Os engenheiros de software devem se

comprometer a fazer da análise, especificação, desenvolvimento, teste e manutenção de

software uma profissão benéfica e respeitada. De acordo com seu comprometimento com a saúde, segurança e bem-estar do público, os

engenheiros de software devem aderir aos seguintes Oito Princípios:

(23)

Código de Ética - Princípios

PÚBLICO • Os engenheiros de software deve agir consistentemente com o interesse público. CLIENTE E EMPREGADOR • Os engenheiros de software

devem agir dentro dos melhores interesses de seu cliente e empregador, de forma consistente com o interesse público. PRODUTO • Os engenheiros de software devem assegurar que seus produtos e as modificações a eles

relacionadas

atendam aos mais altos padrões

profissionais possíveis.

(24)

Código de Ética - Princípios

JULGAMENTO • Os engenheiros de software devem manter a integridade e a independência em seu julgamento profissional. GERENCIAMENTO • Os gerentes e líderes de engenharia de software devem aceitar e promover uma abordagem ética no gerenciamento de desenvolvimento e manutenção de software. PROFISSÃO • Os engenheiros de software devem promover a integridade e a reputação da profissão de forma consistente com o interesse público.

(25)

Código de Ética - Princípios

COLEGAS

• Os engenheiros de software devem ser honestos e colaborativos com seus colegas. INDIVÍDUO • Os engenheiros de software devem participar, ao longo da vida, aprendendo, respeitando e promovendo uma abordagem ética na prática da profissão.

Referências

Documentos relacionados

Esse modelo foi derivado de modelos de atividade de engenharia com o fim de estabelecer ordem no desenvolvimento de grandes produtos de software.. Comparado com outros modelos de

 “Gerência de Requisitos - Os requisitos do sistema são controlados de forma a estabelecer um perfil mínimo a ser utilizado pela engenharia de software e

Já o Ministério do Turismo (2010), divulga não apenas as atribuições gerais que o guia deve cumprir, mas também as atribuições específicas de acordo com a

VIVIANE APARECIDA LOPES OLIVEIRA 0002087. WECERLY PIRES

A função gerente de obras torna-se cada vez mais necessária na construção civil, pois o setor está cada vez mais desenvolvendo e aprimorando a área de coordenação

Na Nova Zelândia em sistemas pastoris as vacas produzem em média 17 litros de leite ao dia, enquanto nos produtores analisados neste estudo a média de

Sem ater-se à distinção entre Física Clássica, Moderna e Contemporânea na listagem de Ostermann e Moreira (1998), é importante observar que, apesar do trabalho refletir o anseio

Observando o perfil de TPR do catalisador RuKL (figura 88), onde as temperaturas da primeira análise de TPR alcançaram valores de 222°C e 262°C e comparando com os