User Tools

Site Tools


century:principles_of_software_engineering

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
century:principles_of_software_engineering [2012/07/23 15:48] – [Incremantality] mithatcentury:principles_of_software_engineering [2012/07/25 16:07] (current) mithat
Line 2: Line 2:
  
 ====== Principles of Software Engineering ====== ====== Principles of Software Engineering ======
-Mithat Konar+Mithat Konar\\  
 +July 24, 2012
  
 ===== Adapted from ===== ===== Adapted from =====
- +[[http://www.pearsonhighered.com/pearsonhigheredus/educator/product/products_detail.page?isbn=0133056996|{{:century:fundamentals-swe-cover.jpg?150 |}}]]Ghezzi, Carlo, Mehdi Jazayeri, and Dino Mandrioli. "[[http://www.pearsonhighered.com/pearsonhigheredus/educator/product/products_detail.page?isbn=0133056996|Software Engineering Principles]]." In //Fundamentals of Software Engineering//. 2nd ed. Upper Saddle River, N.J.: Prentice Hall, 2003. 41-66.
-  * Ghezzi, Carlo, Mehdi Jazayeri, and Dino Mandrioli. "[[http://www.pearsonhighered.com/pearsonhigheredus/educator/product/products_detail.page?isbn=0133056996|Software Engineering Principles]]." In //Fundamentals of Software Engineering//. 2nd ed. Upper Saddle River, N.J.: Prentice Hall, 2003. 41-66.+
  
 ===== Introduction ===== ===== Introduction =====
Line 12: Line 12:
     * Most real-world problems are:     * Most real-world problems are:
       * Complex, difficult to decompose       * Complex, difficult to decompose
-      * Involve a number of developers+      * Involve a number of developers and other shareholders
       * Evolve over time       * Evolve over time
     * Software engineering attempts to provide developers with strategies to manage this.     * Software engineering attempts to provide developers with strategies to manage this.
Line 19: Line 19:
 ===== Introduction ===== ===== Introduction =====
   * //Product//: "What it is," and "The code you write."   * //Product//: "What it is," and "The code you write."
-  * //Process//: How you got there. +  * //Process//: How you got there 
-  * Both are important.+  * Both are important
  
 ===== Introduction ===== ===== Introduction =====
-{{:century:priciples_hierarchy.png?|500}}\\ +{{:century:priciples_hierarchy.png?450 |From Ghezzeri, et al. (footnote 1)}} 
-Principles -> methods and techniques -> methodologies -> tools+ \\ 
 + ↑\\ 
 + changes rapidly\\ 
 + changes slowly\\ 
 + 
  
 ===== The principles ===== ===== The principles =====
   * Rigor and formality   * Rigor and formality
 +  * Separation of concerns
   * Modularity   * Modularity
 +  * Abstraction
 +  * Anticipation of change
 +  * Generality
 +  * Incremantality
 +
 +===== The principles =====
 +  * **Rigor and formality**
   * Separation of concerns   * Separation of concerns
 +  * Modularity
   * Abstraction   * Abstraction
   * Anticipation of change   * Anticipation of change
Line 36: Line 49:
  
 ===== Rigor and formality ===== ===== Rigor and formality =====
-  * **rigor**: the quality or state of being very exact, careful, or strict((http://www.learnersdictionary.com/search/rigor))+  * **rigor**: the quality or state of being very exact, careful, or strict.<sup>[[http://www.learnersdictionary.com/search/rigor|2]]</sup>
   * **formality**: the highest degree of rigor   * **formality**: the highest degree of rigor
     * Often based on mathematical/logical laws     * Often based on mathematical/logical laws
-  * Tools include natural language, formal languages 
   * Different projects/parts require more or less rigor/formality   * Different projects/parts require more or less rigor/formality
-    * High criticallity -> high rigor/formality +    * High criticality -> high rigor/formality 
-  +  * Tools include natural language, formal languages 
 ===== Rigor and formality ===== ===== Rigor and formality =====
-  * Impacts s/w qualities of:+  * Impacts software qualities of:
     * reliability     * reliability
     * verifiability     * verifiability
Line 52: Line 65:
     * understandability     * understandability
     * interoperability     * interoperability
-  Impacts process quality of reusability+    * reusability 
 + 
 +===== The principles ===== 
 +  * Rigor and formality 
 +  * **Separation of concerns** 
 +  * Modularity 
 +  * Abstraction 
 +  * Anticipation of change 
 +  * Generality 
 +  * Incremantality
  
 ===== Separation of concerns ===== ===== Separation of concerns =====
-  * Features and responsibilities should overlap as little as possible.+  * Features and responsibilities should overlap as little as possible
   * Minimizes interdependence   * Minimizes interdependence
   * Increases resusabilty   * Increases resusabilty
Line 65: Line 87:
 ===== Separation of concerns ===== ===== Separation of concerns =====
   * Another example: the Web   * Another example: the Web
-    * "Web 1.0": content, presentation, behavior comingled in same HTML code<code html><a href="foo.html"><font +    * "Web 1.0": content, presentation, behavior comingled in same HTML code<code html><a href="foo.html
-  face="verdana" color="green"  +target="_foowindow"><font-face="verdana" 
-  target="_foowindow">Click me!</font></a></code>+color="green">Click me!</font></a></code>
     * "Web 2.0+":     * "Web 2.0+":
       * Content/semantics: XHTML       * Content/semantics: XHTML
       * Presentation: CSS       * Presentation: CSS
       * Behavior: Javascript       * Behavior: Javascript
-      * [[century:separation of concerns example|code]]+      * [[separation of concerns example|example code]] 
 + 
 +===== The principles ===== 
 +  * Rigor and formality 
 +  * Separation of concerns 
 +  * **Modularity** 
 +  * Abstraction 
 +  * Anticipation of change 
 +  * Generality 
 +  * Incremantality
  
 ===== Modularity ===== ===== Modularity =====
-  * Divide the system into smaller //modules// +  * Division of the system into smaller //modules//
-  * Typically results it a tree of modules and submodules+
   * //Decomposition//: recursively subdividing the system    * //Decomposition//: recursively subdividing the system 
       * "Divide and conquer"       * "Divide and conquer"
Line 85: Line 115:
  
 ===== Modularity ===== ===== Modularity =====
-  * Benefits+  * Benefits:
     * Facilitates **separation of concerns**     * Facilitates **separation of concerns**
     * Supports **anticipation of change**     * Supports **anticipation of change**
     * Enhances quality of //understandability//     * Enhances quality of //understandability//
 +
 +===== The principles =====
 +  * Rigor and formality
 +  * Separation of concerns
 +  * Modularity
 +  * **Abstraction**
 +  * Anticipation of change
 +  * Generality
 +  * Incremantality
  
 ===== Abstraction ===== ===== Abstraction =====
-  * FIXME Abstraction in general use means the act or process "[considering] apart from application to or association with a particular instance."((http://www.merriam-webster.com/dictionary/abstracting?show=0&t=1343046707)) +  * In general use: considering something "apart from application to or association with a particular instance."<sup>[[http://www.merriam-webster.com/dictionary/abstracting?show=0&t=1343046707|3]]</sup> 
-  * In S/W Engineering, abstraction means wrapping a concept such that it: +  * In S/W Engineeringwrapping a concept such that it: 
-    * Expresses the concept only in terms of what is relevant. +    * Expresses the concept only in terms of what is relevant 
-    * Shields the user from everything that's not relevant.+    * Shields the user from everything that's not relevant
     * (i.e., building models)     * (i.e., building models)
   * Examples:   * Examples:
Line 109: Line 148:
     * Programming process     * Programming process
     * ...     * ...
 +
 +===== The principles =====
 +  * Rigor and formality
 +  * Separation of concerns
 +  * Modularity
 +  * Abstraction
 +  * **Anticipation of change**
 +  * Generality
 +  * Incremantality
  
 ===== Anticipation of change ===== ===== Anticipation of change =====
Line 115: Line 163:
     * after release.     * after release.
   * Process and code should be designed to support evolution.   * Process and code should be designed to support evolution.
 +
 +===== The principles =====
 +  * Rigor and formality
 +  * Separation of concerns
 +  * Modularity
 +  * Abstraction
 +  * Anticipation of change
 +  * **Generality**
 +  * Incremantality
  
 ===== Generality ===== ===== Generality =====
   * Often, a problem you work on is a more specific version of a more general problem.   * Often, a problem you work on is a more specific version of a more general problem.
-  * Work with solution based on more general problem. +  * Work with solution based on more general problem   
-    * If you need to invent an oxcart wheel, first invent a wheel and use that to build your oxcart wheel. +  * If you need to invent an oxcart wheel
-    * Don't re-invent the wheel if you don't need to+    * Invent a wheel and then use that to build the oxcart wheel. 
-    * General problem might be easier to solve (or not). +    * Don't re-invent the wheel in the first place
-  * Supports quality of reuse.+  * General problem might be easier to solve (or not). 
 +  * Supports quality of reuse 
 + 
 +===== The principles ===== 
 +  * Rigor and formality 
 +  * Separation of concerns 
 +  * Modularity 
 +  * Abstraction 
 +  * Anticipation of change 
 +  * Generality 
 +  * **Incremantality**
  
 ===== Incremantality ===== ===== Incremantality =====
-  *//[[http://www.quotationspage.com/quote/24004.html|A journey of a thousand miles begins with a single step.]]// --Lao-tzu (mistranslation)((http://www.quotationspage.com/quote/24004.html)) +  *//A journey of a thousand miles begins with a single step.// ---Lao-tzu mistranslation<sup>[[http://www.quotationspage.com/quote/24004.html|4]]</sup> 
-  * Development proceeds in a stepwise fashion (i.e., in //increments//+  * Development proceeds in a stepwise fashion (i.e., in //increments//). 
-  Strategies:+    "Iterative refinement"
     * Deliver subsets of a system early to get early feedback     * Deliver subsets of a system early to get early feedback
     * Deliver prototype of the system and incrementally add effort to turn it into product     * Deliver prototype of the system and incrementally add effort to turn it into product
     * Implement functionality, then tune performance     * Implement functionality, then tune performance
-    * "Iterative refinement" 
   * Supports **anticipation of change**   * Supports **anticipation of change**
   * Example: [[http://adium.im|Adium]]'s [[https://bitbucket.org/adium/adium/changesets|commit history]]   * Example: [[http://adium.im|Adium]]'s [[https://bitbucket.org/adium/adium/changesets|commit history]]
 +  
 ===== Concluding remarks ===== ===== Concluding remarks =====
-  * Different methodologies emphasize different combinations of principles+  * Different methodologies emphasize different combinations of principles.
   * Conflicts among principles may arise.   * Conflicts among principles may arise.
-  * New field and subject to change. +  * Software engineering is: 
-  Made by humans for humans. +    * a new field and subject to change. 
-    * Your contemplations and considerations are crucial.+    made by humans for humans. 
 +  * Your contemplations and contributions are crucial.
  
 ===== Endnotes ===== ===== Endnotes =====
-<sup>1</sup>MicrosoftInc. "Version Class (System)." MSDN Microsoft DevelopmentSubscriptionsResources, and More. http://msdn.microsoft.com/en-us/library/system.version.aspx#Y171 (accessed March 92011).\\ +<sup>1</sup>GhezziCarlo, Mehdi Jazayeri, and Dino Mandrioli. "[[http://www.pearsonhighered.com/pearsonhigheredus/educator/product/products_detail.page?isbn=0133056996|Software Engineering Principles]]." In //Fundamentals of Software Engineering//. 2nd ed. Upper Saddle RiverN.J.: Prentice Hall2003. 42. 
-<sup>2</sup>IbidEmphasis added.+ 
 +<sup>2</sup>"Merriam-Webster's Learner's Dictionary." Merriam-Webster's Learner's Dictionary. http://www.learnersdictionary.com/search/rigor (accessed July 23, 2012). 
 + 
 +===== Endnotes ===== 
 +<sup>3</sup>"Abstracting Definition and More from the Free Merriam-Webster Dictionary." Dictionary and Thesaurus - Merriam-Webster Online. http://www.merriam-webster.com/dictionary/abstracting?show=0&t=1343046707 (accessed July 232012).\\ 
 + 
 +<sup>4</sup>"Quote Details: Lao-tzu: A journey of a... - The Quotations Page." Quotes and Famous Sayings - The Quotations Page. http://www.quotationspage.com/quote/24004.html (accessed July 23, 2012)
  
-This content is Copyright © 2012 Mithat Konar+===== ~ ===== 
 +Copyright ©2012 Mithat Konar
  
century/principles_of_software_engineering.1343058521.txt.gz · Last modified: 2012/07/23 15:48 by mithat

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki