Você está na página 1de 6

Francisco José Tembe

Licenciatura em Engenharia Electrónica (3° ano)


Computação

Resumo do Artigo: No Silver Bullet

Universidade Pedagógica De Moçambique


Maputo
2018
Francisco José Tembe

Licenciatura em Engenharia Electrónica (3° ano)


Computação

Resumo do Artigo: No Silver Bullet

Resumo a ser apresentado na ESTEC na cadeira


de Engenharia de Software para efeito de
avaliação dos estudantes, sob orientação do
Docente: MSc. Sheila Sitoe.

Universidade Pedagógica de Moçambique


Maputo
2018
Objectivos

Os objectivos do presente resumo visam a mostrar quais os principais desafios na criação,


manipulação e problemas de segurança dos softwares observando os factores que originam
esses problemas na sua concepção e mostram possíveis soluções para diminuir ou até
mesmo sanar os problemas da crise dos softwares.

Resumo

Este artigo começa fazendo uma comparação entre o lobisomens com os softwares, onde
um homem se transforma em um monstro terrível e horrível e que somente uma bala de
prata pode lhe fazer parar e relacionando assim os softwares, sendo simples podem
transformar-se num produto defeituoso e de custos elevados, e quando isso acontece recorre-
se a uma bala de prata para acabar com os problemas citados. Mas segundo o autor, não há
um avanço tecnológico que melhore a ordem de magnitude da produtividade, confiabilidade
e a simplicidade, assim, não há bala de prata ou solução que se pode usar. O artigo defende
que os avanços conquistados até hoje foram promovidos em cima das questões acidentais
dos softwares, e que ganhos no desenvolvimento das actividades essenciais são muito mais
difíceis de serem alcançados. Brooks afirma que não é o software que avança devagar, mas o
progresso do hardware é que rápido e que não existem paralelos tecnológicos no mundo
com a velocidade da inovação em hardware.

Ele acredita que a parte dura da construção dos softwares é a especificação, design, e
os testes mas não o trabalho de representar e testar a fidelidade da representação. Ele
analisou algumas propriedades relacionadas à essência dos problemas de desenvolvimento
de softwares que são: a complexidade, conformidade, adaptabilidade e invisibilidade. A
complexidade exigida para a produção de um software é muito maior que a de um
computador. Uma entidade do software não é apenas uma repetição dos mesmos elementos,
é um aumento no número de elementos diferentes. Na maioria dos casos, os elementos
interagem uns com os outros não linearmente, e a complexidade aumenta muito mais do que
linearmente e muitos dos problemas clássicos de desenvolvimento de produtos de softwares
resultam dessa complexidade e assim surgem dificuldade de comunicação entre os membros
do grupo resultando em falhas nos produtos, aos custos excedentes e atrasos no calendário.
Gera também a dificuldade de enumerar todos os possíveis estados do programa. A
complexidade das funções gera dificuldades de invocá-las. E a complexidade da estrutura
gera dificuldades na invocação das funções sem que ocorram outros erros ocasionais. Já a
conformidade é um princípio unificado. Como os softwares e o seu desenvolvimento são
muito recentes, precisam ser adaptados a todos os tipos de instituições e sistemas já
existentes. E como há uma constante mudança dos softwares e hardwares a conformidade
não pode ser bem vista porque se não deixará o sistema obsoleto e fora de mercado. Como
não pode haver conformidade a adaptabilidade ou alterabilidade de existir, porque como os
sistemas avançam muito rapidamente, os softwares precisam acompanhar e com isso precisa
haver mudanças e alterações constantes. Mas claro que essas mudanças não se equiparam
com carros que a cada ano sai um novo, ou a edifícios que sempre tem um novo em
construção. A evolução é mais lenta mais tem que existir. Mas ele não precisa ser
modificado como um todo, e como é composto por funções, só algumas delas podem ser
alteradas e actualizadas de acordo com o que o mercado necessita. Na maioria das vezes
essas mudanças são feitas a pedidos dos usuários, que querem novas actualizações que
acompanhem os avanços das novas arquitecturas dos computadores. Segundo a
invisibilidade, o software não é espacialmente representável, não existe um diagrama ou
esquema lógico que o descreva, mas sim vários gráficos ou diagramas sobrepostos uns aos
outros. Esses vários gráficos podem representar o fluxo de controlo, o fluxo de dados,
padrões de dependência, a sequência de tempo e os relacionamentos nome-espaço. Sendo
assim necessárias muitas representações para conseguir um entendimento visual do sistema.
Analisando as três etapas em tecnologia dos softwares que renderam mais no passado pode-
se concluir que o maiores avanços promoveram melhoras de produtividade na criação do
software. Essas etapas são: Linguagem de auto nível, Time-sharing e Ambientes unificados.
A utilização da linguagem de alto nível para a linguagem de programação ajudou muito na
produtividade dos softwares, confiabilidade e simplicidade. Mas, embora ela seja realmente
muito importante na melhora de produtividade, este avanço somente tem impacto na
complexidade acidental, e não no problema em si. O time-sharing gera uma melhora
significativa na produtividade dos programadores e na qualidade dos seus produtos, embora
não tão grande como a traz ida pelas linguagens de alto nível, mas o custo da interrupção
gerada pode levar a uma perda da noção geral da complexidade do sistema em
desenvolvimento. Por isso que uma boa organização e divisão de tarefas ajudam a preservar
a linha de raciocínio da principal tarefa a ser desenvolvida. Ambientes de programação
unificada, atacam as dificuldades acidentais de usar o programa em conjunto através do
fornecimento de Bibliotecas integradas e formatos de arquivos unificados, que fazem, na
prática, ser possível integrar estruturas conceituais cujo projecto já prévia esta integração, de
forma que não resolveram nenhum problema essencial ao trabalho de construir um sistema
de softwares. Brooks propôs os milagres para tentar resolver, ou diminuir esses problemas
usando a Ada e outras linguagens de alto nível que ajuda o desenvolvedor a produzir novas
técnicas de projecção do sistema. Usou também a programação orientada a objectos que não
resolvem questões relacionadas à projectos de softwares ou análise, mas sim questões
acidentais fornecendo assim tipos abstractos de dados e uma hierarquia de tipos. A
inteligência artificial ajuda no desenvolvimento optimizando o software, mas não é a
solução porque não sana problemas do género, ela requer muito trabalho e criatividade para
aplicar uma solução para as novas questões. A parte mais avançada da arte da inteligência
artificial é a tecnologia para a construção de sistemas especializados e que estes são
programas que contém um mecanismo de inferência generalizada e regra base, tomada
dados de entrada e suposições, exploração das inferências deriváveis da regra base, produção
conclusões e conselhos, e a oferta na explicação dos seus resultados retraçando seu
raciocínio para o usuário.

Esses sistemas oferecem algumas vantagens claras em relação aos algoritmos programados
projectados para chegando às mesmas soluções para os mesmos problemas:

 A tecnologia do mecanismo de inferência é desenvolvida de forma independente de


aplicação, e depois aplicado a vários usos. Pode-se justificar muito esforço na inferência dos
motores. Na verdade, essa tecnologia está bem avançada.
 As partes variáveis dos materiais peculiares do aplicativo são codificadas na base
de regras de forma uniforme, e ferramentas são fornecidas para o desenvolvimento,
mudança, testando e documentando a base de regras. Isso regulariza grande parte da
complexidade do próprio aplicativo.

A programação automática tem aplicações muito específicas. Existem também a


Verificação de Programas, Ambientes e Ferramentas e Workstations.

O artigo nos diz que é necessário reconhecer os problemas resultantes da problemas


acidentais que acompanham o software e bem como os problemas essenciais. Os problemas
acidentais dizem respeito aos problemas relacionados com a fabricação do software e estão
quase sempre associados a limitações tecnológicas mas os problemas essenciais são aqueles
inerentes a sua própria natureza, e como veremos, são a real causa de sua complexidade.
Muitos dos problemas acidentais têm sido resolvidos ao longo dos anos. As restrições de
memória e processamento de hoje nem se comparam àquelas de 30 anos atrás, sem contar
que hoje desenvolvemos num ambiente. Também tem contribuído muito para a eliminação
dos problemas acidentais os linguagens de alto nível, que têm evoluído bastante e cada vez
mais contribuem para a produtividade do desenvolvimento e simplicidade do software.
Focou-se também nos problemas de complexidade que continuam a existir porque os
principais desafios não são os problemas acidentais, mas sim problemas essenciais e estes
trazem crise dos softwares mas que esta vem sendo aniquilada pela Engenharia de
Softwares.