{"product_id":"bioinformatics-software-engineering-delivering-effective-applications-9780470857724","title":"Bioinformatics Software Engineering: Delivering Effective Applications","description":"\u003cp\u003e • Author(s): Paul Weston\u003cbr\u003e • Publisher: Wiley\u003cbr\u003e • Publisher Imprint: Wiley\u003cbr\u003e • BISAC: Biotechnology\u003c\/p\u003e\u003cp\u003e\u003ci\u003eBioinformatics Software Engineering: Delivering Effective Applications\u003c\/i\u003e will be useful to anyone who wants to understand how successful software can be developed in a rapidly changing environment.  \u003c\/p\u003e\u003cp\u003eA handbook, not a textbook, it is not tied to any particular operating system, platform, language, or methodology. Instead it focuses on principles and practices that have been proven in the real world. It is pragmatic, emphasizing the importance of what the author calls Adaptive Programming - doing what works in your situation, and it is concise, covering the whole software development lifecycle in one slim volume.\u003c\/p\u003e \u003cp\u003eAt each stage, it describes common pitfalls, explains how these can be avoided, and suggests simple techniques which make it easier to deliver better solutions.\u003c\/p\u003e \u003cp\u003e\"Well thought-out ... addresses many of the key issues facing developers of bioinformatics software.\"  (\u003ci\u003eSimon Dear, Director, UK Technology and Development, Bioinformatics Engineering and Integration, Genetics Research, GlaxoSmithKline\u003c\/i\u003e)\u003c\/p\u003e \u003cp\u003eHere are some examples from the book itself. \u003c\/p\u003e \u003cp\u003e\u003ci\u003eOn software development:\u003c\/i\u003e\u003c\/p\u003e \u003cp\u003e“Writing software properly involves talking to people – often lots of people – and plenty of non-coding work on your part.  It requires the ability to dream up new solutions to problems so complicated that they are hard to describe.”\u003c\/p\u003e \u003cp\u003e\u003ci\u003eFrom description to specification:\u003c\/i\u003e\u003c\/p\u003e \u003cp\u003e“Look for verbs – \u003ci\u003eaction\u003c\/i\u003e words, such as ‘does’, ‘is’ and ‘views’.  Identify nouns – \u003ci\u003enaming\u003c\/i\u003e words, like ‘user’, ‘home’ and ‘sequence’.  List the adjectives – \u003ci\u003edescribing\u003c\/i\u003e words, for example ‘quick’, ‘simple’ or ‘precise’.\u003c\/p\u003e \u003cp\u003eThe verbs are the functions that must be provided by your application.  The nouns define the parameters to those functions, and the adjectives specify the constraint conditions under which your program must operate.”\u003c\/p\u003e \u003cp\u003e\u003ci\u003eOn how to start writing software:\u003c\/i\u003e\u003c\/p\u003e \u003cp\u003e“Handle errors.  Take in data.  Show output.  Get going!”\u003c\/p\u003e \u003cp\u003e\u003ci\u003eOn testing:\u003c\/i\u003e\u003c\/p\u003e \u003cp\u003e“It may not be physically possible to test every potential combination of situations that could occur as users interact with a program.  But one thing that can be done is to test an application at the agreed extremes of its capability: the maximum number of simultaneous users it has to support, the minimum system configuration it must run on, the lowest communication speed it must cope with, and the most complex operations it must perform.\u003c\/p\u003e \u003cp\u003eIf your program can cope with conditions at the edge of its performance envelope, it is less likely to encounter difficulties in dealing with less challenging situations.”\u003c\/p\u003e \u003cp\u003e\u003ci\u003eOn showing early versions of software to users:\u003c\/i\u003e\u003c\/p\u003e \u003cp\u003e“It can be hard explaining the software development process to people who are unfamiliar with it.  Code that to you is nearly finished is simply not working to them, and seeing their dream in bits on the workbench can be disappointing to customers, especially when they were expecting to be able to take it for a test drive.”\u003c\/p\u003e \u003cp\u003e\u003ci\u003eOn bugs:\u003c\/i\u003e\u003c\/p\u003e \u003cp\u003e“If your users find a genuinely reproducible bug in production code, apologize, fix it fast, and then fix the system that allowed it through.  And tell your customers what you are doing, and why, so they will be confident that it will not happen again.  Everybody makes mistakes.  Don’t make the same ones twice.”\u003c\/p\u003e \u003cp\u003e\u003ci\u003eAnd one last thought on successful software development:\u003c\/i\u003e\u003c\/p\u003e \u003cp\u003e\"You have to be a detective, following up clues and examining evidence to discover what has gone wrong and why. And you have to be a politician, understanding what people want, both in public and in private, and how this is likely to affect what you are trying to do.  This book cannot teach you how to do all of that, but it can help.\"\u003c\/p\u003e","brand":"Wiley","offers":[{"title":"Paperback","offer_id":45203270467735,"sku":"9780470857724","price":6021.0,"currency_code":"INR","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0666\/3471\/1191\/files\/9780470857724.webp?v=1767668259","url":"https:\/\/atlanticbooks.com\/products\/bioinformatics-software-engineering-delivering-effective-applications-9780470857724","provider":"Atlantic Books","version":"1.0","type":"link"}