Baixe o app para aproveitar ainda mais
Prévia do material em texto
Tópicos Especiais em Engenharia de Software Engenharia de Requisitos Eduardo Kinder Almentero ekalmentero@gmail.com Ementa 1. Introdução 1.1 Motivação 1.2 Conceitos 1.3 Teoria Geral de Sistemas 1.4 Ciclo de Vida 2. Engenharia de Requisitos 2.1 Conceitos básicos 2.2 Modelos 2.3 Universo de informações 2.4 Definição da Engenharia de Requisitos 2.5 Requisitos funcionais x Não funcionais 3. Elicitação 3.1 Identificação de Fontes de Informação 3.2 Coleta de Fatos 3.3 Comunicação 31/03/2015 Prof. Eduardo Kinder Almentero 2 4. Modelagem 4.1 Representação 4.2 Organização 4.3 Armazenamento 5. Análise 5.1 Identificação de Partes 5.2 Verificação 5.3 Validação 6. Metodologias orientadas a metas 6.1 Construção de modelos orientados a metas 6.2 Análise de modelos orientados a metas Avaliações • Um trabalho (em grupo) de especificação envolvendo o conhecimento adquirido ao longo do curso. • Entregas de artefatos serão realizadas, periodicamente, conforme cronograma a ser apresentado. • Ao final, um pacote deve ser entregue contendo todo o material produzido ao longo do curso. 31/03/2015 Prof. Eduardo Kinder Almentero 3 Trabalho • Envolverá interação com clientes reais ou simulados (interação entre grupos) • Serão realizadas reuniões periódicas para estas interações 31/03/2015 Prof. Eduardo Kinder Almentero 4 Motivação: o problema envolvendo requisitos • Pesquisa envolvendo 350 empresas dos Estados Unidos, englobando 8000 projetos 31/03/2015 Prof. Eduardo Kinder Almentero 5 • Maior responsável pelos problemas: engenharia de requisitos inadequada (aproximadamente 50% das respostas) Motivação: o problema envolvendo requisitos • Maior responsável pelos problemas: engenharia de requisitos inadequada (aproximadamente 50% das respostas) 31/03/2015 Prof. Eduardo Kinder Almentero 6 www.standishgroup.com/chaos.html Motivação: o problema envolvendo requisitos • Pesquisa com 3800 organizações europeias, em 17 países • A maioria dos problemas em projetos de desenvolvimento de software – Especificação de requisitos • > 50% das respostas – Gestão da evolução de requisitos • 50% das respostas [European Software Institute, 1996] 31/03/2015 Prof. Eduardo Kinder Almentero 7 Motivação: o problema envolvendo requisitos • Aparentemente o problema dos requisitos persistem apesar dos progressos na tecnologia de software 31/03/2015 Prof. Eduardo Kinder Almentero 8 [J. Maresco, IBM developersWork, 2007] Definição • A engenharia de requisitos estabelece o processo de Definição de Requisitos, no qual o que deve ser feito é elicitado, modelado e analisado. Este processo deve lidar com diferentes pontos de vista, e usar uma combinação de métodos, ferramentas e pessoal. • O produto deste processo é um modelo. • Este processo acontece num contexto previamente definido que chamamos de Universo de Informações. 31/03/2015 Prof. Eduardo Kinder Almentero 9 Conceitos • Software como um produto – Visão mais industrial do processo de criação de software – Auxilia a separação de aspectos que são do software e do ambiente onde este irá operar. – De um produto exige-se preço e qualidade, ambos podem ser negociados – O software deve ter o nível de qualidade exigido e ser desenvolvido com o menor custo – O papel da engenharia é desenvolver sistemas com o nível de qualidade exigido, dentro de um custo compatível com a qualidade, buscando sempre uma otimização de custos. 31/03/2015 Prof. Eduardo Kinder Almentero 10 Teoria Geral de Sistemas (TGS) • Proposta entre 1950 e 1970 pelo biólogo Luwig von Betallanfy • Surgiu da necessidade de interdisciplinaridade • Seu objetivo foi definir um framework teórico onde diferentes conhecimentos poderiam ser integrados • Utilizando os mecanismos dispostos na TGS, podemos modelar e compreender melhor sistemas complexos. 31/03/2015 Prof. Eduardo Kinder Almentero 11 Teoria Geral de Sistemas (TGS) • Características básicas de um sistema: – Propósito – todo sistema deve possuir um objetivo – Globalismo – mudanças realizadas em qualquer parte do sistema, por menor que sejam, alteram o sistema como um todo – Entropia – com o passar do tempo, um sistema tende a se degenerar. Isto ocorre quando não há troca suficiente de informação entre o sistema e o meio ambiente – Homeostasia – está relacionada a adaptabilidade do sistema. Todo sistema tente a se adequar ao ambiente onde se encontra 31/03/2015 Prof. Eduardo Kinder Almentero 12 Pontos importantes da TGS • Objetos e relações – Objetos são elementos básicos do sistema. – É essencial identificar o relacionamento entre estes objetos para compreender um sistema • Limites – Provavelmente um dos pontos mais difíceis de definir em um sistema. – Como determinar a fronteira do sistema. – É importante identificar tanto o que faz parte, quanto o que não faz parte. • Pontos de vista – Os sistemas devem ser observados e entendidos a partir de diferentes ângulos ou perspectivas. – A TGS considera que um sistema pode ser influenciado por pontos de vista. 31/03/2015 Prof. Eduardo Kinder Almentero 13 Pontos importantes da TGS • Nível de abordagem – Para todo sistema, é preciso definir um nível de detalhe a ser utilizado. – Este nível de detalhe deve ser compatível com o objetivo do sistema. • Hierarquia – Ponto mais importante na TGS para abordar a complexidade de sistemas. – A proposta de dividir um sistema (problema) maior em subsistemas (problemas menores) é inerente a ideia de sistemas. • Meio ambiente – Todo sistema é subsistema de um sistema maior. – A comunicação com sistemas com seus macro sistemas ocorre através de entradas e saídas. – Através das saídas o sistema altera o estado do macro sistema. – Através das entradas o macro sistema influencia o sistema. 31/03/2015 Prof. Eduardo Kinder Almentero 14 Contexto • Como é possível observar, tanto a visão como um produto, quanto a TGS, nos dizem que a definição de um produto de software exige um contexto onde ele será aplicado. • Este contexto pode ser determinado por: – Circunstâncias e demandas restritas a um grupo restrito. – Condições de mercado, onde clientes individuais não tem influência. 31/03/2015 Prof. Eduardo Kinder Almentero 15 Contexto • Estes tipos de contexto, geralmente, implicam em processos de definição diferentes – No desenvolvimento voltado a mercados mais amplos, a liberdade é maior. – Quando o software é feito sob medida, temos mais restrições • Por exemplo: – Ao construir um sistema para controlar os processos relacionado a estoque de uma organização, temos que seguir a arquitetura do sistema de compras/vendas – Ao desenvolver um software embarcado para controle de tração de um automóvel, é preciso seguir a arquitetura de tração definida pelo fabricante 31/03/2015 Prof. Eduardo Kinder Almentero 16 Tecnologia da informação x Sistema de informação Hardware Software Rede Dados Pessoas Processos 31/03/2015 Prof. Eduardo Kinder Almentero 17 Tecnologia da informação Sistema de informação Sistema de informação x Software • Um sistema de informação (SI) não é um software • O SI não é somente o tratamento e processamento de informações, pois: – Possui integração com a organização que vai além de fluxos de informação – Pode, por exemplo, alterar os processos da organização – Tem em sua arquitetura aspectos não manipuláveis computacionalmente • O software, por sua vez: – Contém aspecto técnicos muito distantes da realidade da organização – Tratam apenas de aspectos computáveis • Não entender esta diferença pode acarretar em problemas graves duranteo processo de construção de software 31/03/2015 Prof. Eduardo Kinder Almentero 18 Ciclo de Vida Processos de Desenvolvimento de Software (PDS) 31/03/2015 Prof. Eduardo Kinder Almentero 19 Engenharia de Requisitos Projeto Desenvolvimento Teste Manutenção Ciclo de Vida Processos de Desenvolvimento de Software (PDS) • Existem diferentes modelos – Cascata – Modelo em V – Incremental – RAD – Ágil – Iterativo – Espiral – ... 31/03/2015 Prof. Eduardo Kinder Almentero 20 Ciclo de Vida Processos de Desenvolvimento de Software (PDS) • Por que tantos? – Diferentes: • Sistemas de software – Complexidade – Criticidade – Qualidade • Equipes – Tamanho – Experiência • Ambiente externos • Clientes • Prazo • Custo • .... 31/03/2015 Prof. Eduardo Kinder Almentero 21 Ciclo de Vida Processos de Desenvolvimento de Software (PDS) • As atividades básicas estão presentes em todos os modelos • O que muda? – Interação (entradas/saídas) – Ênfase – Retroalimentação – Número de iterações – ... 31/03/2015 Prof. Eduardo Kinder Almentero 22 Manutenção • Do ponto de vista biológico, a manutenção é parte essencial do ciclo de vida. • É através dela que sistemas de software combatem a entropia. • É comum que o PDS seja utilizado sem preocupação explícita com a manutenção. • Ou ainda, muita vezes a atividade é confundida com correção, sendo associada a erros e, portanto, carrega um viés negativo. • Tipos de manutenção – Corretiva – Evolutiva – Preventiva – Adaptativa – Suporte (performance) 31/03/2015 Prof. Eduardo Kinder Almentero 23 Discussão • O processo de desenvolvimento de software é fortemente dependente do fator social. – Desenvolve-se em um contexto social • Clientes • Própria equipe • O PDS não pode ser visto apenas como um processo técnico. • Ganhos consideráveis na produtividade podem ser alcançados através de : – Ferramentas de apoio – Novas estratégias – Gestão 31/03/2015 Prof. Eduardo Kinder Almentero 24 Perguntas?
Compartilhar