lan Sommerville 英國(guó)著名軟件工程專(zhuān)家,曾任教于蘭卡斯特大學(xué),現(xiàn)為安德魯斯大學(xué)軟件工程學(xué)教授。他在軟件工程的教學(xué)和科研方面有20多年的經(jīng)驗(yàn),是IEEE CS組織編撰“軟件工程知識(shí)體系”(SWEBOK)的專(zhuān)家委員會(huì)成員之一。他的研究領(lǐng)域包括計(jì)算機(jī)系統(tǒng)工程、需求工程、系統(tǒng)可靠性以及軟件進(jìn)化。
圖書(shū)目錄
preface v part 1 introduction to software engineering 1 chapter 1 introduction 3 1.1 professional software development 5 1.2 software engineering ethics 14 1.3 case studies 17 chapter 2 software processes 27 2.1 software process models 29 2.2 process activities 36 2.3 coping with change 43 2.4 the rational unified process 50 chapter 3 agile software development 56 3.1 agile methods 58 3.2 plan-driven and agile development 62 3.3 extreme programming 64 3.4 agile project management 72 3.5 scaling agile methods 74 chapter 4 requirements engineering 82 4.1 functional and non-functional requirements 84 4.2 the software requirements document 91 4.3 requirements specification 94 4.4 requirements engineering processes 99 4.5 requirements elicitation and analysis 100 4.6 requirements validation 110 4.7 requirements management 111 chapter 5 system modeling 118 5.1 context models 121 5.2 interaction models 124 5.3 structural models 129 5.4 behavioral models 133 5.5 model-driven engineering 138 chapter 6 architectural design 147 6.1 architectural design decisions 151 6.2 architectural views 153 6.3 architectural patterns 155 6.4 application architectures 164 chapter 7 design and implementation 176 7.1 object-oriented design using the uml 178 7.2 design patterns 189 7.3 implementation issues 193 7.4 open source development 198 chapter 8 software testing 205 8.1 development testing 210 8.2 test-driven development 221 8.3 release testing 224 8.4 user testing 228 chapter 9 software evolution 234 9.1 evolution processes 237 9.2 program evolution dynamics 240 9.3 software maintenance 242 9.4 legacy system management 252 part 2 dependability and security 261 chapter 10 sociotechnical systems 263 10.1 complex systems 266 10.2 systems engineering 273 10.3 system procurement 275 10.4 system development 278 10.5 system operation 281 chapter 11 dependability and security 289 11.1 dependability properties 291 11.2 availability and reliability 295 11.3 safety 299 11.4 security 302 chapter 12 dependability and security specification 309 12.1 risk-driven requirements specification 311 12.2 safety specification 313 12.3 reliability specification 320 12.4 security specification 329 12.5 formal specification 333 chapter 13 dependability engineering 341 13.1 redundancy and diversity 343 13.2 dependable processes 345 13.3 dependable system architectures 348 13.4 dependable programming 355 chapter 14 security engineering 366 14.1 security risk management 369 14.2 design for security 375 14.3 system survivability 386 chapter 15 dependability and security assurance 393 15.1 static analysis 395 15.2 reliability testing 401 15.3 security testing 404 15.4 process assurance 406 15.5 safety and dependability cases 410 part 3 advanced software engineering 423 chapter 16 software reuse 425 16.1 the reuse landscape 428 16.2 application frameworks 431 16.3 software product lines 434 16.4 cots product reuse 440 chapter 17 component-based software engineering 452 17.1 components and component models 455 17.2 cbse processes 461 17.3 component composition 468 chapter 18 distributed software engineering 479 18.1 distributed systems issues 481 18.2 client–server computing 488 18.3 architectural patterns for distributed systems 490 18.4 software as a service 501 chapter 19 service-oriented architecture 508 19.1 services as reusable components 514 19.2 service engineering 518 19.3 software development with services 527 chapter 20 embedded software 537 20.1 embedded systems design 540 20.2 architectural patterns 547 20.3 timing analysis 554 20.4 real-time operating systems 558 chapter 21 aspect-oriented software engineering 565 21.1 the separation of concerns 567 21.2 aspects, join points and pointcuts 571 21.3 software engineering with aspects 576 part 4 software management 591 chapter 22 project management 593 22.1 risk management 595 22.2 managing people 602 22.3 teamwork 607 chapter 23 project planning 618 23.1 software pricing 621 23.2 plan-driven development 623 23.3 project scheduling 626 23.4 agile planning 631 23.5 estimation techniques 633 chapter 24 quality management 651 24.1 software quality 655 24.2 software standards 657 24.3 reviews and inspections 663 24.4 software measurement and metrics 668 chapter 25 configuration management 681 25.1 change management 685 25.2 version management 690 25.3 system building 693 25.4 release management 699 chapter 26 process improvement 705 26.1 the process improvement process 708 26.2 process measurement 711 26.3 process analysis 715 26.4 process change 718 26.5 the cmmi process improvement framework 721 glossary 733 subject index 749 author index 767