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/24 16:24] mithatcentury:principles_of_software_engineering [2012/07/25 16:00] – [Modularity] mithat
Line 3: Line 3:
 ====== Principles of Software Engineering ====== ====== Principles of Software Engineering ======
 Mithat Konar\\  Mithat Konar\\ 
-July 23, 2012+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 33: Line 32:
 ===== The principles ===== ===== The principles =====
   * Rigor and formality   * Rigor and formality
-  * Modularity 
   * Separation of concerns   * Separation of concerns
 +  * Modularity
   * Abstraction   * Abstraction
   * Anticipation of change   * Anticipation of change
Line 41: Line 40:
  
 ===== The principles ===== ===== The principles =====
-  * **Rigor and formality** ☜ ☚ +  * **Rigor and formality**
-  * Modularity+
   * Separation of concerns   * Separation of concerns
 +  * Modularity
   * Abstraction   * Abstraction
   * Anticipation of change   * Anticipation of change
Line 67: Line 66:
     * interoperability     * interoperability
     * reusability     * reusability
 +
 +===== The principles =====
 +  * Rigor and formality
 +  * **Separation of concerns**
 +  * Modularity
 +  * Abstraction
 +  * Anticipation of change
 +  * Generality
 +  * Incremantality
  
 ===== Separation of concerns ===== ===== Separation of concerns =====
Line 87: Line 95:
       * Behavior: Javascript       * Behavior: Javascript
       * [[separation of concerns example|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 103: Line 119:
     * 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 =====
-  * In general use, abstraction means the process of 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 general useconsidering 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
Line 123: 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 129: 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 =====
Line 138: Line 181:
   * General problem might be easier to solve (or not).   * General problem might be easier to solve (or not).
   * Supports quality of reuse   * 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.]]// ---mistranslation of Lao-tzu<sup>[[http://www.quotationspage.com/quote/24004.html|4]]</sup>+  *//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//).
 +    * "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]]
Line 153: Line 205:
   * Conflicts among principles may arise.   * Conflicts among principles may arise.
   * Software engineering is:   * Software engineering is:
-    * a new field and subject to change+    * a new field and subject to change.
     * made by humans for humans.     * made by humans for humans.
-  * Your contemplations and considerations are crucial.+  * Your contemplations and contributions are crucial.
  
 ===== Endnotes ===== ===== Endnotes =====
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