Universidade Federal de Pernambuco Departamento de Informática Curso de Especialização em Tecnologia da Informação Engenharia de Software Questionário para Discussão e Reflexão Aluna: Danielle Novaes de Siqueira Silva 1997 Questionário para Discussão e Reflexão - Qual a importância em se manter o histórico das tomadas de decisão ao longo do ciclo de vida de desenvolvimento do software? r- É primordial para os envolvidos no desenvolvimento do software o registro das decisões tomadas ao longo do ciclo de vida do software. Algumas razões são enumeradas abaixo: 1. O registro das decisões tomadas oficializa um acordo entre as partes envolvidas no projeto, o que evita conflitos futuros decorrentes da insatisfação do usuário com o produto final apresentado. Através do registro em documento apropriado, a equipe de desenvolvimento terá condições de se defender de acusações infundadas por parte do cliente/usuário. 2. Outro aspecto, talvez o mais importante, se refere a necessidade de se registrar as decisões tomadas diante de determinados problemas pelo simples fato de evitar que, futuramente, diante de problemas semelhantes, o profissional seja capaz de decidir pela melhor solução, baseado num histórico construído ao longo do tempo. Aos profissionais envolvidos na manutenção do sistema, esse registro é indispensável. - Na sua opinião, quais as principais diferenças entre o que advoga a Engenharia de Software e o desenvolvimento de software nas empresas? Essas diferenças podem ser facilmente contornadas ou não? r- Em determinadas circunstâncias, é muito difícil para os profissionais de informática seguirem a risca o que reza os princípios de Engenharia de Software. Situações adversas freqüentemente são encontradas ao longo do ciclo de vida do software, e que não estão previstas nos manuais. Para adaptar os princípios de Engenharia de software à realidade e às necessidades da empresa, muitas desenvolvem metodologias próprias de desenvolvimento de Sistemas. - Explique porque, em sistemas de grande porte, é recomendado que o protótipo seja jogado fora. r- Existem situações, inclusive freqüentes, em que o usuário define um conjunto de objetivos gerais para o software, mas não sabe expressar com clareza os requisitos de entrada, processamento e saída. Em outros casos, o próprio desenvolvedor não tem a certeza da eficiência de um algoritmo, da adaptabilidade do Sistema Operacional ou da forma que a interação Homem-Máquina deve assumir. Para suprir essas deficiências e dirimir as dúvidas entre as partes, freqüentemente o desenvolvedor recorre a elaboração de programas que implementam um subconjunto da funções exigida, ou que retratam a interface com o usuário. Esse programas, desenvolvidos com o propósito de servir como instrumento de validação de parte do software, é conhecido como protótipo. Geralmente, são desenvolvidos em microcomputadores e com linguagens de 4ª geração. Correntes divergem quanto ao destino do protótipo após sua utilização. Alguns defendem que o protótipo deve evoluir, originando o produto final. Outros discordam, afirmando que ele deve ser jogado fora e iniciada a elaboração do sistema definitivo. No primeiro caso, argumenta-se que jogar fora o protótipo aumenta o custo do Sistema e desperdiça tempo. No segundo, portanto, as razões apontadas são mais convincentes. Dentre elas, destacamos: 1. O primeiro sistema construído geralmente é lento, grande e desajeitado em uso; 2. Como existe a pressa em colocar o protótipo em funcionamento, o desenvolvedor não está preocupado com a qualidade global do software e a manutenibilidade a longo prazo. Além disso, algoritmos ineficientes podem ser implementados simplesmente para demonstrar capacidade. Apesar de alguns problemas que possam advir com a prototipação, como a insistência do cliente em usá-lo como produto final, ela ainda é considerada um paradigma muito eficiente da Engenharia de Software. A chave é definir as regras desde o começo, ou seja, o cliente e o desenvolvedor devem estar cientes que o objetivo do protótipo é apenas de servir como mecanismo para definir requisitos. Ao final da validação, deverá ser descontado e substituído pelo software real já projetado. - Na empresa onde você trabalha é empregada alguma técnica de Engenharia de Software ou pretende-se empregar? Em caso afirmativo, alguns dos modelos de ciclo de vida de software seria adequado para se usar? Por quê? r- Desconheço, pois atualmente não trabalho no setor de informática. - Na sua opinião, quais são as necessidades de treinamento e formação básicas ideais para o engenheiro de software do futuro. r- O engenheiro de software é o profissional encarregado pela transformação dos requisitos definidos na especificação formal no código propriamente dito. Qualidade de software e otimização de algoritmos são preocupações freqüentes a esse profissionais. Para tanto, é indispensável que ele sempre esteja atualizado com as tecnologias presentes e as tendências de mercado. Participação em cursos, congressos e encontros com profissionais da área, bem como a leitura de revistas especializadas e periódicos são maios para se manter em dia com essas tecnologias. Quanto a formação básica, considero indispensável a realização de um curso superior na área de Ciência da Computação ou Processamento de Dados, que oferecem a base do conhecimento necessário ao trabalho que será desempenhado por esses profissionais. Não que outra pessoa com formação acadêmica diferente da apresentada não consiga ter sucesso, mas para tanto terá que investir muito em cursos que abordem conteúdos básicos como algoritmo, Engenharia de Software, etc.... Formação numa linguagem específica não o habilita a construir software com qualidade.