Software
Programas de computador e documentação associada
Produtos de software podem ser desenvolvidos para um
cliente particular ou podem ser desenvolvidos para um
mercado geral
Tudo que esteja envolvido com a operação correta do
programa.
Instrucoes que quando executadas fornecem
catacteristicas, funcoes e desempenho desejados
Estruturas de dados que possibilitam aos programas
manipular informacoes adequadamente
Informacao descritiva, tanto na forma impressa quanto
virtual, descrevendo a operacao e o uso dos programas 2
Software de Sistemas (Software Básico)
o Programas escritos para servir a outros programas. Ex:
Compiladores, Sistemas Operacionais.
Software de Aplicação
o Programas que resolvem uma necessidade específica de um
negócio. Ex: Aplicações comerciais, tempo real, controle de
processos, ponto de venda, sistemas de gestão.
Software para Linhas de Produto
o Dirigido a clientes. Ex: Office, Entretenimento, Multimídia
Software Científico e de Engenharia
o Cálculos Estruturais, Naves espaciais
3
Software Embutido
oProdutos inteligentes: microondas, automóveis.
Software de Inteligência Artificial
oAlgoritmos não-numéricos, sistemas especialistas,
redes neurais.
Aplicações da WEB
oB2B, Aplicações de comércio eletrônico, Páginas
hipertexto.
4
Manutenibilidade
o O SW deve ser escrito de forma que possa evoluir para atender as
necessidades dos clintes
Confiança e Proteção
o Um SW confiavel nao deve causar prejuizos fisicos ou economicos
no caso de falha de Sistema
Eficiencia
o O SW nao deve desperdiçar os recursos do Sistema como memoria e
ciclos do processador
Aceitabilidade
o O SW deve ser aceitavel para o tipo de usuario para o qual foi
projectado. Isso significa que deve ser compreensivel, usavel e
compativel com os outros sistemas usados por ele
5
Software cada vez
Maior
Mais funcionalidades
Mais complexo
Abrangendo mais usuários
Exigindo a participação de equipes em seu
desenvolvimento
6
CAUSAS
Evolução significativa de hardware e
software.
Necessidade de criação de sistemas cada
vez maiores e mais complexos.
Surgiu em 1968 como uma solução para a
“crise de software”.
7
Introdução de novo hardware de computador baseado em
circuitos integrados.
o Viabilização de propostas de aplicações até então impossíveis.
oO software era ordens de grandeza maior e mais complexo.
A experiência inicial na construção destes sistemas.
O desenvolvimento informal de software não era suficiente.
oGrandes atrasos em projetos.
oAlto custo de software, inclusive manutenção.
oDesempenho insatisfatório.
Necessidade de novas técnicas e métodos para controlar a
complexidade.
8
Introdução de erros no processo
oMá especificação
oMau projeto
oMá implementação
oTestes incompletos ou mal feitos
Problemas na gerência
oFalta de treinamento em novas técnicas de
desenvolvimento
oO processo está evoluindo muito rapidamente em
função do aprendizado. É necessário reciclar. 9
Dificuldades no Trabalho com Software
oMedidas pobres de eficiência e qualidade
oInsatisfação do usuário é frequente
Pouco entendimento dos requisites
Problemas de Comunicação entre o usuário e o analista
oA qualidade do software é frequentemente suspeita
Poucas medidas e critérios de qualidade
oSoftware existente é muito difícil de manter
E tem que ser mantido até ser substituído
10
Estudo ou aplicação de abordagens sistemáticas,
económicas e quantificáveis para o desenvolvimento,
operação e manutenção de software de qualidade.
Disciplina de Engenharia que se preocupa com todos
aspectos de producao e software
Engenheiros de software devem adoptar uma
abordagem sistemática e organizada para seu trabalho
e usar ferramentas e técnicas/métodos apropriados
dependendo do problema a ser solucionado, das
restrições de desenvolvimento e dos recursos
disponíveis
11
Ciencia de Computacao vs Engenharia de Software
Ciencia de Computacao
o foca a teoria e os fundamentos
Engenharia de Software
o Preocupa-se com o lado pratico do desenvolvimento e entrega de software
uteis
Engenharia de Sistemas vs Engenharia de Software
Engenharia de Sistemas
o Preocupa-se com todos aspectos do desenvolvimento de sistemas
computacionais, inluindo engenharia de hardware, software e processo
Engenharia de Software
o Uma parcela da engenharia de sistemas
12
Controle sobre o desenvolvimento de software dentro de custos,
prazos e níveis de qualidade desejados
Produtividade no desenvolvimento, operação e manutenção de
software
Qualidade versus Produtividade
Produzir e manter o software dentro de custos adequados é essencial
para o funcionamento da economia nacional e internacional.
Ramo da engenharia cujo foco é o desenvolvimento dentro de custos
adequados de sistemas de software de alta qualidade.
Entendimento das atividades envolvidas no desenvolvimento.
Desenvolvimento de métodos eficazes de especificação, projeto e
implementação de software.
Novas notações e ferramentas reduzem o esforço necessário para
produzir sistemas complexos e de grande porte.
13
Razao de Existir: Agregar valor para os usuarios
KISS (Keep It simple, Stupid): Todo projecto
deve ser o mais simples possivel, mas nao
simpista
Mantenha a visao: Uma visao clara ‘e essencial
para o sucesso
Esteja abeto ao futuro: Sistemas precisam estar
prontos para se adaptar a mudancas
Visao na reeutilizacao: reeutilizacao de codigo
foi uma das grandes bandeiras da OO
14
Avanços mais importantes na Engenharia
de Software:
Aparecimento da UML como padrão para a
descrição de sistemas orientados a objetos.
Desenvolvimento de métodos ágeis, como o
Extreme Programming.
oDesenvolvimento rápido de sistemas.
oEnvolvimento dos usuários na equipe.
oRedução de documentos e burocracia no
processo de software. 15
Porque pontes são geralmente construídas a tempo e a um custo conhecido e
softwares raramente os são?
3000 anos de experiência a mais
Engenharia Civil: Clara separação entre especificação e execução
o Especificação detalhada antes de “colocar a mão na massa”
o Uma vez que a especificação é aceita, pouco se pode fazer para alterar
o Terrenos não estão constantemente mudando
Conclusão
o Projetos de software possuem maiores riscos e devem ser gerenciados com
atenção voltada às mudanças
16
FERRAMENTAS
Apoio automatizado para o processo e para os métodos
MÉTODOS (Notações)
o Técnica de como fazer para construir software. Conjunto de
tarefas que incluem comunicação, análise de requisitos,
modelagem de projeto, construção de programas, testes e
manutenção.
PROCESSO (Procedimentos)
o Alicerce da ES. Arcabouço para utilização da tecnologia. Permite o
desenvolvimento racional de softwares. Base de controle gerencial
de projetos de software. Onde os métodos são aplicados. Roteiro
FOCO NA QUALIDADE
o Base da ES. Gestão de qualidade total, cultura de processo
contínuo de qualidade.
17
Quais os passos para construir o software?
Seqüência dos métodos
osequência de passos e atividades
Resultados
odocumentos, relatórios, módulos
Controles
ocoordenação, critérios de qualidade, pontos de
controle
Equipe
18
Atividades
oEspecificação de Software.
oDesenvolvimento de Software
Projeto e Implementação.
oValidação do Software
Verificação de acordo com os requisitos do
cliente.
oEvolução do Software
Modificações para se adaptar às mudanças
dos requisitos do cliente e do mercado.
19
Como construir o software?
Abordagem estruturada para desenvolvimento
de software.
Base:
oModelos de desenvolvimento de sistema, que
pode ser representado graficamente.
oUso dos modelos como especificação e no
projeto de sistema.
Análise Estruturada
UML
20
Computer-Aided Software Engineering (CASE)
É preciso muito software para desenvolver software!
Programas usados para dar apoio às atividades do
processo de
software.
Associada ao método, executa uma verificação com relação
a notações e conceitos específicos do método.
São editores de diagramas.
Podem conter um gerador de código.
21
O software que satisfaz os requisitos solicitados pelo
usuário. Deve ser fácil de manter, ter boa performance,
ser confiável e fácil de usar
Alguns atributos de qualidade
Manutenibilidade : O software deve evoluir para
atender os requisitos que mudam
Eficiência: O software não deve desperdiçar os
recursos do sistema
Usabilidade: O software deve ser fácil de usar pelos
usuários para os quais ele foi projetado
22
Qualidade de software e produtividade
garantem:
Disponibilidade de serviços essenciais
Segurança de pessoas
Competitividade das empresas
o Produtores
o Consumidores
23
Engenharia de software é uma disciplina de engenharia que está
envolvida com todos os aspectos da produção de software
Produtos de software consistem de programas desenvolvidos e
documentação associada. Alguns atributos de qualidade do produto
são manutenibilidade, eficiência e usabilidade
O processo de software consiste nas atividades que são envolvidas
no desenvolvimento de produtos de software
Métodos são formas organizadas de produzir software. Eles incluem
sugestões para o processo a ser seguido, as notações a serem
usadas, regras que governam as descrições do sistema que são
produzidas e diretrizes de projeto
Ferramentas CASE são sistemas de software que são projetados
para suportar as atividades rotineiras no processo de software, como
edição de diagramas de projeto e verificação de consistência dos
diagramas 24
Paradigma é um conjunto de regras que estabelece fronteiras e
descreve como resolver problemas dentro destas fronteiras. Os
paradigmas influenciam nossa percepção: ajudam-nos a organizar e
a coordenar a maneira como olhamos para o mundo
Existem varios paradigmas para o desenvolvimento de SW:
Modelos Prescritivos:
o “São modelos que definem um conjunto distinto de atividades, tarefas,
marcos e produtos de trabalho que são necessários para fazer
engenharia de software com alta qualidade.”
o Processos “que se baseiam em uma descrição de como as atividades
são feitas.
Modelos Ageis
25
Modelos Prescritivos:
Cascata
Modelo V
Prototipacao
Espiral
Iterativo
INCREMENTAL
Modelos Ageis
Scrum
Xtremme Programing
Kanban
Crystal Family
RAD, ...
26
Depende
Se o projecto ‘e grande ou complex
A forca financeira do cliente
O tempo que o cliente esta disponivel para dar ao projecto
As tecnologias que vao ser usadas
Se todos os requisites sao de conhecimento previo ou nao.
27