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/24 16:24] mithatcentury:principles_of_software_engineering [2012/07/25 16:07] (current) 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 54: Line 53:
     * Often based on mathematical/logical laws     * Often based on mathematical/logical laws
   * 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   * Tools include natural language, formal languages
  
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.1343147056.txt.gz · Last modified: 2012/07/24 16:24 by mithat

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki