* For the first time ever, the senior architect and lead
developer for a key enterprise system on NASA's ongoing Mars
Exploration Rover mission shares the secrets to one of the most
difficult technology tasks of all-successful software
development
* Written in a conversational, brief, and to-the-point style,
this book presents principles learned from the Mars Rover project
that will help ensure the success of software developed for any
enterprise system
* Author Ronald Mak imparts anecdotes from his work on the Mars
Rover and offers valuable lessons on software architecture,
software engineering, design patterns, code development, and
project management for any software, regardless of language or
platform
Autorentext
Ronald Mak was a senior computer scientist and software architect at the NASA Ames Research Center. He was the architect and lead developer of the middleware for the Collaborative Information Portal, an important enterprise software system that is a part of NASA's ongoing and highly successful Mars Exploration Rover mission. Mission managers, scientists, and engineers continue to use CIPafter over two years of continuous operation, it has an uptime record of better than 99.9 percent.
Working as a key member of the CIP development teamvalidated the principles that Ron describes in this book.Ron was also the architect and lead developer of an enterprise class information portal for NASA's International Space Station and the future Crew Exploration Vehicle.
Prior to joining NASA, Ron had over 15 years of experience designing and developing enterprise systems using several programming languages and technologies on various platforms.
Most of these systems were highly successful, but therewere a few failures, too. The Martian principles are derivedfrom these experiences.
Ron held an academic appointment with the University of California at Santa Cruz, and he worked on contract to NASAAmes. He earned his B.S. degree with distinction in the Mathematical Sciences and his M.S. degree in Computer Science from Stanford University.
He has written three previous books on computer science, Java Number Cruncher, the Java Programmer's Guide to Numerical Computing (Prentice Hall PTR, 2003), Writing Compilers and Interpreters, C++ Edition (Wiley, 1996), and Writing Compilers and Interpreters, a Practical Approach (Wiley, 1991). He recently wrote several papers about CIP for refereed journals. He continues to hone his exposition of the Martian principles by giving presentations to both industry and academic audiences.
Ron recently co-founded and is the CTO of Willard & Lowe Systems, Inc. (www.willardlowe.com) which develops enterprise systems for information management and collaboration.
Klappentext
When you need to land and operate a robot on Mars, "halfway" software is not an option. While helping to develop the Collaborative Information Portal, or CIP, for NASA's Mars Exploration Rover mission, Ronald Mak identified and refined a set of principles that represent the fundamental goals necessary for any successful enterprise system. Following them, Mak's team developed a CIP that scientists, researchers, and engineers have been using continually for over two years to access data from two Martian rovers. Its uptime record99.9%.
The principles are language and platform independent. They're not design patterns or code samples. They're not even rocket science. They just work.
Real-world examples from the Rover mission help you learn to:
- Take advantage of what others have learned from their mistakes
- Realize that clients may not know how to know what they want
- Acknowledge that you aren't clairvoyant
- Think like a user
- Test, anticipate, be flexible, and keep it simple
- Recognize that code integration is a greater challenge than code development
- Become the successful architect of a successful system
Zusammenfassung
- For the first time ever, the senior architect and lead developer for a key enterprise system on NASA's ongoing Mars Exploration Rover mission shares the secrets to one of the most difficult technology tasks of all-successful software development
- Written in a conversational, brief, and to-the-point style, this book presents principles learned from the Mars Rover project that will help ensure the success of software developed for any enterprise system
- Author Ronald Mak imparts anecdotes from his work on the Mars Rover and offers valuable lessons on software architecture, software engineering, design patterns, code development, and project management for any software, regardless of language or platform
Inhalt
About the Author.
Preface.
Acknowledgments.
Introduction.
Part 1 The Martian Principles.
Principle 1 Don't reinvent the wheel.
Someone Else Has Already Solved Your Problem.
Understand What Your Added Value Is.
Use Commercial Software Whenever Practicable.
Principle 2 You won't do better than what's already been done.
Adhere to Industry Standards and Best Practices.
Seek User Groups, Chat Forums, Online Documentation, Books, and the Like.
Do Not Gum Up the Plumbing.
Principle 3 Your customers don't know what they want.
Do Not Push Too Hard on the Requirements.
Do Rapid Prototyping and Lots of User Testing.
Customers Are the Best Testers.
Principle 4 Get something working as soon as possible.
The First End-to-End Thread Is Critical.
Working Code Builds Confidence.
Always Build on Top of Working Code.
Principle 5 Use sound software engineering practices.
Use a Component-Based Architecture.
Use Design Patterns.
Get All the Development Team Members to Agree.
Principle 6 Don't trust the client applications.
Be Very ParanoidThey Are Out to Get You.
If You Do Not Break It, They Will.
Principle 7 Plan to make changes.
Do Not Hard-Code Values.
Use External Editable Parameter Files.
Implement a Read Parameters Method.
Maintain Client Parameter Files Centrally on the Server.
Identify the Parameter Values.
Principle 8 You can't predict the future.
Make Each Service Dynamically Reconfigurable.
Create Field-Replaceable, Plug-and-Play Services.
Hot Redeployment Allows Reconfiguring without Rebooting.
Make Each Service Loosely Coupled.
Take a Peek into the Future.
Principle 9 Don't tie your services into knots.
Keep Your Services Independent of Each Other.
Services Should Treat Other Services As Equals.
Principle 10 Build early, build often!
The Major Challenge Is Not Code Development but Code Integration.
Use a Source Code Repository.
Maintain a Separate Environment in Which to Build and Deploy.
Principle 11 What middleware? should be your greatest compliment.
The Middleware Should Be Invisible to Users.
Good Middleware Creates Ideal Virtual Worlds for the End Users.
Principle 12 Expose the invisible.
Put Hooks in the Middleware.
Do Runtime, Real-Time Monitoring.
Principle 13 Log everything.
Do Not Turn Off Logging in Your Production Code.
Log Mining Reveals Usage Patterns.
Principle 14 Know the data.
Learn the Data Usage Patterns.
Create Appropriate Application and Middleware Data Models.
Map to Practical Physical Data Models.
Adapt to Third-Party and Legacy Data.
Principle 15 Kno…