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






Thursday, April 16, 2015

Swift for Programmers Book Review

This is one of the best laid out programming books I have read in a while. The way it starts out providing summaries of Swift features found in other programming languages, Swift features that eliminate common programming errors, the list of Cocoa and Cocoa Touch frameworks, new key features in Xcode 6, special characters, numeric and boolean types, operators, conditional and loop statements, compound assignment operators, Classes, access modifiers, properties, initializers, methods, value and reference types, and making use of built in frameworks is perfect for developers from any other language.

By the time you are done the first few chapters you have gained a great deal of knowledge about Swift that is familiar from your experience with other languages. Below is a list of all the chapters included in the book.

1. Introduction to Swift and Xcode 6
2. Introduction to Swift Programming
3. Introduction to Classes, Objects, Methods and Functions
4. Control Statements; Assignment, Increment and Logical Operators
5. Functions and Methods: A Deeper Look; enums and Tuples
6. Arrays and an Introduction to Closures
7. Dictionary
8. Classes: A Deeper Look and Extensions
9. Structures, Enumerations and Nested Types
10. Inheritance, Polymorphism and Protocols
11. Generics
12. Operator Overloading and Subscripts
13. iOS 8 App Development: Welcome App
14. iOS 8 App Development: Tip Calculator App
A. Keywords
B. Operator Precedence Chart
C. Labeled break and continue Statements

After the initial introductory chapters the book digs deep into different topics by giving each major language feature a chapter of its own. The chapter names are reflective of the topics covered.

Object-oriented programming topics are covered throughout the book when topics being covered create the right context to cover them. However, chapter 10 is dedicated to covering Inheritance, Polymorphism and Protocols. This chapter does a good job of explaining how Swift is different than most object-oriented languages because it does not have a common superclass from which all other classes inherit basic capabilities.

The last two chapters of the book give us a glimpse into developing iOS 8 applications. Each chapter builds a small application and covers a bunch of topics at a high level. They also introduce storyboards and the Xcode interface. These two chapters are from the book iOS 8 for Programmers: An App-Driven Approach with Swift, which gives you an idea of whether or not you would like to read a book which takes you through building a bunch of small applications to introduce you to iOS 8 development.

The book includes code samples you can download, but one of the things I liked best about the book is the amount of code found in the book and the format in which they were presented. I could carry the book around and read it without feeling like I had to run the code samples on my Mac.

The samples include the results of running the code in the book. I know a lot of books do the opposite, making you type everything in, which is effective for the beginner, but this format is much more appealing to me.

The downloadable samples are very well organized by chapter and then labeled with the same figure name used in the book, making finding the really easy. I upgraded to iOS 8.3 and Xcode 6.3 and all the samples easily upgraded. I didn't have any problems with any of the examples before or after the upgrade.

Another thing I like about the book is the sidebars throughout the book. They have 5 different types of them including Good Programming Practices, Common Programming Errors, Error-Prevention Tips, Performance Tips, and Software Engineering Observations. They are usually 1 to 4 sentences, and are related to the material being covered in the section they are placed.

I saw that there is now a Swift Fundamentals LiveLessons available by the author. I have not seen this course, but have seen other LiveLessons, and they are usually pretty good. There are a few sample videos available on the publisher's web site.

The author's writing style and the layout of the book makes this an easy cover to cover read. The way the topics are covered also makes the book a good reference. There is no fluffy filler. The authors get right to the point of a topic and stick to it until it is thoroughly covered.

All in all I think this book is the perfect place for the experienced programmer of C#, Java, Objective-C, or C++ to get started with Swift.


Swift for Programmers (Deitel Developer Series)

Swift for Programmers (Deitel Developer Series)

posted by tadanderson at 5:24 PM 0 comments

Friday, April 03, 2015

Security in Computing (5th Edition) Book Review

This book is a beast!!! It is 100 % textbook, with a lot of exercises at the end of the chapters. If your class uses this book, get ready for a fire hose of information. It covers a ton of topics and covers them in depth.

Although it is a text book the authors do there best to keep it interesting. I really enjoyed the sidebars that include true stories of security breaches. I really like the ones that find out what the criminal was thinking. Some of the reasons for doing what they do are nuts.

One of the biggest problems with security I see today is the security teams oftentimes don't know what to secure, or how to secure stuff when they do. This book starts out with a really nice introduction to what computer security is. The author discusses Values of Assets, the Vulnerability–Threat–Control Paradigm, Confidentiality, Integrity, Availability, Types of Threats, Types of Attackers, Risk and Common Sense, Method–Opportunity–Motive, Vulnerabilities, and Controls. By the time you are done this chapter you have a high level few of today's security issues.

1. Introduction
2. Toolbox: Authentication, Access Control, and Cryptography
3. Programs and Programming
4. The Web—User Side
5. Operating Systems
6. Networks
7. Databases
8. Cloud Computing
9. Privacy
10. Management and Incidents
11. Legal Issues and Ethics
12. Details of Cryptography
13. Emerging Topics

I was glad to see information on regulations, compliance, and laws. They can wreak havoc on an organization's productivity when left to an unqualified security team. I usually find that IT organizations that have locked down everything from the Internet to your USBs, have no concept of how to implement security in a managed and efficient way.

Years ago I was the lead research and development on a contract with the state. They allowed no internet except for 2 PCs that all 250 people on the project had to use. 90% of the time they were tied up with people checking their personal email. That was the days before smart phones. I would have to go home, research stuff, download it and burn it to CD, and take it in to work. I understand the thoughts behind natural immunity, but separating yourself from the world you are trying to successfully build software for, leads to software that doesn't meet the needs of that world.

More recently I was tasked with building a mobile application. The company had a guest wireless connection in place, but it was so locked down we couldn't use it. We needed to get data plans for the phones to test the applications. They also had emails with attachments reviewed by help desk personnel that would then release them. They basically are operating like the state project I mentioned above. Yet every security audit is failed.

This book does a great job of covering all the security topics you need to know about to work successfully in a decent size enterprise. The detail and depth of each topic amazed me.

A highlight of this book is that after the detailed introduction at the beginning of the book, each chapter contains topics you can read in isolation, while at the same time they are logically tied together.

Another highlight is that the book contains both timeless information and current information doing a really good job of tying the history of a topic to the current state of a topic. For example, the chapter on Cloud computing contains basic information on SaaS, PaaS, and IaaS, as well as sidebars on current research happening today that isn't quite ready for release to the world.

Over all I highly recommend this book not only students that need it for a course, but to everyone that has any interest in learning more about the world of security. For the amount of information and the clarity of its delivery, this book is absolutely worth the price.

Security in Computing (5th Edition)

Security in Computing (5th Edition)

posted by tadanderson at 10:53 AM 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