Sei sulla pagina 1di 61

Introduo Engenharia de

Software
UNIVERSIDADE TECNOLGICA FEDERAL DO PARAN
DEPARTAMENTO ACADMICO DE ELETRNICA
PROF. VITOR YANO

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?
Cincia ou profisso de adquirir e de aplicar os

conhecimentos matemticos, tcnicos e cientficos na


criao, aperfeioamento e implementao de utilidades,
tais como materiais, estruturas, mquinas, aparelhos,
sistemas ou processos, que realizem uma determinada
funo ou objetivo.
Arte de aplicar conhecimentos cientficos,
conhecimentos empricos e habilitaes especficas para
a criao 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:
Eltrica
Eletrnica
Civil
Mecnica
Qumica
Agrria
Ambiental
Gentica
Trfego
Florestal

Naval
Aeronutica
Segurana
Sanitria
Biomdica
Alimentos
Nuclear
Produo
Aeroespacial
Computao
...

O que Engenharia?
Caractersticas da Engenharia (SWEBOK, 1999):
Educao de iniciao profissional validada e legitimada pela
sociedade
Registro da adequao prtica atravs de certificao
voluntria ou licenciamento compulsrio
Desenvolvimento de habilidades especializadas e educao
profissional continuada
Suporte atravs de sociedades profissionais
Compromisso a normas de conduta frequentemente
estabelecidas em um cdigo de tica

O que Engenharia?
Hoje, Engenharia tornou-se um ttulo profissional,

regulamentado, em reas especficas do


conhecimento;
A diferena fundamental entre as Engenharias est
nos materiais e nas teorias utilizadas;
A Engenharia de Software, particularmente, se difere
das outras Engenharias por no tratar de materiais
concretos nem de teorias da Fsica.

O que Software?
Sentena escrita em uma linguagem computvel,

para a qual existe uma mquina capaz de interpretla. A sentena composta por uma sequncia de
instrues e declaraes de dados, armazenvel em
meio digital. Ao interpretar o software, a mquina
computvel direcionada realizao de tarefas
especificamente planejadas, para as quais o software
foi projetado.

O que Software?
(...) o termo Programa significa o programa

original e todas as cpias completas ou parciais do


mesmo. Um Programa consiste em instrues
legveis por mquina, seus componentes, dados,
contedo audiovisual (tal como imagens, texto,
gravaes ou figuras) e materiais licenciados
relacionados. (Licena 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 no so a mesma coisa!

Engenharia de Software
Engenharia de Software uma rea da Cincia da

Computao voltada especificamente ao


desenvolvimento de software;
a aplicao dos princpios cientficos, mtodos,
modelos, padres e teorias que possibilitem
gerenciar, planejar, modelar, projetar, implementar,
medir, analisar, manter e aprimora um sistema de
software

Engenharia de Software
As tcnicas muito se assemelham as utilizadas por

engenheiros no projeto e desenvolvimento de


equipamentos, automveis, construes, etc.
Alguns conceitos esto mais relacionados
Administrao empresarial do que Cincia da
Computao.

Engenharia de Software
Corpo de conhecimentos da Engenharia de Software:
Matemtica
Cincia da Computao
Administrao de Projetos
Cincias Cognitivas e Fatores Humanos
Engenharia de Computadores
Administrao e Cincias Administrativas
Engenharia de Sistemas

Engenharia de Software
Conceitos fundamentais:
Abstrao
Mtodos e Notaes de Anlise e Design
Prototipao de Interface com Usurio
Modularidade e Arquitetura
Ciclo de Vida e Processo de Software
Reuso
Mtricas
Suporte Automatizado

Engenharia de Software
10 reas da Engenharia de Software (SWEBOK,

1999):

Gerncia de Configurao de Software


Gerncia de Engenharia de Software
Processo de Engenharia de Software
Ferramentas e Mtodos
Qualidade de Software
Requisitos de software
Design de software
Construo de Software
Teste de Software
Manuteno de Software

Engenharia de Software
Quem o Engenheiro de Software?
Programador / Gerente de projetos / Analista de negcios
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 no est

restrito programao;
Pesquisa do Gartner Group (2002) sobre problemas
no desenvolvimento de software:

80% esto relacionados ao levantamento de requisitos


20% erros de implementao

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 dispe de um manual de padres e

procedimentos de desenvolvimento de software,


ento a equipe est apta a encaminhar bem o
desenvolvimento.
Realidade: necessrio que o que conste no dado
manual reflita a prtica de desenvolvimento de
software e que esta prtica seja verificada com
frequncia, para confirmar o uso do conhecimento.

Mitos administrativos
Mito: A equipe tem ferramentas de

desenvolvimento de software de ltima gerao, uma


vez que eles dispe de computadores de ltima
gerao.
Realidade: Mais importante que ter um hardware
de ltima gerao ter ferramentas para a
automatizao 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
devero ser treinados e isto ser feito por membros
da equipe, o que vai implicar em maiores atrasos no
cronograma.

Mitos do cliente
Mito: Uma descrio 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
possvel os requisitos importantes para o software:
funes, desempenho, interfaces, restries de
projeto e critrios de validao. Estes so pontos
fundamentais para o sucesso do projeto.

Mitos do cliente
Mito: Os requisitos de projeto mudam

continuamente durante o seu desenvolvimento, mas


isto no representa um problema, uma vez que o
software flexvel e poder suportar facilmente as
alteraes.
Realidade: O software mais flexvel que a maioria
dos produtos manufaturados, mas no existe
software que suporte uma alterao significativa em
seu escopo sem influenciar no custo e no prazo de
entrega.

Mitos do profissional
Mito: Aps a edio do programa e a sua colocao

em funcionamento, o trabalho est terminado.


Realidade: A realidade justamente o contrrio.
Segundo estatsticas, aps a implantao ocorrero
50% a 70% do esforo do desenvolvimento de
software (manuteno).

Mitos do profissional
Mito: Enquanto o programa no entrar em

funcionamento, impossvel avaliar a sua qualidade.


Realidade: A preocupao com a qualidade do
software deve ocorrer durante todo o processo de
desenvolvimento, ao final de cada etapa deve ser
feita uma verificao dos critrios de qualidade.

Mitos do profissional
Mito: O produto a ser entregue no final do projeto

o programa funcionando.
Realidade: O produto final no apenas o software
funcionando, mas tambm 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, agregao de
valor ao negcio;
Usurio: facilidade de uso, estabilidade, eficincia;
Desenvolvedor: bem documentado, cdigo
otimizado, fcil manuteno;
Infraestrutura: baixo consumo de recursos,
portabilidade.

Qualidade de software
Qualidade de software, como qualidade de produto,

depende do propsito do software;


Exemplos: controle de trfego areo / editor de
textos, software educacional / venda de passagens
areas;
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,

mtodos, prticas e transformaes que guiam a


produo de software;
A definio do processo envolve anlise e
especificao de requisitos, projeto, desenvolvimento
e testes, mas tambm escolha de um paradigma,
mtodos, tcnicas e procedimentos;
No existe uma abordagem em particular que seja a
melhor para a soluo da aflio de software.
(Pressman)

Processo de software
A definio do processo deve levar em conta:

Tipo de software (sistema de informao, sistema de tempo real,


etc.);
Paradigma de programao (estruturado, orientado a objetos);
Domnio da aplicao;
Tamanho;
Complexidade;
Caractersticas da equipe.

Diversas normas j foram propostas: ISO 9001, ISO/IEC

12207, ISO/IEC 15504, CMM e CMMI, porm o objetivo


no apresentar uma receita pronta a ser repetida, mas
sim apontar caratersticas de um bom processo.

Ciclo de vida clssico


Planejamento/Engenharia de Sistemas:

obteno de dados a nvel de sistema, com base em


conversas com o usurio. Ter uma viso global do
sistema, incluindo hardware, software e as pessoas
envolvidas. Tambm chamado estudo de viabilidade.

Ciclo de vida clssico


Anlise/Especificao de Requisitos: definio

dos requisitos de software, com relao a recursos.


Devem ser documentados e revistos com o cliente
antes de iniciar a execuo do projeto.

Ciclo de vida clssico


Projeto: envolve muitos passos, para transformar os

requisitos da anlise, o modelo lgico em modelo


fsico. Nesta etapa, definem-se estruturas de dados,
arquitetura de software, detalhes procedimentais e
interface.

Ciclo de vida clssico


Construo/Codificao: o projeto

transformado em programa, usando uma linguagem


de programao.

Ciclo de vida clssico


Teste e Integrao: realizar os testes no sistema e

realizar as integraes com eventuais sistemas


atuais.

Ciclo de vida clssico


Operao e Manuteno: indubitavelmente o

software sofrer mudanas depois que foi entregue


ao cliente. A manuteno ocorre basicamente com a
correo de erros (manuteno corretiva), adaptao
da aplicao a mudanas do ambiente (manuteno
adaptativa) e adio de novas caractersticas ao
software (manuteno evolutiva).

Ciclo de vida clssico


Planejamento

Anlise
Projeto
Codificao
Teste
Manuteno

Gerncia de projetos de software


A gerncia de projetos envolve:
Produto: a primeira coisa a se fazer definir o escopo do
projeto. A idia decompor o problema. O sistema deve ser
decomposto em subsistemas que so, por sua vez,
decompostos em mdulos. Os mdulos podem, ainda, ser
recursivamente decompostos em sub-mdulos ou funes, at
que se tenha uma viso geral das funcionalidades a serem
tratadas no projeto;
Processo;

Gerncia de projetos de software


A gerncia de projetos envolve:
Pessoas: diversas pessoas so envolvidas em diferentes
papis: gerente de projeto, analistas, projetistas, engenheiros
de software, programadores, engenheiros de testes, gerente de
qualidade, clientes, usurios, etc. Estes papis e denominaes
variam bastante dependendo da organizao e at mesmo do
projeto. As pessoas devem ser organizadas em equipes, o que
no uma tarefa fcil.

Gerncia de projetos de software


Atividades tpicas da gerncia de projetos:
Determinao do Escopo do Software
Definio do Processo de Software do Projeto
Estimativa de Tamanho
Estimativa de Esforo
Estimativa (Alocao) de Recursos
Estimativa de Tempo (Elaborao do Cronograma do Projeto)
Estimativa de Custos
Gerncia de Riscos
Elaborao do Plano de Projeto

Gerncia de projetos de software


Ferramentas CASE auxiliam no gerenciamento de

projetos de desenvolvimento de software;


A documentao de vital importncia em todas as
etapas do desenvolvimento. Sem documentao no
h Engenharia de Software;
A UML (Unified Modeling Language) a linguagem
padro para elaborao da estrutura de projetos de
software. empregada para empregada para a
visualizao, a especificao, a construo e a
documentao de artefatos que faam uso de
sistemas complexos de software.

UML
Unified Modeling Language
A UML pretende ser a linguagem de modelagem

padro para modelar sistemas concorrentes e


distribudos;
Os objetivos da UML so: especificao,
documentao, estruturao para sub-visualizao e
maior visualizao lgica do desenvolvimento
completo de um sistema de informao.

Objetivos da UML
Ajudar a conceber as ideias, em relao 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: esttica
Diagrama de Classes
Diagrama de Objetos
Diagrama de Componentes
Diagrama de Implantao
Comportamental: dinmica
Diagrama de Casos de Uso
Diagrama de Sequncia
Diagrama de Atividades
Diagrama de Estados
Diagrama de Colaborao

Diagrama de Casos de Uso

Diagrama de Casos de Uso

Diagrama de Atividades

Diagrama de Sequncia

Diagrama de Estados

Diagrama de Pacotes

Diagrama de Componentes

Diagrama de Implantao

Diagrama de Objetos

Diagrama de Classes
Uma classe representada por um retngulo.

Internamente deve constar seu nome, em negrito


com primeira letra em maiscula;
Pessoa

Uma classe possui atributos, que so exibidos em

sesso inferior ao nome da classe;


Pessoa
+nome
+idade

Diagrama de Classes
Atributos e operadores possuem uma visibilidade,

que pode ser:

Public (+): atributos e mtodos sempre acessveis em todos os


mtodos de todas as classes. o nvel menos rgido de
encapsulamento, que equivale a no encapsular;
Private (): acessveis somente nos mtodos (todos) da prpria
classe. o nvel mais rgido de encapsulamento;
Protected (#): acessveis no pacote, nos mtodos da prpria
classe e suas subclasses;
Package (~): visvel no pacote e na classe.

Diagrama de Classes
Atributos tm um tipo de dado e podem ainda

apresentar um valor padro;


Por fim, as operaes so representadas em uma
terceira sesso do retngulo, abaixo dos atributos:
Pessoa
+nome: String
+idade: int = 18
#posioXY: float[2] = {0,0}
+andar(float direcaoX, direcaoY): bool
+dormir(): bool

Diagrama de Classes
Relacionamentos:
Agregao
Associao (bidirecional ou unidirecional)
Composio
Generalizao

Diagrama de Classes
Conceitual

Diagrama de Classes
Especificao

Diagrama de Classes
Implementao

Potrebbero piacerti anche