Você está na página 1de 7

21.06.

2021

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE Tópicos


CENTRO DE TECNOLOGIA
CURSO DE ENGENHARIA DE TELECOMUNICAÇÕES

• Introdução
• Conceitos
• Informação;
• Conhecimento;
• Software;
Introdução a Engenharia de Software • Engenharia de Software;
• Contexto da engenharia de software.
• Aspectos fundamentais sobre a engenharia de software.
• UML
Disciplina: Engenharia de software
Professor: Hertz Wilton de Castro Lins

Engenharia de software 2

1 2

Nuvem de Palavras Números

• Segundo Chaos Report, standish Group 2017

– Há 25 anos, apenas 16,2% de todos os projetos de DS foram concluídos a tempo e


dentro do orçamento de acordo com as funcionalidades necessárias

– 52,7% foram atrasados e além do orçamento,

– 31,1% foram cancelados.

– Os dois principais motivos foram a falta de participação e envolvimento do usuário e


requisitos incompletos.

– Relatou uma melhoria de 16,2% para 29% de sucesso. Certos projetos atingiram 62%.

• O que mudou?

Engenharia de software 3 Engenharia de software 4

3 4

Números Números

Resultados
• O que mudou?

– Desenvolvimento dos processos de software

– Estudo da análise de requisitos

– Investimento na preparação de gestores

– Investimento na capacitação em tecnologias e comunicação

– Análise de riscos

Concluído a tempo e Totalmente cancelado Atrasados e acima do


dentro do orçamento orçamento

Engenharia de software 5 Engenharia de software 6

5 6

1
21.06.2021

Objetivos Introdução

• Introduzir a engenharia de software: • Contexto

– Importância e contexto. – Todas as economias de países desenvolvidos estão dependentes de software

– Fundamentos da engenharia de software – Cada vez mais sistemas são controlados por software.

– Despesas com engenharia de Software representam uma fração significativa


do PIB em todos os países desenvolvidos.
– Um número cada vez maior de dispositivos conectados e com maior
capacidade de processamento.

Engenharia de software 7 Engenharia de software 8

7 8

Introdução Introdução

• Engenharia de Software • IEEE, 1993

– É uma disciplina de engenharia, que está preocupada com todos os aspectos – A aplicação de uma abordagem sistemática, disciplinada e quantificável para o
desenvolvimento, operação e manutenção do software. O estudo de abordagens e
da produção software:
princípios a fim de obter economicamente softwares confiáveis e que executem de forma
• Teorias, métodos e ferramentas para desenvolvimento de software
eficiente nas máquinas reais”
profissional.

• Engenheiros de Software
– Devem adotar uma abordagem sistemática e organizada para seu trabalho e – “A construção por múltiplas pessoas de um software de múltiplas versões”

usar ferramentas e técnicas apropriadas dependendo do problema a ser [Parnas 1987]

resolvido, o desenvolvimento e as limitações dos recursos disponíveis.

Engenharia de software 9 Engenharia de software 10

9 10

Conceitos Conceitos

• Dados, informação e conhecimento • Software


Este conhecimento é aplicado, por
exemplo, na identificação da Conhecimento sobre o conhecimento:
– Programas de computador e a respectiva documentação associada
compatibilidade de dispositivos em face Descreve o conhecimento, sua
de suas respectivas larguras de banda utilização, descoberta e manipulação. • Produtos de software podem ser desenvolvidos para um determinado
para sistemas de comunicação sem fio.
Como por exemplo a tecnologia UWB.
Metaconhecimento cliente ou podem ser desenvolvidos para um mercado geral
9.000 MHz, é uma largura de banda Compreensão da informação em um
Conhecimento adequada para o padrão UWB. sendo contexto. A experiência que permite a • Produtos de software podem ser:
no mínimo 500 MHz, transmissão e transformação de informações em
recepção ocupando a faixa de 3.1 a 10 instruções, ações e decisões
Informação
GHz. – Genéricos - desenvolvido para ser vendido a um leque de diferentes clientes
Dados Antena com uma largura de banda de Dados com significado, graças ao – Personalizados - desenvolvido para um único cliente, de acordo com as suas
9.000 MHz. estabelecimento de relações.
especificações
9.000

Símbolos sem significado no contexto

Engenharia de software 11 Engenharia de software 12

11 12

2
21.06.2021

Conceitos Evolução do software


Período Evolução

• Quais os atributos de um bom software 1950-1960 Orientação a batch


Software totalmente customizado
Distribuição limitada
– O software deve fornecer a funcionalidade e o desempenho exigidos pelo
1960-1970 Multiusuários
usuário. Tempo Real
– Facilidade de Manutenção: O software deve evoluir/adaptar para atender as Banco de Dados.

necessidades e ambientes de negócio 1980-1990 Sistemas distribuídos


Inteligência Embutida
– Confiança: O software deve ser confiável Hardware de baixo custo
Sistemas de desktop poderosos
através de uma série de características como confiabilidade, proteção e Tecnologia orientada a objeto
segurança Sistemas Especialistas....

– Eficiência: Software não deveria fazer desperdício dos recursos do sistema 1990-2000 Sistemas de desktop poderosos
Tecnologia orientada a objeto
(tempo de resposta, tempo de processamento, escalabilidade) Sistemas Especialistas....
– Usabilidade: O software deve ser utilizável pelos utilizadores para o qual foi Inteligência artificial
Computação paralela
concebido (interface e documentação)
2000 até hoje Netbooks, Smartphones.
Web 2.0
Serviços Web
Computação em nuvens
As tecnologias orientadas a objetos
Uso das técnicas de "quarta geração" para o desenvolvimento de software
Engenharia de software 13 Engenharia de software
Os sistemas especialistas e o software de inteligência Artificial 14

13 14

Aplicações Elementos x Atividades


Aplicação Descrição

De tempo real Software que monitora, analisa e controla eventos do mundo real
• Elementos • Atividades
Comercial sistemas de operações comerciais e tomadas de decisões administrativas • Modelos de processo • Modelagem do negócio
• Elicitação de requisitos
Científico e de engenharia caracterizado por algoritmos de processamento de números • Linguagens
• Análise e Projeto
• Métodos
Embarcado usado para controlar produtos e sistemas para os mercados industriais e de consumo • Implementação
• Ferramentas • Testes
De computador pessoal Envolve processamento de textos, planilhas eletrônicas, diversões, etc.
• Gestão • Distribuição
De inteligência artificial Resolver problemas complexos que não sejam favoráveis à computação ou à análise • Planejamento
direta
• Gerenciamento
Modelagem e simulação Modelagem de processos, situações físicas • Gerência de Configuração e
Mudanças
Web Páginas web que incorporam instuções executáveis (cgi,
html, java, perl, xml, etc...) e dados. ex.: hipertextos, formatos de áudio, vídeo, • Manutenção
imagens, comércio eletrônico

Engenharia de software 15 Engenharia de software 16

15 16

Engenharia de software Engenharia de Software

• Os princípios da Engenharia de software. • Aspectos da E.S.


– Formalidade,
– Qual é a diferença entre engenharia de software e ciência da computação?
• Documentação, processos, métodos
• A ciência da computação preocupa-se com a teoria e fundamentos para soluções com
– Abstração, uso de processamento digital
• Modelos • A engenharia de software está preocupada com os aspectos práticos do
– Decomposição desenvolvimento e entrega de software utilizável ...
• Paradigmas

– Generalização

• Perfis

– Flexibilização

• Adaptação

Engenharia de software 17 Engenharia de software 18

17 18

3
21.06.2021

Engenharia de software Engenharia de software

• Cientista da computação • Aspectos da E.S.


– Envolve-se como o desenvolvimento de modelos matemáticos, algoritmos, e – Quais são os custos de engenharia de software?
com a formalização lógica de processos para que possam ser aplicados em • Cerca de 60% dos custos são custos de desenvolvimento, 40% custos de
dispositivos mecânicos e eletrônicos, principalmente em processos mediados testes.
por computadores.
• Para software customizado, a evolução dos custos muitas vezes excedem
• Engenheiro de software os custos desenvolvimento.
– Aplica e desenvolve conhecimentos para o desenvolvimento de programa, sua • Os custos variam conforme:
manutenção e adequação a diferentes processos produtivos, de forma a
– O tipo de sistema a ser desenvolvido, requisitos, desempenho e
garantir maior desempenho e produtividade.
confiabilidade sistema.

Engenharia de software 19 Engenharia de software 20

19 20

Engenharia de software Desafios

• Desafios? – Tamanho e complexidade

• Número de funcionalidades
Sistemas legados
- Valiosos sistemas devem ser mantidos e atualizados. • Recursos dentro de cada área funcional
Heterogeneidade • Interfaces para outros sistemas
- Os sistemas são distribuídos e incluem uma combinação de hardware e
software • Usuários simultâneos
Entrega • Volume, tipos e estruturas de dados
- Há uma pressão crescente para a entrega mais rápida de software
Confiança
- Necessidade de desenvolver técnicas que demonstrem que o software
pode ter a confiança dos usuários
Tamanho e complexidade
- Número de funcionalidades

Engenharia de software 21 Engenharia de software 22

21 22

Tamanho e complexidade Engenharia de software

• Aspectos da E.S.
– Profissional e responsabilidade ética.
Início
• Engenharia de software envolve responsabilidades mais amplas do que
Ação 1 simplesmente a aplicação de competências técnicas.

• Engenheiros de software devem comportar-se de uma maneira honesta e


Ação 2 eticamente responsável, para que estes sejam respeitados como
profissionais.
Ação 3 • Comportamento ético é mais do que simplesmente garantir o respeito pelo
direito.
Fim

(a) graduação simples (b) tamanho e graduação com incremento

Engenharia de software 23 Engenharia de software 24

23 24

4
21.06.2021

Aspectos da E.S. Engenharia de Software

• Profissional e responsabilidade ética. • Processo

• Ciclo de vida
• Exemplos • Áreas de conhecimento
• Segurança da informação

• Confidencialidade, integridade, disponibilidade, autenticidade e legalidade.

– Propriedade intelectual

– Respeito nas relações

Engenharia de software 25 Engenharia de software 26

25 26

Engenharia de software Engenharia de software

• Processo de software • Especificação de Software ou Engenharia de requisitos

– É o processo utilizado para compreender e definir quais serviços são


– Um conjunto de atividades, padronizadas, cujo objetivo é o desenvolvimento e
necessários e identificar as restrições de operação e de desenvolvimento do
evolução de software, as atividades genéricas em todos os processos de
sistema.
software são:
– Estagio Crítico
• Especificação - o que o sistema deverá fazer o seu desenvolvimento e restrições.

• Desenvolvimento - produção do sistema de software


• Erros neste estágio conduzem a problemas posteriores no projeto e na

• Validação - verificar se o software é o que o cliente deseja


implementação do sistema

• Evolução - alterando o software em resposta às novas exigências

Engenharia de software 27 Engenharia de software 28

27 28

Engenharia de software Modelos de processo de software

• Modelo em cascata
• Modelo de ciclo de vida de Software
Requirements
Definição ◼ Resultado de uma fase alimenta a outra
– Uma representação simplificada e abstrata do processo de desenvolvimento De Requisitos
definition ◼ Mais antigo
software, apresentando as principais atividades e dados usados na produção e ◼ Modelado em função do ciclo da engenharia
System
Projeto and
de
convencional
manutenção de software
software design
Sistema e Software

Implementação
– Exemplos Implementation
e teste de Unidade
and unit testing
• Ciclo de Vida Clássico, Prototipação, Modelo Espiral e Técnicas de 4a
Geração Integr ation and
Integração
e teste de sistema
system testing

Operation
Operaçãoand
e
maintenance
Manuntenção

Engenharia de software 29 Engenharia de software 30

29 30

5
21.06.2021

Introdução Engenharia de software

• Segundo o SWEBOK (Corpo de Conhecimento da Engenharia de Software), as • Ferramentas CASE (Computer-Aided Software Engineering)
áreas de conhecimento da Engenharia de Software são: – Sistemas de Software que se destinam a prestar suporte as atividades do
– Requisitos de Software
processo de software.
– Projeto (Design) de Software
• Especificação • Upper-CASE
– Construção de Software
Ferramentas para apoiar o processo inicial, atividades de requisitos e design (as fases
– Teste de Software
• Desenvolvimento de planejamento, análise e projeto do programa ou aplicação)
– Manutenção de software
• Lower-CASE
– Gerência de Configuração de Software
• Validação Ferramentas para apoiar atividades posteriores, como programação, depuração e
– Gerência de Engenharia de Software
testes (codificação testes e manutenção da aplicação)
– Processos de Engenharia de Software
• Evol/ução
– Ferramentas e Métodos de Engenharia de Software • IDEs

– Qualidade de Software – Netbeans, Eclipse

https://www.computer.org/education/bodies-of-knowledge/software-engineering/v3

Engenharia de software 31 Engenharia de software 32

31 32

Importância da ES na Engenharia de Engenharia de Software e a Internet


Telecomunicações
• O crescimento do número de usuários de sistemas sem fio tem gerado uma a necessidade • Cada vez mais as organizações estão desenvolvendo sistemas baseadas na web,
de pesquisas e avanços em tecnologias, padrões e dispositivos: em vez de sistemas locais.
– GSM, RFID (Radio Frequency Identification), Bluetooth, Wi-Fi, Industria 4.0, IoT e 5 G...
• Web services permitem que a funcionalidade da aplicação seja acessada pela
• Otimização de recursos em mundo cada vez mais digital e informatizado, gerando um
Internet.
grande numero de dados de diferentes formatoes e informações.
• Computação em Nuvem, é uma abordagem para a prestação de serviços de
• O futuro caminha para a intensificação do uso de inteligência artificial, interação ser
Humano/Computador. – Computação ubíqua. informática, em que as aplicações são executadas remotamente na 'nuvem'.

• Segurança da informação • Usuários não compram softwares, mas pagam de acordo com o uso.

Contexto

Engenharia de software e
Telecomunicações

Engenharia de software 33 Engenharia de software 34

33 34

Engenharia de Software e a Internet Futuro

• O reuso de softwares é a abordagem dominante para a construção de sistemas • Computação ubíqua


baseados na web. – Marc Weiser, considerado o pai da computação ubíqua, vislumbrou há uma
• Sistemas baseados na web devem ser desenvolvidos e entregues de forma década atrás que, no futuro, computadores habitariam os mais triviais objetos:
incremental. etiquetas de roupas, xícaras de café, interruptores de luz, canetas, etc, de

• Atualmente, geralmente se reconhece que é impraticável especificar todos os forma invisível para o usuário

requisitos para tais sistemas antecipadamente.

• •Interfaces de usuário são limitadas pela capacidade de navegadores web.

Engenharia de software 35 Engenharia de software 36

35 36

6
21.06.2021

Links Vídeos

• Software Engineering Body of Knowledge. • Cognitive Computing: 5 Future Technology Innovations

• Software Engineering - ACM Computing .

• Netbeans

• Eclipse

• UML

• https://www.linkedin.com/pulse/people-skills-software-engineers-phil-hurd

Engenharia de software 37 Engenharia de software 38

37 38

Atividades Referências

1. Qual o papel do conhecimento no desenvolvimento de sistemas de software? • SOMMERVILLE, Ian. Engenharia de Software. 9.ed. São Paulo: Pearson, 2001. 552 p.

2. Quais os desafios do desenvolvimento de software • PRESSMAN, Roger S., ENGENHARIA DE SOFTW ARE, uma abordagem prática – 6ª. Ed.
– São Paulo: Pearson, 2007.

Engenharia de software 39 Engenharia de software 40

39 40

Você também pode gostar