Sei sulla pagina 1di 27

Uma Introduo a Engenharia

de Software e Sistemas
Centro de Informtica - Universidade Federal de Pernambuco
Engenharia da Computao
Kiev Gama
kiev@cin.ufpe.br
Slides originais elaborados por Ian Sommerville e adaptado pelos professores Marcio Cornlio, Vinicius Garcia e Kiev Gama
O autor permite o uso e a modificao dos slides para fins didticos

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

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

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

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

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

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
Methods for the Multi-person construction
of multi-version software(Parnas)

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

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

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

FAQs sobre engenharia de software


Quais so os custos 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

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

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

Tipos de Aplicao

Stand-alone
Interativas baseadas em transaes
Sistemas de controle embarcados
Sistemas de processamento em batch
Sistemas de entretenimento
Sistemas de modelagem e simulao
Sistemas de coleta de dados
Sistemas de sistemas
Chapter 1 Introduction

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

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 (um
sistema pronto para usar, levando-se em considerao as
necessidades das partes interessadas)
Levando-se em conta restries de desenvolvimento e
recursos disponveis

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

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!

10

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Qual a diferena entre engenharia de software e


engenharia de sistemas?

Engenharia de sistemas:
Mais ampla
Muita nfase em aspectos de hardware e infraestrutura
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
11

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

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

12

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

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
13

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

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.

14

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

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.

15

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Distribuio de custos nas atividades

16

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

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

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Quais so os atributos de um bom software?


O software deve fornecer a funcionalidade e o
desempenho requeridos para o usurio e deve
apresentar 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 ou
econmicos

Eficincia
O software deve usar o mnimo de recursos e prover mxima
funcionalidade

Usabilidade
O software deve ser compreensvel e fcil de usar
18

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

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

19

Diversidade da Engenharia de Software


H vrios tipos de sistemas de software, e no
existe um conjunto universal de regras que
seja aplicvel para todos eles

Os mtodos e ferramentas de E.S. a serem


utilizados dependem do tipo de aplicao a
ser desenvolvida, dos requisitos do cliente e
da experincia da equipe de desenvolvimento.

20

Fundamentos da Engenharia de Software


Alguns princpios fundamentais se aplicam a todos os
tipos de sistemas de software, independente das
tcnicas a serem empregadas:
Sistemas devem ser desenvolvidos utilizando um processo
de desenvolvimento gerenciado e compreendido.
Obviamente, diferentes processos so usados para
diferentes tipos de software.
Dependabilidade (Dependability) e performance so
importantes para todos os tipos de sistema.
Entender e gerenciar a especificao do software e
requisitos (o que o sistema deve fazer) importante.
Quando adequado, deve-se reutilizar software que j foi
desenvolvido ao invs de escrever um novo software.
21

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

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

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Questes de responsabilidade profissional


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.

23

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

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.

24

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

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
25

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Software Engineering Body of Knowledge

SWEBOK Padro internacional publicado pelo IEEE - www.swebok.org/


Guia contendo tudo o que aceito como parte do corpo de conhecimento
necessrio para a engenharia de software
Dividido em reas de Conhecimento (Knowledge Areas KA)

Software requirements
Software design
Software construction
Software testing
Software maintenance
Software configuration management
Software engineering management (Engineering management)
Software engineering process
Software engineering models and methods
Software quality
Software engineering professional practice
Software engineering economics
Computing foundations
Mathematical foundations
Engineering foundations

26

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Bibliografia
Sommerville, Ian. Engenharia de Software, 9
edio. Pearson Education

27

Potrebbero piacerti anche