没有合适的资源?快使用搜索试试~ 我知道了~
首页超越传统:软件开发新视角与持续改进策略
超越传统:软件开发新视角与持续改进策略
![](https://csdnimg.cn/release/wenkucmsfe/public/img/star.98a08eaa.png)
"Beyond Legacy Code" 是一本由 David Scott Bernstein 所著的书籍,它提供了对现代软件开发过程的独特见解。该书不仅针对软件工程师,旨在解决他们日常面临的挑战,还让非专业人士能够理解软件开发的复杂性和困难。作者以富有深度的思考和实践经验,带领读者探索如何从传统遗留代码的困境中解脱出来,进入更加敏捷和频繁迭代的开发模式。 这本书得到了业界资深人士的高度评价。例如,Stas Zvinyatskovsky,Yahoo的高级首席软件架构师,认为这本书不仅帮助人们回顾了软件开发的历史,而且提供了实用的策略和思考问题的新角度,是一份关心软件质量的礼物。Ron Jeffries,知名软件开发专家,推荐这本书给那些在尝试敏捷开发但未完全实现预期收益的人,认为它像一本指南,提炼了多年的经验,适合初学者和经验丰富的开发者寻求改进。 Gojko Adzic,NeuriConsulting LLP的合伙人,赞赏《Beyond Legacy Code》对于如何满足并持续满足客户不断变化需求的深入讨论。他指出,这本书不仅关注技术层面,也聚焦于提升客户满意度,这对于业务成功至关重要。 《Beyond Legacy Code》不仅提供了技术上的解决方案,更强调了以人为本、灵活应变的软件开发理念,是任何希望提升软件开发效率和用户体验的专业人士不可多得的参考读物。通过阅读这本书,读者将有机会学习到如何打破陈规,拥抱变革,从而推动软件行业的持续创新和发展。
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/9630921/bg10.jpg)
Introduction
This book will help you drop the cost of building and maintaining software.
If you’re a software developer, you’ll learn a set of practices to help you build
changeable code, because when code is used it often needs to be changed.
For managers working with software developers, this book will show you how
investing in nine essential practices will help your team work more efficiently
to deliver software that doesn’t devolve into legacy code. And to do that, you
need more than just a technical to-do list—you need a firm understanding
of the principles that add the why to the how.
Every day, we lose time, money, and opportunities because of legacy code.
Different people have different definitions for “legacy code,” but put most
simply, legacy code is code that, for a few different reasons, is particularly
difficult to fix, enhance, and work with.
And there’s a lot of it out there. Virtually all software that I’ve seen in produc-
tion is legacy code.
The software industry as a whole hasn’t put enough value on maintainability,
so businesses wind up spending a great deal more to maintain code than
they initially spent to write it. As we’ll see in Chapter 2, Out of CHAOS, on
page 19, inefficiencies in how software is built costs businesses at least tens
of billions of dollars every year in the United States alone—and this is hardly
just some abstract figure on a ledger sheet somewhere. We feel the effects of
legacy code every day. Software is expensive, buggy, and hard to enhance.
People from inside and outside the industry have taken sides and argued for
or against certain project management methodologies—a lot of which contain
some truly brilliant ideas—but in order to effect lasting change for the better,
we first have to come to a mutual understanding of the fundamental goals of
software development.
This book isn’t just about creating better software; it’s about creating a better
software industry. It includes the best of what I’ve learned in the last thirty
report erratum • discuss
More books at 1Bookcase.com
![](https://csdnimg.cn/release/download_crawler_static/9630921/bg11.jpg)
years as a professional developer. The first two decades of my career were
spent doing traditional Waterfall software development where systems were
planned, built, and tested in distinct phases. The problem was, the way we
planned to build software turned out to be fraught with many unforeseen
issues that forced us to make serious compromises in both quality and budget.
But over the last decade things have been changing for me, and for other
software developers I know, who have been practicing an Agile software
development methodology called Extreme Programming (XP). Instead of trying
to figure everything out up front, we figure things out as we go, designing,
building, and testing little bits of software at a time.
XP practices such as test-driven development and refactoring have taught
me valuable lessons for decreasing both the risks and the costs of building
and extending software. Using these practices has shown me a range of dif-
ferent approaches for solving software problems. Can applying these practices
reveal ways of building higher-quality, more maintainable software?
I say the answer is a resounding Yes!
Early in my career as a programmer, I was assigned to reconcile stock data
from the Standard and Poor’s feed into my client’s proprietary database. Until
then the process was done manually, which was error-prone and took, on
average, fourteen hours each day to complete. I had to automate this process,
but the best approach to accomplish this was not clear to me at first.
After a few weeks, and after writing over forty pages of code, I had a flash of
insight that involved reorganizing how I processed the data. Within a few
hours I had finished the project and slashed out all but five pages of code.
What I thought would take me several more months when I came into work
that morning turned out to be finished before I left that evening. Since then
I have had many flashes of insight that have revealed underlying patterns in
problems that, once recognized, showed me how to rapidly build highly
maintainable solutions.
This is but one example of dramatic differences in productivity between
alternate ways of approaching the same problem. I’ve heard many similar
stories from other developers. Perhaps you have your own stories of when
you had a flash of insight and suddenly a difficult problem became simple.
In my professional experience, the difference between highly productive
developers and average developers can be profound. I’ve spent most of my
career studying those rare individuals who are many times more productive
than average software developers. What I’ve learned is that these people
Introduction • xviii
report erratum • discuss
More books at 1Bookcase.com
![](https://csdnimg.cn/release/download_crawler_static/9630921/bg12.jpg)
weren’t born that way. They’ve simply formed some different distinctions than
the rest of us and perhaps follow some unusual practices. All of these things
are learnable skills.
As a young industry we’re still figuring things out and learning to distinguish
what’s important from what’s unimportant. Building software is very different
from building physical things. Perhaps some of the challenges facing the
software industry are rooted in a misconception of what software development
actually is. In an effort to understand software development, to make it pre-
dictable, it has been compared to manufacturing and civil engineering. While
there are similarities between software engineering and other fields of engi-
neering, there are some fundamental differences that may not be obvious to
someone who isn’t actually writing software on a daily basis.
The fact that software engineering is not like other forms of engineering should
really come as no surprise. Medicine is not like the law. Carpentry is not like
baking. Software development is like one thing, and one thing only: software
development. We need practices that make what we do more efficient, more
verifiable, and easier to change. If we can do this, we can slash the short-term
cost of building software, and all but eliminate the crippling long-term cost
of maintaining it.
To that end, I offer nine practices that come from the Agile methodologies of
Extreme Programming, Scrum, and Lean. When not just adopted but fully
understood, these nine practices can help prevent the code we write in the
future from becoming legacy code.
And though there is a lot of code out there that’s either impossible to fix or
already slipping into obsolescence, we can use these same practices to slowly
dig our way out of the mountain of legacy code we’ve already accumulated.
These nine practices will help development teams build better software, and
help the industry as a whole stop leaking money, time, and resources.
I’ve seen these nine practices work for my clients, who build some of the
biggest and most complex software ever created. I know it’s possible to achieve
extraordinary results using these practices, but just “using” them by no means
guarantees success. We must understand the principles behind the practices
in order to use them correctly.
These are interesting times, and we get to be part of them. And while we are
pioneers venturing into uncharted territory, there are guiding lights. The nine
practices in this book have been guiding lights for me in my career as a soft-
ware developer and beyond. I hope they become guiding lights for you as well.
report erratum • discuss
Introduction • xix
More books at 1Bookcase.com
![](https://csdnimg.cn/release/download_crawler_static/9630921/bg13.jpg)
How to Use This Book
Beyond Legacy Code: Nine Practices to Extend the Life (and Value) of Your
Software is about developing software, but you don’t have to be a software
developer to understand it.
How software is written may be an alien concept to most people, yet it affects
us all. Because it has become such a complex activity, developers often find
themselves trying to explain concepts for which their customers, and even
their managers, may have no point of reference. This book helps bridge that
communications gap and explains technical concepts in common sense lan-
guage to help us forge a common understanding about what good software
development actually is.
Getting different kinds of readers on the same page with technical practices
is no easy task, but to that end this book is designed to help five different
groups of people share a common understanding of software development:
• software developers
• software development and IT managers
• software customers
• product and project managers from any industry
• and literally anyone interested in this vital technology
I’ve tried to make software development accessible to everyone by borrowing
elements of personal story telling and drawing on a wide range of anecdotes,
analogies, and metaphors to illuminate technical concepts. It’s hard to gener-
alize about software development and so it’s easy to find exceptions to a lot
of what I say, but there’s usually a deeper insight to be found.
To make this book accessible to nondevelopers and focus on the importance
of these practices, it’s not written as a how-to book. There are already several
good books on everything from story writing to refactoring (see the bibliogra-
phy). While this book does offer lots of practical advice, what makes it different
and most valuable are the discussions of why the technical practices are
useful. This approach helps nondevelopers, like our managers and stakehold-
ers, understand some of the issues and challenges developers face when
building software.
Part I: The Legacy Code Crisis
In Part I, The Legacy Code Crisis, on page 1, I confront the significant issues
facing the software industry head on and find that billions of dollars are lost
every year due to poor software development processes.
Introduction • xx
report erratum • discuss
More books at 1Bookcase.com
![](https://csdnimg.cn/release/download_crawler_static/9630921/bg14.jpg)
Much of the software that runs our lives is buggy, brittle, and nearly impos-
sible to extend, which is what we mean when we say “legacy code.” How did
we get here and what does that mean, not just in terms of the software
industry but also in terms of all the other people and industries it touches?
If you’re already familiar or perhaps even frustrated with the software industry
you’ll find more than just “preaching to the choir” in these pages. You’ll also
find a deeper insight into why things often don’t work out as planned when
building software, and lots of good reasons why better approaches are needed.
Even for software industry insiders, Part 1 can put these significant challenges
in their proper context. Managers and developers alike may discover a fresh
perspective on the problems we, as an industry, are facing every day. As one
manager said to me, “It added arguments to my arsenal.” It may help you
spread the message that at least we have to recognize that there is a problem
before we can solve it.
If you come from outside the software industry in particular, I all but guaran-
tee that Part 1 may surprise, even shock you.
Part II: Nine Practices to Extend the Life (and Value) of Your Software
In Part II, Nine Practices to Extend the Life (and Value) of Your Software, on
page 43, with the problem clearly stated, the remaining three quarters of the
book moves past the doom and gloom and into a set of practices that provides
a real, workable solution, beginning with practices that are most useful for
managers.
In Chapter 5, Practice 1: Say What, Why, and for Whom Before How, on page
59 and Chapter 6, Practice 2: Build in Small Batches, on page 73, I offer some
hands-on recommendations for not just how better to begin implementing a
complex software development process but to manage that process all the
way through to completion. These two practices will be of particular interest
to those of you coming from outside the software industry, with advice that
can easily translate to any project management environment. By adopting
these practices you can…
• operate more efficiently
• save money in both the short and long term
• create higher quality software
• increase customer satisfaction and repeat business
The next seven practices are much more software developer specific and
present technical practices I found most helpful in my career.
report erratum • discuss
How to Use This Book • xxi
More books at 1Bookcase.com
剩余266页未读,继续阅读
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/1e8e2f5eaac64e7c95092721b259bcec_qch1866.jpg!1)
qch1866
- 粉丝: 1
- 资源: 9
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 解决本地连接丢失无法上网的问题
- BIOS报警声音解析:故障原因与解决方法
- 广义均值移动跟踪算法在视频目标跟踪中的应用研究
- C++Builder快捷键大全:高效编程的秘密武器
- 网页制作入门:常用代码详解
- TX2440A开发板网络远程监控系统移植教程:易搭建与通用解决方案
- WebLogic10虚拟内存配置详解与优化技巧
- C#网络编程深度解析:Socket基础与应用
- 掌握Struts1:Java MVC轻量级框架详解
- 20个必备CSS代码段提升Web开发效率
- CSS样式大全:字体、文本、列表样式详解
- Proteus元件库大全:从基础到高级组件
- 74HC08芯片:高速CMOS四输入与门详细资料
- C#获取当前路径的多种方法详解
- 修复MySQL乱码问题:设置字符集为GB2312
- C语言的诞生与演进:从汇编到系统编程的革命
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)