O Papel do Software
Especialização em Comércio
Eletrônico e Economia Digital
Objetivos
Descrever os principais tipos de software
Examinar software de sistemas e sistemas
operacionais
Explicar a evolução do software
Analisar as principais linguagens de
programação
Descrever as abordagens ao desenvolvimento
de software
Identificar temas relacionados com software
Desafios da Gerência de TI
O que é software?
Software de sistema
Software de aplicação
Novas ferramentas de software e
abordagens
Gestão do patrimônio de software
Software
Instruções detalhadas que controlam a
operação de um computador
Programa: conjuntos de instruções ao
computador
Conceito de programa armazenado
Software de sistema: gerencia os recursos de
um computador
Software de aplicação: aplicativo específico
para um domínio específico
O Computador
SOFTWARE
APPLICATION SOFTWARE
SYSTEM SOFTWARE
HARDWARE
OPERATING SYSTEM:
SCHEDULED COMPUTER
EVENTS
ALLOCATES
COMPUTER RESOURCES
MONITORS EVENTS
LANGUAGE TRANSLATORS:
INTERPRETERS
COMPILERS
UTILITY PROGRAMS:
PROGRAMMING LANGUAGES:
ROUTINE OPERATIONS
MANAGE DATA
ASSEMBLY LANGUAGE; FORTRAN;
COBOL; PL / 1; QBASIC; PASCAL; C; C++;
FOURTH GENERATION LANGUAGES
Multiprogramação
Sistema de um único
programa
Ambiente de
multiprogramação
PROGRAMA 1
MEMÓRIA LIVRE
SISTEMA
OPERACIONAL
SISTEMA
OPERACIONAL
PROGRAMA 1
PROGRAMA 2
PROGRAMA 3
MEMÓRIA LIVRE
Multitarefa
Multiprogramação em um sistema monousuário com um microcomputador
Memória Virtual
Mecanismo de tratamento de vários
programas na memória principal
Um programa é dividido em:


Porções de comprimento fixo (páginas) ou
De comprimento variável (segmentos)
As porções em execução residem na memória
principal
As páginas são trocadas (swapped) conforme
a necessidade
Time Sharing
Many users sharing a powerful CPU
O tempo da CPU é dividido em fatias (slices;
de 2 microsegundos, por exemplo)
Por conta da rapidez da CPU, ela pode
executar muitas instruções durante uma fatia
de tempo
Os jobs dos usuários são trocados no final de
cada fatia
Multiprocessamento
2 ou mais processadores paralelos em
um sistema
Um programa pode ser dividido para ser
executado por múltiplas CPUs
Pode processar grandes programas de
forma mais eficiente
Tradução de Linguagens
Código-fonte: instruções em linguagem
de alto nível (entrada de um
processador de linguagem)
Compilador: traduz código de alto nível
em linguagem de máquina
Código-objeto: instruções traduzidas e
prontas para execução pelo computador
Processo de Compilação
SOURCE CODE
PROGRAM
COMPIL
ER
OBJECT CODE
LINKA
GE
EDITOR
LOAD MODULE
OTHER OBJECT
CODE MODULES
Graphical User Interface (GUI)
O sistema operacional e os programas
usam:


Ícones gráficos (Icons, Buttons, Bars,
Boxes)
mouse
Para disparar comandos e fazer
seleções
Sistemas Operacionais
MS Windows 95/98

32-bit operating system; GUI; Multitasking.
Networking
MS Windows NT/Me/2000

32-bit operating system not limited to Intel chips.
Multitasking; Multiprocessing; Networking
MS Windows CE

Paired-down for handheld computers, wireless
communication devices
Sistemas Operacionais
OS/2

32-bit. Developed for IBM PS/2. Multitasking;
Networking
UNIX

For powerful Microcomputers, Workstations,
Minicomputers. Multitasking; Multi-user
Processing; Networking. Portable to various
Computer Platforms
Linux

Gratuito, é uma alternativa confiável para UNIX e
Windows. Roda em muitas plataformas.
Sistemas Operacionais
Apple MacOS

For Macintosh computers. Multitasking.
Powerful Graphics; Multimedia
Microsoft DOS

For IBM (PC-DOS) and PC (MS-DOS).
Program Memory: 640K
Palm PalmOS

Para compudores de mão (palmtops)
Linguagens de Programação
Paradigmas de Linguagens de
Programação
Imperativo

C, Cobol, Fortran, Pascal
Funcional

Haskell, Standard ML, Miranda
Lógico

Prolog
Orientado a Objetos

Java, Eiffel, Simula
Orientado a Agentes

Agent-0
Gerações de Linguagens de
Programação
Primeira :: Desde a década de 40: Linguagem
de máquina; código binário
Segunda :: Desde os primeiros anos da
década de 50: Linguagem Assembly;
mnemônicos para código numérico
Terceira :: Desde meados da década de 50:
Linguagens de alto nível (Fortran, Cobol, etc)
Quarta :: Desde o final da década de 70:
Pacotes de aplicações modernos
Linguagens de Alto Nível
FORTRAN (FORmula TRANslator):
Scientific, Engineering applications
COBOL (COmmon Business Oriented
Language): Predominant for transaction
processing
BASIC (Beginners All-purpose Symbolic
Instruction Code): General purpose PC
language
Linguagens de Alto Nível
(cont.)
PASCAL: Used to teach structured
programming practices. Weak in file
handling, input / output
C and C++: Powerful PC Language for
developing applications. Efficient
execution; cross platform. C++ is
object oriented
Linguagens de Quarta
Geração (4GL)
CAN BE EMPLOYED BY END USERS
NONPROCEDURAL
CAN DEVELOP APPLICATIONS QUICKLY
NATURAL LANGUAGES
6 categorias
Linguagens de Quarta
Geração (4GL)
1 Linguagens de Consulta:




Recuperam dados eficientemente
Interativas/on-line
Podem usar linguagem natural (!)
Suportam solicitações especiais de dados
de bancos de dados relacionais
Linguagens de Quarta
Geração (4GL)
2 Geradores de relatórios:


Cria relatórios personalizados
Grande número de formatos possíveis
3 Linguagens gráficas:


Pode manipular desenhos, gráficos, fotos,
vídeos
Gerenciadores de apresentação
Linguagens de Quarta
Geração (4GL)
4 Geradores de Aplicação:



O usuário especifica as necessidades do
sistema
O gerador cria lógica e código para a
aplicação
Reduz drasticamente o tempo de
desenvolvimento
Linguagens de Quarta
Geração (4GL)
5 Linguagens de Programação de
Altíssimo Nível:



Ferramenta de produtividade para o
programador profissional
Usa menos comandos
Reduz o tempo de desenvolvimento
Linguagens de Quarta
Geração (4GL)
7 Pacotes de software: conjunto de
programas




Processadores de texto
Planilhas eletrônicas
Gerenciadores de bancos de dados
Software de apresentação
Facilitam o uso e a aprendizagem
MS Office 2000, Sun StarOffice
Ferramentas de Software
Processadores de texto
Planilhas eletrônicas
Gerenciamento de dados
Programas para apresentação
Suites de software integradas
E-mail
Web browsers
Groupware
Programação Orientada a
Objetos
Combina procedimento e dado num único
objeto
Um programa envia mensagem a um objeto
para executar determinado procedimento
encapsulado (método)
O dado do objeto é encapsulado e isolado do
resto do sistema
Possibilita a reutilização de código
Reduz o tempo e custo para construção de
software
Programação Orientada a
Objetos
VISUAL PROGRAMMING: SELECT AND
ARRANGE OBJECTS RATHER THAN WRITE
CODE
CLASS: ALL OBJECTS OF A CLASS HAVE ALL
FEATURES OF THAT CLASS
INHERITANCE: SPECIFIC CLASS RECEIVES
FEATURES OF A MORE GENERAL CLASS
OVERRIDE: SUBCLASS MAY OVEERRIDE
INHERITED METHOD (e.g.: Printout of an
HOURLY worker Pay Check may differ from
that of a WEEKLY worker
Programação Orientada a
Objetos
JAVA: Sun Microsystems OBJECT-ORIENTED
PROGRAMMING LANGUAGE
APPLET: TINY PROGRAM TO EXECUTE SMALL
FUNCTION
APPLETS DOWNLOADED FROM NETWORK
RUN ON ANY COMPUTER & OPERATING
SYSTEM
RESULT SAVED ON NETWORK, NOT ON PC
ONLY NETWORK VERSION OF SOFTWARE
NEEDS UPGRADE
Programação Orientada a
Objetos
ActiveX: Controls for Windows software
environment to enable OBJECTS: e.g.,
CHARTS
TABLES
ANIMATIONS
to be EMBEDDED IN A WEB PAGE
O Processo de Construção de
Software
Alguns pontos iniciais
importantes:
O que é uma metodologia?
E uma metodologia de desenvolvimento
de software?
Qual a importância de uma metodologia
para a sua empresa?
O que é a Engenharia de
Software?
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.
Objetivos da Engenharia de
Software
Qualidade de software
Produtividade no desenvolvimento,
operação e manutenção de software
Qualidade versus Produtividade
Permitir que profissionais tenham
controle sobre o desenvolvimento de
software dentro de custos, prazos e
níveis de qualidade desejados
Qualidade de Software
(para o Varejo)
Correto

A loja não pode deixar de cobrar por produtos
comprados pelo consumidor
Robusto e altamente disponível

A loja não pode parar de vender
Eficiente


O consumidor não pode esperar
A empresa quer investir pouco em recursos
computacionais (CPU, memória, rede)
Qualidade de Software
(para o Varejo)
Amigável e fácil de usar

A empresa quer investir pouco em treinamento
Altamente extensível e adaptável


A empresa tem sempre novos requisitos (para
ontem!)
A empresa quer o software customizado do seu
jeito (interface, teclado, idioma, moeda, etc.)
Reusável

Várias empresas precisam usar partes de um
mesmo sistema
Qualidade de Software
(para o Varejo)
Aberto, compatível, de fácil integração com
outros sistemas

A empresa precisa de controle de estoque,
fidelização, etc.
Portável e independente de plataforma
(hardware e software)

A empresa pode optar por uma determinada
plataforma
Baixo custo de instalação e atualização

A empresa tem um grande número de PDVs
Produtividade
Custo de desenvolvimento reduzido


A empresa consumidora quer investir
pouco em software
A empresa produtora tem que oferecer
“software barato”
Tempo de desenvolvimento reduzido

Suporte rápido às necessidades do
mercado
“Software Barato”
Nem tanto resultado de baixos custos
de desenvolvimento, mas
principalmente da distribuição dos
custos entre vários clientes.
Reuso, extensibilidade e adaptabilidade são
essenciais para viabilizar tal distribuição.
Elementos e Atividades da
Engenharia de Software
Elementos





Modelos do ciclo de
vida do software
Linguagens
Ferramentas
Métodos
Processos
Atividades








Planejamento e
Gerenciamento
Gerência de
Configuração e
Mudanças
Modelagem do negócio
Elicitação de requisitos
Análise e Projeto
Implementação
Testes
Implantação
Modelos do Ciclo de Vida de
Software
Força bruta, gambiarra, hacking,
marreta
Cascata
Espiral
Iterativo (do RUP)
Prototipagem evolucionária
Força bruta, gambiarra,
hacking, marreta
Modelo Cascata
Modelo Cascata na Prática
Modelo Espiral
Iterativo (do RUP)
Fases
Fluxos de Processo
Concepção
Elaboração
Iteração
Preliminar
Iter.
#1
Construção
Transição
Requisitos.......................................
Análise & Projeto............................
Implementação...............................
Testes.............................................
Implantação....................................
Fluxo de Suporte
Planejamento e Gerenciamento.....
Iter.
#2
Iter.
#i
Iter.
#i+1
Iterações
Iter.
#i+2
Iter.
#n
Iter.
#n+1
Linguagem
Notação com sintaxe e semântica bem
definidas

com representação gráfica ou textual
Usada para descrever os artefatos
gerados durante o desenvolvimento de
software
Exemplos: UML, Java, C++, Delphi
Método
Descrição sistemática de como deve-se
realizar uma determinada atividade ou
tarefa
A descrição é normalmente feita através
de padrões e guias
Metodologia

conjunto de métodos (+ processo)
Exemplos: Booch, BON, Pim
Ferramenta
Provê suporte computacional a um
determinado método
Ambiente de desenvolvimento: conjunto de
ferramentas integradas (CASE)
Exemplos:




Rational Rose
IBM VisualAge for Java
Inprise Jbuilder
Microsoft SourceSafe
Processo
Conjunto de atividades





bem definidas
com responsáveis
com artefatos de entrada e saída
com dependências entre as mesmas e
ordem de execução
com modelo de ciclo de vida
Seleção de Software
Adequabilidade
Eficiência
Compatibilidade
Suporte
Fontes de Recursos na Internet
http://www.microsoft.com
http://www.bds.org
http://www.javasoft.com
http://www.gamelan.com
http://www.eiffel.com
http://www.perl.com
http://www.perl.org
http://www.python.org
http://www.neosoft.com/tcl
http://www.caldera.com
http://www.redhat.com
news: comp.lang
news: comp.lang.c
news: comp.lang.smalltalk
Download

O Papel do Software