Engenharia De Software I - Aula 01
O Que é software?
[!quote] Pressman Software consiste em: (1) Instruções que, quando executadas, fornecem características, funções e desempenho desejados; (2) estruturas de dados que possibilitam aos programas manipular informações adequadamente; e (3) informação descritiva, tanto na forma impressa como na virtual, descrevendo a operação e o uso dos programas.
O Software, além do programa em si, é também a junção da documentação e a sua configuração final.
As Instruções, ou Algoritmo, fazem parte das questões lógicas relacionadas ao programa, sendo programas determinísticos ou heurísticos. As Estruturas de dados possibilitam que o programa manipule informação adequadamente.
A Documentação descreve todas as operações e o uso correto do programa desenvolvido.
A Configuração é parte final do Software, onde instalamos e configuramos o programa para o sistema do cliente, garantindo o suporte e vida útil do programa.
Softwares Genéricos x Personalizados
Há empresas que empregam desenvolvedores afim de criarem Softwares Genéricos, que são produzidos para o mercado em si, como os Navegadores, os programas do Pacote Office, entre outros.
Já, outras empresas, empregam desenvolvedores afim de criar Softwares personalizados para uma terceira empresa que contratou o serviço. Como um Site de uma loja, um programa de vendas de um supermercado, entre outros.
Processo de Desenvolvimento
Normalmente o processo passa por algumas etapas, iniciando pela especificação, depois de coletar todas as informações, nós desenhamos o projeto, realizando diversos designs. Depois seguimos para implementação que é o momento de por a mão no código. Por fim, chegamos na validação que será o momento de questionar se todas as questões analisadas na especificação foram atendidas e, em caso positivo, a entrega e evolução.
Todas estas atividades têm por base o apoio e a gestão, que irão garantir que este processo será executado na qualidade esperada.
Atividades do processo
São as tarefas realizadas em cada uma das partes do processo, que definem os trabalhos a serem executadas para atingir o objetivo final do projeto.
Como visto na aula passada, ainda que de modo superficial, foi o seguinte: ![[Aula 01 - IES100#O Processo de Software]]
Comunicação
É uma fase bem inicial do projeto, pois utilizamos sobretudo para entender o problema que o cliente está nos trazendo para que possamos desenvolver uma solução para ele. Não somente com ele, mas também com todas as partes interessadas no projeto.
Mais à frente, também, como vimos, na hora da validação, é imprescindível que a comunicação esteja presente, sobretudo para explicar a solução desenvolvida à todas as partes interessadas.
Por parte interessada entende-se toda pessoa ou organização que impactam ou podem ser impactada pelo projeto. O Cliente e a equipe presente no projeto são, sempre, partes interessadas. Em inglês, o termo utilizado é stakeholder e, em grandes projetos, os sponsors que investirão o dinheiro.
Planejamento
É mais explorada na gestão de projetos, mas é utilizada em engenharia de software para planejar a partir de estimativas futuras sobre plano de trabalho, sobre prazo e custo, sobre a elaboração do cronograma e, sobretudo, na atribuição das atividades.
Utiliza-se da primeira atividade ([[#Comunicação]]) para entender as indagações do cliente e informá-lo, em grande parte, o custo e tempo, que, afinal, é o que importam para ele.
Quanto maior os detalhes que temos sobre o projeto, ou seja, quanto melhor comunicarmos com o cliente, melhor serão as estimativas e o cumprimento dos prazos a partir de um plano de ação bem traçado.
Modelagem
É o momento de “traduzir” as informações textuais ou verbais em modelos, fluxogramas, anagramas que facilitarão na visualização do projeto finalizado para uma melhor construção de software.
Construção
Transformação do modelo em software executável e execução de testes.
Implantação
Entrega ou liberação do produto, juntamente com a instalação e treinamento dos funcionários do cliente, bem como a manutenção futura conforme necessário.
Desafios de desenvolver softwares
Alguns desafios na programação, criação e governança de projetos de Software são as necessidades de Segurança, desempenho e disponibilidade. Não obstante, atender as expectativas do cliente é algo que deve ser levado em conta sempre, pois hoje o cliente pode pedir $x$ e amanhã já querer $y$.
[!quote] VUCA Volatility, Uncertainty, Complexity, Ambiguity Volatilidade, incerteza, complexidade e ambiguidade
O que é Engenharia de Software
Uma abordagem sistemática, disciplinada e quantificável. Está relacionada a todos os aspectos da produção, do desenvolvimento de um software, até que o sistema desenvolvido deixe de ser operacional.
O principal objetivo do Estudo da Engenharia de Software é alcançar a qualidade para sanar a satisfação do cliente dentro das restrições dos prazos e custos pré determinados.
Qualquer abordagem de engenharia deve se fundamentar na qualidade.
O processo é a liga que mantém as camadas de tecnologia coesas e possibilita o desenvolvimento de forma racional e dentro do prazo.
Os métodos fornecem as informações técnicas para desenvolver o software, e baseiam-se num conjunto de princípios básicos, incluindo atividades de modelagem e outras técnicas descritivas.
As ferramentas fornecem o suporte automatizado ou semiautomatizado para o processo e para os métodos.
Falando de qualidade, existem alguns atributos ou aspectos que são desejáveis nos softwares. Um pequeno exemplo é a compra de um novo smartphone, onde buscamos, como clientes, aquelas características que nos são desejáveis a depender do tipo de uso que teremos, buscamos sempre aquele aparelho que obtenha o maior número de qualidades possíveis.
Quanto à Software, temos alguns atributos de qualidade:
- Corretude;
- Confiabilidade;
- Robustez;
- Portabilidade;
- Manutenabilidade;
- e outros…
O Processo de Software
O processo de criação de Software, como um conjunto de atividades, ações ou tarefas, é utilizada independente de campo de aplicação, do tamanho do projeto ou da complexidade de esforços.
Assim, estabelece-se uma metodologia para ser um alicerce, um molde, a partir de atividades estruturais e que compreende cinco atividades:
- Comunicação;
- Planejamento;
- Modelagem;
- Construção;
- Implantação.
[!important] Importante Implantação é diferente de Implementação. Implantação pode ter o nome de Emprego. É a fase final de entrega do software final ou de um incremento parcialmente efetivado, ao cliente, que irá avaliar o produto e fornecerá feedbacks.
Introdução à Administração Geral Engenharia de Software I - Aula 03 Engenharia de Software I - Aula 02