| Quando um software de computador é bem-sucedido – quando satisfaz as necessidades das pessoas que o usam, tem desempenho sem falhas por um longo período, é fácil de modificar e ainda mais fácil de usar – ele pode e efetivamente modifica as coisas para melhor. Mas, quando o software falha – quando seus usuários ficam insatisfeitos, quando tem tendência a erros, quando é difícil de modificar e ainda mais difícil de usar – podem e efetivamente acontecem coisas desagradáveis. Todos nós desejamos construir softwares que tornem as coisas melhores evitando os problemas que espreitam na sombra dos esforços malsucedidos. Para obter sucesso, precisamos de disciplina quando o software é projetado e construído. Precisamos de uma abordagem de engenharia.
Nos 25 anos que se passaram desde que a primeira edição deste livro foi escrita, a engenharia de software evoluiu de uma idéia obscura praticada por um número relativamente pequeno de fanáticos para uma legítima disciplina de engenharia. Hoje, ela é reconhecida como um assunto que merece pesquisa séria, estudo consciencioso e debate acalorado. Em toda a indústria, o engenheiro de software substitui o programador como cargo preferido. Modelos de processos de software, métodos de engenharia de software e instrumentos de software têm sido adotados com sucesso em um amplo espectro de aplicações na indústria.
Apesar de gerentes e profissionais reconhecerem a necessidade de uma abordagem mais disciplinada para o software, eles continuam a debater a forma pela qual essa disciplina deve ser aplicada. Muitos indivíduos e empresas ainda desenvolvem software ao acaso, mesmo quando constroem sistemas para servir às tecnologias mais avançadas da atualidade. Muitos profissionais e estudantes desconhecem os métodos modernos. Em decorrência disso, a qualidade do software que produzimos é sofrível e coisas ruins acontecem. Além disso, continua o debate e a controvérsia sobre a verdadeira natureza da abordagem de engenharia de software. O status da engenharia de software é um estudo de contrastes. As atitudes mudaram, houve progresso, mas muito resta a ser feito antes que a disciplina alcance maturidade total.
A sexta edição de Engenharia de Software tem o objetivo de servir como guia para uma disciplina de engenharia em maturação. A sexta edição, como as cinco edições que a precederam destina-se a estudantes e profissionais, mantendo sua característica de guia para o profissional da indústria e introdução abrangente para o estudante dos últimos níveis da graduação ou primeiro ano da pós-graduação.
A sexta edição é consideravelmente mais do que uma simples atualização. O livro foi revisto extensivamente e reestruturado para enfatizar novos e importantes processos e práticas de engenharia de software. Além disso, um novo “sistema de apoio” ilustrado na próxima página fornece um conjunto abrangente de recursos para estudantes, instrutores e profissionais para complementar o conteúdo do livro. Esses recursos são apresentados como parte de site Web (www.mhhe.com/pressman) especificamente projetado para Engenharia de Software (em inglês).
A Sexta Edição. Os 32 capítulos da sexta edição foram organizados em cinco partes. Isso foi feito para compartimentalizar os tópicos e apoiar os instrutores que podem não ter tempo para completar o livro inteiro em um período. A Parte 1, O Processo de Software, apresenta diferentes visões do processo de software, considerando todos os modelos importantes de processo e tratando do debate entre as filosofias de processo prescritivas e ágeis. A Parte 2, Prática de Engenharia de Software, apresenta métodos de análise, projeto e teste com ênfase em técnicas orientadas a objetos e modelagem UML. Como métodos orientados a objetos são agora amplamente usados na indústria, o conteúdo da Parte 4 da quinta edição (“Engenharia de software orientada a objetos”) foi agora totalmente integrado em todas as discussões da prática de engenharia de software nesta edição. A Parte 3, Aplicação de Engenharia da Web, apresenta uma abordagem completa de engenharia para análise, projeto e teste de aplicações da Web. A Parte 4, Gestão de Projetos de Software, apresenta tópicos que são relevantes para aqueles que planejam, gerenciam e controlam um projeto de software. A Parte 5, Tópicos Avançados de Engenharia de Software, apresenta capítulos dedicados que tratam de métodos formais, engenharia de software sala limpa, engenharia de software baseada em componentes, reengenharia e tendências futuras.
Além de muitos capítulos novos e significativamente revisados, a sexta edição introduz mais de 120 quadros que (1) permitem ao leitor acompanhar uma equipe de projeto (fictícia) à medida que ela planeja e desenvolve a engenharia de um sistema baseado em computador; (2) fornecem discussões complementares de tópicos selecionados; (3) delineam “conjuntos de tarefas” que descrevem o fluxo de trabalho de atividades selecionadas de engenharia de software; e (4) sugerem ferramentas automatizadas relevantes para os tópicos do capítulo.
A organização em cinco partes da sexta edição permite a um instrutor “aglutinar” tópicos com base no tempo disponível e na necessidade dos alunos. Um curso completo em um período pode ser construído com uma ou mais dessas cinco partes. Por exemplo, um “curso de métodos” poderia enfatizar apenas as Partes 1 e 2; um curso de desenvolvimento baseado na Web poderia enfatizar as partes 1 e 3; um “curso de gestão” enfatizaria as Partes 1 e 4. Ao organizar a sexta edição deste modo, tentei dar aos instrutores um certo número de opções de ensino.
O conteúdo da sexta edição é complementado por elementos do sistema de apoio deste livro, o SEPA 6/e (Software Engineering a Practitioner’s Approach 6/e). Estes recursos estão em inglês no site do livro www.mhhe.com/pressman.
Recursos para o Aluno: Uma ampla variedade de recursos para o aluno inclui um extenso centro de aprendizado on-line que abrange guias de estudo, questões práticas e uma variedade de recursos baseados na Web, incluindo checklists de engenharia de software, uma coleção evolutiva de “mini ferramentas”, um estudo de caso completo e gabaritos de produtos de trabalho. Além disso, mais de 900 referências Web categorizadas que permitem a um aluno explorar engenharia de software em detalhes.
|