Archive for the ‘software engineering’ Category

Reference: Quality Models in ISO 9126

Sunday, April 14th, 2013

The ISO 9126-1 specifies three models of software quality: internal, external and in-use. The models for internal and external quality are identical.

Internal and External Quality Models

  • Functionality
    • Suitability
    • Accuracy
    • Interoperability
    • Security
    • Functionality compliance
  • Reliability
    • Maturity
    • Fault tolerance
    • Recoverability
    • Reliability compliance
  • Usability
    • Understandability
    • Learnability
    • Operability
    • Attractiveness
    • Usability compliance
  • Efficiency
    • Time behavior
    • Resource utilization
    • Efficiency compliance
  • Maintainability
    • Analyzability
    • Changeability
    • Stability
    • Testability
    • Maintainability compliance
  • Portability
    • Adaptability
    • Installability
    • Coexistence
    • Replaceability
    • Portability compliance

In-use Quality Model

  • Effectiveness
  • Productivity
  • Safety
  • Satisfaction

 

Reference – Databases – ACID vs BASE

Saturday, December 1st, 2012

Most everyone is familiar with the acronym ACID when it comes to databases:

  • Atomicity
  • Consistency
  • Isolation
  • Durability

Less familiar and gaining in popularity (thanks to the NoSQL movement) is the acronym BASE:

  • Basically Available
  • Soft state
  • Eventually consistent

 

Scripting Links from November 2011 Software Engineering Notes

Monday, October 22nd, 2012

The following links were published in the November 2011 ACM SIGSOFT Software Engineering Notes in the "Surfing the Net for Software Engineering Notes" by Mark Doernhoefer. This issues topic was interfaces.

 

Persistent Storage Links from September 2011 Software Engineering Notes

Saturday, April 21st, 2012

The following links were published in the September 2011 ACM SIGSOFT Software Engineering Notes in the "Surfing the Net for Software Engineering Notes" by Mark Doernhoefer. This issues topic was interfaces.

 

End of Lifecycle (Retirement) Links from July 2011 SE Engineering Notes

Sunday, April 15th, 2012

The following links were published in the July 2011 ACM SIGSOFT Software Engineering Notes in the "Surfing the Net for Software Engineering Notes" by Mark Doernhoefer. This issues topic was software retirement (end of life).

 

Interfaces Links from March 2011 Software Engineering Notes

Wednesday, September 14th, 2011

The following links were published in the March 2011 ACM SIGSOFT Software Engineering Notes in the "Surfing the Net for Software Engineering Notes" by Mark Doernhoefer. This issues topic was interfaces.

Video Notes – Tools for Continuous Integration at Google Scale (GTAC2010)

Saturday, August 27th, 2011

Tools for Continuous Integration at Google Scale (GTAC2010)
Nathan York
29 min, 55 sec
http://www.youtube.com/watch?v=b52aXZ2yi08

Slide Notes:

  • Software Engineering Gap – lots of work on platforms and compilers, lots of work on apps. Middle (build systems, etc.) is often ignored (reach good enough and then move on)
  • Common Build System Issues – Incorrect, Slow, Cumbersome, Under-maintained
  • Why Build Systems Matter – Engineer Productivity, All about feedback
  • The Challenge At Google – 6000 engineers and one code base, everything built from source, development on mainline, extensive automated testing
  • Rough Developer Workflow (flow chart)
  • Better Build System Needed – optimized and tuned build languages, dependency analysis and scheduling, leverage infrastructure. Must be correct AND fast.
  • Inputs, Outputs and Actions – Content addressable storage (by digest of content), use relative paths, eliminate global state
  • Scaling Source Code Access – FUSE based file system. Most code needed for read only, on-demand syncing and caching, all source in the cloud, content digests as metadata
  • Making Builds Fast – Distributed builds in the cloud – built in arbitrary location
  • Scalable Distributed Builds – Caching key to scalable build. If inputs (from digest) and actions are same as previous, return prior result.
  • Scaling Build Outputs – FUSE based file systems, all output in the cloud, shared across builds and users
  • System View – builds appear local but are in the cloud
  • Platform for Automated Testing – Executing a test is just another build action.
  • Results – 20+ code changes per minute, 65K builds per day, 10000 CPUs, 50 TB memory, ~1PB output every 7 days, 94% cache hit rate.
  • Estimating build tool savings 2008 to 2009: Saving ~600 person years
  • Conclusion: build system is a core component of software engineering
  • Questions

 

The Power of Ten – Rules for Developing Safety Critical Code

Saturday, January 29th, 2011

I was reading an article when I saw a reference to how NASA’s Jet Propulsion Laboratory (JPL) was using 10 simple coding guideline to develop safe code. The article referenced the following URL: http://spinroot.com/p10/. Going to this site, you will discover that the work was originally published in the June 2006 issue of IEEE Computer in The Power of Ten – Rules for Developing Safety Critical Code by Gerard J. Holzmann.

The paper and site describes 10 rules:

  1. Restrict to simple control flow constructs.
  2. Give all loops a fixed upper-bound.
  3. Do not use dynamic memory allocation after initialization.
  4. Limit functions to no more than 60 lines of text.
  5. Use minimally two assertions per function on average.
  6. Declare data objects at the smallest possible level of scope.
  7. Check the return value of non-void functions, and check the validity of function parameters.
  8. Limit the use of the preprocessor to file inclusion and simple macros.
  9. Limit the use of pointers. Use no more than two levels of dereferencing per expression.
  10. Compile with all warnings enabled, and use one or more source code analyzers.

Check the site and the paper out.

 

Software Estimation Links from November 2010 SE Engineering Notes

Saturday, December 25th, 2010

The following links were published in the November 2010 ACM SIGSOFT Software Engineering Notes in the "Surfing the Net for Software Engineering Notes" by Mark Doernhoefer. This issues topic was software estimation.

 

Mobile Devices Links from September 2010 SW Engineering Notes

Wednesday, December 15th, 2010

The following links were published in the September 2010 ACM SIGSOFT Software Engineering Notes in the "Surfing the Net for Software Engineering Notes" by Mark Doernhoefer. This issues topic was mobile devices.