Real World Software Architecture

Real World Software Architecture is dedicated to providing information and experiences from the field of Software Architecture.



Subscribe with RSS or ATOM Add to Google

Links

  • Home Page
  • Real World Software Process Engineering
  • Suggested Reading
  • .NET Dev and Arch Collection
  • SEI Essays on SA
  • Software Architecture
  • Bredemeyer
  • wwisa
  • Product Line Engineering
  • PLEES
  • Software Product Lines
  • MSDN Architecture Center
  • patterns & practices






Sunday, February 24, 2013

Building Windows 8 Apps with JavaScript Book Review

Although I started with Cold Fusion for application development, I did plenty brochureware sites with HTML. I believe the version was HTML 2.0 for IE 2.0. I lived in the browser world for years doing Cold Fusion, ASP, and HTML sites. When winforms and Smart Client with web services emerged I changed my religion. Since then I have been avoiding the browser whenever possible since.

For the past couple of years my extent of using simple HTML has been limited to writing blogs and book reviews. Simple HTML means no ASP.NET or ASP.NET MVC. I have used HTML/JavaScript/CSS a lot as a byproduct of building ASP.NET and ASP.NET MVC applications for public consumption. Internal enterprise applications I will still push for using WPF and web services over ASP.NET or ASP.NET MVC, but I lose that battle a lot, especially when the developers have never learned WPF (XAML) and have no interest in learning anything new.

When it comes to Windows Store Apps my first choice will always be XAML with C# or C++. The problem is I am going to end up fighting the same battle with the web developers that don't like learning anything new. They are going to turn to HTML/JavaScript/CSS to build their Windows Store Apps.

Microsoft has recreated the same type of migration path as they did for the VB6 developers to move to VB.NET. The problem with that migration was tons of really bad VB.NET being written. After running into a lot of VB.NET projects that performed very badly and were very buggy I refused to allow VB.NET on my projects whenever I could.

The problem was VB6 programmers would not learn OOP and continued to code like they were still in the VB6 world. When I made them switch to C# that seemed to force them to learn more about .NET and that really helped improve their OOP skills. I never had anything against VB.NET coded correctly, the problem was most people didn’t code it correctly.

My fear of web developers moving to a mobile client application development environment with a requirement for natural user interfaces using touch is that we are going to see some atrocious applications being built. Windows Store Apps development is new enough that I have not had to deal with a lot of cleanup of bad HTML/JavaScript/CSS development yet. If I do start running into it, I will be adopting the same line of thought I had for VB.NET on projects. Meaning if it is my call, all development on my projects will be done using XAML with C# or C++. I really hope that does not happen again.

If you are one of those web developers that are planning on using your HTML/JavaScript/CSS, please take the time to read this book and other books on mobile device development and natural user interfaces. You are no longer developing for the browser!

With all that said, this book is a great place to start learning how to use your HTML/JavaScript/CSS to develop Windows Store Apps the right way. Below are the chapters included in the book.

1. Hello, Windows 8!
2. Binding and Controls
3. Layout
4. Typography
5. Media
6. Drawing and Animation
7. App State
8. Networking
9. Shell Contracts
10. Shell Integration
11. Device Interaction
12. Native Extensibility
13. Making Money
A. JavaScript for C-Family Programmers
B. Presentation and Style at a Glance

This book does a great job of covering development on Windows 8 with JavaScript and introducing architectural and design concerns that need to be considered on mobile devices. It does a great job of covering all the controls in and out of the context of touch. It injects thoughts on performance concerns with all the topics that need to worry about it.

The application state coverage is an important topic to understand and a must read chapter for new Windows 8 App developers.

I thought they did a really good job of covering Shell Contracts and Shell Integration. They are one of my favorite features in Windows 8.

The last chapter of the book does an awesome job of showing us how to go through a submission to the Microsoft Windows Store.

The book ends with two appendices. The first is an overview of JavaScript for C-Family programmers. I thought they did a pretty good job of assembling a lot of topics into a format which allowed them to cover a lot in a little space. The second appendix is an overview of HTML5 and CSS. It is all short and concise, but has a lot of good coverage.

I did find a couple of things missing that I would have like to see covered. One was the Windows.UI.Input.Inking APIs. The was no coverage at all. This is one of the main features I am using in the XAML project I am building. Another topic I would have liked to have seen more on in is using SQLite. So far all the books that I have read on Windows 8 Apps tell you that it's available, but they don't explain how to use it. The apps I am working on are going to need a robust local data cache, and App Data and User Data are not going to be able to handle it. Security was also only lightly touched on. There could have more on security.

The code samples are very well organized and usable. The best part about them is they all work. That is not always the case anymore. I recently purchased a book I had been really looking forward to getting my hands on. It had 11 projects included as samples and none of them worked. After going back and forth with the author I threw the book on a shelf and decided to not even bother with it. He fixed three of them by the third round of updates. That gave me very little confidence in the advice he would offer in a book.

All in all I thought this book was a great read. The authors writing style made reading it a pleasure. Not all technical authors can do that. I highly recommend this book to anyone looking at getting into building Windows 8 Apps with JavaScript.

For more book recommendations check out my .NET, iOS, and Java Architecture and Development Book Recommendations for 2013

Building Windows 8 Apps with JavaScript

posted by tadanderson at 6:55 PM 0 comments

Tuesday, February 19, 2013

The Essence of Software Engineering: Applying the SEMAT Kernel Book Review

I have had the opportunity to lead dozens of software development projects which I love doing. I have also had the opportunity to watch dozens of software development project from the sidelines, while working on my own project, or in place as a consultant to accomplish something other than run the development process.

From the sidelines I have seen some succeed, some crash and burn, and the rest get close enough to success that the team can sell it as a success. Sometimes the later takes a heck of a sales job. I would say in my book 80% of those sold as successes failed. They either came in well over budget, well beyond their projected delivery date, or delivered such buggy software that the maintenance effort was as big as the development effort. Success to the team simply meant they considered the project over. You will find of those project teams run as fast as they can instead of doing a retrospective study.

The hard, and sad part, of watching the projects flop is that they are so predictable. A lot of times I find an environment has just come to terms with the fact that all the projects will come in late, over budget, and buggy. They have accepted reaching the end of the project as the only measure of success. You will usually find those environments are running in fire mode. Meaning the highest priorities for the day are the hottest fires and there are fires for everyone every day. They can't see it, but even there larger strategic projects are reacting to fires. They never get ahead, they just keep slowly slipping further behind.

So by now you are probably wondering what all that blather has to do with this book? To be able to recognize a project that is going off-track takes years of experience. The SEMAT Kernel provides a set of tools that enable those, that would normally not have enough experience to recognize when the project is going off-track, to be able to. The book is broken down into seven parts. I have listed each part below with the chapters they contain.

Part I: The Kernel Idea Explained
1. A Glimpse of How the Kernel Can Be Used
2. A Little More Detail about the Kernel
3. A 10,000-Foot View of the Full Kernel
4. The Kernel Alphas Made Tangible with Cards
5. Providing More Details to the Kernel through Practices
6. What the Kernel Can Do for You

Part II: Using the Kernel to Run an Iteration
7. Running Iterations with the Kernel: Plan-Do-Check-Adapt
8. Planning an Iteration
9. Doing and Checking the Iteration
10. Adapting the Way of Working
11. Running an Iteration with Explicit Requirement Item States

Part III: Using the Kernel to Run a Software Endeavor
12. Running a Software Endeavor: From Idea to Production
13. Building the Business Case
14. Developing the System
15. Operating the Software

Part IV: Scaling Development with the Kernel
16. What Does It Mean to Scale?
17. Zooming In to Provide Details
18. Reaching Out to Different Kinds of Development
19. Scaling Up to Large and Complex Development

Part V: How the Kernel Changes the Way You Work with Methods
20. Thinking about Methods without Thinking about Methods
21. Agile Working with Methods

Part VI: What’s Really New Here?
22. Refounding Methods
23. Separation of Concerns Applied to Methods
24. The Key Differentiators

Part VII: Epilogue
25. This Is Not the End
26. ... But Perhaps It Is the End of the Beginning
27. When the Vision Comes True

Appendixes
Appendix A. Concepts and Notation
Appendix B. What Does This Book Cover with Respect to the Kernel?

This book is not about defining or executing a new software development process, so don't expect to find how to create user stories, manage a product backlog, implement an instance of the RUP, or document your software architecture. This book is about the essential elements that are part of every software development process and how to recognize their current state in order to understand where you are in the process of your choice. It also walks you through the process of assembling a method from activities you have selected to use.

The kernel is broken down into three areas of concern which include Customer, Solution, and Endeavor. Each area of concern encapsulates alphas (things that progress and evolve) and activities.

Alphas include Opportunity, Stakeholders, Requirements, Software System, Team, Work, and Way of Working. Each of these have six different states attached to them which reflect their maturity.

The book defines activity spaces as explore possibilities, understand stakeholder needs, ensure stakeholder satisfaction, use the system, understand the requirements, shape the system, implement the system, test the system, deploy the system, operate the system, prepare to do the work, coordinate activity, support the team, track progress, and stop the work.

The next step the book takes is to assemble the alphas and activities into practices. An example of a practice would be a requirements elicitation practice. The practices are then used to build methods.

One really nice thing this book does is provide a common vocabulary that can be use across processes. Meaning that no matter what process you are using the kernel's alphas and activities apply. This will make it easier to see the different processes for what they really are at their core and make them easier to understand.

One thing I would have like to see different with this book is the alphas full checklist be used instead of the short-form, or at least have the long form list included in an appendix. You can get the full checklist from the Essence – Kernel and Language for Software Engineering Methods which is on the SEMAT web site. This does not take anything away from the book, it is just a pet peeve of mine. I don't like when a book provides less detail than the free specifications available on line.

I have found some books that are just summaries of the online work and you end up being pointed to that work in every chapter. That is not the case with this book, there is a lot of information in this book you won't find in the specs on line. The format and writing style of the book also makes reading the book much more pleasurable than reading the Essence – Kernel and Language for Software Engineering Methods OMG submission.

Overall I found this book to be a breath of fresh air. It is hard to find any pure software engineering process books anymore. They all tend to be a rehash of all the latest agile processes out there, which are all just reworks of all the iterative processes out there. The book and its material is very usable. I highly recommend this book to anyone with any role in the software development field.

The Essence of Software Engineering: Applying the SEMAT Kernel

posted by tadanderson at 5:53 PM 0 comments

Saturday, February 09, 2013

CSS3: The Missing Manual 3rd Edition Book Review

This book is both board and deep. Meaning it covers a ton of topics and goes in-depth on all of them. This book is great for the beginner, but also has a lot of advanced material.

After a nice introduction that explains the structure of the book the author starts off Part 1 covering the basics. The book starts with the basics and leads us to advanced topics by the end of the book.

I have listed the 5 parts of the book below with the chapters they contain to give an idea of all the topics covered.

Part 1. CSS Basics
1. HTML for CSS
2. Creating Styles and Style Sheets
3. Selectors: Identifying What to Style
4. Saving Time with Style Inheritance
5. Managing Multiple Styles: The Cascade

Part 2. Applied CSS
6. Formatting Text
7. Margins, Padding, and Borders
8. Adding Graphics to Web Pages
9. Sprucing Up Your Site’s Navigation
10. CSS Transforms, Transitions, and Animations
11. Formatting Tables and Forms

Part 3. CSS Page Layout
12. Introducing CSS Layout
13. Building Float-Based Layouts
14. Responsive Web Design
15. Positioning Elements on a Web Page

Part 4. Advanced CSS
16. CSS for the Printed Page
17. Improving Your CSS Habits

Part 5. Appendixes
A. CSS Property Reference
B. CSS Resources

I have found CSS to be very powerful, but a lack of understanding can lead to some messy web sites. I have seen some really tragic HTML/CSS/JavaScript implementations. Reading this book and using it as a reference will help avoid that. The author does a great job of showing how things should be done the right way.

The author did a great job putting together the code samples. Each chapter has two folders. One with the beginning of the solution, and one marked finished for the end result of applying the techniques shown in the chapter.

The author does a great job covering responsive web design. This is something I have seen mangled up a lot. The author covers media queries, flexible grids, and fluid images. He also did a great job in this part of the book leading into responsive web design with chapters on CSS layout and float-based layouts.

The nice flow is actually found throughout the entire book. The chapters are put together in a very logical order which is one of the characteristics that make this book a good cover to cover read.

I also really liked the chapter on providing a print page using CSS. The is nothing more annoying than finding a great article, blog, or a product description that you want to print out that just won't print nicely. I can't tell you how many times I have recreated information on the web in word just to be able to print it. This chapter does a great job of showing you how to avoid aggravating your customers with unprintable pages.

The author's writing style make this an easy cover to cover read, but it is also laid out in such a way that it also makes a great reference.

Overall I found this book to be a great read and highly recommend it to all web developers and also to those Windows 8 Store App developers using HTML/CSS/JavaScript.

CSS3: The Missing Manual

posted by tadanderson at 9:02 PM 0 comments

Monday, February 04, 2013

The Book of GIMP: A Complete Guide to Nearly Everything Book Review

If I was going to use one word to describe this book, it would be 'masterpiece'. This is one of the most well put together books I have ever read. It is in full-color, covers a wide variety of topics, and covers them in depth.

This book goes well beyond simply teaching you how to use the GIMP interface. Every topic covered is covered in great detail, and the authors do a great job of explaining why you use the tool, not only how you use the tool.

There are three parts included in the book. The Part I is a set of tutorials that show you how to use GIMP to accomplish different tasks, Part II is a comprehensive reference to GIMP's features, and Part III contains several cool appendices. I have listed each part and the chapters they contain below to give you a full view of everything the book covers.

Part I. Learning GIMP
1. Getting Started
2. Photograph Retouching
3. Drawing and Illustration
4. Logos and Textures
5. Composite Photography
6. Animation
7. Image Preprocessing
8. Designing a Website

Part II. Reference
9. The GIMP Interface
10. Display
11. Layers
12. Color
13. Selections
14. Masks
15. Drawing Tools
16. Transformation Tools
17. Filters
18. Animation Tools
19. Obtaining and Printing Images
20. Image Formats
21. Scripts and Plug-ins
22. Customizing GIMP

Part III. Appendices
A. Vision and Image Representation
B. Tips and Hints for Selected Exercises
C. Resources
D. Frequently Asked Questions
E. Installing GIMP
F. Batch Processing

Throughout the book the authors do a great job of taking advantage of the color printer. He shows versions of pictures before and after which helps a lot in knowing what to expect with your results as you work with GIMP.

The Vision and Image Representation is really cool. It teaches you how the human eye works. Some of what it covers includes vision, image perception, re-creating imaging for print and for computer screens, colored blindness, and optical illusions. It is a fascinating read.

I take a lot of pictures on vacations and most of them are pretty easy to clean up. The ones that give me the most trouble are from our scuba diving trips. Close ups are usually ok, but taking landscapes and pictures of my wife usually end up looking like I took them with a blue filter on the camera or they are just really washed out. The tip on how to use White Balance really helps clean them up fast.

Another tip that really helped right off the bat was the single-window interface that is available. I was constantly trying to close the application with one of the dialogs which only closes the dialog. Then I would have to dig around to get it back.

The book also has a really nice companion web site that houses the images and projects used in the book.

GIMP is a massive application and it is not that easy to learn by just clicking around. The author's writing styles makes this book an easy read. If you are planning to use GIMP, then this book is a must have. I will definitely have it by my side every time I open GIMP!

The Book of GIMP: A Complete Guide to Nearly Everything

posted by tadanderson at 4:31 PM 0 comments

Previous Posts

  • DevOps: A Software Architect's Perspective Book Re...
  • Scaled Agile Framework (SAFe) LiveLessons Video Se...
  • Bulletproof Android: Practical Advice for Building...
  • Swift for Programmers Book Review
  • Security in Computing (5th Edition) Book Review
  • Swift in 24 Hours, Sams Teach Yourself Book Review
  • Sparx Systems Releases Enterprise Architect 12
  • Learning Swift Programming Book Review
  • Android Security Internals: An In-Depth Guide to A...
  • Adaptive Code via C#: Agile coding with design pat...



Archives

  • December 2005
  • January 2006
  • February 2006
  • March 2006
  • April 2006
  • June 2006
  • August 2006
  • October 2006
  • November 2006
  • December 2006
  • January 2007
  • February 2007
  • March 2007
  • April 2007
  • May 2007
  • June 2007
  • July 2007
  • August 2007
  • September 2007
  • October 2007
  • November 2007
  • December 2007
  • January 2008
  • February 2008
  • March 2008
  • April 2008
  • May 2008
  • June 2008
  • July 2008
  • August 2008
  • September 2008
  • October 2008
  • December 2008
  • January 2009
  • February 2009
  • March 2009
  • April 2009
  • May 2009
  • June 2009
  • July 2009
  • August 2009
  • September 2009
  • October 2009
  • November 2009
  • December 2009
  • January 2010
  • February 2010
  • March 2010
  • April 2010
  • May 2010
  • June 2010
  • August 2010
  • September 2010
  • October 2010
  • November 2010
  • December 2010
  • January 2011
  • February 2011
  • March 2011
  • April 2011
  • May 2011
  • June 2011
  • July 2011
  • August 2011
  • September 2011
  • October 2011
  • November 2011
  • December 2011
  • January 2012
  • February 2012
  • March 2012
  • April 2012
  • May 2012
  • June 2012
  • July 2012
  • August 2012
  • September 2012
  • October 2012
  • November 2012
  • December 2012
  • January 2013
  • February 2013
  • March 2013
  • April 2013
  • May 2013
  • June 2013
  • July 2013
  • August 2013
  • September 2013
  • October 2013
  • November 2013
  • December 2013
  • January 2014
  • February 2014
  • March 2014
  • April 2014
  • May 2014
  • June 2014
  • July 2014
  • August 2014
  • September 2014
  • October 2014
  • December 2014
  • February 2015
  • March 2015
  • April 2015
  • June 2015
  • July 2015
  • September 2015

Powered by Blogger