ENGENHARIA DE SOFTWARE AULA 1 estrutura do curso e conceitos fundamentais professor Luciano Roberto Rocha www.lrocha.com
Sobre o docente Especialista em Desenvolvimento Web (UEM) Mestre em Tecnologia Educacional (UFPR) Doutorando em Educação - TICs (UFPR) Diretor do departamento de desenvolvimento Web da Secretaria de Educação Castro Consultor em TI da União Nacional dos Dirigentes em Educação - UNDIME (Brasília) Consultor em Tecnologia Educacional do Instituto Döll Instrutor Certificado Adobe System Incorporated (ACE/ACI) 2
Conteúdo programático Conceitos e Definição Áreas de Conhecimento Processo de Software Metodologias e Métodos de Modelagem Ferramentas, Tecnologias e Práticas Gestão de Projetos Planejamento Análise de Requisitos Levantamento de Dados Dicionário de Dados Documentação de Softwares 3
Competências e habilidades Estudar os princípios e paradigmas de engenharia de software; Identificar e estudar as ferramentas fundamentais: métodos, ferramentas e procedimentos; Definir e estudar os princípios e características de modelagem de software; Estudar as áreas que determinam a aplicação do software; Estudar o ciclo de vida do software; 4
Procedimentos didáticos Exposição/Debate/Diálogo sobre conteúdo proposto no plano de curso. Realização de exercícios práticos com o auxílio do laboratório de informática para aplicação e utilização das diversas ferramentas e técnicas de engenharia de softwares Desenvolvimento de dinâmicas em grupos e estudo de casos pertinentes à disciplina. 5
Sistemática de avaliação Duas avaliações parciais, teóricas do conteúdo ministrado em sala de aula com exercícios e questões objetivas e/ou descritivas com peso de 3 pontos. Duas avaliações bimestrais, teóricas ou práticas dos conhecimentos trabalhados em sala de aula por meio do desenvolvimento de exercícios de implementação e aplicação dos temas pertinentes a disciplina com peso de 7 pontos. 6
Referencial teórico BIBLIOGRAFIA BÁSICA: PRESSMANN, S. R.. Engenharia de Software. Makron Books: São Paulo, 2006; REZENDE, A. D.. Engenharia de Software e Sistemas de Informação. Brasport: Rio de Janeiro, 2005. SCHACH, S. R.. Engenharia de Software - Os Paradigmas Clássico e Orientado a Objetos BIBLIOGRAFIA COMPLEMENTAR: SOMMERVILLE, Ian. Engenharia de Software, trad. Maurício de Andrade. São Paulo; Addison Wesley, 2003. TONSING, S. L.. Engenharia de Software Análise e Projeto Orientado a Sistemas 7
O que é Eng. de Software? É uma área do conhecimento da computação voltada para a especificação, desenvolvimento e manutenção de sistemas informacionais; Utiliza e aplica tecnologias e práticas de gerência de projetos e outras disciplinas, objetivando organização, produtividade e qualidade. Os fundamentos científicos para a engenharia de software envolvem o uso de modelos abstratos e precisos que permitem especificar, projetar, implementar e manter sistemas de software, avaliando e garantindo suas qualidades. 8
Utilizar e aplicar tecnologias e práticas objetivando: organização produtividade qualidade
DESENVOLVER UM SISTEMA (SOFTWARE) SINÔNIMOS?
Tecnologias e Práticas linguagens de programação; banco de dados; ferramentas; plataformas (Integrated Development Environment); bibliotecas; padrões; processos; 11
Conceito de Eng. de Software É a criação e a utilização de sólidos princípios de engenharia a fim de obter software de maneira econômica, que seja confiável e que trabalhe eficientemente em máquinas reais". Friedrich Ludwig Bauer A Engenharia de Software se concentra nos aspectos práticos da produção de um sistema de software, enquanto a ciência da computação estuda os fundamentos teóricos dos aspectos computacionais. 12
Objetivo da Eng. de Software A e n g e n h a r i a d e s o f t w a r e d e v e o f e r e c e r mecanismos para se planejar e gerenciar o processo de desenvolvimento de um sistema computacional; 13
Levantamento de Requisitos Etapas Compreensão do domínio Coleta de informações Classificação Resolução dos Conflitos Definição das Prioridades Documentação dos Requisitos Levantados 14
Etapas O levantamento de Requisitos de Software O início para toda a atividade de desenvolvimento de software é o levantamento de requisitos, sendo esta atividade repetida em todas as demais etapas da engenharia de requisitos. Compreensão do domínio: Os analistas devem desenvolver sua compreensão do domínio da aplicação; Coleta de requisitos: É o processo de interagir com os stakeholders do sistema para descobrir seus requisitos. A compreensão do domínio se desenvolve mais durante essa atividade; Classificação: Essa atividade considera o conjunto não estruturado dos requisitos e os organiza em grupos coerentes; Resolução de conflitos: Quando múltiplos stakeholders estão envolvidos, os requisitos apresentarão conflitos. Essa atividade tem por objetivo solucionar esses conflitos; Definição das prioridades: Em qualquer conjunto de requisitos, alguns serão mais importantes do que outros. Esse estágio envolve interação com os stakeholders para a definição dos requisitos mais importantes; Verificação de requisitos: Os requisitos são verificados para descobrir se estão completos e consistentes e se estão em concordância com o que os stakeholders desejam do sistema 15
Técnicas de Levant. Requisitos Observação Pessoal Permite vivenciar as situações do cotidiano Questionário Formulário preparado para tabular informações Entrevista Permite realizar um levantamento passível de reflexão Seminário Reunião planejada com pessoas-chave da empresa Pesquisa Averiguação física de uma atividade e/ou processo para identificar prazos, volumes, ocorrências etc. Técnica Mista Integração de duas ou mais técnicas 16
Documentação dos Requisitos Os dados apurados não devem ser confiados puramente à memória. Papéis de trabalho de conhecimento geral os quais darão suporte à utilização de ferramentas: Fluxograma Diagrama de objetos Diagrama de fluxo de dados Prototipação de telas Descrição narrativa Linguagens naturais estruturadas Diagrama de dados 17