quinta-feira, 30 de março de 2017

UML - [Analise, Desenvolvimento, Engenharia] de Sistemas

(Clique na imagem para ampliar)


UML - [Analise, Desenvolvimento, Engenharia] de Sistemas
CEPRO Consultoria em Informática:  https://www.facebook.com/cepro001/

Unified Modeling Language [N.T.:Linguagem de Modelagem Unificada] é uma linguagem de modelagem de uso geral que inclui uma notação gráfica usada para criar um modelo abstrato de um sistema, conhecido como um modelo UML. O modelo UML contempla:

Diagramas de estrutura: enfatizam o que os objetos devem ser no sistema que está sendo modelado

Diagramas de comportamento: enfatizam o que deve acontecer no sistema que está sendo modelado

Diagramas de interação: um subconjunto de diagramas de comportamento, enfatizam o fluxo de controle e dados entre os objetos no sistema que está sendo modelado.


VER TAMBÉM:

Business Intelligence - Uma Estrutura de Referência (Framework) para Construção



Análise de Sistemas - Evolução - Estruturada / Objeto / SOA



Fontes de imagens:

Processo (Existente ou em Design):
- httppt.depositphotos.com7903974stock-photo-teamwork-business-company-green-puzzle.html

Atividades das Equipes de Negócio e Analise:
- http://br.freepik.com/fotos-vetores-gratis/pessoas-de-negocios

UML - Overview / Diagrams:
- https://commons.wikimedia.org/wiki/Unified_Modeling_Language

domingo, 12 de março de 2017

#QuartaRevoluçãoIndustrial-A Automação de Processos ([Analise/Engenharia/Desenvolvimento] de Sistemas / Software) é Automatizável?


(Clique na imagem para ampliar)

(Clique na imagem para ampliar)

#QuartaRevoluçãoIndustrial
A Automação de Processos [Analise/Engenharia/Desenvolvimento] de Sistemas / Software) é Automatizável?

O Processo de Industrialização visa TRANSFORMAR Processos de Produção ARTESANAIS (dependentes de expertise humana) em Processos de Produção GERENCIÁVEIS (em Custo, Prazo e Qualidade). 

Recursos Humanos devem ser tão Intercambiáveis como os outros Recursos de Produção (Matéria-prima, Energia, Máquinas, Recursos Financeiros). 

Sempre que possível, partes do Processo de Produção (as Atividades já Controladas) devem ser substituídas por ATIVIDADES AUTOMATIZADAS (sem intervenção humana). 

Para isso os Processos de Produção devem ser:
- Fragmentados em unidades minímas de trabalho (Especialização => diminuir Complexidade (usar Recursos Humanos mais baratos) e facilitar AUTOMAÇÃO DE PROCESSOS), 

- suas Atividades devem ser Padronizadas e Documentadas (facilitar Treinamento de Novos Recursos Humanos ou AUTOMAÇÃO DE PROCESSOS), 

- os Produtos e Serviços gerados devem ser COMPONENTIZADOS [1] (permitir a PRODUÇÃO DE NOVOS Produtos e Serviços por:
--- Derivação (acréscimo de funcionalidade(s) em Componente existente, GERANDO NOVO COMPONENTE)
--- Montagem / Rearranjo de Componentes já criados

CONCLUSÃO:
Com base em minha experiência pessoal como Engenheiro Mecânico e Analista de Sistemas, entendo que os Processos ([Analise/Engenharia/Desenvolvimento] de Sistemas / Software) SÃO E ESTÃO SENDO AUTOMATIZADOS.

Como ocorreu com os Processos Comerciais, Industriais, Financeiros e de outras Engenharias (onde as Metodologias já padronizadas de trabalho permitiram a mais rápida introdução de Equipamentos e Softwares, que reduziram - em muito - a necessidade de TRABALHO HUMANO (muitas das atividades dos engenheiros e, praticamente todas as atividades dos técnicos (calculistas, desenhistas, projetistas, etc.), foram substituídas por SISTEMAS AUTOMATIZADOS (CAD / CAM [a] e CAE [b])).

As reflexões acima foram provocadas por questionamentos que recebi quando divulguei, em Mídias Sociais,  as seguintes informações:

{1} #QuartaRevoluçãoIndustrial - AI [Inteligência Artificial] da Microsoft aprendeu como escrever seu próprio código e criar seus próprios programas!!!


TRADUÇÃO DE:


{2} Inteligência artificial já pode criar outras IAs, melhor que humanos
O pesadelo de quem teme que a evolução da inteligência artificial dê origem a algo similar à Skynet, dos filmes do "Exterminador do Futuro", está um pouco mais próximo. Pesquisadores observaram que as máquinas já estão igualando ou superando a capacidade humana de criar outras inteligências artificiais.

Um artigo do MIT Technology Review conta um caso recente em que pesquisadores do Google Brain, a divisão da empresa que desenvolve IA, fizeram um software criar um sistema de aprendizado de máquina que seria testado contra uma plataforma que avalia a capacidade de processamento de linguagem. O resultado desse software criado pelo software foi superior a qualquer sistema criado diretamente por humanos até hoje. (...) 

(...) pode ser entendido como um risco à profissão de programador.

(...) engenheiros de software estariam criando seus próprios sucessores.

Inteligência artificial já pode criar outras IAs, melhor que humanos



=====
NOTAS:
_______________________________________________________
[a] CAD/CAM é a abreviatura inglesa para as seguintes expressões:
- computer-aided design – CAD – Desenho assistido por computador
- computer-aided manufacturing – CAM – Manufatura assistida por computador


____________________________________________________________________________
[b] CAE: Engenharia Auxiliada por Computador ou Computer Aided Engineering (CAE) é uma tecnologia que utiliza o computador para dar suporte à Engenharia auxiliando-a no desenvolvimento de projetos, por meio de análises estáticas, dinâmicas, térmicas, magnéticas, de fluidos, acústicas, de impacto e simulações, fazendo do CAE uma ferramenta poderosa para redução de custos de um projecto e minimizado o tempo de lançamento do produto final.
_ _ _ _ _
Definição:
O CAE está sustentado em ferramentas de CAD avançadas, as quais permitem não apenas definir as dimensões do produto concebido, como também outras características, como materiais, acabamentos, processos de fabricação e de montagem e até interacções com elementos externos, como forças aplicadas, temperatura, etc.

Assim, pode-se criar protótipos virtuais dos produtos, simulando sobre eles as condições de uso e, assim, efectuar estudos prévios do fabrico sobre aspectos tais como; a estabilidade, a resistência e outros comportamentos. Para estes estudos empregam-se amplas bases de dados e técnicas de análise por elementos finitos, programadas em módulos, que se integram nas ferramentas de CAD/CAE.

O CAE pode ser utilizado na elaboração de um projecto, na análise e na avaliação dos níveis do produto, verificado o produto quanto á sua funcionalidade, encaixes e design, podendo reavaliá-los; permite a verificar se as necessidades são compatíveis com a capacidade de produção; e reduz drasticamente o tempo gasto com cálculos operacionais.

A principal técnica de CAE é o método de análise por elementos finitos (MEF), mas existem outras como por exemplo a simulação mecânica do evento (MES), fluidodinâmica computacional térmica e fluida da análise de fluxo (CFD), além das analises de campo elétrico.

O MEF considera que um produto de forma irregular pode ser subdividido em elementos finitos de tamanho menor, que podem ser tratados individualmente por uma fórmula de tensão, sendo o efeito agregado a soma dos efeitos de todos os elementos finitos do objecto. Para simular, através de elementos finitos, o comportamento de um objecto, é necessário modelar-se o produto em três dimensões. Há sistemas computacionais que integram funções de CAD e MEF. A análise por elementos finitos não é restrita apenas a estruturas mecânicas, podendo ser aplicado aos vários problemas sob forma arbitrária, cargas e condições de contorno quaisquer. Outra vantagem do método é a semelhança física entre a malha de elementos finitos e a estrutura real, facilitando a visualização dos resultados da análise.

Há três fases na técnica do MEF:
>> Pré-processamento – tem início com a definição do modelo geométrico do objecto e dos factores ambientais, a partir dos quais se obtêm os dados necessários para se poder analisar o comportamento do objecto. O modelo geométrico pode ser mais ou menos complexo, em função da dificuldade que apresenta a geometria real do objecto, ou da capacidade informática disponível. Tipicamente utiliza-se um modelo finito de elemento, mas o Facet, o Voxel e os métodos finos de folha também podem ser usados;

>> Processamento, executado geralmente em estações de trabalho;

>> Pós-processamento dos resultados, usando ferramentas de visualização.
_ _ _ _ _ _ _ _ 
Vantagens do CAE

Os sistemas CAE têm as seguintes vantagens:
>> O tempo e o custo utilizado na realização de um projecto serão menores, pois o melhoramento do produto e as suas possíveis correcções podem ser realizadas de forma mais rápida e segura com a utilização de computadores;

>> Alterações podem ser feitas rapidamente;

>> Utilizando um sistema computadorizado, pode-se corrigir e testar um projecto, evitando assim a construção de um protótipo o que demanda muito tempo;

>> A utilização de um sistema CAE permite a eliminação ou uma significativa redução na quantidade de protótipos de teste a serem construídos, reduzido assim o tempo de concepção do produto;

>> Com a utilização de um sistema CAE a eficiência do projecto é melhorada;

>> A realização de cálculos complexos na fase de engenharia por computador aumenta a produtividade, pois agilizam o processo devido a economia de tempo;

>> Permite simular o processo de fabricação do produto, reduzindo a assim os custos de fabricação do produto na indústria;

>> A detecção de erros na fase de engenharia reduz o custo com as correcções e de ter que voltar a fazer o produto;

>> Um sistema CAE permite uma maior confiabilidade e qualidade para o produto;

>> Permite um aumento da competitividade.
_ _ _ _ _ _ _ _ _ _
Desvantagens do CAE

Os sistemas CAE têm as seguintes desvantagens:
>> Necessita de estações de trabalho dedicadas para realização dos cálculos complexos;

>> Os sistemas de CAE não mostram qual o problema, apenas processam e exibem os resultados que por sua vez necessitam de passar por uma mão-de-obra especializada para interpretá-los;

>> Nem sempre a utilização de protótipos pode ser descartada totalmente, pois não é possível realizar todas as simulações necessárias a fim de assegurar a qualidade do produto final através do software;

>> O custo do CAE costuma ser alto, dependendo de sua finalidade;

>> Muitas ferramentas do CAE integram ferramentas do CAD, mas problemas de integração com outras aplicações, como por exemplo, o CAM, costumam ocorrer.
_ _ _ _ _
Aplicações

>> O CAE consegue se adaptar as mais diferentes áreas devido a sua grande flexibilidade, podendo ser utilizado em áreas que variam desde a construção civil à indústria automobilística.

>> Em áreas como aeronáutica o CAE pode determinar custo de projecto, verificar falhas no projecto, na pré-visualização do produto, apontar falhas no design ou na funcionalidade do produto e simular comportamentos.

>> CAE na indústria automobilística
As ferramentas CAE são amplamente utilizadas na indústria automobilística. Na verdade, a sua utilização permitiu aos fabricantes de automóveis diminuir os custos e tempo de desenvolvimentos do produto, melhorar a segurança, conforto e durabilidade dos veículos que produzem. A capacidade de previsibilidade das ferramentas CAE desenvolveu-se ao ponto em que grande parte da verificação do projecto é agora feita através de simulações de computador, em vez dos convencionais testes a protótipos físicos. A confiabilidade das ferramentas é baseada nas próprias suposições como dados de entrada e deve identificar dados de entrada críticos. Embora tenha havido muitos avanços nas ferramentas CAE e seja amplamente utilizada no campo da engenharia, os testes físicos são ainda utilizados, como uma confirmação definitivas para subsistemas, devido ao facto de as ferramentas CAE não poderem prever todas as variáveis em conjuntos complexos. (ex: dilatação ou compressão do metal).
_ _ _ _ _ _ _ _ _ _
Softwares utilizados em CAE

O software CATIA possui ferramentas de design, análise e simulação, que permitem aos engenheiros a possibilidade de prever o comportamento dos produtos a fabricar.

Os softwares como LS-DYNA da LSTC e PAM-CRASH da ESI são usados para os ensaios de crashtests de automóveis e a segurança dos ocupantes. Outras ferramentas como Altair HyperWorks, MSC’s Patran, MSC’s ADAMS, SIMPACK, Forge, NEi Nastran, UGS’s Scenario e Nastran packages são usados em uma variedade de tarefas estruturais e dinâmicas de análise.


===========
REFERÊNCIAS:
________________________________________
[1] O que é componentização de software?

Os componentes costumam ser úteis pela capacidade de reutilização em outras aplicações. Com isso, várias etapas de desenvolvimento podem ser banidas. Através dos componentes é possível desenvolver um processo de criação de ativos digitais, já que são elementos de software que podem ser plugados com uma nova interface totalmente definida.
_ _ _ _ _ _
Vantagens da utilização da componentização:

- Facilita a convergência tecnológica através do uso de tecnologia orientada a componentes/serviços;

- Costuma ser base para modelo de camadas, já que é útil para evitar a existência de programas de maior tamanho que exercem várias funções, e que poderiam ser divididos em programas/componentes menores;

- Colabora na integração de informações entre vários canais de acesso;

- Manutenção e evolução mais fácil, já que os módulos são independentes entre si, o que possibilita a extensão de software com baixo impacto no software que está sendo usado.
_ _ _ _ _ _
Surgimento da componentização

A ideia de componentização não é tão recente quanto parece. Já em 1968, Doug Mcllroy da NATO Software surgiu com o tema componentização. Na época ele teve a ideia de criar componentes de software produção em massa. Na visão daquele tempo, a ideia era que os componentes se tornassem rotinas que pudessem ficar disponíveis para que os programadores utilizassem em seus softwares.

No entanto, apesar da ideia não ser recente, somente há pouco tempo é que as empresas começaram a usar a componentização em razão do amadurecimento dos padrões de construção de software com suas especificações e linguagens: J2EE e .NET.

Assim, os padrões citados, em concordância à arquitetura orientada a serviços (SOA – Service Oriented Architecture), e ainda à tecnologia de Web Services, apresentam os mecanismos próprios para que a Componentização seja viável. No mercado já um setor em expansão de componentes reutilizáveis.

Com isso, é muito comum vermos empresas adquirindo produtos já prontos no mercado. Além, claro, da reutilização de parte de seus softwares já desenvolvidos. Tal sistema tem uma excelente relação custo/benefício.


_______________________________________________________________
[2] Contratando uma Fábrica de Software - Tribunal Superior Eleitoral


_______________________
[3] Fábrica de Software

"Padrões e processos bem definidos de acordo com o PDS (Processo de Desenvolvimento de Software), prática que visa a garantia de produtos de alta qualidade ..."

Com o mercado cada vez mais globalizado e competitivo é essencial a redução de custos dos produtos de mercado. Para tanto, é necessário que os custos de produção também sejam reduzidos, assim como os custos indiretos dos sistemas de front-end e aplicativos de back-office das empresas.

Como nos outros segmentos, em especial na indústria de manufatura, a utilização do conceito de fábrica proporciona o aumento da eficiência obtendo ganhos com produtividade, organização e padronização, que, além de reduzir os custos, elevam substancialmente a qualidade dos softwares produzidos.

No caso da Fábrica de Software, a separação entre o trabalho de especificação e de implementação / construção, permite a especialização e segregação de funções com a consequente produção em escala.

(...) A expertise adquirida em desenvolvimento de softwares utilizando processos de fábrica, fez com que a PD CASE se tornasse uma das primeiras empresas brasileira a buscar a implementação e avaliação do modelo MPS BR Nível C, equivalente ao CMMI Nível 3.

Os processos da Fábrica de Software englobam todas as fases do ciclo de vida de um projeto, especificando os requisitos adequadamente, efetuando rastreabilidade horizontal e vertical, desenvolvendo códigos através das melhores práticas, obedecendo a critérios de medição de qualidade, por meio de uma gestão de configuração eficiente.


_________________________________________________
[4] Fábrica Software: princípios, conceitos e ilusões


____________________________________________________
[5] Modelos de Qualidade de Desenvolvimento de Software
Autor: Marco Aurélio Cordeiro - GPS

Alguns leitores mandaram comentários sobre o artigo "Crise na Indústria de Software" de Maio de 2000 – volume 97, em que menciono o CMM como um modelo a ser seguido, mas não como a tábua de salvação de todos os problemas. Por este motivo, decidi escrever sobre o modelo CMM e mostrar meu posicionamento sobre o assunto.

Desenvolver software de qualidade assegurada, com elevada produtividade, dentro do prazo estabelecido e sem necessitar de mais recursos que os alocados, tem sido o grande desafio da Engenharia de Software. Segundo os idealizadores do CMM, a principal causa dos problemas é a falta de um processo de desenvolvimento de software claramente definido e efetivo. Conhecer os processos significa conhecer como os produtos e serviços são planejados, produzidos e entregues. Cabe ressaltar que, a partir da definição do processo, é possível definir-se medições e coletar dados de execução. Isto dá visibilidade aos gerentes e técnicos sobre o andamento dos projetos, possibilitando ações para controlar as variações do projeto e dos processos por ele utilizados. O CMM enfatiza a documentação dos processos, seguindo a premissa de que, para realizar alguma melhoria no processo é preciso primeiro conhecê-lo e entendê-lo, e que a qualidade de um produto é reflexo da qualidade e gerenciamento do processo utilizado em seu desenvolvimento. (...)


___________________________
[6] Capability Maturity Model
Origem: Wikipédia, a enciclopédia livre.

Capability Maturity Model (CMM ou Modelo de Maturidade em Capacitação), também conhecido como Software CMM (SWCMM) pode ser definido como sendo uma soma de "melhores práticas" para diagnóstico e avaliação de maturidade do desenvolvimento de softwares em uma organização. "CMM" não deve ser entendido como sendo uma metodologia, pois o "CMM" não diz exatamente como fazer, mas sim o que deve ser feito (melhores práticas).

Ele descreve os principais elementos de um processo de desenvolvimento de software. O CMM descreve os estágios de maturidade por que passam as organizações enquanto evoluem no seu ciclo de desenvolvimento de software, através de avaliação contínua, identificação de problemas e ações corretivas, dentro de uma estratégia de melhoria dos processos.

O CMM fornece às organizações orientação sobre como ganhar controle do processo de desenvolvimento de software e como evoluir para uma cultura de excelência na gestão de software. O objetivo principal nas transições através desses níveis de maturidade é a realização de um processo controlado e mensurado que tem como fundamento a melhoria contínua. A cada nível de maturidade corresponde um conjunto de práticas de software e de gestão específicas, denominadas áreas chave do processo (KPAs Key Process Areas). Estas devem ser implantadas para que a organização possa atingir o nível de maturidade desejado.

Índice
1 Histórico
2 Modelo de Maturidade
3 Os 5 Níveis de Maturidade do CMM
3.1 Nível 1: Inicial
3.2 Nível 2: Repetitivo
3.3 Nível 3: Definido
3.4 Nível 4: Gerenciado Quantitativamente
3.5 Nível 5: Em Otimização
4 Ver também
5 Ligações externas
6 Notas e referências

https://pt.wikipedia.org/wiki/Capability_Maturity_Model