Você está na página 1de 58

Faculdade de Tecnologia

de São Caetano do Sul

Engenharia de Software I

Prof. Msc Adilson Ferreira da Silva


1
Análise e Desenvolvimento de
Sistemas
Aptidões do profissional de ADS
•Projetar e implementar sistemas de acordo com as
necessidades institucionais;
•Coordenar infra-estruturas de tecnologia da informação,
elaborando políticas e diretrizes a partir da análise de
necessidades;
•Realizar consultoria em Sistemas de Informação, avaliando
e selecionando recursos de software e hardware;
•Atuar em Centros de Pesquisa, de Ensino ou de
desenvolvimento de software;
•Empreender seu próprio negócio em informática.
Competências gerais
• Capacidade para identificar necessidades, desenvolver e
implementar soluções, utilizando a tecnologia da
informação;

Competências específicas
•Analisar as áreas funcionais da empresa e suas
necessidades em relação aos sistemas de informação.

•Elaborar os planos de desenvolvimento de sistemas de


informação focalizando todas as áreas de negócio da
empresa.
Grade curricular
1º SEMESTRE ILM-001 Programação em Microinformática
IAL-002 Algoritmos e Lógica de Programação
IHW-100 Laboratório de Hardware
IAC-001 Arquitetura e Organização de Computadores
AAG-001 Administração Geral
MMD-001 Matemática Discreta
LIN-100 Inglês I

IES-100 Engenharia de Software I


2º SEMESTRE

ILP-010 Linguagem de Programação


ISI-002 Sistemas de Informação
CCG-001 Contabilidade
MCA-002 Cálculo
LPO-001 Comunicação e Expressão

LIN-200 Inglês II
Engenharia de Software I
Objetivo: Aplicar os princípios e conceitos da Engenharia de Software na
implementação do componente software, como parte dos Sistemas de
Informação e iniciar a modelagem de software (requisitos).

Ementa: Objetivos, conceitos e evolução da Engenharia de Software.


Paradigmas de desenvolvimento de software. Evolução das metodologias
de sistemas e suas principais técnicas. Processo de desenvolvimento de
software. Modelos de software. Ciclo de vida. Qualidade de software e
seus modelos. Melhores práticas no desenvolvimento de software.

Bibliografia básica:
PRESSMAN, R. S. Engenharia de software. 6.ed. McGraw-Hill, 2006.
SOMMERVILLE, I. Engenharia de software. 8.ed. Addison Wesley, 2007.

6
Método de Ensino
Objetivo das Aulas:
- Fundamentação Teórica
- Atividades práticas de desenvolvimento

Forma de avaliação:
- Conforme regimento interno.
- A nota do bimestre será composta pela média das atividades
(40%) e Nota da Avaliação oficial (60%)
- Caso não hajam atividades programadas pelo Professor, a média
do Bimestre será equivalente a nota da prova oficial.
Método de Ensino
Entrega de atividades individuais ou em grupo:
- Por email: afs.software@gmail.com
Assunto: Fatec-ADSVA2-99-RA-RA-RA....
onde: 99 – nº da Atividade
RA – nº do RA do aluno
Corpo do email:
RA, Nome dos alunos
Instruções (caso necessário)
Anexos: No formato original. (sem compactar)
*** O Professor vai enviar uma resposta confirmando o recebimento.
Método de Ensino
A Jornada se inicia.....

10
TI aplicada aos negócios

11
Casos de sucesso com software

Stanford Larry Page e Sergey Brin


Fonte: http://guizone.blogspot.com/2011/07/os-10-nerds-mais-bem-
sucedidos-da.html

Reid Hoffmann
Orkut Buyukkoten Mark Zuckerberg Fonte: http://guizone.blogspot.com/2011/07/os-10-
Fonte: http://valterandrade.blogspot.com/2010/06/o- Fonte: http://guizone.blogspot.com/2011/07/os-10-nerds- nerds-mais-bem-sucedidos-da.html
criador-da-rede-social-orkut.html mais-bem-sucedidos-da.html 12
Evolução da Internet e dos
dispositivos de computação

13
Dispositivos móveis

14
Só para Entretenimento?

15
TI aplicada aos negócios

16
TI aplicada aos negócios

17
Tecnologias para construção de software?

18
Como construir software sem defeitos?

19
Objetivos, Conceitos e
Evolução da Engenharia
de Software
Problemas com o Software
Não funcionam como o esperado
Custo maior que o estimado
Mudanças geram problemas

Fonte: Pressman (2006)


Entrega fora do prazo
A Direção da Fatec XYZ solicitou o desenvolvimento de
um software para possibilitar a obtenção de uma relação
das aulas práticas ministradas no Laboratório em um
período (intervalo de datas).

Atividade 01: Apresentar uma proposta para


solução deste problema.

- Grupo de 4 alunos

22
Modelagem
É atividade de construir modelos que facilitam o
entendimento e compreensão das características ou
comportamento de um software ou sistema de software.
Exemplo: Programação
Exemplo: Banco de dados
Exemplo: Análise de Requisitos
Análise Estruturada de Sistemas (DFD)
Exemplo: Análise de Requisitos
Análise orientada a objetos (UML)
Engenharia de Software
Uma Tecnologia em camadas

Ferramentas
Métodos

Processos
Foco na qualidade

Fonte: Pressman (2006)


Engenharia de Software

Métodos

Compreendem tarefas técnicas que devem ser executadas


para construir o software.

Exemplos: analisar requisitos, elaborar plano de teste,


configurar equipamentos, codificação, etc.
Engenharia de Software

Ferramentas

Fornecem apoio automatizado e semi-automatizado para o


desenvolvimento de software.

Exemplos: Compiladores, editores de texto, debuggers,


frameworks para testes de software, etc..
Engenharia de Software

Processos

Conjunto de atividades que devem ser desempenhadas para


a construção de um Software.

Serve como um guia para o desenvolvedor construir


software de qualidade, respeitando os prazos e custos
esperados.

Processos da Engenharia de Software - 31


RUP

Sequencial
linear Processo
Unificado

Espiral
XP

Scrum

Processos da Engenharia de Software - 32


Paradigmas de
desenvolvimento de
Software
Modelo sequencial linear
Requisitos
Análise
Projeto
Codificação
Teste
Manutenção

Desenvolvimento sequencial e sistemático, uma fase se


inicia quando outra termina, pois subprodutos gerados em
uma fase serão utilizados na fase seguinte.

Processos da Engenharia de Software - 34


Modelo sequencial linear
Aplicação
- Em situações onde o problema é bem compreendido pelos
usuários e desenvolvedores.

Vantagens
- Simplicidade
- Etapas de trabalho bem definidas

Desvantagens
- O trabalho é visível para o usuário apenas na entrega.
- Requisitos “não podem” mudar

35
Paradigmas de desenvolvimento de Software - 35
Modelo de Prototipagem

Fonte: Pressman (2006)


Paradigmas de desenvolvimento de Software - 36
Modelo de Prototipagem
Aplicação
- Em situações onde o problema não é bem compreendido
pelos usuários do sistema e desenvolvedores.

Vantagem
- Obtenção e validação dos requisitos através de interações
entre desenvolvedor e usuário do sistema para avaliar o
protótipo.

Desvantagem
-O desenvolvedor tende a não considerar aspectos que
foram desconsiderados para facilitar a construção do
protótipo.
Paradigmas de desenvolvimento de Software - 37
Modelo incremental

Definir Atribuir requisitos Projetar arquitetura


Requisitos iniciais a incrementos do sistema

Desenvolver Validar Integrar Validar


Incremento incremento incremento sistema

Sistema pronto
Fonte: Sommerville (2007)
Processos de Engenharia de Software - 38
Modelo incremental
Aplicação
- Em situações onde a exigência para entrega é alta e a
compreensão do usuário sobre o problema não é
satisfatória.
Vantagem
- Obtenção e validação dos requisitos através de interações
entre desenvolvedor e usuário do sistema que subsidiam a
construção de uma parte do sistema.

Desvantagem
- Dificuldades para o desenvolvedor efetuar a integração
com outros sistemas.

Paradigmas de desenvolvimento de Software - 39


Metodologias para
Desenvolvimento de
Sistemas e Principais
Técnicas
Manifesto Ágil - Princípios
1. Nossa maior prioridade é satisfazer o cliente desde o inicio
2. Modificações de requisitos são bem-vindas, mesmo que tardiamente
3. Entrega de software funcionando frequentemente, a cada duas semanas até dois meses
4. O pessoal de negócio e o desenvolvedor devem trabalhar juntos diariamente durante
todo o projeto
5. Construção de projeto em torno de indivíduos motivados
6. Comunicação face a face com a equipe
7. A principal medida de progresso é o software funcionando
8. Processos ágeis promovem desenvolvimento sustentável
9. Excelência técnica e bom projeto facilitam a agilidade
10. Simplicidade é essencial
11. As melhores arquiteturas, requisitos e projetos surgem de equipes auto-organizadas
12. Em intervalos regulares a equipe reflete sobre como se tornar mais efetiva, então
sintoniza e ajusta adequadamente o seu comportamento.

Processos ágeis
Exemplos

Extreme
programming

DAS
DSDM

FDD

SCRUM
CRYSTAL

Processos ágeis
XP – Extreme Programming
Projeto simples, cartões CRC Soluções de ponta, protótipos
Histórias do usuário, valores,
critérios de teste de aceitação,
plano de iteração

Projeto

Planejamento Refatoração
Codificação

Teste
Programação em pares

Teste unitário
Incremento de software Teste de aceitação integração contínua
velocidade calculada do
projeto
Processos ágeis
Scrum
Fases
• Planejamento
• Sprints Reunião diária
do Scrum 24h
• Encerramento

Acúmulo de
tarefas pela 30 dias
equipe
Sprint Backlog

Nova demonstração
Levantamento de de funcionalidade
prioridades do produto
Fonte: Santos e Luz (2002)
Processos de Engenharia de Software - 44
Referencias

SANTOS, R. G., LUZ, G. D., Métodos Ágeis, USP- Universidade de São


Paulo, 2002. disponível em www.ime.usp.br/~gdaltonl/ageis/ageis2003.ppt
acesso em 01/02/2012.

PRESSMAN, R. S. Engenharia de software. 6.ed. McGraw-Hill, 2006.

SOMMERVILLE, I. Engenharia de software. 8.ed. Addison Wesley, 2007.


Processo de
Desenvolvimento de
Software
Faculdade de Tecnologia
de São Caetano do Sul

Engenharia de Software I

Modelagem de casos de uso

Prof. Msc Adilson Ferreira da Silva


47
Modelagem
É atividade de construir modelos que facilitam o
entendimento e compreensão das características ou
comportamento de um software ou sistema de software.
Exemplo: Programação
Exemplo: Banco de dados
Exemplo: Análise de Requisitos
Análise Estruturada de Sistemas (DFD)
Exemplo: Análise de Requisitos
Análise orientada a objetos (UML)
Ator, caso de uso, comunicação
Inclusão (include)
Exemplo:

Referência no texto do caso de uso inclusor:


Include(Fornecer Identificação)
Extensão (extend)
Generalização
Resumo da Notação
Obrigado!

Você também pode gostar