# data[].attributes.body
Do you too? Write your name here!

# data[].attributes.body
São softwares que não possuem mais suporte/atualizações

Computação em nuvem, infraestrutura compartilhada

On-premisses: Aquisição e gestão própria
IAAS: Comprar infraestrutura EC2
PAAS: Comprar plataforma
SAAS: Comprar software

Comunicação
Planejamento
Modelagem
Construção
Entrega

Premissas da engenharia de software

1º - A razão de existir

Qual é o propósito da existência da solução, ela realmente irá resolver o problema do cliente?

2º - KISS

"Antes feito do que perfeito". Seja assertivo, lean, resolva os problemas presentes da forma mais objetiva possível, mas não esqueça do futuro.

3º - Mantenha a visão

Se você ja acertou, precisa continuar acertando, mantenha o foco e gere novas soluções para os seus clientes, estabilidade não existe.

4º - O que um produz, os outros consomem.

Você ja combinou com o usuário? Seu software pode ser a maior inovação do momento, mas ele só se torna uma solução se de fato solucionar um problema.

5º - Esteja aberto para o futuro.

A inovação é inevitável, aceite-a e ela será uma ótima aliada. Lute contra ela e ela te dizimará

6º - Planeje com antecedência! Visando a reutilização.

Planeje! Planeje! Execute! Uma casa projetada terá problemas, uma casa não projetada terá milhares. Invista tempo no planejamento, e ganhe na execução. Um código planejado e bem estruturado fará você ganhar tempo no futuro, seja por códigos reaproveitáveis ou simplesmente diminuindo o número de updates corretivos.

7º - Pense!

Antes de executar alguma coisa, pense. Quando achar que já pode executa-la, pense novamente.

--------------------------------------------------------------

PRÁXIS
Compreender o problema;
Planejar uma solução;
Executar o plano;
Examinar o resultado para ter precisão.

Foi só você chegar que funcionou

# data[].attributes.body
Curva real  é oque é realmente é software com  bug ao atualizar e idealizada é quando o software funciona perfeitamente, mas nenhum software  100% perfeito .
defeitos e mudanças que a criação de um software pode -ser se ter, aplicar mudanças sempre resulta em bug.
software, faz a conversão de linguagem de máquina.
Baixo nível,  software de sistema.

aplicações de softwares - aplica-se a alg, wrd benn.

Software cientifico  - dinâmica orbital, calculo, em massa, astronomia, genética, etc, oredict.oi, cloud biolinux.

Software embarcado - residente em produtos de hardware de sistema.  hardware de sistema  assembly

software para linha de produtos - utilizado por múltiplos.
aplicações Web moveis econômicos pouco energia,  tots, visão.

Software de linha de produtos**** Múltiplos clientes  ao mesmo tempo
Software de  aplicação, apenas um único cliente

Embarcados: sem o software em consegue se inserir em um sistema operacional determinado hardware que executa e tem tempo e com restrições de memória.

Aplicação WEB : aplicações Web, móveis, complexidade maior , pode mudar facilmente de plataforma, se preocupas mais com a acessibilidade. Vulnerabilidade que o próprio usuário permite no geral um app Web pode ser qualquer coisa que rosa na nuvem, uma aplicação WEB, aplicativos moveis
google play
netflix

Software de Inteligência artificial : tomar decisões em cima de dados que já foi dado para se validar, pode integrar dados disponíveis no drive. open source, protege, open nlp.

Diagramas:
fluxo: diagrama já definido passo a passo , processos que devem acontecer em ordem.

casos: possibilidades que se tem de para se obter um resultado. ( atores -> qualquer um que faça uma ação ,  relações, ações )

planejador de projetos
descreve as atividades inicio e tempo de duração para as atividades

Cronograma - maior controle, separa por entregas, analise e examinar projeto.

********princípios de software **************
1 - razão entender
2 - kiss : tornar algo fácil, não precisa ser complexo, desde que atenda o solicitado
3 - manter a visão: tornar um projeto visionário que dure a muito tempo
4 - oque um produz os outros consomem:  o que cliente espera, dar uma demonstração, principal dor, sugerir para implementação.
5- sempre estar aberto a mudar : esteja aberto para o futuro
aberto a novas adequações, saber aprender e acima de tudo se adaptar as mudanças
6- planeje com antecedência ! visando a reutilização: faça um trabalha para ser reutilizado de alguma forma, ser diferencial,
7 - pense : seja criativo, pense, faça, persista

**********mitos do desenvolvimento de software*******
mitos de gerenciamento: não precisa de marketing

mitos dos clientes: já fiz não funciona,

mitos dos profissionais: na minha máquina funciona

modelagem

jornada do usuário

sequencia ou atovidade - diagrama

***********praxis*******
Compreende a necessidade do cliente
Planejar uma solução que atenda a necessidade e resolva o problema;
Execução do plano de solução;
Examinar o resultado e testar se atendeu ao solicitado.

FUNCIONAIS

REQUISITOS DE INFRA
---SERVIDOR VIRTUAL (nuvem)
On-DEMAND:  Aquisição e gestão própria  (terceiriza custo)
iass: Comprar infraestrutura ( A Amazon Web Services (AWS) e a Microsoft Azure)
pass: Comprar plataforma
sass: Comprar software (customizar )

metodologia de processo
Metodologia de Processo : Comunicação (clara objetiva), Planejamento ( gaste mais tempo no planejamento do que na execução )  Modelagem ( como vai fazer ) , Construção, Entrega

atividades de apoio
controle e acompahamento
adm de riscos
garantia de qualidade
medição
gerencia de configuração de software
gerencia de capacidade
preparo e produção
Compilador = Converte em linguagem de máquina.

Um diagrama de sequência  tem como objetivo principal representar graficamente o comportamento de uma funcionalidade ( uml)

diagrama de caso: possibilidades a serem desenvolvidas

diagrama de fluxo : já desenhado como será

etapas analise de processos
perpectiva
elaborar
negociar
especificar
validar
gerenciar

software consiste
instrução (programas  de pc )

estrutura de dados  (manipula informações )

informação descritiva ( descreve operação de progrmas)

•O que é?
A solução inteligente e eficaz para um problema

•Quem realiza?
Equipe de pessoas dev

•Por que é importante?
Para agilizar tarefas e maximizar resultados

•Quais são as etapas envolvidas?
Levantamento de necessidades, priorização (GUT), projeto, planejamento, execução, teste, validação, avaliação dos usuários(NPS)

•Qual é o artefato?
Necessidades, pessoas e ferramentas.

•Como garantir que o trabalho foi realizado corretamente?
Fazendo validação dos requisitos e colhendo o feedback clientes

Analise de regra de negocio canvas: planejamento, organização de ideiaa

^
camadas de eng software   |
ferrmantas                              ^
métodos                                  |
processo
foco na qualidade

compliance acordo regulação

# data[].attributes.body
O que é Software

Instrições que, quando executadas, fornecem caracteristicas, funções e desempenho desejados

Software é um conjunto de instruções que pode ser utilizada para várias funções, possui várias etapas para criar um software desde projetar, desenvolver, aprimorar, etc. O objetivo é responder conforme a necessidade do cliente/usuário para que o mesmo tenha o dado quando precisar. Os softwares normalmente sofrem alterações para gerar melhorias nas aplicações. essas alterações podem ter bugs aumentando a vulnerabilidade dos softwares

Exemplos de Software:

1. Embarcado: Arduino, Assembly: Um sistema embarcado é programado para repetir a execução de apenas algumas atividades técnicas por vez

1. Aplicações WEB/Aplicativos móveis: App Store, Play Store, Play Filmes, etc

----------------------------------------

Software Legado:

Software legado é um software antigo que não recebe mais atualizações mas atende a necessidade do cliente por isso tem sua importância no mercado.

Exemplo: Windows 7

-----------------------------------------

A Engenharia de Software é baseada em camadas, são elas:

Ferramentas

Métodos

Processos

Foco na qualidade

-----------------------------------------

Siglas em núvem:

On-premise: servidor on-premise é aquele em que a própria empresa tem a responsabilidade de processar suas aplicações de hardware e software.

IaaS: infraestrutura como serviço.

Exemplo: azure

PaaS: plataforma como serviço.

Exemplo: AWS Lambda

SaaS: software como serviço.

Exemplo: Microsoft Office 365

-----------------------------------------

Metodologia de Processo :

Comunicação

Planejamento

Modelagem

Construção

Entrega

-----------------------------------------

Premissas:

Razão de Existir

Mantenha a Visão

KISS

Mantenha a Visão

O Que um Produz, os Outros Consomem

Esteja Aberto Para o Futura

Planejar com Antecedência! Visando a Reutilização

Pense

-----------------------------------------

Mitos da Engenharia de Software:

Mitos de gerenciamento: "Esse software não vai precisar de melhoria,  o usuario vai entender tudo"

Mitos dos clientes: "O cliente vai conseguir entender todo o sistema"

Mitos dos profissionais da área: "a solução para este problema é simples, vamos conseguir resolver isso rápido"

-----------------------
O Diagrama de fluxo:
Serve para saber como desenvolver o software, por exemplo: Votar, cadastrar voto, atualizar, buscar Voto

Diagrama de Fluxo Possui:

os atores

as actions

as relações

escopo

Anotações sobre diagrama de fluxo:

1. Anotações sobre diagrama de fluxoos atores são qualquer um que realizam uma entrada e saida.

2. Diagrama de caso de uslo é usado desde o desenho até a funcionabilidade do programa.

3. Os atores são qualquer um que realizam uma entrada e saida

4. Diagrama de caso de uslo é usado desde o desenho até a funcionabilidade do programa

-----------------------------------------------------------

Praxis: compreender o problema

# data[].attributes.body
Software pode ser definido como um conjunto de instruções que permitem ao usuário controlar um aparelho eletrônico

Software Legado
* é aplicado a softwares que são utilizados por uma organização ao longo dos anos, desempenhando funções essenciais ao seu negócio.
Deixam de receber atualizações.

Se mantem ate não ter outro melhor que o mesmo

compra de estrutura = iaas
compra de software = saas
compra de plataforma = pass

Ferramentas
Métodos
Processo
Foco na Qualidade

==========================================
Metodologia de Processo
Comunicação
Planejamento
Modelagem
Construção
Entrega
==========================================
Diagrama de  fluxo já possui atribuições definidas
Diagrama de caso mostra as possibilidades do software
===========================================
=======27/08/2021======
EAP= ESTRUTURA ANALITICA DO PROJET
TAP= Termo de abertura de projeto
pré-projeto
projeto final

===========================================A diferença entre o diagrama de fluxo e o diagrama de caso, é que o diagrama de fluxo possui  todas as atribuições definidas já no  diagrama de caso ele mostra as possibilidades do software;

serve para os programadores entenderem a jornada do usuário

PAAS = plataforma  serviço

IAAS = infraestrutura  serviço

SAAS = software serviço

informação descritiva tanto na forma impressa quanto na virtual

estrutura de dados que possibilitam aos programas

instruções que quando executadas

software legado ta ai na vida, mas não vai mais pra frente

===========================================

compreender
planejar

# data[].attributes.body
Devemos estar cientes de que nada e nenhum software é perfeito, então conforme o tamanho do seu software, a variação da quantidade de bugs do sistema será equivalente. A curva idealizada nunca será atingida, então dev, fique tranquilo.

Muitos dispositivos adicionados a rede, representam uma vulnerabilidade muito grande, principalmente se os dispositivos a essa rede forem principalmente IoT, pois apresentam um sistema de segurança mais fraco do que outros dispositivos que possuem ou podem ter métodos de segurança mais eficazes.

--------AULA 13/08/2021--------

Um software legado é todo aquele software que não recebe mais suporte (atualizações de versão e segurança). Exemplo: Windows 7.
O software legado se mantém até que outro melhor apareça para substitui-lo;

ON-PREMISSES: Estrutura de tecnologia própria;
IAAS: Compra de INFRAESTRUTURA;
SAAS: Compra de Software como serviço (Produto para resolução de problema especifico);
PAAS: Compra de plataforma como serviço (Produto para desenvolvimento interno para resolução de diferentes problemas da empresa);

--------AULA 20/08/2021--------

A diferença entre o diagrama de fluxo e o diagrama de caso, é que o diagrama de fluxo já tem todas as atribuições definidas, e no diagrama de caso ele mostra as possibilidades do software;

--------AULA 24/09/2021--------

Diagrama  de sequencia serve para os programadores entenderem a jornada do usuário, que por si só serve para testar todas as alternativas do que ele pode executar no sistema.

--------AULA 01/10/2021--------

Requisitos de infraestrutura
On premisses x on demand

on demand =
IAAS: infraestructure as a service - Infraestrutura completa de gerenciamento em nuvem (Azure)
PASS: Plataform as a service - Plataforma como serviço (heroku)
SASS: Software as a service - Software como serviço (Omie ERP, Questor Zen)

# data[].attributes.body
A curva idealizada nunca é a curva que ira acontecer. Os compiladores são software de sistema. Software de sistemas.
Todo código ira ter bugs.
Software embarcados: Assembly, C etc.

# data[].attributes.body
Software don't is perfect! So you as system development student need knowed than bugs exist and every thing can be hacked!

# data[].attributes.body
Vídeo exemplo: Anatomy of an IoT attack

https://www.youtube.com/watch?v=jK0oG-cDF4Y

# data[].attributes.body
Conforme maior o software, mais bugs terá.
A curva real de bugs sempre será maior que a idealizada.

Dispositivos IOT, são mais vulnerável para ataques cibernéticos, por não possuírem atualizações frequentes e serem mantidos em redes públicas ao invés de rede especificamente projetada para IOT

Compilador = Converte em linguagem de máquina.

Matlab = Software para cunho estatístico
BioLinux = Para códigos genéticos.
Predict.io;
aspentech.

Softwares embarcados: Residente em produtos de hardware de sistema (Arduino, C e Assembly)

Softwares para linha de produto: utilizado por múltiplos cliente diferentes ao mesmo tempo (TOTVS, Visão sys, CISS) - Possuem muitas funções ao contrário dos softwares.

WEB/Aplicativos móveis (Google Play, Music, Movies, etc.)

Softwares de inteligência Artificial (TensorFlow, OpenNLP) - modelo mais recente de softwares

**Cloud Support Associate** - Curso para fazer até o final da matéria (AWS).

------- AULA 13/08 -------

Software Legado: são utilizados por uma organização ao longo dos anos, desempenhando funções essenciais ao seu negócio, tendo assim a tecnologia usada por este software cada vez mais obsoleta. Não possuindo mais suporte ao mesmo.

Arquitetura atual: Hibrida.

On-premisses: Infraestrutura interna (teu).

IAAS: Infra externa, comprar uma infraestrutura externa (EC2).

SAAS: Plataforma como serviço, principalmente para hospedagem.

PAAS: Compra de serviço de software.

Camadas da engenharia de software:  1° - Ferramentas, 2° - Métodos - parte técnica, 3° - Processo - cliente/desempenho, 4° - Foco na qualidade.

Metodologia de processo: Comunicação, Planejamento, Modelagem, Construção e Entrega.

TAP - Termo de abertura do projeto;
EAP - Estrutura analítica do projeto;
PRÉ-PROJETO - Projeto Final.

------- AULA 24/09 -------

Essência Práxis(Prática)

> Compreender o problema;
> Planejar uma solução;
> Executar o plano;
> Examinar o resultado para ter precisão.

PRINCÍPIOS DA ENG. DE SOFTWARE

> Tenha uma visão responsável e seja um bom líder;
> experiência satisfatória com base na expectativa do usuário;
> Estar aberto para mudanças e aberto para receber opiniões sugestivas;
> Planejar algo que você possa reutilizar várias vezes;
> Seja criativo;

MITOS DE DESENVOLVIMENTO DE SOFTWARE

> Gerenciamento: Terceirizar o projeto, não preciso mais me preocupar ;
> Clientes: Os requisitos de software mudam continuamente, mas as mudanças podem ser facilmente assimiladas, pois o software é flexível;
> Profissionais da área: Uma vez feito um programa, o trabalho está terminado.

MODELAGEM
> UML

KISS - KEEP IT SIMPLE STUPID.

SO - Consiste em: Instruções; Estrutura de dados e Informação descritiva.

DIAGRAMA DE FLUXO - Saber como desenvolver o software (mapa).

SOFTWARE DE SISTEMA - Linux, Windows, MacOs, etc.

SOFTWARE DE APLICAÇÃO(necessidade específica) - Word, Zen Questor, Benner, etc.

Atividade de apoio - garantia da qualidade, medir pelo cliente ou por software de medição.

Stakeholders - Gestão de projetos;
Compilance - compliance é o conjunto de disciplinas a fim de cumprir e se fazer cumprir as normas legais e regulamentares;

# data[].attributes.body
HOW IS THE DOFTWARE ENGINNER FROM VALERIO SISTEM OPERATOR? HOW VALERIO EAT? HOW VALERIO WORK? AND IF VALERIO USE ROBOTICS CEILS TO PROGRAMMER UPDATES IN YOU BODY? WRITE WHAT YOU THINK IN COMENTS FROM THIS POST!!!!

# data[].attributes.body
Softwares tendem a ter bugs ao longo de sua construção.

Ao ser construído, ou seja, em sua versão 1.0, a aplicação tende a ter a sua maior quantidade de bugs, entretanto, ao longo de suas versões (atualizações) os bugs são devidamente corrigidos, mas essas correções acabam por criar novos bugs.

Em suma, cada nova versão do software arruma bugs antigos e gera novos bugs, mas a tendência no longo prazo é de que a cada nova versão a quantidade total de bugs diminua. Mas como limites (lim(x)) a tendência é chegar a zero, mas nunca chegam a zero.

# data[].attributes.body
A Red Hat oferece soluções open source seguras para que as empresas tenham mais facilidade ao trabalhar em diferentes plataformas e ambientes, do datacenter básico até a edge computing.

# data[].attributes.body
|Siglas Nuvem|

On-premisses: Aquisição e gestão própria
IAAS: Comprar infraestrutura EC2
PAAS: Comprar plataforma
SAAS: Comprar software

|Premissas E.S|

1º - A razão de existir

Qual é o propósito da existência da solução, ela realmente irá resolver o problema do cliente?

2º - KISS

"Antes feito do que perfeito". Seja assertivo, lean, resolva os problemas presentes da forma mais objetiva possível, mas não esqueça do futuro.

3º - Mantenha a visão

Se você ja acertou, precisa continuar acertando, mantenha o foco e gere novas soluções para os seus clientes, estabilidade não existe.

4º - O que um produz, os outros consomem.

Você ja combinou com o usuário? Seu software pode ser a maior inovação do momento, mas ele só se torna uma solução se de fato solucionar um problema.

5º - Esteja aberto para o futuro.

A inovação é inevitável, aceite-a e ela será uma ótima aliada. Lute contra ela e ela te dizimará

6º - Planeje com antecedência! Visando a reutilização.

Planeje! Planeje! Execute! Uma casa projetada terá problemas, uma casa não projetada terá milhares. Invista tempo no planejamento, e ganhe na execução. Um código planejado e bem estruturado fará você ganhar tempo no futuro, seja por códigos reaproveitáveis ou simplesmente diminuindo o número de updates corretivos.

7º - Pense!

Antes de executar alguma coisa, pense. Quando achar que já pode executa-la, pense novamente.

|PRAXIS|
Compreende a necessidade do cliente;
Planejar uma solução que atenda a necessidade e resolva o problema;
Execução do plano de solução;
Examinar o resultado e testar se atendeu ao solicitado.

|Exemplos de Software|

Embarcado: Arduino, Assembly

Aplicações WEB/Aplicativos móveis: App Store, Play Store, Play Filmes, etc

|Características de Software Legado|
-Não recebe atualizações;
-Falta de mobilidade;
-Falta de suporte;
-Software hospedado em servidores físicos;

|Metodologia de Processo|

Comunicação
Planejamento
Modelagem
Construção
Entrega

# data[].attributes.body
Uma curva real é uma demonstração real de um Software desde seu Lançamento até então seus bug após atualizações onde que ocorrem mais facilmente ,e mostra que NENHUM software é 100% perfeito ,que a curva vai para cima e para baixo a todo momento

Tipos de Software:
Sistema:compilador --> Conversão de para linguagem de maquina.
Driver-->Digamos que é uma base para oque esteja rodando por fora.
Software----------->
(Engenharia/Cientifico)
Matlab-->Software exclusivo para estatistica.
CloudBiolinux-->estuda RNA e DNA .
Aspentech-->Mistura quimica.

Embarcado----->
ROM/PROM/EPROM/EEPROM/essas somente portas logicas de baixo nivel para controlar digamos uma pipoqueira/FLASH ROM

Para linha de Produtos:
Utilizado por muitos cliente ao mesmo tempo VISÂO?TOVs/APP/APLICAÇOES WEB

software legado --------->
é um software que não "funciona" mais ou não recebe um certo suporte

------ cronograma de ghandi

------   A essencia da pratica
1-comunicação e analise
2-modelagem e projeto software
3-executar plano

princípios de software
________________________________

1 - razão entender
2 - kiss : tornar algo fácil, não precisa ser complexo, desde que consiga entregar oque foi solicitado
3 - manter a visão: tornar um projeto visionário que dure a muito tempo
4 - oque um produz os outros consomem:  o que cliente espera, dar uma demonstração, principal dor, sugerir para implementação.
5- sempre estar aberto a mudar : esteja aberto para o futuro, aberto para mudanças, saber aprender e acima de tudo se adaptar as mudanças
6- planeje com antecedência : faça um algo para ser reutilizado de alguma forma.
7 - pense : seja criativo, pense, faça, persista

requisitos estrutura funcionais
cloud
ONDEMAND: Aquisição e gestão própria
IAAS: Comprar infraestrutura EC2 ex:escolhe servidor virtual e suas caracteristicas.
PAAS: Comprar plataforma
SAAS: Comprar software
OnPREMISSES :caro e antigo
-------------

Software de sistemas(são linguagens de baixo nivel, que da suporte para outras coisas, um tipo de base):
drivers faz um tipo de "tradução" que comanda o que deve ser executado pelo sistema
exemplo:deve c++, java, lua, python.

software de apricação (aplica a algo);
exemplo benner, word, zen Questor, corel draw.

spftware cientifico (dinamica orbital, calculo em massa, astronomia, genetica, etc)
exemblo:batlab, craud biolinux, aspentech(quimica), predict.io(relacionado a criacao de ia).

software embarcado (residente em produtos de hardware de sistema)
exemplo, assembly, C, arduino.

software para linha de produtos (utilizado por multiplos crientes diferentes ao mesmo tempo)
exemplo: ToTVS, visão sistemas, CISS

software de aplicação WEB/ Aplicativos moveis.
exemplo: Google Play, Play Music, Play store.
software legado

diagrama fluxo ----atores ,açoes ,relaçoes e scopo
varios atores ,poder ser de um servidor a um humano .qualquer ator que tenha uma entrada e saida

diagrama totalmente feito para o programador se orientar para executar suas açoes sobre o sistema

atividades de apoio

# data[].attributes.body
(Engenharia/Cientifico):
- Cloud BioLinux
- MatLab
- AspenTech
- predict.io
(Embarcados) | Residente em produtos de hardware e sistema:
- Assembly
- C
- Arduino
(Linha de produtos) | Utilizado por múltiplos clientes diferentes ao mesmo tempo:
- Visão Sistemas
- TOTVS
- CISS
(Aplicativos Móveis/Aplicações Web)
- Google Play, por exemplo

# data[].attributes.headline
Objetivos da Engenharia de Software:                

# data[].attributes.subject
Objetivos da Engenharia de Software:                

# data[].attributes.body
Capacitação com a utilização de teorias, técnicas e ferramentas para a produção e modelagem de sistema.

Modelagem de sistema: Desenvolvimento de modelos abstratos de um sistema para melhor entendimento, podendo utilizar notação gráfica como Unified Modeling Language (UML).
Contexto: Ilustra o contexto operacional de um sistema, o que existe além dos limites do sistema, que interesses sociais e organizacionais podem afetar as tomadas de decisões.
Interação: Auxiliar a identificar os requisitos do usuário, evitando problemas de comunicação. (Caso de uso e sequência)
Estrutura: Demonstra a organização de um sistema em termos de seus componentes que compõem este sistema e seus relacionamentos.
Comportamento: Mostram o que acontece ou o que deveria acontecer quando um sistema responde a um estimulo de seu ambiente (novos dados ou eventos disparados no processamento do sistema.
Diagramas em UML, dirigido a modelos comportamentais e estruturais.

# data[].attributes.body
Comunicação
Negociação
Persuasão
Trabalho em equipe
Agilidade
Inteligência Emocional
Criatividade.

# data[].attributes.body
Índice de falhas, tempo e mudanças: Quanto maior o tempo desde a criação do software, maior o índice de falhas, apresentando picos de índice de falhas na presença de mudanças, com a curva real de falhas tendendo ao infinito, pois com a maior complexidade do software também ocorre o aumento de probabilidade de bugs.

# data[].attributes.body
Software de sistema:
Baixo nível.

Compilador: conversão de linguagem de máquina.

Driver: Tradução do que o dispositivo precisa passar pro SO e do que o SO precisa passar para o dispositivo.

Sistemas operacionais.

Ex: Linux, RedHat,

Software de aplicação:

Funções específicas que precisam de um SO para funcionar.

Ex: Word, Benner, Zen, CorelDraw

Software de engenharia/científico:

Softwares que auxiliam aplicações científicas (dinâmica orbital, cálculo em massa, astronomia, genética)

Ex: Matlab, Predict.io, Cloud BioLinux (sequenciamento genômico), Aspentech.

Software embarcado:
Sem esses softwares, o hardware não consegue conversar com o sistema operacional

Ex: Arduino,

Programados em C, Assembly

Software para linhas de produtos:

Utilizados para múltiplos clientes, satisfazendo as necessidades de um determinado nicho de mercado.

Ex: Totvs, Visão Sistemas, Ciss

Softwares para aplicações WEB/Mobile:

Utilização para múltiplas funções, visando economia de energia e eficiência.

Ex: Amo Ofertas, Uber, D&D Beyond

# data[].attributes.body
Software de sistemas(são linguagens de baixo nivel, que da suporte para outras coisas, um tipo de base):
drivers faz um tipo de "tradução" que comanda o que deve ser executado pelo sistema
exemplo:deve c++, java, lua, python.

software de apricação (aplica a algo);
exemplo benner, word, zen Questor, corel draw.

spftware cientifico (dinamica orbital, calculo em massa, astronomia, genetica, etc)
exemblo:batlab, craud biolinux, aspentech(quimica), predict.io(relacionado a criacao de ia).

software embarcado (residente em produtos de hardware de sistema)
exemplo, assembly, C, arduino.

software para linha de produtos (utilizado por multiplos crientes diferentes ao mesmo tempo)
exemplo: TPTVS, visão sistemas, CISS

software de aplicação WEB/ Aplicativos moveis.
exemplo: Google Play, Play Music, Play store.

# data[].attributes.body
Software legado, é um software que não possui suporte; ex: Windows 7

# data[].attributes.body
Softwares que deixam de receber atualizações/suporte!

On-primesses -> Caro e propio

IAAS -> Infraestrutura como serviço! Aluga o servidor para hospedar seus códigos

SAAS -> Software as a service ou sistema como serviço, muito utilizado no ramo empresarial

PAAS -> Produto como serviço

# data[].attributes.body
Engenharia de Software Curva real  é oque o software com  bug ao atualizar  é quando o software funciona , mas nenhum software  100% perfeito .
a criação de um software pode-se ,  sempre resultar em bug.

* software, faz a conversão de linguagem de máquina.

*Software cientifico  - dinâmica orbital, calculo, em massa, astronomia, genética.

*Software embarcado: residente em produtos de hardware de sistema.

*software para linha de produtos: utilizado por múltiplos.
aplicações Web moveis econômicos pouco energia .

*software de linha de produtos: varios clientes  ao mesmo tempo

*Software de  aplicação: apenas um único cliente

Embarcados: sem o software em consegue se inserir em um sistema operacional.

*Software de Inteligência artificial : tomar decisões em cima de dados  para se validar, pode integrar dados disponíveis no drive.

Diagramas:
fluxo: diagrama já definido passo a passo.
casos: possibilidades que se tem de para se obter um resultado.

planejador de projetos
_______________________________
descreve  inicio e tempo de duração para as atividades do projeto

Cronograma: maior controle, separa por entregas, analise e examinar projeto.

princípios de software
________________________________

1 - razão entender
2 - kiss : tornar algo fácil, não precisa ser complexo, desde que consiga entregar oque foi solicitado
3 - manter a visão: tornar um projeto visionário que dure a muito tempo
4 - oque um produz os outros consomem:  o que cliente espera, dar uma demonstração, principal dor, sugerir para implementação.
5- sempre estar aberto a mudar : esteja aberto para o futuro, aberto para mudanças, saber aprender e acima de tudo se adaptar as mudanças
6- planeje com antecedência : faça um algo para ser reutilizado de alguma forma.
7 - pense : seja criativo, pense, faça, persista

# data[].attributes.body
On-Premises: "Teu" você adquire o rack/plano/servidor/tecnico e afins.

IAAS: Quando é adquirido infraestrutura. Exemplo EC2 Amazon.

SAAS: Quando é adquirido o software como serviço.

PAAS: Quando é adquirido uma plataforma para desenvolvimento de software.

# data[].attributes.body
Utilizados por uma organização ao longo dos anos, desempenhando funções essenciais ao seu negócio, não havendo atualizações, tendo assim a tecnologia usada por este software cada vez mais obsoleta.

Ex: Windows 7, Adobe Flash,

# data[].attributes.body
Cenário Atual, arquitetura logica de computação atual (Hibridismo),
APLICAÇÃO: monitorização, Colaboração, Comunicação, Finança

PLATAFORMA: identidade, motor de execução, base de dados, Filas, Armazenamento de objetos

INFRAESTRUTURA: computação, Armazenamento, Rede

# data[].attributes.body
On - premisses :criação da própria tecnologia de estrutura.
IAAS: compra de estrutura
SAAS: compra de software
PAAS: compra de Plataforma

# data[].attributes.body
Software legado é um software que não tem mais suporte
Arquitetura atual da computação: hibrida

ex de estruturas em software legado : Adobe Flash e o Silverlight da Microsoft

Modelo em nuvem

On-premisses - O software local é instalado e executado em computadores nas instalações da pessoa ou organização que usa o software, em vez de em uma instalação remota, como um farm de servidores ou nuvem

on demand
ex software ERP

iaas(Infrastructure as a Service) - compra de estrutura

saas(Software as a Service) - compra de software

paas(Platform as a Service) - compra de plataforma

MITOS
___________________________

mitos de gerenciamento: não precisa de marketing;

mitos dos clientes: já fiz não funciona;

mitos dos profissionais: na minha máquina funciona;

Metodologia do Processo

- Comunicação
- Planejamento
- Modelagem
- Construção
- Entrega

natureza do software

A transformação de uma ideia em uma aplicação computacional para que possa ser utilizada em seguida por outras pessoas.

por quem é realizada?

A implementação normalmente é realizada por programadores, no entanto, existe uma equipe para gerenciar a construção, engenheiros de software para definir as estruturas, e também o PO  que representa o cliente.

qual sua importancia?

Importante do ponto de vista administrativo para diminuir custos ou aumentar os lucros das empresas e consequentemente fazer esta gerar lucro e o software melhora a qualidade de vida das pessoas.

etapas envolvidas

levantamento de requisitos, planejamento, implementação e gestão.

-Como ter garantia de que o trabalho foi realizado?

Verificando se os objetivos iniciais foram atingidos e como foram realizados,  receptividade do cliente e os stakeholders. Além da eficiência prática.

software

estruturas de dados que possibilitam aos programas manipular informações  adequadamente

modelagem: UML

A UML é uma linguagem-padrão para a elaboração da estrutura de projetos de software. Ela poderá ser empregada para a visualização, a especificação, a construção e a documentação de artefatos que façam uso de sistemas complexos de software

EX: diagrama de sequência, diagrama de máquina de estados e diagrama de estrutura composta.

tipos de software

software de sistema sistemas operacionais e drivers de sistema operacional

software de aplicação - softwares especificos como word

sotware de engenharia - sotware de calculo, astronomia, genetica ex matlab e clound biolinux

software embarcado - residente em produtos de hardware de software ex arduino,  assemble, c

software de linha de produtos - utilizado por múltiplos clientes  diferentes ao mesmo tempo ex totvs visão sistemas

aplicações web - aplicativos moveis

software de inteligência artificial

metodologia de processo

comunicação deixe a comunicação  clara e objetiva,
planejamento - planejar
modelagem - analisar soluções

camada da engenharia de software

foco na qualidade, processo, métodos, ferramentas

compliance:

uma Organização “em compliance” é aquela que, por cumprir e observar rigorosamente a legislação à qual se submete e aplicar princípios éticos nas suas tomadas de decisões, preserva ilesa sua integridade e resiliência, assim como de seus colaboradores e da Alta Administração.

Stakeholders:

Stakeholders são os indivíduos e organizações impactados pelas ações da sua empresa. ... Apesar de causar um grande impacto nas decisões tomadas pelas empresas, muita gente não sabe, ao certo, o que significa esse termo e qual a relevância dele para a sua organização.

atividades de apoio

controle e acompanhamento de projeto
administração de risco
garantia da qualidade de software

# data[].attributes.body
On-premise: A própria empresa tem a responsabilidade de aplicações de hardware e software. Em outras palavras, toda a infraestrutura, customização, configuração e atualização é feita internamente

IAAS: Infraestrutura como serviço
Ex: Utilização de instâncias de computadores na nuvem, Amazon EC2.

SAAS: Software como serviço:  O fornecedor do software se responsabiliza por toda a estrutura necessária à disponibilização do sistema, e o cliente utiliza o software via internet, pagando um valor pelo serviço

PAAS: Plataforma como serviço: consiste no serviço propriamente dito de hospedagem e implementação de hardware e software, que é usado para prover aplicações por meio da Internet

# data[].attributes.body
Ferramentas,
Métodos,
Processo,
Foco na Qualidade

# data[].attributes.headline
Camadas engenharia de software (Pirâmide)

# data[].attributes.subject
Camadas engenharia de software (Pirâmide)

# data[].attributes.body
4- Ferramentas
3- Métodos
2- Processo
1- Foco na Qualidade

# data[].attributes.body
Foco na qualidade
Processo
Métodos
Ferramentas

# data[].attributes.body
* Comunicação
* Planejamento
* Modelagem
* Construção
* Entrega

# data[].attributes.body
As metodologias ágeis são uma forma de acelerar entregas de um determinado projeto. Ela consiste no fracionamento de entregas para o cliente final em ciclos menores. Com isso, eventuais problemas podem ser corrigidos mais rapidamente e os planejamentos serem revistos.

É uma filosofia que promove o trabalho em equipe, a colaboração entre os funcionários e a inteligência coletiva. Basicamente, os métodos ágeis são um conjunto de práticas eficazes que se destinam a tornar a entrega mais rápida de produtos de alta qualidade, tendo uma abordagem de negócios que alinha o desenvolvimento do projeto com as necessidades do cliente e os objetivos da empresa. Esse processo dá ao cliente a oportunidade de conhecer os resultados do trabalho antecipadamente, aumentando assim a sinergia entre a empresa, o cliente e o projeto.

XP (eXtreme Programming)
Kanbam
SCRUM
LEAN

# data[].attributes.body
Metodologia de processo :comunicação, planejamento, modelagem, construção e entrega.

# data[].attributes.body
Comunicação - ser claro

Planejamento - saber o que o cliente espera

Modelagem

Construção
Entrega

Entrega

# data[].attributes.body
Utilidades Gráfico de Gantt

Controlar o cronograma de um projeto

Ajudar a avaliar os prazos de entrega

Identificar recursos críticos

Segmentar tarefas

Distribuir reponsabilidades

Identificar a interdependência de atividades

Definir prazos de entrega

Acompanhar o andamento

# data[].attributes.headline
7 Premissas/Pilares da Engenharia de Software 

# data[].attributes.subject
7 Premissas/Pilares da Engenharia de Software 

# data[].attributes.body
1º - A razão de existir

O software deve existir com o proposito de gerar valor, suprir uma dor e/ou resolver um problema para o cliente, sendo que todos os demais princípios se apoiam nisso. Suprir uma dor, resolver um problema, melhorar um processo com visão no longo prazo de maneira inteligente

2º - KISS (Keep It Simple, Stupid!)

Como o famoso ditado "não é necessário criar a roda novamente", muitas vezes é pertinente utilizar recursos que já estão disponível para gastar tempo e empenho desenvolvendo soluções que tragam real valor, não sendo algo simplista, e adequando o software com os reais propósitos.

3º - Mantenha a visão

Ter claro o objetivo final, deixando o projeto mais fácil de ser compreendido e expandido, caso necessário. Questão econômica, tecnológica e cultural, analisar tendências do fórum econômico mundial, indicadores, cenários. Estar atento a inovação, coisas que serão uteis no mundo e comportamentos com diferentes nichos culturais.

4º - O que um produz, os outros consomem.

Estar atendo ao cenário econômico, tecnológico e cultural, analisando as tendências do fórum econômico mundial, como também o contexto em menor escala, como a nível estadual.

Estar de olho em tecnologias e ideias inovadoras, coisas que serão úteis à sociedade.

5º - Esteja aberto para o futuro.

"Se não estiver aberto a mudanças, estará fadado ao fracasso!" Com a realidade da indústria 4.0, é importante, que o projeto tenha premissas a longo prazo, prontos para se adaptar as mudanças do mercado e contextos econômicos.

6º - Planeje com antecedência! Visando a reutilização.

Economia de tempo e esforço, tendo um trabalho minucioso durante a criação, visando as possíveis modificações durante o tempo de vida do software.

7º - Pense!

Pensar bem e de forma clara antes de agir, inclusive, para poder implementar os demais princípios. Ter um meio termo entre planejamento e ação, não ficar esperando o momento perfeito, mas estar preparado para agir da melhor forma possível. Learning coffee: (Habito do Vale do Silício) - Troca de ideias, aumentar e networking, aumento de criatividade

# data[].attributes.body
1 - Requisitos

Funcionais: estrutura, técnica

Não funcionais: compliance, como fazer tal tarefa

2 - Modelagem

Diagramas

3 - Construção

Linguagem escolhida

4 - Implantação

Validação

# data[].attributes.body
1º - A razão de existir

2º - KISS

3º - Mantenha a visão

4º - O que um produz, os outros consomem.

5º - Esteja aberto para o futuro.

6º - Planeje com antecedência! Visando a reutilização.

7º - Pense!

# data[].attributes.body
O que é? Software é um conjunto de instruções que visa executar com maestria uma série de tarefas a fim de resolver um problema, sendo ele real ou abstrato.

Quem realiza? É realizado por indivíduos dedicados a entender problemas e necessidades e transformá-los em código computacional.

Por que é importante? Com a ascensão da tecnologia e introdução a indústria 4.0, os softwares são indispensáveis em nosso cotidiano, estando presente e sendo necessária desde cenários como possibilidades de viagens interplanetárias e medicina, até em casos de programação para coisas mais simples e rotineiras como a implementação de Internet das Coisas e sistemas contábeis.

Quais são as etapas envolvidas? Pesquisa, análise, desenvolvimento, correções e entrega final.

Qual é o artefato? Um programa computacional que atende às necessidades, tendo como base não somente entregar o que foi prometido, como também ter cuidados como segurança e desempenho.

Como garantir que o trabalho foi realizado corretamente? Tendo supervisão de um indivíduo que possa ter a visão do cliente e faça uma avaliação do contexto geral do que é esperado.

# data[].attributes.body
1 - Requisitos :
- Funcionais: estrutura, técnica
- Não funcionais: compliance

2 - Modelagem (Diagrama)

3 - Construção (Linguagem escolhida)

4 - Implantação (Validação)

# data[].attributes.body
XP (eXtreme Programming)
Kanbam
SCRUM
LEAN

# data[].attributes.body
Linguagem de Modelagem Unificada

Fornecer a arquitetos de sistemas, engenheiros de software e desenvolvedores de software ferramentas de análise, design e implementação para sistemas baseados em software, bem como para a modelagem de processos de negócios e similares.

Desenvolver as condições gerais da indústria ao permitir a interoperabilidade de ferramentas de modelagem visual de objetos. No entanto, para permitir a troca significativa de informações de modelos entre as ferramentas, é necessário um acordo sobre semântica e notação.

A UML atende aos seguintes requisitos:

Estabelecer uma definição formal de um metamodelo baseado em meta-objetos (MOF, em inglês) comuns que especifica a sintaxe abstrata da UML. A sintaxe abstrata define o conjunto de conceitos de modelagem UML, seus atributos e relacionamentos, bem como as regras para combinar estes conceitos para construir modelos UML parciais ou completos.

Fornecer uma explicação detalhada da semântica de cada conceito de modelagem UML. A semântica define, de forma independente da tecnologia, como os conceitos UML devem ser realizados por computadores.

Especificar os elementos de notação legíveis para humanos para representar os conceitos de modelagem UML individuais, bem como regras para combiná-los em uma variedade de tipos de diagramas correspondentes a diferentes aspectos dos sistemas modelados.

Definir maneiras pelas quais ferramentas UML podem entrar em conformidade com esta especificação. Isto é suportado (em uma especificação separada) por uma especificação baseada em XML de formatos de modelos de intercâmbio correspondentes (XMI) que devem ser realizados por ferramentas compatíveis.

# data[].attributes.body
Linhas de Vida em Diagramas UML
Nos diagramas UML, como diagramas de sequência e comunicação, linhas de vida representam objetos que participam de uma interação. Cada instância em uma interação é representada por uma linha de vida.

Mensagens em Diagramas UML
Uma mensagem é um elemento em um diagrama UML que define um tipo específico de comunicação entre instâncias em uma interação. Uma mensagem transporta informações de uma instância, que é representada por uma linha de vida, para uma outra instância em uma interação.

Fragmentos Combinados nos Diagramas de Sequência
Nos diagramas de sequência, fragmentos combinados são agrupamentos lógicos representados por um retângulo, que contém as estruturas condicionais que afetam o fluxo de mensagens.

Usos da Interação nos Diagramas de Sequência
Nos diagramas de sequência, os usos de interação permitem que você faça referência a outras interações existentes. Você pode criar uma sequência completa e complexa de interações mais simples e menores.

# data[].attributes.body
*DIAGRAMA DE SEQUENCIA*

Testar todas as alternativas do que ele pode executar no sistema.
Avalia emoção, se entrega o que ele espera.

# data[].attributes.body
1. A razão de existir

2. KISS

3. Mantenha a visão

4. O que um produz, os outros consomem.

5. Esteja aberto para o futuro.Planeje com antecedência!

6. Visando a reutilização.

7. Pense!

Os mitos

Gerencia: Se esta atrasado é so colocar mais DEVS

Cliente: Software não aumentam a lucratividade

Profisional: Código ruim também funciona

Modelagem

Diagrama Sequencia ou Atividade

Orienta a Jornada do Trabalho

# data[].attributes.body
Modelo Antigo de desenvolvimento de software, que foi abandonado caracterizava-se por realizar o trabalho em etapas predeterminadas que eram realizadas de forma sequencial. Não sendo possível retornar para um etapa após esta ser realizada e deve-se seguir da forma que foi planejado do começo ao fim.

As etapas do desenvolvimento são:

Levantamento de requisitos, levanta-se com o cliente tudo que é necessário ser implementado.

Projeto, realiza-se o cronograma, definição de tarefas, estimativa de finalização e prazo, montagem do time de desenvolvimento, modelagem da estrutura e interface do sistema.

Implementação, codificação do projeto.

Testes, aplicam-se testes e realizam-se correções.

Implantação e manutenção, implanta-se no cliente o software e caso necessário, faz-se uma manutenção, implantando o novamente o modelo cascata.

Assim, o modelo cascata foi abandonado por conta de erros, caso existissem erros na parte de levantamento de requisitos e projeto, todo o resto estaria errado e só poderia ser arrumado após a implantação por meio de outro modelo cascata.

# data[].attributes.body
O que é?

A transformação de uma ideia em uma aplicação computacional para que possa ser utilizada posteriormente por outros pessoas buscando automatização de uma tarefa ou uma ação.

Quem realiza?

A implementação prática normalmente é realizada por programadores, entretanto, existe uma equipe para gerenciar a construção, engenheiros de software para definir as estruturas, além de PO (product owner) que representa o cliente, entre outros importantes profissionais.

Por que é importante?

Importante do ponto de vista administrativo para diminuir custos ou aumentar os lucros das empresas e consequentemente fazer esta gerar lucro para os stakeholders. Do ponto de vista do software melhora a qualidade de vida das pessoas, automatiza tarefas repetitivas, melhora a humanidade e avança a tecnologia melhorando a qualidade de vida como um todo.

Quais são as etapas envolvidas?

Estas dependem do método empregado, entretanto, geralmente concentram-se em ideia, levantamento de requisitos, planejamento/estratégia, implementação e gestão.  É importante perceber que todos essas etapas muitas vezes são repetidas, ampliadas e aprimoradas constantemente.

Qual é o artefato?

Como garantir que o trabalho foi realizado  corretamente?

Verificando/percebendo se os objetivos iniciais foram atingidos e como foram realizados, bem como as modificações que foram realizadas "On the run" e como foi a receptividade do cliente e os stakeholders. Além da eficiência, eficácia e efetividade prática.

# data[].attributes.body
1) Razão de Existir
Os softwares devem ser criados com um propósito, uma razão, caso não exista uma razão boa é melhor nem perder tempo criando. Já que serão empregados recursos como tempo, dinheiro e mão de obra que podem ser custosos e desperdiçados a toa.

Exemplo: Uma empresa deve fazer o levantamento de requisitos para verificar se vale a pena ou não produzir um software, mitigando os custos e desperdícios.

2) KISS (Keep it Simple, Stupid)
Mantenha isso simples, simples não significa capenga ou mal feito, simples significa ter uma interface leve, de fácil localização que permite aos usuários entenderem rapidamente o que precisa ser feito, além de ser leve para que dispositivos menos robustos possam utilizar.

Exemplo: Os produtos da Apple, que focam em design simplificado e novas funcionalidades para "encantar" o usuário.

3) Mantenha a Visão
Deve-se ter uma visão clara do produto final desejado e busca-la, evitar fazer coisas que não agreguem nada ou mesmo que tornem o software uma colchão de retalhos com várias funcionalidades não necessárias.

Exemplos: Softwares embarcados são exemplos disso, eles cumprem um propósito específico sem "perfumarias" fazem oque necessita ser feito e nada além disso, tem foco no produto final.

4) O que um produz os outros consomem
É importante buscar documentar o software e construir as coisas de uma forma que seja possível no futuro para outros usuários/desenvolvedores compreenderem o que foi/será feito. Projetar, especificar  e ciente de que alguém terá que utilizar isso no futuro.

Exemplo: a documentação de sistemas de banco de dados, onde explicam como deve ser feitos os procedimentos, comandos, além de falar o que pode/não pode ser alterado.

5) Esteja Aberto para o Futuro
Estar com a mente aberta a inovação e mudanças que possam ocorrer, sejam estas nas necessidades dos clientes, do mercado em geral, ou até mesmo regulações governamentais. Assim, preparado para oportunizar novas possibilidades de ganho de mercado e fazer o sistema ganhar sobrevida.

Exemplo: A falta de visão da Kodak que foi a inventora da máquina digital e acabou por ignora-la já que seu negócio era o ganho por meio da venda de filmes fotográficos, logo, optou por não se autodestruir para inovar e tornou-se falida e obsoleta.

6) Planeje com antecedência, visando a reutilização
É de suma importância criar código que possa ser reutilizado ao longo de tempo, evitando desperdício de recursos. Deve-se planejar que partes do código serão reutilizadas e cria-lo já desta forma.

Exemplo: O sistema de CRUD, a grande maioria destes sistemas tem 80 a 90% de compatibilidade entre si, porque simplesmente não "copiar" e fazer as alterações necessárias alterando o layout e o que for necessário?!

7) Pense
Pensar de forma clara, planejar, tudo isso gera economia de tempo e energia, quanto melhor for o planejamento, menor serão os erros e problemas futuros.

Exemplo: Os projetos de software, onde busca-se planejar e tudo que precisa ser feito mitigando erros futuros.

# data[].attributes.body
Mitos de gerenciamento
"O que é feito uma vez, nunca mais será refeito ou ajustado"

Mitos dos clientes
"Só precisamos de uma pequena mudança, coisa rápida/fácil"

Mitos dos profissionais da área

"Não há necessidade de melhorar o hardware, já que esse não interfere na aplicação"

# data[].attributes.body
Primeiro princípio: a razão de existir

Um sistema de software existe por  um motivo: agregar valor para seus usuários. Todas as decisões devem ser tomadas com esse princípio em mente. Antes de especificar um requisito de um sistema, antes de indicar alguma parte da funcionalidade de um sistema, antes de determinar as plataformas de hardware ou os processos de desenvolvimento, pergunte a si mesmo: "Isso realmente agrega valor ao sistema?". Se a resposta for "não", não o faça. Todos os demais princípios se apoiam neste primeiro.

Segundo princípio: KISS (Keep It Simple, Stupid!, ou seja: não complique!)

O projeto de software não é um processo casual. Existem muitos fatores a considerar em qualquer trabalho de projeto. Todo projeto deve ser o mais simples possível, mas não simplista. Esse princípio contribui para um sistema mais fácil de compreender e manter. Isso não significa que características, até mesmo as internas, devam ser descartadas em nome da simplicidade. De fato, os projetos mais elegantes normalmente são os mais simples. Simples também não significa "gambiarra". Na verdade, muitas vezes são necessárias muitas reflexões e trabalho em várias iterações para simplificar. A contrapartida é um software mais fácil de manter e menos propenso a erros.

Terceiro princípio: mantenha a visão

Uma visão clara é essencial para o sucesso. Sem ela um projeto se torna ambíguo. Sem uma integridade conceitual, corre-se o risco de transformar o projeto em uma colcha de retalhos de projetos incompatíveis, unidos por parafusos inadequados...Comprometer a visão arquitetural de um sistema de software debilita e até poderá destruir sistemas bem projetados. Ter um arquiteto responsável e capaz de manter a visão clara e de reforçar a adequação ajuda a assegurar o êxito de um projeto.

Quarto princípio: o que um produz outros consomem

Raramente um sistema de qualidade industrial é construído e utilizado de forma isolada. De uma maneira ou de outra, alguém mais vai usar, manter, documentar ou de alguma forma, depender da capacidade de entender seu sistema. Portanto, sempre especifique, projete e implemente ciente de que mais alguém terá de entender o que você está fazendo. O público  para qualquer produto de desenvolvimento de software é potencialmente grande. Especifique tendo como objetivo os usuários. Projete tendo em mente os implementadores. Codifique se preocupando com aqueles que deverão manter e ampliar o sistema. Alguém terá que depurar o código que você escreveu, e isso o torna um usuário de seu código. Facilitando o trabalho de todas essas pessoas, você agrega mais valor ao sistema.

Quinto princípio: esteja aberto para o futuro

Um sistema com tempo de vida mais longo tem mais valor. Nos ambientes computacionais de hoje, em que as especificações mudam, de um instante para outro, e as plataformas de hardware se tornam rapidamente obsoletas, a vida de um software, em geral, é medida em meses. Contudo, os verdadeiros, sistemas com "qualidade industrial" devem durar muito mais. Para serem bem sucedidos nisso, esses sistemas precisam estar prontos para se adaptar a essas e outras mudanças. Sistemas que obtêm sucesso são aqueles que foram projetados dessa forma desde seu princípio. Jamais faça projetos limitados. Sempre pergunte "e se" e prepare-se para todas as respostas possíveis, criando sistemas que resolvam o problema geral, não apenas o específico. Isso muito provavelmente conduziria à reutilização de um sistema inteiro.

Sexto princípio: planeje com antecedência, visando a reutilização

A reutilização economiza tempo e esforço.  Alcançar um alto grau de reutilização é indiscutivelmente a meta mais difícil de ser atingida ao se desenvolver um sistema. A reutilização de código em projetos de software tem sido proclamada como uma grande vantagem do uso de tecnologia orientadas a objetos. Contudo, o retorno desse investimento não é automático. Aproveitar as possibilidades de reutilização oferecidas pela programação orientada a objetos ou convencional exige planejamento e capacidade de fazer previsões. Existem várias técnicas para levar a cabo a reutilização em cada um dos níveis do processo de desenvolvimento do sistema...Planejar com antecedência para a reutilização, reduz o custo e aumenta o valor tanto dos componentes reutilizáveis quanto dos sistemas aos quais os sistemas serão incorporados.

Sétimo princípio: pense!

Este último princípio é provavelmente, o mais menosprezado. Pensar bem e de forma clara antes de agir quase sempre produz melhores resultados. Quando se analisa alguma coisa, provavelmente ela sairá correta. Ganha-se também conhecimento de como fazer correto novamente. Se você realmente analisar algo e mesmo assim o fizer da forma errada, isso se tornará uma valiosa experiência. Um efeito colateral da análise é aprender a reconhecer quando não se sabe algo, e até que ponto poderá buscar o conhecimento. Quando a análise clara faz parte de um sistema, seu valor aflora.

# data[].attributes.body
Os conceitos de engenharia de software são essenciais, pois saber que programar é uma pequena parte dos conceitos de software, mas, no mundo real, quando você desenvolve um projeto, há muitas etapas envolvidas. Seja desde o design, que mostra de onde a parte específica do código vai, em seguida, back-end e nuvem e muitos outros conceitos.

Conhecer programação é como saber como usar concreto e tijolos para construir paredes, como instalar portas e janelas, como fazer conexões elétricas e instalar fontes de água, etc., você pode saber tudo sobre o que é necessário conhecer para construir uma casa.

Mas, se alguém simplesmente começa a construir uma casa a partir do zero sem pré-planejar a estrutura e analisar os requisitos de espaço, salas, saídas de água, drenagem, etc., o resultado provavelmente será uma bagunça estragada. Mas se fizermos um planejamento adequado, analisarmos nossos requisitos, prepararmos um esquema de estrutura, planejarmos nossas finanças, etc., então o resultado definitivamente será bom.

Então, aqui podemos relacionar essa coisa, pré-planejamento com conceitos e práticas de engenharia de software. Se os seguirmos corretamente, o software será o mais eficiente, concluído em um período de tempo mínimo, atendendo ao objetivo exato para o qual foi necessário e tudo.

# data[].attributes.body
Sistemas Legados são plataformas em obsolescência que estão em uso dentro de uma companhia por muitos anos. Eles são desenvolvidos para ter uma loga vida útil.

Em outras palavras, podemos dizer que, em virtude de muitos avanços da tecnologia, essa infraestrutura deixa de se encaixar às dinâmicas da organização, como um software desenvolvido há várias décadas.

Quais as suas desvantagens?

Apesar de as empresas manterem os sistemas antigos por confiabilidade, a manutenção de um software desatualizado gera maior custo para a empresa, além de trazer muitos bugs, principalmente quando se tenta implementar melhorias nesse processo.

Quais as suas principais características?

Software desatualizado

Tecnologia obsoleta

Falta de mobilidade

Falta de colaboradores treinados

Falta de escalabilidade

Falta de suporte

Incompatibilidade com sistemas modernos

Software hospedado em servidores físicos

# data[].attributes.body
A razão de existir.

Um software que não oferece valor para o usuário falhou fundamentalmente. Cada decisão durante a construção de um software, que vai desde o primeiro requisito levantado até os processos que levarão ao seu desenvolvimento, deve ser tomada para que a sua existência se justifique no valor que ele representa para quem vai utilizá-lo.

KISS (Keep It Simple, Stupid!)

o projeto é onde o engenheiro combina os propósitos das pessoas quem deseja o software com a tecnologia necessária para a sua construção, unindo assim dois mundos diferentes. Com isso podemos criar uma representação detalhada da sua arquitetura, estruturas de dados, interfaces, bem como dos demais componentes dos quais depende a sua implementação.

Nem sempre um projeto de software é sustentado por uma boa relação entre prazo e entrega. Contudo, a qualidade do software não deve ser comprometida pela velocidade de entrega do projeto. É preferível, nesse primeiro momento, aperfeiçoar as ideias em busca de uma solução elegante para o problema a acatar a primeira solução por questões de prazo.

Mantenha a visão.

Uma visão clara e bem definida do sistema é essencial para o sucesso de um projeto de software.
Sem isso, um projeto quase infalivelmente acaba sendo concebido pela iniciativa de uma ou duas mentes restrito à sua própria visão.
Se não existir uma integridade conceitual um sistema ameaça tornar-se uma multiplicidade de modelos incompatíveis unidas pelo tipo errado de parafusos.

Comprometer a visão arquitetônica de um sistema de software enfraquece o projeto e acabará por quebrar mesmo os sistemas mais bem projetados.
Ter um arquiteto que pode manter a visão e garantir o seu cumprimento ajuda a garantir um projeto de software de sucesso.

O que um produz outros consomem.

De alguma forma ou de outra alguém vai usar, manter, documentar ou depender de ser capaz de compreender o seu sistema.

Assim, sempre especifique, projete e implemente tendo em mente que alguém vai ter que entender o que você esta fazendo.
Especifique pensando nos usuários finais. Projete tendo em mente os desenvolvedores. Ao codificar preocupe-se com aqueles que devem manter e ampliar o sistema.
Alguém pode ter que depurar o código que você escreve, e isso faz dele um usuário de seu código.

Tornar mais fácil o trabalho de quem vai consumir o que você produziu agrega valor ao sistema.

Esteja aberto para o futuro.

Um sistema com uma longa vida tem mais valor.
No ambiente de desenvolvimento de software atual onde as especificações mudam em um piscar de olhos e onde as plataformas de hardware se tornam obsoletas com meses de uso, o tempo de vida de um produto de software geralmente é medido em meses ao invés de anos.
Porém sistemas de softwares robustos e bem projetadas tendem a durar por mais tempo em produção.
Para fazer um produto de software com esse perfil de sucesso um projeto deve estar apto a se adaptar às necessidades em constantes mudanças do usuários. Isso somente é possível para projetos que foram concebidos desde o princípio levando isso em conta.
Sempre pergunte : "O que acontece se...?"

E prepare-se para todos os tipos de respostas possíveis de forma a criar sistemas que resolvam não um problema específico mas um problema geral.

Sempre escreva o código necessário na implementação e assegure-se sempre de que a arquitetura do projeto seja flexível e extensível de modo a ser capaz de envolver cenários futuros.

Planeje com antecedência, visando a reutilização.

A reutilização economiza tempo e esforço.

Alcançar um elevado nível de reutilização é sem dúvida o objetivo mais difícil de alcançar no desenvolvimento de um sistema de software.

A reutilização de código e de projetos, foi proclamada como um dos principais benefícios do uso de tecnologias orientadas a objeto. No entanto, o retorno sobre este investimento não é automático.

Para alavancar as possibilidades de reutilização que oferece a programação Orientada a Objetos é necessário planejamento e premeditação.

Existem várias técnicas para realizar a reutilização em todos os níveis do processo de desenvolvimento de sistemas, e , aquelas relacionadas ao projeto detalhado e ao nível de código são bem conhecidas e documentadas.

Embora exista uma grande quantidade de  literatura que aborda a reutilização de projetos na forma de padrões de software, é preciso mais que isso; é preciso comunicar as oportunidades de reuso para outras pessoas na organização, isso é fundamental.

Pense!

Colocando o pensamento antes da ação quase sempre se produz os melhores resultados.

Quando você pensa sobre algo, esta mais propenso a fazê-lo direito. Você também ganha conhecimento sobre como fazê-lo.

Se você pensa em algo e ainda assim a coisa sai errado,  isso é incorporado a sua base de experiência e torna-se experiência valiosa.

Além disso pensar é aprender a reconhecer quando você não sabe algo, e a que ponto você pode pesquisar a resposta.

Quando o pensamento claro entra em um sistema, o valor sai.

Aplicar os seis primeiros princípios requer um grande esforço de pensamento, mas as recompensas potenciais são enormes.

# data[].attributes.body
O modelo cascata é uma metodologia de desenvolvimento de software surgida na década de 1970. Sua principal característica é a divisão das tarefas em etapas predeterminadas, que são executadas de forma sequencial.

Isso quer dizer que é preciso finalizar todas as tarefas de uma etapa para que seja possível passar para a seguinte. Ao cumprir todas as etapas, o resultado será um produto de software funcional, pronto para ser entregue ao cliente.

As Fases do Modelo Cascata

Especificação

O principal aspecto da cascata é que todos os requisitos (especificações) do cliente sejam reunidos no início do projeto, permitindo que todas as outras fases sejam planejadas sem o envolvimento adicional do cliente até que o produto esteja completo. Supõe-se que todos os requisitos possam ser reunidos nessa fase.

Design

A fase de design é melhor dividida em subfases de design lógico e design físico. A subfase do projeto lógico é quando possíveis soluções são discutidas e teorizadas. A subfase do projeto físico é quando essas ideias e esquemas teóricos são transformados em especificações concretas.

Implementação

A fase de implementação ocorre quando os programadores assimilam os requisitos e especificações das fases anteriores e produzem o código real.

Teste

Nesta fase, o cliente analisa o produto para garantir que ele atenda aos requisitos estabelecidos no início do projeto. Isso é feito liberando um produto completo para o cliente.

Manutenção

O cliente está usando o produto regularmente durante a fase de manutenção, descobrindo bugs, recursos inadequados e outros erros que ocorreram durante a produção. A equipe de produção aplica essas correções conforme necessário até que o cliente esteja satisfeito.

Vantagens do Modelo Cascata

Fácil de usar e gerenciar;

A disciplina é aplicada;

Requer uma abordagem bem documentada;

# data[].attributes.body
Administrativo:

Se nós estamos atrasados nos prazos, podemos adicionar mais programadores e tirar o atraso

Cliente:

Uma declaração geral dos objetivos é suficiente para se começar a escrever programas - podemos preencher os detalhes mais tarde

Desenvolvedor:

Assim que escrevermos o programa e o colocarmos em funcionamento nosso trabalho estará completo.

# data[].attributes.body
REQUISITOS DE INFRAESTRUTURAS - REQUISITOS FUNCIONAIS (Funcionamento de software)

-On-Premisses

-On-Demand (Cloud)
I as a s: INFRA Servidor | memória | processador | link (Terceirização de máquina)
P as a S: PLATAFORMA Sistema / site online
S as a S: SOFTWARE Solução pronta (paga só o software)

# data[].attributes.body
Software pode ser definido como um conjunto de instruções que permitem ao usuário controlar um aparelho eletrônico.

# data[].attributes.body
Software de sistemas(são linguagens de baixo nivel, que da suporte para outras coisas, um tipo de base):
drivers faz um tipo de "tradução" que comanda o que deve ser executado pelo sistema
exemplo:deve c++, java, lua, python.

software de aplicação (aplica a algo);
exemplo benner, word, zen Questor, corel draw.

software cientifico (dinamica orbital, calculo em massa, astronomia, genetica, etc)
exemblo:batlab, craud biolinux, aspentech(química), predict.io(relacionado a criação de ia).

software embarcado (residente em produtos de hardware de sistema)
exemplo, assembly, C, arduino.

software para linha de produtos (utilizado por multiplos crientes diferentes ao mesmo tempo)
exemplo: TPTVS, visão sistemas, CISS

software de aplicação WEB/ Aplicativos moveis.
exemplo: Google Play, Play Music, Play store.

# data[].attributes.headline
Diagrama de fluxo e Diagrama de Caso de Uso

# data[].attributes.subject
Diagrama de fluxo e Diagrama de Caso de Uso

# data[].attributes.body
O diagrama de fluxo de dados é uma representação gráfica do "fluxo" de dados através de um sistema de informação, modelando seus aspectos de processo. Ele fornece apenas uma visão do sistema, a visão estruturada das funções, ou seja, o fluxo dos dados.
O diagrama de caso de uso descreve a funcionalidade proposta para um novo sistema que será projetado, é uma excelente ferramenta para o levantamento dos requisitos funcionais do sistema. É um "documento narrativo que descreve a sequência de eventos de um ator que usa um sistema para completar um processo".

# data[].attributes.body
Caso de uso: Atores | Actions | Relações | Escopo
Obs.: O ator não é apenas um ser humano, pode ser um servidor (I/O).

Fluxo: Saber como desenvolver o software