Click here to load reader
Upload
eduardo-monteiro
View
526
Download
1
Embed Size (px)
Citation preview
�
Software e Engenharia de Software
��� � ��� ����� � ������������ � � � � ������
1) O queé software? � Programasdecomputador � Entidade abstrata. � Ferramentas (mecanismos) pelas quais:
exploramos os recursosdo hardware.
executamos determinadas tarefas
resolvemos problemas.
interagimoscom a máquina.
tornamos o computador operacional.
1) O queé software?
Conceito mais amplo que inclui também: � Instruções que executam uma função
desejada. � Estrutura de dados para manipular
informação.� Documentos para desenvolver, operar e
manter os programas.
2) Dificuldades para desenvolversoftware � Saber o queo softwaredeve fazer : quais os
requisitos (abstração); � Ferramentas; linguagem; so� Tempo ecustos elevadosdedesenvolvimento. � Prever falhas (antes deentregar). � Tratar manutenção e versões. � Produtividade não crescecom a demandade
serviços.
3) Característicasdo Software � softwarenão éum elemento físico; é um elemento
lógico (não tem propriedades físicas, como visualizar, medir ...)
� abstração maior; o produto final édiferente� o softwarenão podeser manufaturado; custos
estão concentradosno desenvolvimento enão na manufatura.
� o processo degerenciamento édiferente; orelacionamento entreaspessoas édiferente;
3) Característicasdo Software� existem diferentes abordagens para sechegar no
produto final� o softwarenão sedesgastacom o uso; mas
deteriora-se� não há peçasde reserva. => manutenção, correção,
aperfeiçoamento. � não éconstruído aproveitando-secomponentes
prontos. � um erro duranteum teste=> erro de projeto; mais
difícil de testar.
�
4) CrisedeSoftware
Alguns autores associam a palavra “crise” aos problemas para desenvolver software
4. Crise do Software – Eras da Computação��� � ��� � ����� ��� ���������� ��������� ���������� �� !� "#��$ �� �%���& �(' ��) � "#�*$ � + ,�� ' � '�- �� �$ �*. �( � '/� ��021 �� 3 � ��.%-
4. Crise do Software – Eras da Computação�(� 4 5�� � � �*67� ' $��8�*���� 9 ��) � � �* :��;��<� �� = �7!> �@? �*��)� 37A�B >�� � $C� �&� $��D �*����� ������ �*����� �(��� -*� �� ,�* E . �� ,�D$��� �*����� �����
4. Crise do Software – Eras da Computação5�� 4 F(� � = ��� . ��� �����*���� � � � �� �* A � � �� G(��H $ � � I�J� K ����$ � �����L$���G/��� M ��. �* ���
4. Crise do Software – Eras da ComputaçãoF(� 4 NONONON�PQ����� � �������� � � � �� �* R�� :>/� . � ��) � � �* � ? ��$��* TSU��������� � � � !>�� � ��021 � �V�(����) �
4. Crise do Software – Eras da Computação� �*���� ��� ����WX������021 � 4 �� # ,��!G�) ��Y� � ��6C� ' $��DWX�(����0:1 � � Z � � � ��� '*B � � G � ) B
J ) 6 � )� = �(� . �(� ����W[�(����0:1 � � �V�* . ��) B ��� � ��) B NONON� P\����� � �DWX�(����0:1 � � A]3 J � � B ) 6�$��
.2��' V��) � �* � P_^ B 6�������$ � ���* +$��>�� � 6����� � B ) 6`$����� :>/� . � � � . ��021 �L��� �< �() B� ������� � '/� �* !NONON
�
4) CrisedeSoftware
Problemas: � Software inadequado. � Cronogramas ecustos imprecisos - dificuldades
em prever o progresso duranteo desenvolvimento. � Inexistência de dados históricos sobreo processo
dedesenvolvimento. � Comunicação deficiente- insatisfação deusuários.� Carênciadeconceitos quantitativos sobre
confiabilidade, qualidade, reusabilidade. � Software existenteé dedifícil manutenção.
4) CrisedeSoftware
Solução: � Combinar métodos para as fases de
desenvolvimento. � Ferramentas para automatizar esses
métodos. � Técnicas para assegurar qualidade.
=> Disciplina: Engenharia de Software.
5) Engenharia de Software� Abordagem sistemática para o desenvolvimento,
operação edescartede software. � Aplicação práticadeconhecimento científico ao
projeto econstrução de software. � Disciplina que utiliza princípiosdeengenharia
para produzir emanter softwares dentro deprazosecustos estimados.
5) Engenharia de Software� Objetivos: Melhorar a qualidade do
software eaumentar a produtividade esatisfação profissional de engenheiros de software.
� Definição: Disciplina que utilizaumconjunto de métodos, técnicas e ferramentas para analisar, projetar e gerenciar desenvolvimento e manutenção de software.
5) Engenharia de Software5) Engenharia de Software
� Métodos e Técnicas: como fazer� Metodologias: como aplicar� Ferramentas: Automatizam os métodos,
dão apoio à utili zação dos mesmos.CASE => (Computer-Aided Software Engineering): Ferramentas integradas para desenvolver software.
�
6) Princípios da Engenharia de Software
� Formalidade: reduz inconsistências� Abstração: aspectos importantes, ignorar
detalhes� Decomposição: lidar com complexidade� Generalização: reutili zação, custo� Flexibili zação: mudanças, processo
incremental
7) Paradigmas da Engenharia de Software
À E. S. estáassociado um conjunto depassos
(que englobam métodos, ferramentas, etc)
denominado paradigma
Ciclo de Vida Clássico
Ciclo de Vida Clássico
Problemas para aplicação: � Na prática, projetos não seguem o fluxo
seqüencial. � Acomodações de incertezas no início do
projeto é difícil . � Versão funcional dos programas
disponível após os últimos estágios doprojeto
Prototipação
�
Prototipação� Localiza“aspectos visíveis” para o usuário (E/S). � A iteração pode adequar o protótipo às
necessidadesdo usuário. � O protótipo podeser descartado ou fazer partedo
produto final. � Problemas: Cliente insiste queo protótipo seja
com ligeiras modificações, a versão final doproduto. Decisões esoluções improvisados tornam-separtedo produto final.
Linguagens de Quarta Geração
Linguagens de Quarta Geração� Ferramentas para especificação de alto nível
(L4G):
Consulta a base de dados.
Geração de relatórios.
Manipulação de dados.
Definição e interação com Telas.
Geração de código.
Linguagens de Quarta Geração� Domínio predominante : Sistemas
comerciais de informação. � Boa produtividade para sistemas pequenos e
médios e aplicação específicas.� Problemas: Para sistemas grandes, demanda
muito tempo; e ainda permaneceanecessidade de projeto
Evolucionário Evolucionário� Tudo merece uma nova chance� Incorporação de diferente partes e criação
de diferentes versões� Inclui prototipação� Permite o desenvolvimento exploratório
�
Incremental� Abordagem intermediária � Combina vantagens dos paradigmas ciclo de vida
clássico e evolucionário� Identificação das funções do sistema,
estabelecimento de incrementos e prioridades� Cada incremento pode utilizar um paradigma de
desenvolvimento diferente� Dificuldade para dividir e gerenciar versões
,QFUHPHQWDO
����������� � ������ �����������
������ ��� ������������ !�"�#�� ��� ����
$�� ��%������&�� "'#�� ��(��#� �) �+*�� �,���-�
./�� � ) ���0�� (� ���(���
����1��(2���� 2������ �� ��������
�������3'�����0�� (� ���(���
./�� � ) ��*'� �,������
415 6 7 8�9;:�< =0>�?19/@,A 8�7 ?415 6 7 8,9!:B 5 =0:�A
Espiral EspiralC Paradigma mais realístico - sistemas
grandesC É um metamodel oC Incorpora análise de riscos. C Permite prototipação em mais de um estágio
C Problemas: O modelo é relativamente novo.Requer esperteza. Pode nunca terminar.
Combinação de Paradigmas7) Paradigmas da Engenharia de SoftwareC Que paradigma usar ?
Depende da natureza da aplicação.
Métodos e ferramentas disponíveis, etc.
�
8) Uma Visão Genérica da E.S. 8) Uma Visão Genérica da E.S.
1) Definição
Função, desempenho, interface, restriçõesde projeto, critérios de validação.
Análise de sistemasPlanejamento de projeto de software.Análise de requisitos.
8) Uma Visão Genérica da E.S.
2) Desenvolvimento :Estruturade dados, Arquitetura de software, detalhes procedimentais,programas, testes.
Projeto de software.Codificação.Testes
8) Uma Visão Genérica da E.S.
3) Manutenção
Corre tiva: para corrigir defeitos;Adaptativa: para acomodar mudanças noambiente externo do software (S. O., periféricos, etc)Perfectiva: para inclusão de novas funcionalidades
8) Uma Visão Genérica da E.S.������������������� �
�
��
8) Uma Visão Genérica da E.S.
�
8) Uma Visão Genérica da E.S.