martinfowler.com

Web Name: martinfowler.com

WebSite: http://www.martinfowler.com

ID:21049

Keywords:

martinfowler,com,

Description:

Software development is a young profession, and we are still learning the techniques and building the tools to do it effectively. I've been involved in this activity for over three decades and in the last two I've been writing on this website about patterns and practices that make it easier to build useful software. The site began as a place to put my own writing, but I also use it to publish articles by my colleagues.In 2000, I joined ThoughtWorks, where my role is to learn about the techniques that we've learned to deliver software for our clients, and pass these techniques on to the wider software industry. As this site has developed into a respected platform on software development, I've edited and published articles by my colleagues, both ThoughtWorkers and others, to help useful writing reach a wider audience.If there's a theme that runs through my work and writing on this site, it's the interplay between the shift towards agile thinking and the technical patterns and practices that make agile software development practical. While specifics of technology change rapidly in our profession, fundamental practices and patterns are more stable. So writing about these allows me to have articles on this site that are several years old but still as relevant as when they were written.As software becomes more critical to modern business, software needs to be able to react quickly to changes, allowing new features to be be conceived, developed and put into production rapidly. The techniques of agile software development began in the 1990s and became steadily more popular in the last decade. They focus on a flexible approach to planning, which allows software products to change direction as the users' needs change and as product managers learn more about how to make their users effective. While widely accepted now, agile approaches are not easy, requiring significant skills for a team, but more importantly a culture of open collaboration both within the team and with a team's partners.This need to respond fluently to changes has an important impact upon the architecture of a software system. The software needs to be built in such a way that it is able to adapt to unexpected changes in features. One of the most important ways to do this is to write clear code, making it easy to understand what the program is supposed to do. This code should be divided into modules which allow developers to understand only the parts of the system they need to make a change. This production code should be supported with automated tests that can detect any errors made when making a change while providing examples of how internal structures are used. Large and complex software efforts may find the microservices architectural style helps teams deploy software with less entangling dependencies.Creating software that has a good architecture isn't something that can be done first time. Like good prose, it needs regular revisions and programmers learn more about what the product needs to do and how best to design the product to achieve its goals. Refactoring is an essential technique to allow a program to be changed safely. It consists of making small changes that don't alter the observable behavior of the software. By combining lots of small changes, developers can revise the software's structure supporting significant modifications that weren't planned when the system was first conceived.Software that runs only on a developer's machine isn't providing value to the customers of the software. Traditionally releasing software has been a long and complicated process, one that hinders the need to evolve software quickly. Continuous Delivery uses automation and collaborative workflows to remove this bottleneck, allowing teams to release software as often as the customers demand. For Continuous Delivery to be possible, we need to build in a solid foundation of Testing, with a range of automated tests that can give us confidence that our changes haven't introduced any bugs. This leads us to integrate testing into programming, which can act to improve our architecture.There are many kinds of software out there, the kind I'm primarily engaged is Enterprise Applications. One of the enduring problems we need to tackle in this world is data management. The aspects of data managment I've focused on here are how to migrate data stores as their applications respond to changing needs, coping with different contexts across a large enterprise, the role of NoSQL databases, and the broader issues of coping with data that is both Big and Messy.A common problem in complex software systems is how to capture complicated domain logic in a way that programmers can both easily manipulate and also easily communicate to domain experts. Domain-Specific Languages (DSLs) create a custom language for a particular problem, either with custom parsers or by conventions within a host language.I've written seven books on software development, including Refactoring, Patterns of Enterprise Application Architecture, and UML Distilled. I'm also the editor of a signature series for Addison-Wesley that includes five jolt award winners.My Books Page...I'm often asked to give talks at conferences, from which I've inferred that I'm a pretty good speaker - which is ironic since I really hate giving talks. You can form your own opinion of my talks by watching videos of some my conference talks.My Videos Page...I've long been a fan of board games, I enjoy a game that fully occupies my mind, clearing out all the serious thoughts for a bit, while enjoying the company of good friends. Modern board games saw dramatic improvement in the 1990's with the rise of Eurogames, and I expect many people would be surprised if they haven't tried any of this new generation. I also appear regularly on Heavy Cardboard.My Board Games page...If you'd like to be notified when I post new material, subcribe to my RSS or Twitter feeds.Threat modeling is a well-respected practice in designing secure systems. But it's often done with complicated, exhaustive upfront analysis. Jim Gumbley has spent the last few years helping ThoughtWorks teams and clients adopt a different approach, which fits in with the little and often agile philosophy. I'm happy that he's now written an article to share his way of working, and this first installment explains applying this incremental thinking to threat modeling.more…Bliki: KeystoneInterfaceWed 29 Apr 2020 00:00 EDTSoftware development teams find life can be much easier if they integrate their work as often as they can. They also find it valuable to release frequently into production. But teams don't want to expose half-developed features to their users. A useful technique to deal with this tension is to build all the back-end code, integrate, but don't build the user-interface. The feature can be integrated and tested, but the UI is held back until the end until, like a keystone, it's added to complete the feature, revealing it to the users.more ...In my conversations with software developers, a regular topic of controversy is how manage source code branching. Tools like git make it easy to create branches, but managing them to improve coordination and minimize the costs of integration unearths plenty of difficulties. I find it useful to think of the trade-offs around branching as a series of patterns, and have spent the last couple of months writing these patterns into a coherent shape.Today I'll start sharing these, with the foundation of thinking of source branching as a pattern itself. An important point here is that the conceptual notion of a branch is broader than what source code management systems label as branches.more…Refactoring: This class is too largeTue 14 Apr 2020 09:32 EDTMost programmers have personal projects that do important things for them personally, but never have enough time and energy to keep them in good condition. Clare is no exception, and needed to spend time getting such an unruly codebase back into line. Here she shares the first part of her refactoring: breaking down a class that had become too big. It's a messy situation, because that's what real refactoring is like - yet when done in a controlled way, with lots of tiny steps, we can make real progress.more…

TAGS:martinfowler com 

<<< Thank you for your visit >>>

Websites to related :
United Fire Protection Tampa, Or

  United Fire Protection has been proudly providing service for our customers in Florida and Georgia for more than 20 years. Our team of factory-trained

Free Electronic Circuits

  Electronic Circuits Archive Freely available electronic circuits and projects

Eastview High School

  There are currently no Eastview notable alumni listed. Be the first to add an EHS famous alumni. The memorials below are for students of Eastview Hig

Small Farms Research and Extensi

  Webmaster Email: paleff@ucdavis.edu

New Braunfels High School

  Click on the Yearbooks below to view a copy Online at Classmates.com . If you don't see your class's yearbook, check out our yearbook page. There are

Fayette Ware High School

  Click on the Yearbooks below to view a copy Online at Classmates.com . If you don't see your class's yearbook, check out our yearbook page. There are

Elkhart High School

  2 schools across the United States are called Elkhart High School. Choose the city of your high school. This is the Elkhart High School alumni websit

Hueytown High School

  Click on the Yearbooks below to view a copy Online at Classmates.com . If you don't see your class's yearbook, check out our yearbook page. The memori

Roxbury High School

  Click on the Yearbooks below to view a copy Online at Classmates.com . If you don't see your class's yearbook, check out our yearbook page. There are

Ninety Six High School

  Click on the Yearbooks below to view a copy Online at Classmates.com . If you don't see your class's yearbook, check out our yearbook page. There are

ads

Hot Websites