描述
开 本: 大16开纸 张: 胶版纸包 装: 平装是否套装: 否国际标准书号ISBN: 9787302312932
十年间,敏捷 & 软件工程,冰与火之歌
《软件构架实践》是一本荣获大奖且影响深远的经典之作,目前已经全面修订,充分体现了这一领域的*进展。基于软件开发的真实现状,本书再次以全新的角度引入软件构架的相关概念和*实践,阐述软件系统是如何架构的,软件系统中的各个要素之间又是如何相互作用的。有别于实现细节、算法和数据表示,软件构架是达成高品质软件的关键,是一种可重用于后续软件系统的资产,并且对软件企业的商业策略至关重要。
作者围绕着软件构架影响周期的概念对本书前一版进行了重构。每个周期都表明了软件构架是如何产生影响的,同时它又受哪些因素的影响,软件构架在特定的背景下发挥着关键性的作用。这些背景包括技术环境、项目的生命周期、组织的业务概况和架构师的专业实践。作者还进一步延展了质量属性,仍然以构架理念为中心(用单独一章内容来专门介绍每个属性),拓宽了软件构架模式。
如果要参与或者负责大型软件系统的设计、开发和管理,你会发现这本书是很有价值的参考资源,可以帮助你紧跟技术潮流。
《软件构架实践(第3版 影印版)》特色主题
软件构架的背景:技术角度、项目角度、业务角度和职业角度
软件构架的竞争力:对于个人和组织的意义
业务目标的依据及其如何影响软件构架
软件构架层面的重要需求及其确定方式
软件生命周期中的构架,包括以设计思维为前提的生成-测试;实现期间的软件构架一致性;构架与测试;构架与敏捷开发
构架与当前技术潮流,比如云计算,社交网络和终端用户设备
preface xv
reader’s guide xvii
acknowledgments xix
part one: introduction
chapter 1: what is software architecture?
1.1 what software architecture is and what it isn’t
1.2 architectural structures and views
1.3 architectural patterns
1.4 what makes a “good” architecture?
1.5 summary
1.6 for further reading
1.7 discussion questions
chapter 2: why is software architecture important?
2.1 inhibiting or enabling a system’s quality attributes
2.2 reasoning about and managing change
2.3 predicting system qualities
2.4 enhancing communication among stakeholders
2.5 carrying early design decisions
2.6 defining constraints on an implementation
.2.7 influencing the organizational structure
2.8 enabling evolutionary prototyping
2.9 improving cost and schedule estimates
2.10 supplying a transferable, reusable model
2.11 allowing incorporation of independently developedcomponents
2.12 restricting the vocabulary of design alternatives
2.13 providing a basis for training
2.14 summary
2.15 for further reading
2.16 discussion questions
chapter 3: the many contexts of software architecture
3.1 architecture in a technical context
3.2 architecture in a project life-cycle context
3.3 architecture in a business context
3.4 architecture in a professional context
3.5 stakeholders
3.6 how is architecture influenced?
3.7 what do architectures influence?
3.8 summary
3.9 for further reading
3.10 discussion questions
part two: quality attributes
chapter 4: understanding quality attributes
4.1 architecture and requirements
4.2 functionality
4.3 quality attribute considerations
4.4 specifying quality attribute requirements
4.5 achieving quality attributes through tactics
4.6 guiding quality design decisions
4.7 summary
4.8 for further reading
4.9 discussion questions
chapter 5: availability
5.1 availability general scenario
5.2 tactics for availability
5.3 a design checklist for availability
5.4 summary
5.5 for further reading
5.6 discussion questions
chapter 6: interoperability
6.1 interoperability general scenario
6.2 tactics for interoperability
6.3 a design checklist for interoperability
6.4 summary
6.5 for further reading
6.6 discussion questions
chapter 7: modifiability
7.1 modifiability general scenario
7.2 tactics for modifiability
7.3 a design checklist for modifiability
7.4 summary
7.5 for further reading
7.6 discussion questions
chapter 8: performance
8.1 performance general scenario
8.2 tactics for performance
8.3 a design checklist for performance
8.4 summary
8.5 for further reading
8.6 discussion questions
chapter 9: security
9.1 security general scenario
9.2 tactics for security
9.3 a design checklist for security
9.4 summary
9.5 for further reading
9.6 discussion questions
chapter 10: testability
10.1 testability general scenario
10.2 tactics for testability
10.3 a design checklist for testability
10.4 summary
10.5 for further reading
10.6 discussion questions
chapter 11: usability
11.1 usability general scenario
11.2 tactics for usability
11.3 a design checklist for usability
11.4 summary
11.5 for further reading
11.6 discussion questions
chapter 12: other quality attributes
12.1 other important quality attributes
12.2 other categories of quality attributes
12.3 software quality attributes and system qualityattributes
12.4 using standard lists of quality attributes–or not
12.5 dealing with “x-ability”: bringing a new quality attributeinto the fold
12.6 for further reading
12.7 discussion questions
chapter 13: architectural tactics and patterns
13.1 architectural patterns
13.2 overview of the patterns catalog
13.3 relationships between tactics and patterns
13.4 using tactics together
13.5 summary
13.6 for further reading
13.7 discussion questions
chapter 14: quality attribute modeling and analysis
14.1 modeling architectures to enable quality attributeanalysis
14.2 quality attribute checklists
14.3 thought experiments and back-of-the-envelope analysis
14.4 experiments, simulations, and prototypes
14.5 analysis at different stages of the life cycle
14.6 summary
14.7 for further reading
14.8 discussion questions
part three: architecture in the life cycle
chapter 15: architecture in agile projects
15.1 how much architecture?
15.2 agility and architecture methods
15.3 a brief example of agile architecting
15.4 guidelines for the agile architect
15.5 summary
15.6 for further reading
15.7 discussion questions
chapter 16: architecture and requirements
16.1 gathering asrs from requirements documents
16.2 gathering asrs by interviewing stakeholders
16.3 gathering asrs by understanding the business goals
16.4 capturing asrs in a utility tree
16.5 tying the methods together
16.6 summary
16.7 for further reading
16.8 discussion questions
chapter 17: designing an architecture
17.1 design strategy
17.2 the attribute-driven design method
17.3 the steps of add
17.4 summary
17.5 for further reading
17.6 discussion questions
chapter 18: documenting software architectures
18.1 uses and audiences for architecture documentation
18.2 notations for architecture documentation
18.3 views
18.4 choosing the views
18.5 combining views
18.6 building the documentation package
18.7 documenting behavior
18.8 architecture documentation and quality attributes
18.9 documenting architectures that change faster than you candocument them
18.10 documenting architecture in an agile developmentproject
18.11 summary
18.12 for further reading
18.13 discussion questions
chapter 19: architecture, implementation, and testing
19.1 architecture and implementation
19.2 architecture and testing
19.3 summary
19.4 for further reading
19.5 discussion questions
chapter 20: architecture reconstruction and conformance
20.1 architecture reconstruction process
20.2 raw view extraction
20.3 database construction
20.4 view fusion
20.5 architecture analysis: finding violations
20.6 guidelines
20.7 summary
20.8 for further reading
20.9 discussion questions
chapter 21: architecture evaluation
21.1 evaluation factors
21.2 the architecture tradeoff analysis method
21.3 lightweight architecture evaluation
21.4 summary
21.5 for further reading
21.6 discussion questions
chapter 22: management and governance
22.1 planning
22.2 organizing
22.3 implementing
22.4 measuring
22.5 governance
22.6 summary
22.7 for further reading
22.8 discussion questions
part four: architecture and business
chapter 23: economic analysis of architectures
23.1 decision-making context
23.2 the basis for the economic analyses
23.3 putting theory into practice: the cbam
23.4 case study: the nasa ecs project
23.5 summary
23.6 for further reading
23.7 discussion questions
chapter 24: architecture competence
24.1 competence of individuals: duties, skills, and knowledge ofarchitects
24.2 competence of a software architecture organization
24.3 summary
24.4 for further reading
24.5 discussion questions
chapter 25: architecture and software product lines
25.1 an example of product line variability
25.2 what makes a software product line work?
25.3 product line scope
25.4 the quality attribute of variability
25.5 the role of a product line architecture
25.6 variation mechanisms
25.7 evaluating a product line architecture
25.8 key software product line issues
25.9 summary
25.10 for further reading
25.11 discussion questions
part five: the brave new world
chapter 26: architecture in the cloud
26.1 basic cloud definitions
26.2 service models and deployment options
26.3 economic justification
26.4 base mechanisms
26.5 sample technologies
26.6 architecting in a cloud environment
26.7 summary
26.8 for further reading
26.9 discussion questions
chapter 27: architectures for the edge
27.1 the ecosystem of edge-dominant systems
27.2 changes to the software development life cycle
27.3 implications for architecture
27.4 implications of the metropolis model
27.5 summary
27.6 for further reading
27.7 discussion questions
chapter 28: epilogue
references
about the authors
index
本书第2版出版以来,弹指之间已过十年。在此期间,软件构架领域的关注点在拓宽和延展,从主要面向内部——人们是如何对软件进行设计、评估和编档的——到关注影响软件的外部因素——更深入地理解这些因素对软件构架的影响,更透彻地理解架构对软件生命周期、组织和管理的影响。过去的十年中,我们也看到软件系统的类型也发生了巨大的变化。十年前,大数据、社交媒体和云计算都还处于萌芽期,但现在,成熟已经足以形容它们的发展,而应该说它们已经相当具有影响力了。
我们听取了读者对前两版的一些批评建议,在新版中包含了更多与模式相关的素材,重新组织了与质量属性相关的素材,并单独用一章的篇幅来介绍作为质量属性之一的互操作性。我们还向读者提供了如何为自己喜欢的质量属性生成场景和策略。
为了能包含如此丰富的新鲜素材,我们不得不做出一个艰难的选择。具体说来,本书的这一版再也不像前两个版本一样包含扩充性的案例学习。这个决定也体现了软件构架这一领域已走向成熟,从某种意义上来讲,为软件构架提供案例学习已经不如十年前那样流行,而且对读者而言,这样的案例学习对帮助他们认识到软件构架的重要性已经没有多大必要了。然而,前两个版本的案例学习还是有的,可以从本书配套网站获得,网址为。此外,在这个配套网站上,我们还提供了幻灯片以便老师们在教学中使用这些案例。
在第3版中,我们对所涉及的主题进行了全面和彻底的修订。具体说来,我们意识到我们所呈现的方法——对于构架设计、分析和文档——只是通过一种方式来说明如何达成特定的目标,但其他还有好多种方式。考虑到这一点,我们从底层的理论出发,单独详细介绍书中提及的每一种方法。在第3版的新增主题中,包括以构架为中心的项目管理;构架能力;需求建模与分析;敏捷方法;实现与测试;云计算和技术前沿。
与前面两个版本一样,我们可以担保,书中介绍的主题都经过读书小组或者课堂的充分讨论,最后,我们在每章最后都提供了一些讨论题。这些讨论题大部分是开放式的,没有任何答案是绝对正确或者绝对错误的,所以,作为读者,重点在于如何判断你的答案,而不是只管回答完问题。
评论
还没有评论。