Upload
roberci-ferreira-de-sa
View
216
Download
2
Embed Size (px)
DESCRIPTION
Suncita introduçãoa Engenharia de software
Citation preview
Uma Introduo a Engenharia de Software
Slides originais elaborados por Ian SommervilleO autor permite o uso e a modicao dos slides
para ns didticos.
Engenharia de software As economias de TODAS as naes desenvolvidas
so dependentes de software.
Cada vez mais sistemas so controlados por software.
A engenharia de software se dedica s teorias, mtodos e ferramentas para desenvolvimento de software profissional
Sistemas no-triviais Com base em um conjunto de requisitos
2
Custos de software Os custos de software dominam os custos de
sistemas computacionais. Em geral, software custa mais que hardware
Manter um software custa mais que desenvolv-lo A engenharia de software dedica-se ao
desenvolvimento de software com custos adequados Respeitando o cronograma acordado Satisfazendo as necessidades dos clientes Minimizando o custo de manuteno
3
Definies Disciplina gerencial e tecnolgica que lida
com a produo e manuteno sistemtica de produtos de software desenvolvidos dentro de estimativas de custo e tempo
Multi-person construction of multi-version software
4
FAQs sobre engenharia de software O que software? O que engenharia de software? Qual a diferena entre engenharia de
software e cincia da computao? Qual a diferena entre engenharia de
software e engenharia de sistemas? O que processo de software? O que um modelo de processo de
software?
5
FAQs sobre engenharia de software Quais so os custos da engenharia de
software? Quais so os mtodos da engenharia de
software? O que CASE (Computer-Aided Software
Engeneering)? Quais so os atributos de um bom software? Quais so os desafios-chave enfrentados
pela engenharia de software?
6
O que software? Programas de computador e artefatos associados Produtos de software podem ser:
Genricos desenvolvidos para serem vendidos para uma grande variedade de clientes (e.g., Excel e Word)
Personalizados desenvolvidos para um nico cliente de acordo com as suas especificaes.
Um software novo pode ser criado atravs de desenvolvimento de novos programas; configurao de sistemas de software genricos; ou reutilizao de um software existente.
7
O que engenharia de software? Engenharia de software uma disciplina relacionada
com todos os aspectos da produo de software. ... e prope ferramentas, tcnicas e processos para:
Entender com preciso qual o problema (as necessidades associadas ao sistema que deve ser construdo/modificado)
Produzir uma soluo adequada para esse problema (umsistema pronto para usar, levando-se em considerao asnecessidades das partes interessadas)
Levando-se em conta restries de desenvolvimento e recursos disponveis
8
Qual a diferena entre engenharia de software e cincia da computao?
A cincia da computao dedica-se teoria e aos fundamentos; Engenharia de software dedica-se aos aspectos
prticos de desenvolvimento e de entrega de software
"O que" vs. "Como" Teorias de cincia da computao so ainda
insuficientes para atuar como uma base completa para a engenharia de software (diferente de, por exemplo, fsica e engenharia eltrica). Em outras palavras: no h receitas prontas!
9
Qual a diferena entre engenharia de software e engenharia de sistemas?
Engenharia de sistemas: Mais ampla Muita nfase em aspectos de hardware e infra-
estrutura Abstrao do hardware Organizao fsica das partes do sistema Aspectos de comunicao
Engloba a engenharia do software Os engenheiros de sistema esto envolvidos
em diversas atividades da engenharia de software Projeto da arquitetura Elicitao e especificao de requisitos
10
O que processo de software? Um conjunto estruturado de atividades, prticas,
artefatos e ferramentas necessrios para o desenvolvimento de um sistema de software Especificao; Desenvolvimento; Validao; Evoluo.
Exemplos: Processo Unificado (RUP), Programao Extrema, UML Components
Diferente da definio do livro!!! "processo", "modelo de processo", "mtodo" e
"metodologia"
11
O que processo de software? Alguns elementos de um processo:
Modelos de sistema: Modelos grficos que podem/devem ser produzidos e
as notaes que devem ser empregadas; Restries aplicadas aos modelos de sistema;
Recomendaes de boas prticas de projeto; Atividades que devem ser seguidas em
determinada ordem s vezes tambm prescrevem ferramentas
Um processo adere a um ou mais modelos de processo
12
O que um modelo de processo de software?
Uma representao simplificada de um processo de software, apresentado sob uma perspectiva especfica Incluindo algumas atividades e sua organizao de alto
nvel Modelos gerais de processo
Cascata; Desenvolvimento iterativo; Engenharia de software baseada em componentes.
Dois modelos no so necessariamente mutuamente excludentes!
Representaes de modelos de processo: Modelo de workflow seqncia de atividades; Modelo de fluxo de dados fluxo de informaes; Modelo de papel/ao quem faz o qu.
13
Quais so os custos da engenharia de software?
60% dos custos so custos de desenvolvimento 40% so custos de testes Para software sob encomenda, os custos de
evoluo normalmente excedem os de desenvolvimento.
Os custos variam dependendo do tipo de sistema que est sendo desenvolvido e dos requisitos do sistema, tais como desempenho e confiabilidade
A distribuio de custos depende do modelo de desenvolvimento que usado.
14
Distribuio de custos nas atividades
15
O que CASE (Computer-Aided Software Engineering)
Sistemas de software que se destinam a fornecer apoio automatizado para as atividades de desenvolvimento de software.
Sistemas CASE so usados freqentemente para apoiar um mtodo especfico
Upper-CASE Ferramentas para apoiar as atividades iniciais de
processo de requisitos e de projeto; Lower-CASE
Ferramentas para apoiar as atividades finais tais como programao, debugging e teste.
16
Quais so os atributos de um bom software?
O software deve fornecer a funcionalidade e odesempenho requeridos para o usurio e deveapresentar certas caractersticas
Facilidade de manuteno Deve ser fcil e barato fazer com que o sistema, depois de
implantado, evolua para atender s necessidades dos clientes
Confiabilidade O software deve funcionar de maneira que o usurio possa
depender dele. No caso de falha, no traz danos fsicos oueconmicos
Eficincia O software deve usar o mnimo de recursos e prover mxima
funcionalidade Usabilidade
O software deve ser compreensvel e fcil de usar
17
Quais so os desafios-chave enfrentados pela engenharia de software?
Heterogeneidade Sistemas de software devem ser capaz de lidar com diferentes
plataformas de hardware e ambientes de execuo;
Entrega O sistema deve ser entregue ao cliente no menor tempo
possvel, com o menor custo possvel;
Confiana O usurio deve poder justificadamente depositar sua confiana
no sistema
Escala O sistema deve funcionar adequadamente mesmo quando um
grande nmero de usurios o est usando
18
Responsabilidade profissional e tica
A engenharia de software envolve responsabilidades mais amplas do que simplesmente a aplicao de habilidades tcnicas.
Os engenheiros de software devem se comportar de modo honesto e eticamente responsvel para serem respeitados como profissionais.
O comportamento tico mais do que simplesmente a sustentao de leis.
19
Questes de responsabilidade profissional
20
Confidencialidade Os engenheiros de software devem normalmente respeitar a
confidencialidade de seus funcionrios ou clientes, independentemente de ter ou no assinado um acordo formal.
Caso no aceitem essas condies, devem deixar isso expicito para seus contratantes
Competncia Os engenheiros no devem conscientemente aceitar um
trabalho que esteja fora de sua competncia.
Questes de responsabilidade profissional
Direitos sobre propriedade intelectual
Desenvolvedores devem estar cientes das leis locais que regem o uso de propriedade intelectual, tais como patentes, direitos autorais, etc.
Eles devem tomar cuidado para assegurar que a propriedade intelectual dos funcionrios e clientes seja protegida.
21
Dilemas ticos Discordncia, em princpio, das polticas
da gerncia snior. Um funcionrio age de uma forma no
tica e libera um sistema de segurana crtico sem finalizar o teste do sistema.
Participao no desenvolvimento de sistemas de armamentos militares ou de sistemas nucleares
22
Atividade para casa
23
Nmero do slide 1Engenharia de softwareCustos de softwareDefiniesFAQs sobre engenharia de softwareFAQs sobre engenharia de softwareO que software?O que engenharia de software?Nmero do slide 9Nmero do slide 10O que processo de software?O que processo de software?O que um modelo de processo de software?Nmero do slide 14Distribuio de custos nas atividadesNmero do slide 16Quais so os atributos de um bom software?Quais so os desafios-chave enfrentados pela engenharia de software?Nmero do slide 19Questes de responsabilidade profissionalQuestes de responsabilidade profissionalDilemas ticosAtividade para casa