




























































































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Os melhores documentos à venda: Trabalhos de alunos formados
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Comunidade
Peça ajuda à comunidade e tire suas dúvidas relacionadas ao estudo
Descubra as melhores universidades em seu país de acordo com os usuários da Docsity
Guias grátis
Baixe gratuitamente nossos guias de estudo, métodos para diminuir a ansiedade, dicas de TCC preparadas pelos professores da Docsity
Apostila de Engenharia de Software do projeto JEDI
Tipologia: Manuais, Projetos, Pesquisas
1 / 264
Esta página não é visível na pré-visualização
Não perca as partes importantes!
Autor Ma. Rowena C. Solamo
Equipe Jaqueline Antonio Naveen Asrani Doris Chen Oliver de Guzman Rommel Feria John Paul Petines Sang Shin Raghavan Srinivas Matthew Thompson Daniel Villafuerte
Necessidades para os Exercícios Sistemas Operacionais Suportados NetBeans IDE 5.5 para os seguintes sistemas operacionais:
512 MB 850 MB
Linux 500 MHz Intel Pentium III workstation ou equivalente
512 MB 450 MB
Solaris OS (SPARC) UltraSPARC II 450 MHz 512 MB 450 MB Solaris OS (x86/x Platform Edition)
AMD Opteron 100 Série 1.8 GHz 512 MB 450 MB
Mac OS X PowerPC G4 512 MB 450 MB Configuração Recomendada de Hardware Sistema Operacional Processador Memória HD Livre Microsoft Windows 1.4 GHz Intel Pentium III workstation ou equivalente
1 GB 1 GB
Linux 1.4 GHz Intel Pentium III workstation ou equivalente
1 GB 850 MB
Solaris OS (SPARC) UltraSPARC IIIi 1 GHz 1 GB 850 MB Solaris OS (x86/x Platform Edition)
AMD Opteron 100 Series 1.8 GHz 1 GB 850 MB
Mac OS X PowerPC G5 1 GB 850 MB Requerimentos de Software NetBeans Enterprise Pack 5.5 executando sobre Java 2 Platform Standard Edition Development Kit 5.0 ou superior (JDK 5.0, versão 1.5.0_01 ou superior), contemplando a Java Runtime Environment, ferramentas de desenvolvimento para compilar, depurar, e executar aplicações escritas em linguagem Java. Sun Java System Application Server Platform Edition 9.
1. Objetivos
Quando pessoas pensam sobre computadores, o primeiro detalhe que vêem em suas mentes são as máquinas físicas – monitor, teclado, mouse e CPU. No entanto, o software é o que permite utilizá-los. Um software de computador inclui um conjunto de programas que executa no interior de um computador, de qualquer tamanho e arquitetura, que estão sendo processados por programas e apresentados aos usuários como cópias hard ou soft. É construído por engenheiros de software através do emprego de um processo de software que produz produtos de alta qualidade de trabalho que identifica as necessidades das pessoas que irão usar o sistema.
Atualmente, o software é uma importante tecnologia em nossas vidas porque as afeta praticamente em todos os aspectos, incluindo governo, comércio e cultura. Nessa lição, discutiremos sobre engenharia de software como uma disciplina em construção de um software de computador com qualidade. Uma camada de visão será usada para esboçar conceitos necessários à compreensão da engenharia de software. Em seguida, obteremos uma compreensão sobre as pessoas envolvidas no esforço de desenvolvimento de software. Ao final, explicaremos a necessidade de documentação e de como organizar e documentar produtos de trabalho de engenharia de software.
Ao final desta lição, o estudante será capaz de:
2. Engenharia de Software – Uma visão em camadas
Engenharia de Software é uma disciplina que aplica princípios da engenharia de desenvolvimento na qualidade do software em um determinado tempo e com um custo efetivo. Usando uma abordagem sistemática e metodológica para produzir resultados que possam ser quantificados. Faz uso de medição e métricas para avaliar a qualidade, não somente do software, mas também do processo. Utilizada para avaliar e gerenciar projetos de desenvolvimento de software.
Engenharia de Software é vista de modo diferente pelos diversos profissionais. Pressman sugere uma visão da engenharia de software como uma camada tecnológica^1. Essa visão consiste em quatro camadas: foco na qualidade, processo, método e ferramentas. A Figura 1 ilustra essa visão da engenharia de software.
Figura 1 : Engenharia de Software – Uma camada de visão
Essa camada busca um total foco na qualidade. É uma cultura onde o compromisso em melhoria continua no processo de desenvolvimento do software é sustentado. Permite o desenvolvimento de mais abordagens efetivas para engenharia de software.
Define uma estrutura, que consiste em áreas de processos chave, que define e permite a entrega racional e a tempo de um software. Áreas de processos chave são a base para o gerenciamento de projeto de software. Estabelecem que métodos técnicos sejam aplicados, quais ferramentas são usadas, que produtos de trabalho precisam ser produzidos, e que marcos são definidos. Incluem a garantia que a qualidade será mantida, e que a mudança é devidamente controlada e gerenciada.
Métodos definem procedimentos sistemáticos e ordenados de construção de software. Eles proporcionam uma estrutura global interna onde as atividades do engenheiro de software são realizadas. Essas atividades incluem um conjunto amplo de tarefas, tais como, análise de requisitos, design , construção do programa, teste e manutenção.
Metodologia é a ciência de pensamento sistemático, usando os métodos ou procedimentos para uma disciplina em particular. Existem várias metodologias da engenharia de software que são usadas atualmente. Algumas delas estão enumeradas abaixo:
Metodologias Estruturadas:
1 Pressman, Roger S., Software Engineering, A Practitioner's Approach, Sixth Edition, (Singapore: McGraw-Hill Internal Edition, 2005), p. 53-
3. Qualidade dentro do Esforço de Desenvolvimento
Conforme mencionado anteriormente, a qualidade é a mente que influencia todo engenheiro de software. Focando na qualidade em todas as atividades de engenharia de software, reduz-se custo e melhora-se o tempo de desenvolvimento pela minimização de um novo trabalho de correção. Para proceder dessa forma, um engenheiro de software tem que definir explicitamente que qualidade de software é ter um conjunto de atividades que assegurarão que todo produto de trabalho da engenharia de software exibe alta qualidade, fazer controle de qualidade e atividades garantidas, o uso de métricas para desenvolver estratégias para melhorar o produto de software e o processo.
Qualidade é a característica total de uma entidade para satisfazer necessidades declaradas e implícitas. Essas características ou atributos têm que ser mensuráveis de modo que possam ser comparados por padrões conhecidos.
Três perspectivas são usadas na compreensão da qualidade, especialmente, olhamos para a qualidade do produto, do processo e no contexto do ambiente de negócios^2.
Qualidade do Produto
Significa coisas diferentes para cada pessoa. É relativo para uma pessoa analisar qualidade. Para os usuários finais, o software tem qualidade se fornecer o que desejam e quando desejam o tempo todo. Também julgam baseados na facilidade de usar e de aprender como usá-lo. Normalmente avaliam e categorizam com base em características externas, tal como, número de falhas por tipo. Falhas podem ser categorizadas como: insignificantes, importantes e catastróficas. Para que outros possam desenvolver e manter o software, estes devem ficar de olho nas características internas em vez das externas. Exemplos que incluem erros e falhas encontradas durante as fases de análise de requisitos, design, e codificação são normalmente feitos anteriormente ao carregamento dos produtos para os usuários finais.
Como engenheiros de software, devemos construir modelos baseados em como os requisitos dos usuários externos serão relacionados com os requisitos internos dos desenvolvedores.
Qualidade do Processo
Existem várias tarefas que afetam a qualidade do software. Às vezes, quando uma tarefa falha, a qualidade do software falha. Como engenheiros de softwares, devemos validar a qualidade no processo de desenvolvimento do software. Regras de processo sugerem que pela melhoria do processo de desenvolvimento do software, também há melhora da qualidade do produto resultante. Algumas regras de processo são demonstradas abaixo:
Qualidade no contexto do ambiente de negócio
2 Pfleeger, Shari Lawrence, Software Engineering Theory and Practice, International Edition, (Singapore: Prentice-Hall, 1999), p. 10-
Nessa perspectiva, qualidade é visualizada em termos de produtos e serviços sendo proporcionado pelo negócio em que o software é usado. Melhorando a qualidade técnica dos processos de negócio, agrega-se valor ao negócio, por exemplo, valor técnico do software traduz o valor do negócio. Também é importante medir o valor do software em termos de terminologias de negócio, tal como, “quantos pedidos de venda foram processados hoje?”, valor do dólar sobre o retorno em cima dos investimentos (ROI), etc. Se o software não agrega valor ao negócio, qual a necessidade de tê-lo em primeiro lugar?
Podemos endereçar os pontos importantes sobre qualidade em:
Produtos de trabalho são as saídas esperadas como resultado da execução de tarefas no processo de desenvolvimento de software. Esses resultados contribuem para o desenvolvimento de software com qualidade. Conseqüentemente, devem ser mensurados e verificados novamente se vão ao encontro das exigências e dos padrões. As alterações nos produtos de trabalho são significativas; elas podem ser monitoradas e controladas. A técnica de checar a qualidade dos produtos de trabalho é a técnica formal de revisão. Formal Technical Reviews (FTR) são executadas em vários pontos do processo do desenvolvimento do software. Ela serve para descobrir erros e defeitos que podem ser eliminados antes do software ser enviado para o usuário final. Especificamente, seus objetivos são:
Um guia geral de condução das técnicas formais de revisão está listado abaixo.
possam ser vistas por outros revisores. Isto ajudará a esclarecer os defeitos e ações a serem tomadas.
Introduzido por Fagan em 1976 na IBM. Originalmente foi utilizado para verificar códigos de programas. Entretanto, pode ser estendido para incluir outros produtos de trabalho como técnicas de documentos, modelo de elementos, projetos de códigos e dados etc. Isto é gerenciado por um moderador que é responsável por supervisionar a revisão. Isto requer uma equipe de inspetores designados a verificar se as regras do produto de trabalho vão de encontro à lista de interesse preparada. É mais formal que o walkthrough. A seguir estão descritas regras determinadas na qual cada participante deverá aderir:
Conduzir inspeções requer muitas atividades. Elas estão categorizadas a seguir:
5. O Processo de Software
O processo de software provê uma estratégia que as equipes de desenvolvimento empregam para construir software com qualidade. Ele é escolhido baseado na maturidade do projeto e aplicação, métodos e ferramentas utilizadas e gerência e produtos que são exigidos. Pressman fornece uma representação gráfica do processo de software. De acordo com ele, esta representação fornece a estrutura que um plano compreensivo de desenvolvimento de software pode estabelecer. Consiste em estrutura de atividades , conjunto de tarefas e atividades guarda-chuva^3.
Figura 2 : Processo de Software Pressman
Estrutura de Atividades
Estas atividades são executadas por pessoas envolvidas no processo de desenvolvimento aplicado a qualquer projeto de software independente do tamanho, composição da equipe ou complexidade do problema. Também são conhecidos como fases do processo de desenvolvimento de software.
Conjunto de Tarefas
Cada uma das atividades na estrutura do processo define um conjunto de tarefas. Estas tarefas devem ter marcos, produtos que podem ser entregues ou produtos finais e pontos de garantia de qualidade de software (Pontos de SQA). Eles são modificados e ajustados a uma característica específica do projeto de software e dos requisitos de software.
Atividades Guarda-chuva
Estas são atividades que dão suporte às atividades estruturais ao longo do progresso do projeto de software como a gerência de projeto, gerência de configuração, gerência de requisitos, gerência de riscos, revisão técnica formal, etc.
Existem vários tipos de modelos de processo de software. Os mais comuns são discutidos nesta seção.
Modelo Linear Seqüencial
Também conhecido como modelo cascata ou ciclo de vida clássico. Este é o primeiro modelo formalizado. Outros modelos de processo são baseados em sua abordagem de desenvolvimento
3 Pressman, Software Engineering A Practitioner's Approach, p. 54-
Atividades guarda-chuva
Estrut.de Atividades n
Estrut. de Atividades 2
Estrutura de Atividades 1
Cj.Tarefas 1: Tarefas Marcos Entregáveis Pontos de SQA
Cj.Tarefas 1: Tarefas Marcos Entregáveis Pontos de SQA
Conj. Tarefas 1 : Tarefas Marcos Entregáveis Pontos de SQA
de software. Ele sugere uma abordagem sistemática e seqüencial para o desenvolvimento de software. Ele inicia pela análise do sistema, progredindo para a análise do software, projeto, codificação, teste e manutenção. Ele prega que uma fase não pode iniciar enquanto a anterior não seja finalizada. A Figura 3 mostra este tipo de modelo de processo de software.
Figura 3 : Modelo Linear Seqüencial
As vantagens deste modelo são:
As desvantagens deste modelo são:
Modelo de Prototipação
Para auxiliar o entendimento dos requisitos dos usuários, protótipos são construídos. Protótipos são softwares desenvolvidos parcialmente para permitir aos usuários e desenvolvedores examinarem características do sistema proposto e decidir se devem ser incluídos no produto final. Esta abordagem é mais bem adaptada nas seguintes situações:
A Figura 4 mostra este modelo de processo.
Engenharia de Requisitos
Engenharia de Projetos
Codificação
Testes
Operação e Manutenção
A vantagem deste modelo é:
As desvantagens deste modelo são:
Modelo de Processo Evolucionário
Este modelo de processo reconhece que um software envolve mais de um período de tempo. Ele permite o desenvolvimento de uma versão mais crescentemente complexa de software. A abordagem é naturalmente iterativa. Alguns modelos de processo evolucionário específicos são: Modelo Incremental , Modelo Espiral e Modelo Baseado em Montagem de Componentes.
Modelo Incremental
Este modelo de processo combina os elementos do modelo linear seqüencial com a interatividade do modelo de prototipação. As seqüências lineares são definidas de maneira que cada seqüência produza um incremento de software. Diferente da prototipação, o incremento é um produto operacional. A Figura 6 mostra este modelo de processo.
Figura 6 : Modelo de Processo Incremental
Modelo Espiral
Foi originalmente proposto por Boehm. É um modelo de processo de software evolucionário
Engenharia de Requisitos Engenharia de Projeto
Codificação
Testes
Entrega do Primeiro Incremento
Primeiro Incremento Engenharia de Requisitos Engenharia de Projeto
Codificação
Testes
Fim-Turno
Segundo Incremento Engenharia de Requisitos Engenharia de Projeto
Codificação
Testes
Fim-Turno
Terceiro Incremento
Primeiro Incremento de SW
Segundo Incremento de SW Primeiro Incremento de SW
Terceiro Incremento de SW
Primeiro Incremento de SW
Segundo Incremento de SW
acoplado à naturalidade iterativa da prototipação com o controle e os aspectos sistemáticos do modelo linear seqüencial. Ele disponibiliza potencial para desenvolvimento rápido de versões incrementais do software. Uma importante característica deste modelo é que sua análise de risco faz parte da sua estrutura de atividades. Porém, isto requer experiência em estimativa de riscos. A Figura 7 mostra um exemplo do modelo espiral.
Figura 7 : Modelo Espiral
Modelo de Montagem Baseada em Componentes
É similar ao Modelo de Processo Espiral. No entanto, este usa a tecnologia de objetos onde a ênfase é a criação das classes que encapsulam dados e métodos utilizados para manipular os dados. A reusabilidade é uma das características de qualidade que sempre é checado durante o desenvolvimento do software. A Figura 8 mostra o Modelo de Montagem Baseada em Componentes.
Figura 8 : Modelo de Montagem Baseada em Componentes
Modelo de Desenvolvimento Concorrente
Análise de risco
Planejamento Comunicação
Análise & Projeto
Codificação & Distribuição
Avaliação
D C B A
A. Projeto Inicial do Software B. Manutenção do Novo Software C. Melhoramento do Software D. Desenvolvimento de outro sistema inter- relacionado
Análise de Risco
Planejamento Comunicação
Análise OO & Projeto Codificação & Distribuição
Avaliação
D C B A
A. Projeto Inicial do Software B. Manutenção do Novo Software C. Melhoramento do Software D. Desenvolvimento de outro sistema inter-relacionado
Determinar Classes Candidatas
Verificar Classes na Biblioteca
Utilize as Classes
Construir Nova Classe
Colocar Novas Classes na Biblioteca
Construir a enésima Iteração do Software
6. Entendendo Sistemas
O projeto de software que necessita ser desenvolvido revolve em torno dos sistemas. Os sistemas consistem em um grupo de entidades ou componentes, Juntos interagem para dar forma aos inter-relacionamentos específicos, organizados por meio da estrutura, e trabalhando para conseguir um objetivo comum. Compreender sistemas fornece um contexto para todo o projeto com a definição dos limites dos projetos. Surge a pergunta, "O que é incluído no projeto? O que não é?" Em definição de limites do sistema, um Engenheiro de Software descobre o seguinte:
Como exemplo, a Figura 10 mostra os limites do sistema do estudo de caso. Mostra elementos deste sistema com o uso do diagrama do contexto.
Figura 10 : Limites do sistema de aplicação da sociedade do clube
As entidades que são envolvidas neste sistema são os candidatos, a equipe de funcionários do clube e o treinador. São representadas como caixas retangulares. São relacionadas umas com as outras executando determinadas atividades dentro deste sistema. As principais atividades executadas são o envio dos formulários de aplicação, programar as simulações de saídas e a atribuição do pretendente a um grupo. São representados por um círculo no meio que define a funcionalidade da informação mantendo a sociedade do clube. Para executar estas ações, uma lista das entradas é necessária. Especificamente, formulários de aplicação e a programação das simulações de saídas. São representados por uma seta com o nome dos dados que estão sendo passados. A ponta da seta indica o fluxo dos dados. Os resultados mais importantes que se espera deste sistema são os relatórios da sociedade e as listas de grupos. Outra vez, são representados por uma seta com o nome dos dados que estão sendo passados. A ponta da seta indica o fluxo dos dados. O objetivo deste sistema é segurar a aplicação da sociedade do clube.
Princípios Gerais de Sistemas
Alguns princípios gerais dos sistemas são discutidos abaixo. Isto ajudará ao Engenheiro de Software a estudar o sistema onde o projeto do software revolve.
submeter aplicação agendar simulações de saída associar candidatos a grupo
Candidato
Equipe do Clube
Treinador
Equipe do Clube
formulário de requerimento Agendamento das simulações de saída
relatório de sócios
lista de grupos
durante o desenvolvimento do software.
Componentes de um Sistema Automatizado
Há dois tipos de sistemas, a saber, sistemas sintéticos e sistemas automatizados. Os sistemas sintéticos são considerados também sistemas manuais. Não são perfeitos. Terão sempre áreas para aumentar a exatidão e melhorias. Estas áreas para a exatidão e as melhorias podem ser direcionadas por sistemas automatizados.
Os sistemas automatizados são exemplos dos sistemas. Consiste em componentes que suporta a operação de um sistema domínio-específico. No geral, consiste no seguinte:
A Figura 11 mostra a relação dos cinco primeiros componentes.
Figura 11 : Componentes de um Sistema Automatizado
A Figura 12 representa uma ilustração de um domínio-específico da aplicação de um sistema automatizado. Demonstra o sistema automatizado que processa a aplicação da sociedade do clube.
COMPUTADOR^1 HARDWARE
COMPUTADOR^2 SOFTWARE
PROCEDIMENTO^4 MANUAL Entrada
4 COMPUTADORIZAD^ PROCEDIMENTO Processando^ O
PROCEDIMENTO^4 MANUAL Saída
PESSOAL^3 PESSOAL^3
Entrar Dados Ler Processos Manuais^ Monitorar Atividades^ Revisar Informações^ Tomar Decisões 5^ Mudar Regras Processuais DADOS
INFORMAÇÃO^5