Prévia do material em texto
1www.grancursosonline.com.br Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br Engenharia de Software - Conceitos Gerais ENGENHARIA DE SOFTWARE ENGENHARIA DE SOFTWARE - CONCEITOS GERAIS CONCEITOS GERAIS DE ENGENHARIA DE SOFTWARE Aborda-se conceitos gerais de engenharia de software, discutindo fontes, referên- cias e questões clássicas para a preparação em concursos nesta área. É fundamental compreender o conceito de software, segundo renomados engenhei- ros como Sommerville e Pressman, cujas obras são utilizadas no curso. A definição de software, conforme Sommerville, é essencial para entender a engenharia de software. SOFTWARE O software é composto por instruções, estrutura de dados e documentação. Ian Sommerville, autor clássico frequentemente citado em bancas, destaca a importância da documentação, ampliando o escopo para além do programa em si. A engenharia de software, alinhada ao caráter de engenharia, abrange diversas atividades, inspirada em disciplinas estabelecidas como a Engenharia Automotiva e de Produção. Originada nos anos 70 em resposta à crise do software, essa disciplina surgiu devido ao descompasso entre a evolução dos computadores e o desenvolvimento de software amador e carente de processos estruturados. A necessidade de uma abordagem mais profissional levou à adoção de práticas organizadas na engenharia de software, afastan- do-se da abordagem amadora e solitária. Na busca por superar a crise, abandonou-se a abordagem linear inicial, semelhante a uma linha de produção, em prol de uma abordagem mais adaptável aos variados cená- rios de desenvolvimento de software. EVOLUÇÃO DOS CONCEITOS: FLUXO, PROCESSO E MODELOS Os conceitos de fluxo, processo e modelos de processo serão explorados nas próxi- mas aulas, evidenciando as limitações da abordagem linear. ABORDAGEM DISCIPLINADA E INTEGRADA A engenharia de software adota uma abordagem disciplinada e integrada, reconhe- cendo a importância de evitar a dependência de um único programador. A ênfase na qualidade requer a implementação de processos, métodos e ferramentas, visando supe- rar problemas decorrentes da dependência exclusiva de um profissional. 5m 2www.grancursosonline.com.br Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br Engenharia de Software - Conceitos Gerais ENGENHARIA DE SOFTWARE É comum na área de Tecnologia da Informação (TI) observar uma preferência por fer- ramentas, especialmente entre indivíduos sem formação específica na área. Este é um equívoco comum resultante da falta de familiaridade com a abordagem disciplinada e integrada necessária na engenharia de software. FERRAMENTAS NA ENGENHARIA DE SOFTWARE: ESTRATÉGIA E IMPLEMENTAÇÃO As ferramentas ocupam uma posição estratégica, não sendo adequadas como a pri- meira camada, pois, em caso de inadequação do processo, apenas automatizaram defi- ciências existentes. A prioridade é aprimorar a forma de trabalho, conforme estudos da engenharia de software indicam. Após a implementação de processos e métodos, incluindo os ágeis, as ferramentas podem ser introduzidas. A adoção de ferramentas sem processos estruturados e métodos estabelecidos resulta na automação de ambientes caóticos, sem resolver efetivamente o problema. Sommerville, em sua obra clássica, abordou problemas recorrentes na época da crise do software, como estouros de orçamento, descumprimento de prazos, software que não atende aos requisitos e código de difícil manutenção. Esses desafios refletem situações comuns na área de TI, evidenciando a necessidade de uma gestão adequada do projeto e do código fonte. Hoje, a falta de aplicação dos prin- cípios da engenharia de software é vista como a principal causa de problemas em projetos. Ao longo dos anos, a engenharia de software desenvolveu processos, métodos e fer- ramentas para solucionar esses problemas, como a análise estática de código, ante- riormente complexa e hoje facilitada por ferramentas especializadas. O curso abordará exemplos práticos dessas ferramentas, destacando como o avanço tecnológico sim- plificou tarefas desafiadoras e ressaltando que a não aplicação desses conhecimentos reflete uma abordagem obsoleta atualmente. 10m 15m 3www.grancursosonline.com.br Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br Engenharia de Software - Conceitos Gerais ENGENHARIA DE SOFTWARE DISCUSSÃO SOBRE A HISTÓRIA DA CRISE DO SOFTWARE Ao discutir a história da crise do software e a necessidade de organização diante do caos, observa-se que em outras áreas para solucionar problemas semelhantes adotam processos estruturados. O contexto é comparado ao desenvolvimento de um carro, onde atividades são detalhadas e seguem um processo antes de chegar à produção. A engenharia de soft- ware precisou se adaptar ao longo do tempo, e essa evolução será explorada posteriormente. Dentre os autores relevantes, Pressman destaca o processo de software como a metodologia para atividades, ações e tarefas necessárias ao desenvolvimento de um software de alta qualidade. O foco na qualidade é considerado fundamental, e aulas específicas sobre qualidade de software, que envolvem verificações e validações do pro- duto, serão abordadas posteriormente. É enfatizado que não se deve adotar ferramentas de forma precipitada para resolver pro- blemas, pois a ferramenta, mesmo útil, depende de um processo organizado, atividades bem delineadas e métodos apropriados para o contexto do software em construção. Sommerville complementa, descrevendo o processo de software como um conjunto de atividades rela- cionadas que resultam na produção de um produto de software. Esse processo culmina na entrega de um produto, e futuramente serão discutidas as verificações e validações do pro- cesso e do produto, temas abordados por outros autores clássicos da engenharia de software. Observa-se que, ao longo do tempo, as práticas na área evoluíram. No passado, os processos eram mais prescritivos, seguindo a abordagem “dirigido a planos” proposta por Sommerville. Isso se assemelhava à engenharia civil, onde um plano é seguido à risca na construção de um prédio. No entanto, percebeu-se que, ao contrário de um edifício, o software está sujeito a muitas mudanças, incluindo alterações nos requisitos. Esse entendimento marca uma transição na abordagem da engenharia de software, desta- cando a necessidade de flexibilidade e agilidade nos processos para melhor se adaptar às dinâmicas do desenvolvimento de software. PROCESSO ADAPTÁVEL NA ENGENHARIA DE SOFTWARE O processo não deve ser excessivamente rígido; ele precisa ser ágil e adaptável. Essa flexibilidade é crucial, e posteriormente serão abordados modelos de processo, que podem transformar-se em modelos genéricos passíveis de adaptação. Teorias de apren- dizagem, provenientes da formação em licenciatura em informática, contribuirão para a compreensão progressiva desses conceitos. 20m 4www.grancursosonline.com.br Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br Engenharia de Software - Conceitos Gerais ENGENHARIA DE SOFTWARE COMPLEXIDADE E ADAPTAÇÃO NOS PROCESSOS Os processos são complexos e dependem de fatores como o produto a ser desenvol- vido, a equipe envolvida e os recursos disponíveis. Não há um processo universalmente ideal; sua adaptação ao contexto é não apenas possível, mas necessária. A flexibilidade pode variar entre uma abordagem mais formal e outra mais flexível. Essa discussão é essencial, pois os modelos de processo, destacados por Pressman e Sommerville, têm visões distintas sobre as atividades envolvidas, possibilitando adaptação. ATIVIDADES (PRESSMAN) Pressman categoriza as atividades em comunicação, planejamento, modelagem, programação, construção e entrega. Entender essas atividades é fundamental, visto que questões de concursos frequentemente exploramdetalhes específicos conforme apresentados no livro de Pressman. Em concursos, as bancas podem escolher questões de diferentes fontes, sendo relevante focar nas mais recorrentes. 5www.grancursosonline.com.br Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br Engenharia de Software - Conceitos Gerais ENGENHARIA DE SOFTWARE ATIVIDADES DE APOIO (PRESSMAN) Além disso, Pressman inclui atividades de apoio, que variam e não demandam uma aten- ção especial, uma vez que sua compreensão ocorre naturalmente no decorrer do aprendizado. Compreender o conjunto de atividades é essencial, sendo possível explorar as ati- vidades de apoio conforme necessário dentro do processo global, adaptando-se con- forme a abordagem específica de cada autor. CONTROLE E ACOMPANHAMENTO DO PROJETO Para qualquer processo de software, em determinado momento, haverá a necessi- dade de controle e acompanhamento do projeto. Isso ocorre porque, ao implementar um processo, muitas vezes, há a criação de um projeto associado. Esse entendimento é derivado dos estudos em gerenciamento de projetos, nos quais a engenharia de soft- ware incorporou elementos provenientes dessas análises. Dessa forma, ao lidar com um projeto de desenvolvimento de software, é imprescindível estabelecer mecanismos de controle e acompanhamento, envolvendo a avaliação contínua do progresso, o cum- primento do cronograma e a administração de riscos, conforme orientações presentes em guias como o PMBOK e em normas como as ISOs. Vale destacar que, além de espe- cialista em segurança da informação pelo IB, também possui a certificação ISO 27.002, focada nesse campo, reconhecendo a importância desses princípios atualmente. 25m 6www.grancursosonline.com.br Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br Engenharia de Software - Conceitos Gerais ENGENHARIA DE SOFTWARE NORMAS ISO E ADMINISTRAÇÃO DE RISCOS As normas ISO, em destaque a ISO 27005 para riscos à segurança da informação e a ISO 31000 para riscos de forma genérica, são fundamentais na engenharia de soft- ware. A administração de riscos é constante, sendo uma análise recorrente durante o desenvolvimento. Essa prática, mais estruturada na engenharia de software, difere-se da abordagem cotidiana. Outras atividades incluem garantia da qualidade, revisões téc- nicas, medição, gerenciamento de configuração de software, gerenciamento da capaci- dade de reuso e elaboração e produção de artefatos. A garantia de qualidade e revisões técnicas serão detalhadas em aulas específicas sobre qualidade. A medição é a área de estudo do professor, com doutorado e mestrado nesse campo. O gerenciamento de con- figuração será amplamente discutido, destacando o controle e a diversificação. ATIVIDADES FUNDAMENTAIS (SOMMERVILLE) As atividades fundamentais, especificação do software, projeto, implementação e evolução, são essenciais para o desenvolvimento, compreendidas pelo modelo de pro- cesso. A variedade de processos existe para atender à diversidade de tipos de software e adaptar-se ao produto em questão. O processo, contudo, permanece constante. A dúvida surge quando todo projeto, indepen- dente do produto, utiliza o mesmo processo. Isso pode não ser apropriado, especialmente ao desenvolver um sistema de prateleira, como um editor de texto. Já para um software custo- mizado, comum em órgãos públicos, onde a evolução ocorre conforme as demandas do usuá- rio, a abordagem é consideravelmente diferente. A ideia de que um único processo se aplica a todas as situações era um erro comum no desenvolvimento da engenharia de software. Agora, entende-se que os processos precisam ser adaptados conforme a necessidade. 7www.grancursosonline.com.br Viu algum erro neste material? Contate-nos em: degravacoes@grancursosonline.com.br Engenharia de Software - Conceitos Gerais ENGENHARIA DE SOFTWARE Fica evidente que não há uma solução única para todos os problemas, e os processos precisam ser ajustados. Neste primeiro bloco, apresenta-se uma visão geral da enge- nharia de software, uma disciplina que integra elementos de outras engenharias para estabelecer processos. A partir desses processos, são aplicados métodos nas atividades, inclusive nas de apoio, como medição, uma atividade de apoio, e gerenciamento de con- figuração, amplamente utilizado na fase de construção. 30m � Este material foi elaborado pela equipe pedagógica do Gran Concursos, de acordo com a aula preparada e ministrada pelo professor Washington Henrique Almeida. A presente degravação tem como objetivo auxiliar no acompanhamento e na revisão do con- teúdo ministrado na videoaula. Não recomendamos a substituição do estudo em vídeo pela lei- tura exclusiva deste material.