Escolar Documentos
Profissional Documentos
Cultura Documentos
Engenharia de Software
Ucsal 2023.1
Prof. Elton Figueiredo da Silva
SOMMERVILLE, Ian. Engenharia de Software. Pearson Brasil, 9ª ed. 2011. 08. ed.São
Paulo: Addison Wesley, 2010.
● Software de sistema. São programas que apoiam outros programas, como o software que realiza
a comunicação com o hardware (sistema operacional) e software que ajuda na construção de
outro software (compiladores).
● Software de aplicação. São programas que são desenvolvidos para executar no negócio de uma
empresa determinada.
● Software para linhas de produtos. São os softwares conhecidos como software de prateleiras.
Produto de Software
● Software de inteligência artificial. São softwares que fazem os usos de algoritmos não
numéricos. Estes tipos software se encaixam na robótica.
● Software aberto. São softwares que disponibilizam a visualização do código fonte da aplicação
para o engenheiro de software modifica da maneira que deseja.
● Software Legado. Se refere a um programa de computador que foi desenvolvido por há muito
Processo de Desenvolvimento de Software
● O que é?
○ Define quem faz o que, quando e como, para atingir um certo objetivo
● Fases de qualquer processo de desenvolvimento
○ Levantamento de requisitos
○ Análise de Requisitos
○ Projeto
○ Implementação
○ Testes
○ Implantação
Engenharia de Software - Definição
"Engenharia de Software é:
● Métodos
○ Conhecimento técnico; “Como” fazer
● Ferramentas
○ Suporte automatizado para processos e métodos
● Década de 50
○ Surgiram os primeiros softwares
○ Pesquisas eram voltadas para o hardware
○ Hardware disponível apenas nos centros de pesquisa
○ Software desenvolvido sem utilizar técnicas de engenharia
Engenharia de Software - Histórico
● Década de 70
○ Programação Estruturada
■ Linguagens com estruturas de controle mais sofisticadas
■ seleção (if-else), repetição (for, while), rotinas, blocos
○ Projeto Estruturado
■ Visava estruturar a arquitetura do sistema: coesão e acoplamento
dos módulos
■ Organização das macro-estruturas dos sistemas
○ Surgimento do Fortran, para aplicações matemáticas
Engenharia de Software - Histórico
● Década de 70
○ Os problemas não se limitavam à programação
○ A programação ocorria depois de várias atividades anteriores
○ O programa visa dar solução a um sistema
○ Sistema surgiu para resolver um problema de um negócio
○ Projeto estruturado de sistemas vão dar a solução para um problema
○ Estruturava-se a solução
Antigamente...
Engenharia de Software - Histórico
● Década de 80
○ Análise Estruturada
■ Entender o problema antes de partir para um solução
■ Analisar os requisitos a serem tratados
■ Elaborar DFD-Diagrama de Fluxo de dados, Dicionário de Dados,
Diagrama ER, de Estados, etc.
● Década de 90
○ Análise e Projeto baseado em Orientação a Objetos
■ Aumentou sua evidência no desenvolvimento de software
○ UML (1994-95)
● Anos 2000
○ Metodologias Ágeis
■ Começaram a ser disseminados no mercado de software
■ Alternativa mais flexível de desenvolvimento
● Reduzir custos
● Melhorar a qualidade do software
● Atender às expectativas do cliente
Engenharia de Software - Camadas
Contexto Social e Econômico Da Engenharia de Software
● O software e a sociedade
● O software e a economia mundial
● O software e a economia brasileira
O Software e a Sociedade
Comunicação
Comunicação
Conservação de alimentos
Meios de transporte
Pesquisa
Localização
Medição de tempo
Fogão
Consumir música
Cirurgia
Cirurgia do futuro
Inovações baseadas em software
Maior empresa de
transporte de passageiros
do mundo não possui
veículos em sua frota
Inovações baseadas em software
Maior empresa de
hospedagem do mundo
não é proprietária de
hotéis
Inovações baseadas em software
Maior rede de TV do
mundo sem precisar fazer
propaganda em intervalos
comerciais.
É o maior cinema do
mundo sem ter nenhuma
sala
Inovações baseadas em software
Maior intermediador de
pagamentos do mundo
sem precisar ter nenhuma
agência bancária ou caixa
eletrônico
Inovações baseadas em software
Responsável pelo
desligamento de 10
milhões de linhas de
celulares em apenas 5
meses no Brasil
(fonte: ANATEL, 2015)
Inovações baseadas em software
Maior enciclopédia do
mundo sem publicar um
único livro
Inovações baseadas em software
Maior empresa de
recrutamento do mundo
sem ter nenhum head
hunter e nenhum
escritório de RH
Internet das Coisas
● Linhas de produção
● Lojas de varejo online
● Jornalismo
● Bancos
● Automóveis
● Entretenimento
● Cuidados com a saúde
● Serviço de Atendimento ao Cliente
Inteligência Artificial
Inteligência Artificial
Atividade
• Profissionalismo;
• Habilidades de comunicação;
Profissão
Fonte: https://futuroexponencial.com/10-habilidades-profissional-futuro/
Habilidades Profissionais
A resolução de problemas complexos não é uma habilidade que nasce com o profissional,
mas se aprimora ao longo dos anos. A habilidade, que consiste na capacidade de resolver
problemas novos e indefinidos em ambientes reais, se constrói a partir de uma base sólida
de pensamento crítico.
O profissional do futuro deverá ter a elasticidade mental para resolver problemas que
nunca viu antes, e que podem ficar mais complexos a cada minuto. Os solucionadores de
problemas complexos serão os profissionais mais demandados no futuro.
Habilidades Profissionais
2. Pensamento crítico
Habilidades Profissionais
2. Pensamento crítico
O pensamento crítico envolve lógica e raciocínio. O profissional deve ser capaz de usar a
lógica e o raciocínio para questionar determinado problema, considerar várias soluções
para aquele obstáculo e colocar os “prós” e “contras” na balança, a cada nova abordagem.
Habilidades Profissionais
3. Criatividade
Habilidades Profissionais
3. Criatividade
Ser criativo é ser capaz de conectar informações aparentemente díspares e, a partir dessa
conexão, construir novas ideias para apresentar algo “novo”. A avalanche de novos
produtos e novas tecnologias vêm exigindo dos profissionais uma boa dose de criatividade
para que possam se beneficiar de todas essas mudanças.
Mesmo com toda a ascensão da robótica avançada, as máquinas não têm – ainda – a
capacidade criativa do ser humano. Logo, se a criatividade já é uma ferramenta importante
no mercado de trabalho de hoje, nos próximos anos ela deverá se tornar uma habilidade
imprescindível nas empresas.
Habilidades Profissionais
4. Gestão de pessoas
Habilidades Profissionais
4. Gestão de pessoas
A coordenação com os outros é uma habilidade social importante, que envolve saber se
comunicar, trabalhar com pessoas de diferentes personalidades e, acima de tudo, lidar
com as diferenças encontradas em cada uma delas.
Habilidades Profissionais
6. Inteligência Emocional
Habilidades Profissionais
6. Inteligência Emocional
Diante do gigantesco volume de dados que as organizações estão reunindo nos dias de hoje,
é cada vez maior a necessidade de profissionais com capacidade não apenas de ler e
interpretar essas informações, mas também de tomar decisões cruciais.
Um bom líder será sempre bom na tomada de decisões em ambientes de alta complexidade,
contexto mais frequente na rotina corporativa. Acertar em soluções neste ambiente é meio
caminho para o sucesso no mundo dos negócios
Habilidades Profissionais
8. Orientação de serviço
Habilidades Profissionais
8. Orientação de serviço
Como os valores estão mudando rapidamente, saber orientar corretamente os clientes será
uma habilidade essencial no mercado de trabalho. Mais do que saber orientar, o profissional
deverá conhecer seu público, estudar seus clientes, para adaptar os produtos e serviços
oferecidos à realidade do consumidor.
Habilidades Profissionais
9. Negociação
Habilidades Profissionais
9. Negociação
A capacidade de negociar com você mesmo (tempo, foco, prioridades) e com outros
(colegas, gestores, clientes e equipes) em prol daquilo que está sendo construído e do que é
importante para você e para os outros estará no alto da lista de habilidades desejáveis.
Mesmo pessoas com cargos técnicos em breve deverão mostrar mais empenho em suas
habilidades interpessoais.
Habilidades Profissionais
Quanto mais flexível uma pessoa é, mais facilmente ela será capaz de enxergar novos
padrões e fazer associações únicas entre ideias. As empresas do futuro estarão aguardando
esse tipo de atitude ansiosamente.
Usar a intuição, colocar a opinião à prova, viver a diversidade, ouvir diferentes tribos e
conceitos, ser elegante com outras pessoas e analisar linguagem não-verbal também vão
contribuir para o desenvolvimento dessa habilidade profissional.
Habilidades Profissionais
Conclusão
Habilidade Profissionais
Conclusão
Logo, para acompanhar o ritmo de todas as mudanças, precisamos nos armar de algumas
dessas habilidades ou, no mínimo, aprimorar aquelas que já possuímos.
Perspectivas de Futuro
Uma entrevista realizada pela Infosys com jovens com idades entre 19 e 25
anos de países como Índia, África do Sul, Brasil, China, Grã-Bretanha,
França, Austrália e Alemanha, o levantamento traz seus interesses e
perspectivas para o futuro.
Fonte: https://exame.abril.com.br/carreira/como-os-jovens-vao-enfrentar-a-quarta-revolucao-industrial/
Perspectivas de Futuro
Otimismo
Dominar programação
● Habilidade do colaborador
○ Profissionalismo
○ Maturidade
○ Respeito ao ponto de vista do outro
○ Engajamento
○ Empatia
○ Cordialidade
○ Compreensão com a experiência individual
○ Sentimento de coletividade
○ Altruísmo
○ Solidariedade
Habilidades Comportamentais - Trabalho em equipe
○ Aumento de aprendizagem
■ Além do estímulo à criatividade, a troca de conhecimentos contribui
significativamente para enriquecer a sabedoria de todos. Em ambientes
que funcionam dessa forma, todos aprendem e todos ensinam.
Habilidades Comportamentais - Trabalho em equipe
● Ser ousado
● Compartilhar conhecimento e experiência
● Compartilhar os planejamentos e processos de trabalho
● Transmitir confiança, ser firme nas palavras
● Fazer das mudanças e crises oportunidades de crescimento e aprendizado para todos.
● Ser responsável pela redução do estresse
● Saber gerenciar crises, tanto de relacionamento quanto de processos de trabalho
● Ser positivo, otimista
● Eliminar burocracias
Habilidades Comportamentais - Proatividade
● Capacidade de ouvir
○ As informações hoje chegam de maneira intensa e de todos os lados. É possível
ouvir notícias o dia todo, o acesso às informações é constante, mas é importante
saber filtrar o que é relevante. Quem tem a capacidade de ouvir, em qualquer
ambiente, sabe absorver aquilo que é importante para o seu crescimento e o da
empresa.
○ Valorização do outro
● Capacidade de saber outras línguas
○ Se comunicar pelo menos em inglês e espanhol. Acho que pelo menos essas
duas hoje são essenciais.
Habilidades Comportamentais - Comunicação
● Capacidade de se atualizar:
○ Muito se fala em MBA, especialização etc, mas hoje é possível encontrar cursos
na internet, inclusive gratuitos, que dão a oportunidade de aprender coisas novas
todos os dias. Empresas desejam funcionários que estejam se aprimorando em
sua e outras áreas. Isso revela sua capacidade de adaptação de mercado, além
de obviamente mostrar a habilidade da pessoa de absorver conhecimento e
utilizá-los no cotidiano profissional.
Habilidades Comportamentais - Relacionamentos
RELACIONAMENTOS INTERPESSOAIS
A forma como interagimos com as pessoas ao nosso redor: amigos, colegas de trabalho,
familiares, ou seja, as diversas interações que podem acontecer baseadas em sentimentos,
emoções e tipos de relacionamentos que temos com o núcleo de pessoas que nos cerca
em nosso dia a dia.
● Conceitos
○ Relacionamento Interpessoal Profissional
○ Relacionamento Interpessoal Pessoal
○ Relacionamento Interpessoal Virtual
Habilidades Comportamentais - Relacionamentos
Ser voluntário é:
● se colocar no lugar do outro
● ser solidário
● respeitar o outro
● compreender o que o outro está passando
● ajudar sem esperar e querer nada em troca
● ter compaixão
● ter um olhar complacente
É amar o ser humano
● servir sem julgar
● ser um bom ouvinte
● ser humilde
● buscar sempre o melhor de si mesmo e fazer o outro buscar o que ele tem de melhor
● é motivar
Habilidades Comportamentais - Trabalho Voluntário
● Além de fazer o bem para a sociedade, pessoas que realizam trabalho voluntário
são valorizadas pelas empresas na hora da contratação
Ciência da Computação x Engenharia de Software
Ciência da Computação
Ciência da Computação
Aborda matérias como física, matemática, cálculo avançado e algoritmos, além dos
fundamentos de computação e linguagens.
Engenharia de Software
Engenharia de Software
O engenheiro de software vai muito além da programação e deve estar atento aos
apelos do contratante, do cliente final e dos usuários do programa desenvolvido.
Só assim poderá fazer os ajustes adequados para otimizar o uso dos softwares.
Engenharia de Software
Principais atribuições
● Desenvolvimento: desenvolver aplicativos para dispositivos móveis, como
smartphones e tablets, jogos e softwares.
Engenharia de Software
Principais funções
● Desenvolvimento e manutenção de software e apps
● Desenvolvimento e administração de bancos de dados
● Desenvolvimento de programas técnico/científicos
● Desenvolvimento de jogos
● Desenvolvimento de sistemas de gerenciamento para empresas
● Desenvolvimento de sistemas de apoio à área de medicina
● Administração e gestão de grandes, médias e pequenas empresas
● Gerenciamento de projetos ligados a software
● Arquitetura de design estrutural dos programas
● Realização de testes nos sistemas
● Desenvolvimento de documentação, relacionadas à gestão de projetos e à composição dos manuais
de instruções
Ciência da Computação x Engenharia de Software
Áreas de atuação
Mercado de trabalho
● O Brasil é o oitavo país no ranking mundial de desenvolvedores, fabricantes e
distribuidores de softwares, movimentando cerca de 27 bilhões de dólares
apenas com o mercado interno.
● Esse cenário mantém o setor aquecido para os engenheiros. O uso massivo
de celulares e tablets pela população brasileira também eleva a busca por
profissionais aptos a lidar com esses sistemas.
● A demanda internacional por esse engenheiro também é grande. Neste caso,
ele precisa ter bom domínio do inglês.
Engenharia de Software
Perspectivas salariais
● Como em qualquer outra área, o salário de um engenheiro de software pode variar — e
muito
● Depende da qualidade do seu serviço, da faculdade que cursou e também do seu
currículo profissional
● Quanto mais conhecimento você tiver na área, melhor será para alcançar o
sucesso na sua carreira
● Vamos aos números! A média salarial de um engenheiro de software é de R$ 4,6 mil.
No entanto, esse valor pode chegar a R$ 18-22 mil, como é o caso dos profissionais
seniores da área, que trabalham em grandes empresas.
Engenharia de Software
Previsões de Futuro
Previsões de Futuro
Engenharia de Software é uma boa escolha para quem tem afinidade com a
área de tecnologia. O mercado está em crescimento, necessita desse
profissional valioso, oferece uma boa remuneração e oportunidades para
atuar em empresas de todos os portes.
Atividades
● Projetos
○ Projetar, analisar e integrar sistemas complexos nos mais diversos
campos, como dispositivos, equipamentos e plantas industriais, entre
outros.
● Consultoria
○ Assessorar indústrias no projeto de operações para otimizar sua
produção.
SWEBOK
● Engenheiros de software
● Especificação de Requisitos
● Elicitação de Requisitos ○ Documentação de definição do sistema
○ Fontes de requisitos ○ Especificação dos requisitos do sistema
○ Técnicas de elicitação ○ Especificação dos requisitos do
● Análise de Requisitos software
○ Classificação de requisitos ● Validação de Requisitos
○ Modelagem conceitual ○ Revisão dos requisitos
○ Projeto arquitetural e Distribuição ○ Prototipação
de requisitos ○ Validação de modelos
○ Negociação de requisitos ○ Testes de aceitação
Requisitos de Software
● Considerações Práticas
Principais responsabilidades
● É uma atividade realizada para avaliação da qualidade do produto, efetuando sua melhoria
através da identificação de defeitos e problemas [Swebok, 2004].
A etapa de teste de software é relevante para que os erros possam ser encontrados e corrigidos
antes que o software seja entregue ao cliente.
Teste de Software 31/03/2023 terça
Objetivos
Processos de software visam assegurar o desenvolvimento de software:
● com prazos e necessidade de recursos definidos
● com elevada produtividade (de forma econômica)
● com qualidade assegurada
Processos permitem :
● organizar
● instrumentar
● planejar
● acompanhar projetos
● treinar equipes
Modelos de Ciclos de Vida
Modelo Cascata
Modelo idealizado por Royce em 1970 , também conhecido como abordagem ‘top-
down’, tem como principal característica a sequência de atividades onde cada fase
transcorre completamente e seus produtos são vistos como entrada para uma nova
fase. Sofreu diversos ajustes e aprimoramentos sendo muito utilizado nos dias atuais.
Fases
● Definição e análise de requisitos
● Projeto do sistema e do software
● Implementação e testes de unidade
● Integração e testes do sistema
● Operação e manutenção
Modelos de Ciclos de Vida
Modelo Cascata
Vantagens
● Facilidade de gestão do projeto
● Torna o processo de desenvolvimento estruturado
● Tem uma ordem sequencial de fases
● Cada fase cai em cascata na próxima e cada fase deve estar terminada
antes do início da seguinte
● Todas as atividades identificadas nas fases do modelo são fundamentais
e estão na ordem certa.
Modelos de Ciclos de Vida
Modelo Cascata
Desvantagens
● Dificuldade de acomodar as mudanças após o processo ter sido iniciado
● Particionamento inflexível do projeto em fases distintas
● Dificuldade de responder a requisitos do usuário que mudam
Processo de Software
Modelos de Ciclos de Vida
Modelo Incremental
● Também chamado desenvolvimento iterativo.
● Ao invés de entregar o sistema como uma única entrega, particiona-se o
desenvolvimento e a entrega em incrementos, com cada incremento contendo
parte da funcionalidade requerida.
● Os requisitos do usuário são priorizados e os requisitos de prioridade mais alta
são incluídos nos incrementos iniciais
● Uma vez que o desenvolvimento de um incremento é iniciado, os requisitos
são congelados, ainda que os requisitos para incrementos posteriores
continuem a evoluir
Modelos de Ciclos de Vida
Modelo Incremental
Vantagens
● Cada incremento pode agregar valor para o cliente, portanto a
funcionalidade do sistema está disponível mais cedo
● Incrementos iniciais atuam como um protótipo para ajudar a descobrir
requisitos para os incrementos posteriores
● Menor risco de falha do projeto como um todo
● Os serviços de mais alta prioridade do sistema tendem a receber a maior
parte dos testes
Modelos de Ciclos de Vida
Modelo Incremental
Desvantagens
● Podem surgir problemas relativos à arquitetura do sistema, porque nem
todos os requisitos estão reunidos na frente de todo o ciclo de vida do
software
● Cada fase de uma iteração é rígida e não se sobrepõem uns aos outros
Modelos de Ciclos de Vida – 23/05/2023
Modelos de Ciclos de Vida
Modelo Espiral
● O processo é representado como uma espiral, em vez de uma seqüência de
atividades com caminhos de retorno
● Cada volta na espiral representa uma fase no processo
● Não há fases fixas, tais como especificação ou projeto
○ As voltas na espiral são escolhidas dependendo do que for exigido
Modelos de Ciclos de Vida
Modelo Espiral
Baseia-se em quatro principais atividades:
● Determinação dos objetivos, alternativas e restrições
● Análise de risco e prototipação
● Validação e verificação
● Planejamento da fase seguinte.
Modelos de Ciclos de Vida
Modelos de Ciclos de Vida
Modelo Espiral
1º Quadrante
Um ciclo se inicia com a tarefa:
“Determinação de objetivos, alternativas e
restrições”
Objetivos principais:
● comprometimento dos envolvidos
● estabelecimento de uma estratégia para
alcançar os objetivos da fase que se inicia
● Comunicação com o cliente
Modelos de Ciclos de Vida
Modelo Espiral
2º Quadrante
Objetivos principais
● detectar riscos
● avaliar soluções que ofereçam menor risco de
implementação
● adotar atividades para reduzir os riscos principais Análise
Modelos de Ciclos de Vida
Modelo Espiral
3º Quadrante
Na terceira tarefa ocorre o desenvolvimento do produto.
Objetivos principais
● definir e validar os requisitos
● projetar o software
● projetar a validação e verificação
● codificar
● realizar testes ●integração ● unidade ● aceitação
Avaliação do cliente Construção e adaptação
Modelos de Ciclos de Vida
Modelo Espiral
4º Quadrante
Na quarta tarefa o produto é avaliado e se prepara
para iniciar um novo ciclo
O projeto é revisado e a próxima fase da espiral é
planejada
Objetivos principais
● planejar requisitos
● planejar ciclo de vida
● planejar desenvolvimento
● planejar integração e testes
Modelos de Ciclos de Vida
Modelo Espiral
Problemas do modelo espiral:
● O modelo em espiral, por suas características de avaliação e
planejamento baseadas em risco, exige que se tenha gerentes e técnicos
experientes.
● As tarefas gerenciais para acompanhamento e controle do projeto tornam-
se mais difíceis, uma vez que o modelo em espiral pode levar ao
desenvolvimento em paralelo de múltiplas partes do projeto, cada uma
sendo abordada de modo diferenciado.
Modelos de Ciclos de Vida
Sobre Modelos
● Definir o ciclo de vida adequado às características do projeto é essencial para
o seu sucesso
● Deve-se analisar os pontos fortes e fracos de cada modelo de ciclo de vida e
escolher o que ofereça melhores condições para o desenvolvimento do
software
Pontos importantes
● variação da especificação dos requisitos ao longo do projeto
● complexidade do sistema a ser desenvolvido
● características específicas do projeto
Ferramentas CASE
Vantagens
● Aumento da produtividade
● Maior facilidade para desenvolvimento
● Menor quantidade de códigos de programação
● Melhor qualidade no produto final
● Diminuição dos custos na manutenção
● Melhor gerenciamento e tomada de decisão
● Agilidade no retrabalho do software
● Grande facilidade de manutenção
Ferramentas CASE
Desvantagens
● Incompatibilidade de ferramentas
● Formação para utilização
Cada ferramenta tem propósitos diferentes, fornece serviços diferentes, mas possuem
algumas características em comum.
Ferramentas CASE
Classificação
De acordo com os serviços que oferecem:
● Documentação
● Planejamento e gerenciamento de projetos
● Especificações formais
● Comunicação
● Análise e projeto de software
● Projeto e desenvolvimento de interfaces
● Programação
● Geração de código
● Gerenciamento de Configuração
● Controle de Qualidade
Ferramentas CASE
Categorização
Não há um padrão definido para a categorização das CASE, no entanto os termos
abaixo são os que melhor o identificam.
● Front End ou Upper CASE: apoia as etapas iniciais de criação dos sistemas:
as fases de planejamento, análise e projeto do programa ou aplicação.
● Back End ou Lower CASE: dão apoio à parte física, isto é, a codificação
testes e manutenção da aplicação.
● I-CASE ou Integrated CASE: classifica os produtos que cobrem todo o ciclo
de vida do software, desde os requisitos do sistema até o controle final da
qualidade.
Ferramentas CASE
Atividade II
● A partir das diferentes classificações
Modelos de desenvolvimento
https://www.treinaweb.com.br/blog/ciclo-de-vida-software-por-que-e-importante-saber/
https://br.udacity.com/blog/post/ciclo-de-vida-do-software
XXX
● https://slideplayer.com.br/slide/1356925/
● https://slideplayer.com.br/slide/4086954/#
● http://igti.com.br/blog/swebok-referencia-na-engenharia-de-software/
● https://fernandalira.wordpress.com/2014/05/24/engenharia-de-software-areas-de-conhecimento-segundo-o-swe
bok/
● http://files.engenharia-de-software7.webnode.com/200000016-0a7e60b780/As%2010%20%C3%81reas%20da
%20Engenharia%20de%20Software,%20Conforme%20o%20SWEBOK.pdf
● https://pt.slideshare.net/elainececiliagatto/reas-de-conhecimento-da-engenharia-de-software
● http://www.cin.ufpe.br/~processos/TAES3/Livro/00-LIVRO/11-SWEBOK-v8_CORRIGIDO_Versao_Final_O
K.pdf
● https://www.passeidireto.com/arquivo/4390995/swebok---portugues---guia
● https://slideplayer.com.br/slide/334526/#
https://www.devmedia.com.br/ferramentas-case-conhecendo-algumas-boas-o
pcoes/32034
https://pt.wikipedia.org/wiki/Ferramenta_CASE
https://slideplayer.com.br/slide/1607907/
https://www.devmedia.com.br/ciclos-de-vida-do-software/21099
Gerenciamento de Engenharia de Software
● http://www.cin.ufpe.br/~processos/TAES3/Livro/00-LIVRO/11-SWEBOK-
v8_CORRIGIDO_Versao_Final_OK.pdf
SWEBOK - Áreas do Conhecimento (KA)
Conteúdo Programático
2ª Unidade
○ Requisitos funcionais: são aqueles que descrevem funções que o sistema deve executar, como
por exemplo: formatação de textos, adaptação de sinais e cadastros de “entidades”.
Requisitos de Software
○ Requisitos Emergentes: não são identificados por simples componentes, mas a partir da
satisfação de várias dependências de como o software deve operar. Característica: São
extremamente dependentes da arquitetura do sistema.
Processo de Requisitos
● Modelos de processos: o tema está preocupado com a forma que as atividades de análise de
levantamento de requisitos, especificação e validação estão configurados para diferentes tipos de
projetos e restrições. O tema inclui também atividades que contribuem para o processo de requisitos,
tais como marketing e estudos de viabilidade.
Requisitos de Software
Processo de Requisitos
● Atores dos processos: apresenta os papéis das pessoas que participam no processo de
requisitos. Há freqüentemente muitas pessoas envolvidas, além do especialista, mas sempre incluem
Processo de Requisitos
● Processos de Qualidade e Melhoria: preocupa-se com a avaliação da qualidade e da melhoria
do processo de requisitos. Seu objetivo é enfatizar o papel fundamental do processo de execuções dos
requisitos em termos de custo e oportunidade de um produto de software e de satisfação do cliente.
Modelos de Ciclo de Vida
● Tipicamente contêm:
○ “Esqueleto do processo”
○ Ordem de precedência das atividades
○ Principais artefatos e produtos gerados
Modelos de Ciclo de Vida
● Principais modelos
○ Cascata ou Clássico
○ Prototipagem
○ Métodos formais
○ Espiral
○ Incremental
Modelo em Cascata
Sua estrutura é composta por várias etapas que são executadas de forma
sistemática e seqüencial
Sem pretender fazer distinções definitivas, vamos explorar o que dizem os dicionários. O Dicionário
Aurélio Eletrônico V.2.0 assim define Ciência e Engenharia:
Ciência Engenharia
Conjunto organizado de conhecimentos Arte de aplicar conhecimentos científicos e
relativos a um determinado objeto, empíricos e certas habilitações específicas à
especialmente os obtidos mediante a criação de estruturas, dispositivos e processos
observação, a experiência dos fatos e um que se utilizam para converter recursos naturais
método próprio. em formas adequadas ao atendimento das
necessidades humanas.
Terminologia
● Software
○ Programa de computador e documentação associada
● Processo
○ Uma série conectada de ações, com a intenção de satisfazer um objetivo
○ Define quem está fazendo o quê, quando e como para atingir um certo
objetivo
Descreve a ação de receber um ENTRADA, submeter essa entrada a uma série de rotinas
ou passos estabelecidos, para converter essa entrada em uma SAÍDA observável
Terminologia
● Processo de Software
○ Um conjunto estruturado de atividades para desenvolver um sistema de
software
■ Especificação
■ Projeto
■ Validação
■ Evolução
Mitos do Software
Segundo [Pressman], diversos mitos difundidos entre programadores escondem a importância de um desenvolvimento de software
de acordo com os princípios de uma engenharia. Vejamos algumas delas:
● O estabelecimento de objetivos gerais é suficiente para se começar a escrever programas.
● Uma vez que o programa esteja escrito e funcionando, nosso trabalho está feito.
● Mudanças no software podem ser feitas facilmente porque ele é "flexível".
● Dê a uma pessoa técnica um bom livro de programação e você terá um programador.
● Até que o programa esteja "rodando" não é possível verificarmos a sua qualidade.
● Um projeto é bem sucedido se conseguirmos um programa funcionando corretamente.
Qualidades do software
O software como um produto deve ter qualidade. Diversas são as qualidades do software a serem avaliadas. É preciso avaliar tanto a
qualidade do produto em si com a do processo de desenvolvimento. Vejamos algumas das qualidades que podem ser avaliadas.
● Corretude - um software precisa funcionar corretamente. Um software correto é aquele que satisfaz a sua especificação e
que não possui falhas ou erros.
● Validade - um software válido é aquele cuja especificação satisfaz aos requisitos dos usuários e da organização, isto é, está
de acordo com as necessidades dos usuários.
● Robustez - o software deve prever que o usuário de agir de forma não esperada e deve ser capaz de resistir a estas
eventuais situações incomuns sem apresentar falhas.
● Confiabilidade - um software correto e robusto ganha a confiança dos usuários uma vez que ele deve se comportar como
esperado e não falha em situações inesperadas.
● Eficiência - o software deve realizar suas tarefas em um tempo adequando à complexidade de cada uma delas. A utilização
dos recursos de hardware (memória, disco, tráfego de rede) também deve ser feita de forma eficiente.
● Usabilidade - o software precisa ser fácil de aprender e de usar, permitir maior produtividade do usuário, flexibilidade de
utilização, flexibilidade de aplicação e proporcionar satisfação de uso.
● Manutenibilidade - todo software precisa de manutenção, seja para corrigir erros ou atender a novos requisitos. O software
deve ser fácil de manter para que estas correções ou atualizações sejam feitas com sucesso.
● Evolutibilidade - todo software precisa evoluir para atender novos requisitos, para incorporar novas tecnologias ou para
Ferramentas Case
● Hoje em dia as ferramentas CASE ainda não são tão variadas nem
fornecem tudo aquilo que os desenvolvedores queriam, mas são um
aparato essencial para o engenheiro de software
● CASE - Computer-Aided Software Engineering
CASE - Visão Geral [Pressman]
● O que são?
○ São ferramentas que auxiliam o engenheiro de SW em cada atividade
associada ao desenvolvimento de SW
● Quem usa?
○ Gerentes de projeto e engenheiros de SW
● Por que são importantes?
○ Reduzem o esforço necessário para produzir artefatos e alcançar metas
○ Aumentam a qualidade do software
CASE - Visão Geral [Pressman]
Horizontais
São utilizados durante todo o processo de desenvolvimento de software
Verticais
São específicas para uma disciplina de software
Por funções [Pressman]
Processos de negócio, Planejamento de projeto, Análise de Riscos, Rastreamento de Requisitos, IDEs, Gerenciamento de BDs,
Análise Estática, Análise Dinâmica, etc.
CASE - Categorização
IEEE STD. 610 12-1990, IEEE Standard Glossary of Software Engineering Terminology, IEEE, Piscataway, NJ,
1997.
PAULK, M.C. et al. The Capatibility Maturity Model – Guidelines for improving the software process, Addison
Wesley, SEI series, 1995.
SPINOLA, MAURO DE MESQUITA, Diretrizes para o desenvolvimento de software de sistemas embutidos, Tese
de Doutorado, USP - São Paulo, 1998.
Os atores são representados por um símbolo de “bonecos magros”, contendo uma breve
descrição logo abaixo de seu símbolo que identifica o papel que o ator em questão assume
dentro do diagrama.
Caso de uso
Os casos de uso são utilizados para capturar os requisitos do sistema, ou seja, refere-se aos
serviços, tarefas ou funcionalidades identificados como necessários ao software e que podem
ser utilizados de alguma maneira pelos atores. que interagem com o sistema. Os casos de uso
são utilizado para documentar os comportamentos pretendidos para as funções do sistema. Os
casos de usos são representados por um elipse contendo dentro de si um texto que descreve a
que funcionalidade o caso de uso se refere.
Caso de uso/Documentado
Diagrama de Classes
As classes costumam ter relacionamento entre si, chamados de associações, que permitem que elas
compartilhem informações entre si e colaborem para a execução dos processos executados pelo
sistema. Uma associação descreve um vinculo que ocorre normalmente entre classes/objetos de uma
ou mais classes.
As associações são representadas por uma linha ligando as classes envolvidas. Essas linhas podem
ter nome ou títulos para auxiliar a compreensão do tipo de vinculo estabelecido entre as
classes/objetos envolvidos.
Diagrama de Classes/Tipos de Associações
Associação Binária:
Ocorre quando existe um relacionamento entre classe/objeto de classes distintas. Este tipo de associação
é a mais encontrada ou utilizada.
Generalização/Especialização:
O objetivo dessa associação é representar a ocorrência de herança entre as classes, identificando a classe
mãe e as classes filhas.
Classe associativa:
Quando a ocorrência de associações que tenham multiplicidade muitos(*) entre suas exterminadas. Essas
classes são utilizadas quando existem atributos de uma classe que não podem ser armazenados por
nenhuma classe envolvida.
Diagrama de Classes/Tipos de Associações - Exemplos
Diagrama de Classes/Tipos de Associações - Exemplos
Diagrama de Classes/Tipos de Associações - Exemplos
Diagrama de Classes/Tipos de Associações - Exemplos
Diagrama de Classes/Tipos de Associações - Exemplos
Diagrama de Classes/Tipos de Associações - Exemplos