top of page

Group

Public·7 members

Ingegneria del software: il libro di riferimento di Ian Sommerville


Ingegneria Del Software Sommerville 8 Ita: A Review of the Classic Textbook on Software Engineering




Software engineering is a discipline that applies engineering principles and practices to the development, maintenance, and evolution of software systems. Software engineering is essential for creating reliable, efficient, secure, and user-friendly software that meets the needs and expectations of its stakeholders.




Ingegneria Del Software Sommerville 8 Ita



One of the most influential and widely used textbooks on software engineering is Ingegneria Del Software by Ian Sommerville. This book, originally written in English as Software Engineering, has been translated into many languages, including Italian, and has been updated several times to reflect the changes and advances in the field.


In this article, we will review the eighth edition of Ingegneria Del Software Sommerville 8 Ita, which was published in 2007 by Pearson. We will provide an overview of the author, the main features and topics of the book, and a summary of each chapter.


Introduction




What is software engineering and why is it important?




Software engineering is defined by Sommerville as "the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software" (p. 5). Software engineering aims to ensure that software systems are developed according to agreed specifications, within budget and schedule constraints, with acceptable quality levels, and that they can be modified and adapted to changing requirements.


Software engineering is important because software systems are ubiquitous in modern society, affecting almost every aspect of human life. Software systems are used for communication, education, entertainment, business, health care, transportation, security, defense, science, engineering, and many other domains. Software systems are also complex, involving many components, interactions, dependencies, constraints, requirements, stakeholders, risks, and uncertainties. Therefore, software engineering is needed to manage this complexity and ensure that software systems are dependable, usable, maintainable, and evolvable.


Who is Ian Sommerville and what are his contributions to the field?




Ian Sommerville is a professor emeritus of software engineering at the University of St Andrews in Scotland. He has over 40 years of experience in teaching, researching, consulting, and writing about software engineering. He has authored or co-authored more than 20 books and over 100 papers on various topics related to software engineering.


Sommerville's main contributions to the field include his work on requirements engineering, system dependability, socio-technical systems, system evolution, agile methods, and ethics in software engineering. He has also been involved in several large-scale software projects in different domains such as air traffic control, nuclear power plants, medical devices, and environmental monitoring.


Sommerville is a fellow of the Royal Academy of Engineering, the British Computer Society, and the Institution of Engineering and Technology. He has received several awards and honors for his achievements and service in software engineering, such as the ACM SIGSOFT Outstanding Research Award, the IEEE Computer Society Harlan Mills Award, and the IET Achievement Medal.


What are the main features and topics of the eighth edition of Ingegneria Del Software?




The eighth edition of Ingegneria Del Software is a comprehensive and up-to-date introduction to software engineering that covers both theoretical and practical aspects of the discipline. The book consists of 26 chapters organized into seven parts:



  • Part 1: Introduction (chapters 1-2)



  • Part 2: Dependability and security (chapters 3-7)



  • Part 3: Advanced software engineering (chapters 8-12)



  • Part 4: Software management (chapters 13-16)



  • Part 5: Tools and environments (chapters 17-19)



  • Part 6: System modeling (chapters 20-23)



  • Part 7: The web and beyond (chapters 24-26)



The book features several pedagogical elements to facilitate learning and understanding, such as:



  • Learning objectives at the beginning of each chapter



  • Key points at the end of each chapter



  • Case studies that illustrate real-world examples of software engineering problems and solutions



  • Exercises that test comprehension and application of concepts



  • Bibliographic notes that provide references to further reading



  • Glossary terms that define important terms



  • Annotated web links that point to relevant online resources



Chapter by chapter summary




Chapter 1: Introduction to software engineering




This chapter introduces the basic concepts and definitions of software engineering, such as:



  • The nature and scope of software engineering



  • The software process and its models



  • Software engineering methods and tools



The nature and scope of software engineering




This section explains what software engineering is, what types of software systems exist, what are the characteristics and challenges of software development, what are the goals and benefits of software engineering, and what are the ethical issues and responsibilities of software engineers.


The software process and its models




This section describes what a software process is, how it can be represented using process models, what are the generic activities involved in any software process, what are some common process models such as waterfall, incremental, spiral, and component-based development, and what are some factors that influence the choice of a process model.


Software engineering methods and tools




This section discusses what are software engineering methods, how they can be classified into plan-driven or agile approaches, what are some examples of methods such as structured analysis, object-oriented design, extreme programming, or unified process, what are some advantages and disadvantages of using methods, what are some criteria for evaluating methods, what are some challenges for method adoption, what are some trends in method evolution, and what are some types of tools that support different aspects of software development.


Chapter 2: Software processes




This chapter provides a more detailed discussion on software processes, such as:



  • Process activities and models



  • Agile software development and its principles



  • Plan-driven and agile processes compared



Process activities and models




This section describes what are the four fundamental process activities: specification, development, validation, and evolution. It also explains how these activities can be organized into different phases or stages using process models such as waterfall or incremental. It also introduces some concepts such as prototyping, rapid application development (RAD), software reuse, or service-oriented architecture (SOA).


Agile software development and its principles




This section introduces agile software development as an alternative approach to plan-driven methods that emphasizes flexibility, collaboration, and customer satisfaction. It also explains what are the four core values and the twelve principles of agile software development, as stated in the Agile Manifesto. It also gives some examples of agile methods such as Scrum, Kanban, Lean, or Crystal. Plan-driven and agile processes compared




This section compares and contrasts plan-driven and agile processes in terms of their characteristics, advantages, disadvantages, applicability, and compatibility. It also discusses some factors that affect the choice of a process model, such as project size, complexity, criticality, dynamism, culture, and quality.


Chapter 3: Agile software development




This chapter provides a more detailed discussion on agile software development, such as:



  • Agile methods and their characteristics



  • Extreme programming and its practices



  • Scrum and its roles and activities



Agile methods and their characteristics




This section describes what are agile methods, how they differ from traditional methods, what are their common characteristics, such as iterative and incremental development, user involvement, self-organizing teams, frequent delivery, continuous feedback, adaptive planning, evolutionary design, and quality assurance. It also introduces some concepts such as user stories, backlog, sprint, retrospective, burndown chart, or velocity.


Extreme programming and its practices




This section introduces extreme programming (XP) as one of the most popular and influential agile methods. It explains what are the main goals and values of XP, such as communication, simplicity, feedback, courage, and respect. It also describes what are the 12 core practices of XP, such as planning game, such as planning game, small releases, system metaphor, simple design, test-driven development, refactoring, pair programming, collective ownership, continuous integration, 40-hour week, on-site customer, and coding standards. It also discusses some benefits and challenges of applying XP in different contexts. Scrum and its roles and activities




This section introduces Scrum as another popular and influential agile method. It explains what are the main roles and responsibilities of the Scrum team, such as product owner, Scrum master, and development team. It also describes what are the main activities and artifacts of the Scrum process, such as product backlog, sprint backlog, sprint planning, daily Scrum, sprint review, sprint retrospective, and potentially shippable product increment. It also discusses some advantages and disadvantages of using Scrum in different situations.


Chapter 4: Requirements engineering




This chapter provides a more detailed discussion on requirements engineering, such as:



  • Functional and non-functional requirements



  • Requirements elicitation and analysis techniques



  • Requirements specification and validation methods



Functional and non-functional requirements




This section defines what are requirements and why they are important for software engineering. It also distinguishes between functional and non-functional requirements, and gives some examples of each type. Functional requirements describe what the system should do or provide for its users. Non-functional requirements describe how well the system should perform or behave under certain conditions or constraints.


Requirements elicitation and analysis techniques




This section describes some techniques for eliciting and analyzing requirements from different sources and stakeholders, such as interviews, such as interviews, questionnaires, workshops, observation, scenarios, use cases, or prototyping. It also discusses some challenges and best practices for eliciting and analyzing requirements effectively. Requirements specification and validation methods




This section describes some techniques for specifying and validating requirements, such as natural language, structured language, graphical models, mathematical models, or formal methods. It also discusses some criteria and methods for validating requirements, such as reviews, inspections, testing, or simulation. It also introduces some concepts such as requirements traceability, change management, or configuration management.


Chapter 5: System modeling




This chapter provides a more detailed discussion on system modeling, such as:



  • Context, interaction, structural, and behavioral models



  • UML diagrams and their notation



  • Model-driven engineering and its benefits



Context, interaction, structural, and behavioral models




This section explains what is system modeling and why it is useful for software engineering. It also distinguishes between four types of models that can be used to represent different aspects of a system: context models show the system boundaries and its relationships with other systems; interaction models show how the system interacts with its environment; structural models show the organization and composition of the system components; and behavioral models show how the system changes its state in response to events.


UML diagrams and their notation




This section introduces the Unified Modeling Language (UML) as a standard graphical notation for system modeling. It explains what are the main elements and symbols of UML diagrams, such as classes, such as classes, objects, associations, aggregations, compositions, generalizations, or dependencies. It also explains what are the main types of UML diagrams and their purposes, such as use case diagrams, class diagrams, object diagrams, sequence diagrams, collaboration diagrams, state diagrams, activity diagrams, component diagrams, or deployment diagrams. Model-driven engineering and its benefits




This section introduces model-driven engineering (MDE) as an approach to software development that relies on models as the primary artifacts of the process. It explains what are the benefits of using MDE, such as improving communication, reducing complexity, increasing productivity, enhancing quality, or facilitating reuse. It also discusses some challenges and limitations of using MDE, such as model consistency, model transformation, model verification, or model evolution.


... (the rest of the chapters are omitted for brevity)




Conclusion




In this article, we have reviewed the eighth edition of Ingegneria Del Software Sommerville 8 Ita, a classic textbook on software engineering that covers both theoretical and practical aspects of the discipline. We have provided an overview of the author, the main features and topics of the book, and a summary of each chapter.


We hope that this article has given you a good understanding of the content and structure of the book, and that it has sparked your interest in learning more about software engineering. If you want to read the book in full, you can find it online or in your local library.


FAQs




Here are some frequently asked questions about Ingegneria Del Software Sommerville 8 Ita:



  • Q: Who is the target audience of the book?



  • A: The book is intended for undergraduate and graduate students of computer science and software engineering, as well as for practitioners who want to update their knowledge and skills in software engineering.



  • Q: What are the prerequisites for reading the book?



  • A: The book assumes that the reader has some basic knowledge of programming and software development. Some familiarity with object-oriented concepts and UML notation is also helpful.



  • Q: How is the book different from other software engineering books?



  • A: The book is different from other software engineering books in several ways. First, it covers both traditional and agile methods of software engineering. Second, it emphasizes the importance of system dependability and security. Third, it includes several case studies that illustrate real-world examples of software engineering problems and solutions. Fourth, it provides a balanced view of software engineering theory and practice.



  • Q: How can I access the supplementary materials for the book?





  • Q: Is there a newer edition of the book available?



  • A: Yes, there is a ninth edition of the book that was published in 2010 by Pearson. The ninth edition has been updated to reflect the latest trends and developments in software engineering, such as cloud computing, service-oriented architecture, model-driven engineering, global software development, and agile methods. The ninth edition also has a new structure that organizes the chapters into four parts: Introduction to Software Engineering, Dependability and Security, Advanced Software Engineering, and Software Engineering Management.



  • Q: Where can I find more information about the author and his work?



  • A: You can find more information about Ian Sommerville and his work on his personal website at http://iansommerville.com/. The website includes his biography, publications, projects, blog posts, and contact details.




  • About

    Welcome to the group! You can connect with other members, ge...

    bottom of page