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
Last revisionBoth sides next revision
century:principles_of_software_engineering [2012/07/23 15:49] – [Incremantality] mithatcentury:principles_of_software_engineering [2012/07/25 16:00] – [Modularity] 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 criticallity -> 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 (mistranslationhttp://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.txt · Last modified: 2012/07/25 16:07 by mithat

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki