CAPÍTULO 1 A natureza do software

Description

engenharia de software Mind Map on CAPÍTULO 1 A natureza do software, created by Bruno Mateus on 25/07/2024.
Bruno Mateus
Mind Map by Bruno Mateus, updated 4 months ago More Less
Bruno Mateus
Created by Bruno Mateus 4 months ago
Bruno Mateus
Copied by Bruno Mateus 4 months ago
0
0

Resource summary

CAPÍTULO 1 A natureza do software
  1. Software de computador é o produto que profissionais de software desenvolvem e ao qual dão suporte no longo prazo. Abrange programas executáveis em um computador de qualquer porte ou arquitetura, conteúdos (apresentados à medida que os programas são executados), informações descritivas tanto na forma impressa (hard copy) quanto na virtual, abrangendo praticamente qualquer mídia eletrônica.
    1. O que é?
    2. Os engenheiros de software criam e dão suporte a ele, e praticamente todos que têm contato com o mundo industrializado o utilizam, direta ou indiretamente.
      1. Quem realiza?
      2. Porque afeta quase todos os aspectos de nossa vida e se difundiu no comércio, na cultura e em nossas atividades cotidianas.
        1. Por que é importante?
        2. Os clientes e outros envolvidos expressam a necessidade pelo software de computador, os engenheiros constroem o produto de software e os usuários o utilizam para resolver um problema específico ou para tratar de uma necessidade específica.
          1. Quais são as etapas envolvidas?
          2. Um programa de computador que funciona em um ou mais ambientes específicos e atende às necessidades de um ou mais usuários.
            1. Qual é o artefato?
            2. Se você é engenheiro de software, aplique as ideias contidas no restante deste livro. Se for usuário, conheça sua necessidade e seu ambiente e escolha uma aplicação que seja a mais adequada a ambos.
              1. Como garantir que o trabalho foi realizado corretamente?
              2. 1. A natureza do software
                1. O duplo papel do software: como produto e como veículo de distribuição de produtos.
                  1. Como produto, o software oferece capacidades computacionais e transforma informações, gerenciando, modificando e transmitindo dados em diversos dispositivos.
                    1. Como veículo de distribuição, ele suporta sistemas operacionais, comunicação e criação de outros programas.
                      1. O software é essencial na era da informação, gerenciando dados pessoais e comerciais, e conectando-se a redes mundiais como a Internet. No entanto, também pode ameaçar a privacidade e ser um meio para crimes. A evolução tecnológica trouxe maior sofisticação e complexidade aos sistemas computacionais, exigindo equipes especializadas para desenvolver aplicações complexas, substituindo o programador solitário.
                      2. 1.1 Definição de software
                        1. O software pode ser definido como um conjunto de instruções, dados e documentação que direcionam um computador ou dispositivo eletrônico na execução de tarefas específicas. Especificamente, o software consiste em:
                          1. Instruções (programas de computador): Sequências de comandos que, quando executadas, fornecem características, funções e desempenho desejados.
                            1. Estruturas de dados: Formatos e organizações que permitem aos programas manipular informações de forma adequada.
                              1. Informação descritiva: Documentação impressa ou digital que descreve a operação e o uso dos programas.
                                1. O software é um elemento lógico que não se desgasta como o hardware. A "curva da banheira" mostra a taxa de defeitos do hardware, que aumenta com o tempo devido ao desgaste físico. Já o software, teoricamente, deveria ter uma "curva idealizada" de defeitos, com altas taxas no início que se estabilizam após correções. Porém, o software deteriora devido a modificações que introduzem novos erros, criando uma "curva real" de defeitos que não se estabiliza.
                                2. 1.1.2 Campos de aplicação de software: Atualmente, 7 grandes categorias de software apresentam desafios contínuos para os engenheiros de software:
                                  1. Software de sistema Conjunto de programas feito para atender a outros programas. Certos softwares de sistema (por exemplo, compiladores. editores e utilitários para gerenciamento de arquivos) processam estruturas de informação complexas, porém, determinadas.' Outras aplicações de sistema (por exemplo, componentes de sistema operacional, drivers, software de rede, processadores de telecomunicações) processam dados amplamente indeterminados.
                                    1. 1. Software de Sistema
                                    2. Software de aplicação Programas independentes que solucionam uma necessidade específica de negócio. Aplicações nessa área processam dados comerciais ou técnicos de uma forma que facilite operações comerciais ou tomadas de decisão administrativas/técnicas.
                                      1. 2. Software de Aplicação
                                      2. Software de engenharia/científico Uma ampla variedade de programas de "cálculo em massa" que abrangem astronomia, vulcanologia, análise de estresse automotivo, dinâmica orbital, projeto auxiliado por computador, biologia molecular, análise genética e meteorologia, entre outros.
                                        1. 3. Software de Engenharia/Científico
                                        2. Software embarcado Residente num produto ou sistema e utilizado para implementar e controlar características e funções para o usuário e para o próprio sistema. Executa funções limitadas e específicas (por exemplo, controle do painel de um forno micro-ondas) ou fornece função significativa e capacidade de controle (por exemplo, funções digitais de automóveis, tal como controle do nível de combustível, painéis de controle e sistemas de freio).
                                          1. 4. Software Embutido
                                          2. Software para linha de produtos Projetado para prover capacidade específica de utilização por muitos clientes diferentes. Software para linha de produtos pode se concentrar em um mercado hermético e limitado (por exemplo, produtos de controle de inventário) ou lidar com consumidor de massa.
                                            1. 5. Software de Linha de Produto
                                            2. Aplicações Web/aplicativos móveis Esta categoria de software voltada às redes abrange uma ampla variedade de aplicações, contemplando aplicativos voltados para navegadores e software residente em dispositivos móveis.
                                              1. 6. Software Web/Móvel
                                              2. Software de inteligência artificial Faz uso de algoritmos não numéricos para solucionar problemas complexos que não são passíveis de computação ou de análise direta. Aplicações nessa área incluem: robótica, sistemas especialistas, reconhecimento de padrões (de imagem e de voz), redes neurais artificiais, prova de teoremas e jogos.
                                                1. 7. Software de Inteligência Artificial
                                                2. 1.1.3 Software legado
                                                  1. Apesar de essenciais para funções vitais de negócios, esses sistemas legados podem ser caros de manter e arriscados de evoluir, frequentemente apresentando baixa qualidade, projetos inextensíveis, código difícil de entender, documentação deficiente ou inexistente, e um histórico de alterações mal gerenciado.
                                                    1. A recomendação é não modificar esses sistemas a menos que seja necessário. Quando mudanças significativas são requeridas, é essencial realizar a reengenharia do sistema para mantê-lo viável. A engenharia de software moderna busca metodologias que aceitem a contínua evolução dos sistemas, onde novos sistemas são construídos a partir dos antigos, colaborando e cooperando entre si.
                                                      1. 1.2 A natureza mutante do software
                                                        1. A evolução de quatro categorias amplas de software domina o setor. Ainda assim, há pouco mais de uma década essas categorias estavam em sua infância.
                                                          1. 1.2.1 WebApps
                                                            1. No início da World Wide Web (1990-1995), os sites eram simples conjuntos de arquivos de hipertexto com texto e gráficos limitados. Com a evolução da linguagem HTML e o surgimento de ferramentas de desenvolvimento como XML e Java, foi possível adicionar capacidades computacionais aos sites, criando os WebApps.
                                                              1. Atualmente, as WebApps são ferramentas sofisticadas, oferecendo funções especializadas e integradas a bancos de dados corporativos e aplicações de negócios. Anteriormente, eram uma mistura de publicação impressa e desenvolvimento de software, marketing e computação, comunicação interna e externa, e arte e tecnologia.
                                                                1. Hoje, fornecem potencial de computação completo em diversas categorias de aplicação. Com a evolução das tecnologias da Semantic Web (ou Web 3.0), surgiram aplicações empresariais e de consumo mais avançadas, utilizando bancos de dados semânticos e APIs de acesso externo, permitindo novas maneiras de acessar informações diversas.
                                                              2. 1.2.2 Aplicativos móveis
                                                                1. O termo "aplicativo" passou a referir-se ao software projetado para plataformas móveis como iOS, Android e Windows Mobile. Esses aplicativos móveis possuem interfaces que aproveitam as interações específicas da plataforma, interoperam com recursos web para acessar informações relevantes e utilizam capacidades de processamento local para coletar, analisar e formatar dados de forma conveniente.
                                                                  1. Também oferecem armazenamento persistente na plataforma. Há uma diferença sutil entre aplicações web móveis (WebApps) e aplicativos móveis: WebApps permitem acesso a conteúdo web através de navegadores adaptados para dispositivos móveis, enquanto aplicativos móveis acessam diretamente o hardware do dispositivo, como acelerômetro e GPS, e oferecem processamento e armazenamento local.
                                                                    1. No futuro, essa diferença poderá desaparecer à medida que os navegadores móveis se tornarem mais sofisticados e ganharem acesso ao hardware e informações dos dispositivos.
                                                                    2. 1.2.3 Computação em nuvem
                                                                      1. A computação em nuvem oferece uma infraestrutura que permite a qualquer usuário, de qualquer lugar, compartilhar grandes recursos computacionais usando um dispositivo de computação. Esses dispositivos acessam a nuvem por meio de navegadores ou software similar, obtendo acesso a dados, aplicativos e plataformas. A nuvem possibilita o uso de aplicativos executáveis que substituem as aplicações locais dos dispositivos.
                                                                        1. A implementação da computação em nuvem requer uma arquitetura composta por serviços de front-end e back-end. O front-end inclui o dispositivo cliente e o software aplicativo que permite acesso ao back-end, que abrange servidores, sistemas de armazenamento de dados, aplicativos no servidor e servidores administrativos que coordenam e monitoram o tráfego através de middleware, estabelecendo protocolos de acesso. A arquitetura da nuvem pode ser pública, oferecendo acesso total, ou privada, restrita a usuários autorizados.
                                                                        2. 1.2.4 Software para linha de produtos (de software)
                                                                          1. O Software Engineering Institute define uma linha de produtos de software como um conjunto de sistemas que compartilham recursos comuns, atendendo necessidades específicas de um mercado ou missão, desenvolvidos a partir de itens básicos comuns. Embora a ideia de produtos de software relacionados não seja nova, a concepção de uma linha de produtos de software desenvolvidos com a mesma aplicação subjacente, arquiteturas de dados e componentes reutilizáveis oferece um grande potencial para a engenharia.
                                                                            1. Essas linhas de produtos compartilham requisitos, arquitetura, padrões de projeto, componentes reutilizáveis, casos de teste e outros produtos de trabalho. Em essência, uma linha de produtos de software permite o desenvolvimento de vários produtos aproveitando atributos comuns, resultando em eficiência e consistência no processo de engenharia de software.
                                                          Show full summary Hide full summary

                                                          Similar

                                                          Engenharia de Software
                                                          Gabriel Alexandre
                                                          Quiz - Processo de Software
                                                          Adriana Gomes Alves
                                                          ERGONOMIA
                                                          timEU
                                                          01. Eng de software:Fases de Processos da Eng de Software.
                                                          Jamil Yahuza Felippe
                                                          Áreas de Conhecimento X Grupos de Processos
                                                          Rodrigo Ferreira
                                                          Questões Fundamentos Eng de Software
                                                          Jamil Yahuza Felippe
                                                          Engenharia de Software
                                                          Marcio Silveira
                                                          Quiz - Processos tradicionais
                                                          Adriana Gomes Alves
                                                          Engenharia de software
                                                          pcbsytem
                                                          Aula Um Engenharia de Software III
                                                          Artur R
                                                          13. Eng de Software:Modelo Processo Ágil de Desenvolvimento
                                                          Jamil Yahuza Felippe