Social Ethical and Legal Environment
Social and Ethical Issues <ul><li>Context </li><ul><li>Public Utility Software
Open Source Software
Mission Critical Software
Copy write laws. </li></ul></ul><ul><li>Issues </li><ul><li>Responsibilities
Acknowledgements
Product Quality
Commercial Requirements </li></ul></ul>
Responsibilities of the Developer <ul><li>Quality solutions
Virus Free
Responsive to users
May have voluntary professional code of conduct. </li><ul><li>Enhance reputation
May have legal ramifications </li></ul></ul>
Authorship / Acknowledgement <ul><li>Must include team, suppliers and outsourced workers or tasks
Royalties
Publishers (manufacturers and distributors) </li></ul>
Reliability <ul><li>Testing across multiple hardware platforms. </li><ul><li>Reacting appropriately to hardware failures. ...
Adequate Error Handling to cope with errors and minimise loss or damage. </li><ul><li>error detection processes. </li></ul...
Quality Processes <ul><li>Quality Assurance steps – standards based </li><ul><li>focused on customer expectations. </li></...
Resolution in a timely and effective manner. </li><ul><li>Good error messaging
Proper support processes.
Prioritisation of Problems </li></ul></ul>
Software Piracy and Copyright <ul><li>Licensing – software is generally licence, not owned
License covers </li><ul><li>Intellectual Property
Reuse and Acknowledgement
Copyright Types </li></ul></ul>
Commercial <ul><li>Copyrighted
Archival copies only
May not be modified, reverse engineered or reused </li></ul>
Shareware <ul><li>Copyrighted
Can be copied. and shared
May not be modified, reverse engineered or reused </li></ul>
Freeware <ul><li>Copyrighted.
Can be altered and distributed but not for profit. </li></ul>
Public Domain. <ul><li>Copyright relinquished or lapsed.
There are no restrictions on its use. </li></ul>
Licence Purpose <ul><li>To provide incentive for endeavour
Products expression of ideas (implementation)
Australia – Copyright Act 1968 plus amendments </li></ul>
Copyright Components <ul><li>When ownership is transferred, all copies must be deleted.
Reverse engineering not permitted
Lasts for 50 years
Exists regardless of registration. However registration is required before owner can commence legal proceedings
Law assumes copyright unless it has been specifically relinquished </li></ul>
Copyright & Licence Components <ul><li>right to reproduce
right to derivative works and income stream
distribution rights
perform or use in public.
display works in public.
Software Focused </li><ul><li>right to make a backup copy. </li></ul></ul>
Network Use <ul><li>Normally licence for number of simultaneous executing instances. </li></ul>
Software Piracy <ul><li>Business estimates of Software piracy you would expect to be greatly over stated. </li><ul><li>est...
piracy of oem licences
counterfeiting
mishandling (reselling academic licences) </li></ul><li>Prevention </li><ul><li>Registration and registration keys
Labelling (particularly holograms
Legal action </li></ul></ul>
Software Licence Agreement <ul><li>Copyright
Levels and types of service
Rights to fixes and upgrades </li></ul>
Software Licence Agreement <ul><li>Product </li><ul><li>Meets published expectations
Meets customer needs
Meets competitive features. </li></ul></ul>
Place <ul><li>Distribution channels
Access to the right customers
Equity and commercial efficiency in pricing structures
Ability of reseller to support the product in a given channel.
Pricing
Cost Pulse
What the market will bear – consumer based. </li></ul>
Promotion
Social and Ethical Issues in Case Studies <ul><li>Y2K
Computer Viruses
Mission Critical Software.
Software in Consumer Goods. </li></ul>
Development Approaches
Software Development Cycle <ul><li>Definition
Planning & Design
Implementation
Testing and Evaluation
Maintenance </li></ul>
Methodology Choice base on <ul><li>Size of product (cost)
Nature of product (mission critical)
Skills of development personnel
Detail of Requirements
Funds available. </li></ul>
Structured Approach <ul><li>Often called Waterfall Method.
Each stage completed before proceeding to the next stage.
Suited to projects with well known requirements </li><ul><li>However, you don't always know what you know
Assumes you can create a complete set of specifications prior to commencement. </li></ul><li>Problems created at the desig...
Prototyping <ul><li>Circular approach to development involving end users.
Requirements collected in an evolutionary fashion.
Concept Prototyping - “Proof of Concept” </li><ul><li>Product redeveloped from scratch after the prototype phase.
May be more than one prototype
Used for needs definition and identification of project and technical risks.
May also test effectiveness of different technologies or approaches.
may be considered experimental or exploratory </li></ul><li>Evolutionary Prototyping </li><ul><li>Successive generation em...
Can carry on into the maintenance and enhancement process.
Support staff are constantly gathering new needs and requirements </li></ul></ul>
RAD <ul><li>Rapid Application Development </li><ul><li>Compresses the time for Software Development
Reduces the delays of a planned development approach.
Use 80:20 rule – Try and meet major requirements.
May reduce quality of product –
poor software,
requirements
lack of integration
difficult maintenance environment. </li></ul></ul>
JAD – Joint Application Development. <ul><li>Enabled by the use of fourth and fifth generation languages. </li><ul><li>“ V...
OO programs
High degrees of reusability </li></ul><li>Requires close team work. </li><ul><li>between developers
with end-users
Setting up continuous feedback
Multiskilled development teams </li></ul></ul>
JAD <ul><li>Best in </li><ul><li>Stand alone environments
Performance or system none critical
Not good for mission critical systems.
Finds interfacing difficult. </li></ul><li>May be combined with prototyping. </li><ul><li>Prototypes are used to further u...
Reduced coding
Heavy use of Case and 4/5gl.
Reduced time and cost </li></ul><li>Disadvantages </li><ul><li>May require more software purchases.
Inefficiencies in performance and maintenance </li></ul></ul>May sacrifice functionality and create licensing and interfac...
End-user Development <ul><li>Using </li><ul><li>Wizards
Code Generating Devices
Business Intelligence Tools </li></ul><li>Advantages of constant development
Disadvantage – poor performance and high maintenance
Often Involves the use of packages. </li></ul>
Design Specifications <ul><li>Developer </li><ul><li>Data Types
Algorithms
Variables
Design Approach
System Models
Documentation </li></ul></ul><ul><li>User </li><ul><li>Screens
Messages
Icons
Displaying Data & data formats
Ergonomics
Technical compatability
Relevance to organisation
Social / Ethical / Legal issues </li></ul></ul>
Design Process <ul><li>Communications </li><ul><li>Meetings
Interviews
Questionnaires / surveys
Auditability </li><ul><li>Phone calls, emails, memos </li></ul></ul></ul><ul><li>Planning </li><ul><li>Design Architecture
Design Specifications
Contractual or business unit responsibilities </li></ul></ul>
System Flow Charts <ul><li>Describes the logic flow of the software </li><ul><li>Architectural  </li><ul><li>Components
Inputs and outputs or interfaces
Technologies </li></ul><li>This is often done at many levels </li><ul><li>System
Module </li></ul></ul></ul>
System Flow Charts Paper Document Decision point Process Manual Operation Online Input Storage Online display http://dia-i...
System Flow Charts <ul><li>Start and end symbols </li><ul><li>Represented as lozenges, ovals or rounded rectangles, usuall...
Data Flow Diagrams Process Notations (actions on the data)  Datastore Notations (Data Respoisitories) <ul><li>Files
Disks
Paper  </li></ul>Dataflow Notations (label indicates nature of data)   http://www.smartdraw.com/tutorials/software/dfd/tut...
Data Flow Diagrams <ul><li>Source – Data flowing FROM outside system
Sink – Data flowing TO outside system
Normally done in levels </li><ul><li>Top level is called a context diagram
Starting at system architecture
Upcoming SlideShare
Loading in …5
×

Year 12 D Course Material

531 views

Published on

Published in: Education, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
531
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Year 12 D Course Material

  1. 1. Social Ethical and Legal Environment
  2. 2. Social and Ethical Issues <ul><li>Context </li><ul><li>Public Utility Software
  3. 3. Open Source Software
  4. 4. Mission Critical Software
  5. 5. Copy write laws. </li></ul></ul><ul><li>Issues </li><ul><li>Responsibilities
  6. 6. Acknowledgements
  7. 7. Product Quality
  8. 8. Commercial Requirements </li></ul></ul>
  9. 9. Responsibilities of the Developer <ul><li>Quality solutions
  10. 10. Virus Free
  11. 11. Responsive to users
  12. 12. May have voluntary professional code of conduct. </li><ul><li>Enhance reputation
  13. 13. May have legal ramifications </li></ul></ul>
  14. 14. Authorship / Acknowledgement <ul><li>Must include team, suppliers and outsourced workers or tasks
  15. 15. Royalties
  16. 16. Publishers (manufacturers and distributors) </li></ul>
  17. 17. Reliability <ul><li>Testing across multiple hardware platforms. </li><ul><li>Reacting appropriately to hardware failures. </li></ul><li>Using and respecting the role of the operating system </li><ul><li>design with respect to forward and backwards compatibility. </li></ul><li>Other installed software and resources should be checked and managed.
  18. 18. Adequate Error Handling to cope with errors and minimise loss or damage. </li><ul><li>error detection processes. </li></ul></ul>
  19. 19. Quality Processes <ul><li>Quality Assurance steps – standards based </li><ul><li>focused on customer expectations. </li></ul><li>Problem Resolution
  20. 20. Resolution in a timely and effective manner. </li><ul><li>Good error messaging
  21. 21. Proper support processes.
  22. 22. Prioritisation of Problems </li></ul></ul>
  23. 23. Software Piracy and Copyright <ul><li>Licensing – software is generally licence, not owned
  24. 24. License covers </li><ul><li>Intellectual Property
  25. 25. Reuse and Acknowledgement
  26. 26. Copyright Types </li></ul></ul>
  27. 27. Commercial <ul><li>Copyrighted
  28. 28. Archival copies only
  29. 29. May not be modified, reverse engineered or reused </li></ul>
  30. 30. Shareware <ul><li>Copyrighted
  31. 31. Can be copied. and shared
  32. 32. May not be modified, reverse engineered or reused </li></ul>
  33. 33. Freeware <ul><li>Copyrighted.
  34. 34. Can be altered and distributed but not for profit. </li></ul>
  35. 35. Public Domain. <ul><li>Copyright relinquished or lapsed.
  36. 36. There are no restrictions on its use. </li></ul>
  37. 37. Licence Purpose <ul><li>To provide incentive for endeavour
  38. 38. Products expression of ideas (implementation)
  39. 39. Australia – Copyright Act 1968 plus amendments </li></ul>
  40. 40. Copyright Components <ul><li>When ownership is transferred, all copies must be deleted.
  41. 41. Reverse engineering not permitted
  42. 42. Lasts for 50 years
  43. 43. Exists regardless of registration. However registration is required before owner can commence legal proceedings
  44. 44. Law assumes copyright unless it has been specifically relinquished </li></ul>
  45. 45. Copyright & Licence Components <ul><li>right to reproduce
  46. 46. right to derivative works and income stream
  47. 47. distribution rights
  48. 48. perform or use in public.
  49. 49. display works in public.
  50. 50. Software Focused </li><ul><li>right to make a backup copy. </li></ul></ul>
  51. 51. Network Use <ul><li>Normally licence for number of simultaneous executing instances. </li></ul>
  52. 52. Software Piracy <ul><li>Business estimates of Software piracy you would expect to be greatly over stated. </li><ul><li>estimate around 35% of all installed commercial software </li></ul><li>Forms of Piracy: </li><ul><li>end user copying
  53. 53. piracy of oem licences
  54. 54. counterfeiting
  55. 55. mishandling (reselling academic licences) </li></ul><li>Prevention </li><ul><li>Registration and registration keys
  56. 56. Labelling (particularly holograms
  57. 57. Legal action </li></ul></ul>
  58. 58. Software Licence Agreement <ul><li>Copyright
  59. 59. Levels and types of service
  60. 60. Rights to fixes and upgrades </li></ul>
  61. 61. Software Licence Agreement <ul><li>Product </li><ul><li>Meets published expectations
  62. 62. Meets customer needs
  63. 63. Meets competitive features. </li></ul></ul>
  64. 64. Place <ul><li>Distribution channels
  65. 65. Access to the right customers
  66. 66. Equity and commercial efficiency in pricing structures
  67. 67. Ability of reseller to support the product in a given channel.
  68. 68. Pricing
  69. 69. Cost Pulse
  70. 70. What the market will bear – consumer based. </li></ul>
  71. 71. Promotion
  72. 72. Social and Ethical Issues in Case Studies <ul><li>Y2K
  73. 73. Computer Viruses
  74. 74. Mission Critical Software.
  75. 75. Software in Consumer Goods. </li></ul>
  76. 76. Development Approaches
  77. 77. Software Development Cycle <ul><li>Definition
  78. 78. Planning & Design
  79. 79. Implementation
  80. 80. Testing and Evaluation
  81. 81. Maintenance </li></ul>
  82. 82. Methodology Choice base on <ul><li>Size of product (cost)
  83. 83. Nature of product (mission critical)
  84. 84. Skills of development personnel
  85. 85. Detail of Requirements
  86. 86. Funds available. </li></ul>
  87. 87. Structured Approach <ul><li>Often called Waterfall Method.
  88. 88. Each stage completed before proceeding to the next stage.
  89. 89. Suited to projects with well known requirements </li><ul><li>However, you don't always know what you know
  90. 90. Assumes you can create a complete set of specifications prior to commencement. </li></ul><li>Problems created at the design stage are the hardest and most expensive to fix. </li><ul><li>Problems are more difficult to fix when they are discovered at later stages. </li></ul></ul>
  91. 91. Prototyping <ul><li>Circular approach to development involving end users.
  92. 92. Requirements collected in an evolutionary fashion.
  93. 93. Concept Prototyping - “Proof of Concept” </li><ul><li>Product redeveloped from scratch after the prototype phase.
  94. 94. May be more than one prototype
  95. 95. Used for needs definition and identification of project and technical risks.
  96. 96. May also test effectiveness of different technologies or approaches.
  97. 97. may be considered experimental or exploratory </li></ul><li>Evolutionary Prototyping </li><ul><li>Successive generation emerge into a final product.
  98. 98. Can carry on into the maintenance and enhancement process.
  99. 99. Support staff are constantly gathering new needs and requirements </li></ul></ul>
  100. 100. RAD <ul><li>Rapid Application Development </li><ul><li>Compresses the time for Software Development
  101. 101. Reduces the delays of a planned development approach.
  102. 102. Use 80:20 rule – Try and meet major requirements.
  103. 103. May reduce quality of product –
  104. 104. poor software,
  105. 105. requirements
  106. 106. lack of integration
  107. 107. difficult maintenance environment. </li></ul></ul>
  108. 108. JAD – Joint Application Development. <ul><li>Enabled by the use of fourth and fifth generation languages. </li><ul><li>“ Visual dimension”
  109. 109. OO programs
  110. 110. High degrees of reusability </li></ul><li>Requires close team work. </li><ul><li>between developers
  111. 111. with end-users
  112. 112. Setting up continuous feedback
  113. 113. Multiskilled development teams </li></ul></ul>
  114. 114. JAD <ul><li>Best in </li><ul><li>Stand alone environments
  115. 115. Performance or system none critical
  116. 116. Not good for mission critical systems.
  117. 117. Finds interfacing difficult. </li></ul><li>May be combined with prototyping. </li><ul><li>Prototypes are used to further understand user and system requirements </li></ul></ul><ul><li>Ad vantages </li><ul><li>Buying modules.
  118. 118. Reduced coding
  119. 119. Heavy use of Case and 4/5gl.
  120. 120. Reduced time and cost </li></ul><li>Disadvantages </li><ul><li>May require more software purchases.
  121. 121. Inefficiencies in performance and maintenance </li></ul></ul>May sacrifice functionality and create licensing and interfacing issues.
  122. 122. End-user Development <ul><li>Using </li><ul><li>Wizards
  123. 123. Code Generating Devices
  124. 124. Business Intelligence Tools </li></ul><li>Advantages of constant development
  125. 125. Disadvantage – poor performance and high maintenance
  126. 126. Often Involves the use of packages. </li></ul>
  127. 127. Design Specifications <ul><li>Developer </li><ul><li>Data Types
  128. 128. Algorithms
  129. 129. Variables
  130. 130. Design Approach
  131. 131. System Models
  132. 132. Documentation </li></ul></ul><ul><li>User </li><ul><li>Screens
  133. 133. Messages
  134. 134. Icons
  135. 135. Displaying Data & data formats
  136. 136. Ergonomics
  137. 137. Technical compatability
  138. 138. Relevance to organisation
  139. 139. Social / Ethical / Legal issues </li></ul></ul>
  140. 140. Design Process <ul><li>Communications </li><ul><li>Meetings
  141. 141. Interviews
  142. 142. Questionnaires / surveys
  143. 143. Auditability </li><ul><li>Phone calls, emails, memos </li></ul></ul></ul><ul><li>Planning </li><ul><li>Design Architecture
  144. 144. Design Specifications
  145. 145. Contractual or business unit responsibilities </li></ul></ul>
  146. 146. System Flow Charts <ul><li>Describes the logic flow of the software </li><ul><li>Architectural </li><ul><li>Components
  147. 147. Inputs and outputs or interfaces
  148. 148. Technologies </li></ul><li>This is often done at many levels </li><ul><li>System
  149. 149. Module </li></ul></ul></ul>
  150. 150. System Flow Charts Paper Document Decision point Process Manual Operation Online Input Storage Online display http://dia-installer.de/index_en.html
  151. 151. System Flow Charts <ul><li>Start and end symbols </li><ul><li>Represented as lozenges, ovals or rounded rectangles, usually containing the word &quot;Start&quot; or &quot;End&quot;, or another phrase signaling the start or end of a process, such as &quot;submit enquiry&quot; or &quot;receive product&quot;. </li></ul><li>Arrows </li><ul><li>Showing what's called &quot; flow of control &quot; in computer science. An arrow coming from one symbol and ending at another symbol represents that control passes to the symbol the arrow points to. </li></ul><li>Processing steps </li><ul><li>Represented as rectangles. Examples: &quot;Add 1 to X&quot;; &quot;replace identified part&quot;; &quot;save changes&quot; or similar. </li></ul><li>Input/Output </li><ul><li>Represented as a parallelogram . Examples: Get X from the user; display X. </li></ul><li>Conditional or decision </li><ul><li>Represented as a diamond ( rhombus ). These typically contain a Yes/No question or True/False test </li></ul></ul>
  152. 152. Data Flow Diagrams Process Notations (actions on the data) Datastore Notations (Data Respoisitories) <ul><li>Files
  153. 153. Disks
  154. 154. Paper </li></ul>Dataflow Notations (label indicates nature of data) http://www.smartdraw.com/tutorials/software/dfd/tutorial_01.htm http://www.agilemodeling.com/artifacts/dataFlowDiagram.htm
  155. 155. Data Flow Diagrams <ul><li>Source – Data flowing FROM outside system
  156. 156. Sink – Data flowing TO outside system
  157. 157. Normally done in levels </li><ul><li>Top level is called a context diagram
  158. 158. Starting at system architecture
  159. 159. Going down in increasing detail
  160. 160. Until you get to pseudo code </li></ul><li>May be integrated with </li><ul><li>Data Dictionary
  161. 161. Case Tool & Code Generators (or Data Definition Generators) </li></ul></ul>
  162. 162. Structure Diagrams <ul><li>Rectangles </li><ul><li>Tasks or Processes </li></ul><li>Lines </li><ul><li>Call lines or control lines </li></ul><li>Circular Arrow </li><ul><li>Repetition </li></ul><li>Circle with Arrow </li><ul><li>Open – parameter
  163. 163. Close - control parameter or flag </li></ul></ul><ul><li>Purpose </li><ul><li>Model the hierarchy of a process
  164. 164. Takes the place of pseudo code </li></ul><li>Shows </li><ul><li>top down design
  165. 165. Is the basis for </li><ul><li>code design
  166. 166. maintenance </li></ul></ul><li>Can be reverse engineered from source by case tools
  167. 167. I have never seen this used </li></ul>
  168. 168. Input – Process – Output IPO Diagrams <ul><li>Can be done as </li><ul><li>Table
  169. 169. Process </li></ul></ul>
  170. 170. Input – Process – Output IPO Diagrams <ul><li>Can be done as </li><ul><li>Table
  171. 171. Process Diagram </li></ul><li>They recommend three columns </li></ul>Input Process Output Project Requirements Thinking Struggling Coding Hating Finishing Complete Project
  172. 172. Data Dictionary <ul><li>The central repository for data
  173. 173. Normally part of an entity relationship (ER) diagram (SQL)
  174. 174. May also include </li><ul><li>Naming conventions
  175. 175. Definitions
  176. 176. Business process documentation </li></ul><li>Normally managed in Database or case tool </li></ul><ul><li>Typical Fields </li><ul><li>Identifier
  177. 177. Data Type
  178. 178. Length (or other technical descriptions)
  179. 179. Scope
  180. 180. Format
  181. 181. Business Definition
  182. 182. Change Log </li></ul></ul>
  183. 183. Screen Designs & Concept Prototype <ul><li>User view of the application
  184. 184. Can be used to define or clarify the business rules
  185. 185. Should be independent of the underlying programs
  186. 186. Often done using screen painters or designers </li></ul><ul><li>Issues </li><ul><li>Layout
  187. 187. Whitespace
  188. 188. Fonts
  189. 189. Colour and Image
  190. 190. Icons are consistent and obvious
  191. 191. Proportions </li><ul><li>Use cubes
  192. 192. Use Golden Rectangles </li></ul></ul></ul>
  193. 193. Principles of Screen Design <ul><li>Focus on the message </li><ul><li>Don't include anything just because it's possible.
  194. 194. Select all elements based on how well they support the message.
  195. 195. Don't include elements that will distract from the main point of the screen. </li></ul></ul>
  196. 196. Principles of Screen Design <ul><li>Keep the design simple </li><ul><li>Students will try to connect all the elements to the message of the screen. </li></ul></ul>
  197. 197. Principles of Screen Design <ul><li>Provide an organization for the screen </li><ul><li>Our eyes and brain work to impose an order to the screen.
  198. 198. Create that order. </li></ul></ul>
  199. 199. Principles of Screen Design <ul><li>Provide a path for the eye to follow </li><ul><li>Eye-scan moves from upper left to lower right. </li></ul></ul>
  200. 200. Principles of Screen Design <ul><li>Direct attention to the important part of the screen </li><ul><li>Use color contrast </li></ul></ul>
  201. 201. Principles of Screen Design <ul><li>Direct attention to the important part of the screen </li><ul><li>Use color contrast
  202. 202. Use graphic vectors </li></ul></ul>
  203. 203. Principles of Screen Design <ul><li>Direct attention to the important part of the screen </li><ul><li>Use color contrast
  204. 204. Use graphic vectors </li></ul></ul>
  205. 205. Principles of Screen Design <ul><li>Keep the screen consistent </li><ul><li>Once the screen organization is set, keep it the same from screen to screen.
  206. 206. Frees brain up to focus on parts that change—which should be the content of the screen. </li></ul></ul>
  207. 207. Principles of Screen Design <ul><li>Avoid using too much motion
  208. 208. No focus to the page
  209. 209. User can’t tell what is important </li></ul>
  210. 210. Principles of Screen Design <ul><li>Make the screen interesting </li><ul><li>Use the &quot;Rule of Thirds&quot; to divide the screen space in interesting ways. </li></ul></ul>
  211. 211. Principles of Screen Design <ul><li>The intersection of the lines are the “points of interest” </li></ul>
  212. 212. StoryBoards <ul><li>Low end is screen flow hierarchy
  213. 213. High end –completely painted screens
  214. 214. Normally this will be handled by the screen builder
  215. 215. Can be complex and dynamic in game situations </li></ul>
  216. 216. Defining and understanding the problem
  217. 217. Issues <ul><li>Correctly understanding the problem.
  218. 218. Selecting correct technology.
  219. 219. Selecting a solutiuon that meets needs and budget.
  220. 220. Dealing with changing and emerging needs
  221. 221. Adopting an appropriate development and release strategy.
  222. 222. Not overtaxing </li></ul>
  223. 223. Planning and Designing Software Solutions
  224. 224. Algorithm Design <ul><li>An approach to the logic flow of a procedure </li><ul><li>Search
  225. 225. Sort
  226. 226. Implement Logic
  227. 227. Implement Function (Factorial) </li></ul></ul>
  228. 228. Search Algorithms <ul><li>Search </li><ul><li>Find a specified data element in a list
  229. 229. Is the list sorted?
  230. 230. Is the item unique? </li></ul><li>Implementation </li><ul><li>Normally done using lists
  231. 231. Arrays </li></ul></ul><ul><li>Sequential (linear) Search </li><ul><li>Unsorted or sorted list
  232. 232. Search from start to end </li></ul><li>Binary Search </li><ul><li>Assumes a sorted list
  233. 233. Half the list
  234. 234. Discard the half where the data does not exist </li></ul></ul>
  235. 235. Ordering (Sorting) Algorithms <ul><li>Considerations </li><ul><li>Is the list already sorted
  236. 236. Are there duplicates </li></ul><li>Selection </li><ul><li>Unsorted list
  237. 237. Find least element and swap to start
  238. 238. Considered swapped items </li></ul></ul><ul><li>Insertion </li><ul><li>Assumes an ordered list
  239. 239. Search until place found
  240. 240. Insert </li></ul><li>Bubble </li><ul><li>Move down the list swapping unsorted items
  241. 241. Finish when no items to swap </li></ul></ul>
  242. 242. Processing Strings Returns, as long, length of string Len(string) A substring of <length> characters from a string Mid$(string, start[, length]) A substring of <length> characters from the start (left side) or end (right) of a string. Left$(string, length) Right$(string, length) Converts to upper/lower case UCase$(string) LCase$ (string) Returns, as long, starting position of <string2> in <string1> from position <start> ignoring case if <compare> = 0. Returns 0 if string1 does not occur. InStr([start,] string1, string2 [, compare]) InStrRev([start,] string1, string2 [, compare]) Returns a string containing a repeating character string of the length specified. Split(number, character) Space$(number) Reverse Character Order StrReverse$(string)
  243. 243. Processing Strings Removes leading (LTrim), trailing (RTrim) spaces, or both (Trim) LTrim(string) RTrim(string) Trim(string) Returns integer that represents the first character Asc(string) Returns character using specified ASCII code Chr$(charcode as integer{0..255)) Returns true if string looks like number IsNumeric(string) LCase$ (string) Concatenates Strings <string> & <string> Returns a number if string characters are valid numeric Val(string) String Array Functions Split, Join, Filter
  244. 244. Processing Strings <ul><li>Replace$( expression , find , replace [, start [, count [, compare ]]] ) </li><ul><li><expression> string to search.
  245. 245. <find> Substring being searched for.
  246. 246. <replace> Required. Replacement substring.
  247. 247. start where in < expression> the search is to begin.
  248. 248. <count> number of substring substitutions to perform. The default value is make all possible substitutions.
  249. 249. <compare> 0 = case sensitive, 1 = case-insensitive </li></ul></ul>
  250. 250. Data Structures and Arrays <ul><li>Variable arrays </li><ul><li>A collection of variables if the same type referenced by an index. </li></ul><li>Control arrays? </li><ul><li>Controls with the same type and name that referenced by an index. </li></ul><li>User Defined arrays? </li><ul><li>Collection of variables with the same user defined type referenced by an index </li></ul><li>Records </li><ul><li>Also called Data Structures
  251. 251. Defined with the “Type” Statement
  252. 252. A collection of native types, strings or user defined types
  253. 253. Represents a real world collection of data </li></ul></ul>
  254. 254. Array Handing <ul><li>There are many ways to declare an array. </li><ul><li>Dim sArray() as Integer
  255. 255. Dim sArray(10) as String
  256. 256. Dim sArray(1 to 10) as String
  257. 257. Dim sArray(kMaxSize) as String </li></ul><li>Array Functions </li><ul><li>UBound ﴾ array ﴿ upper bound of array
  258. 258. LBount ﴾ array ﴿ lower bound of array
  259. 259. ReDim array ﴾ <integer expression> ﴿ resizes array and destroys existing elements
  260. 260. ReDim Preserves array ﴾ <integer expression> ﴿ resizes array and preserves existing elements </li></ul></ul>
  261. 261. Multi Dimensional Arrays <ul><li>Declare Multiple Dimensions </li><ul><li>2 is a square or table
  262. 262. 3 is a cube or 3D table
  263. 263. Very memory hungry </li></ul><li>Dim array(3, 1 To 12, 2 To 6) As String </li><ul><li>the first dimension has four elements indexed 0 to 3
  264. 264. the second dimension has 12 elements indexed 1 to 12,
  265. 265. the third dimension has five elements indexed 2 to 6) </li></ul><li>Print array(0, 11, 5) </li></ul>
  266. 266. Data Structures / Types <ul><li>Declare a new type </li></ul>Public Type MY_ARRAY_TYPE lValue as Long sTemp as String iCount as Integer End Type <ul><li>Use Type </li></ul>Dim uArray() as MY_ARRAY_TYPE <ul><li>Variant data type </li></ul>
  267. 267. Data Types – Visual Basic <ul><li>Numeric, Integers </li><ul><li>Byte - Holds a number from 0 to 255
  268. 268. Integer - Holds a number from -32768 to 32767 
  269. 269. Long - Holds a number from -2,147,483,648 to 2,147,483,647 </li></ul><li>Numeric, Decimal </li><ul><li>Single - Up to 7 digits, can hold exponents up to +-38
  270. 270. Double - Up to 14 digits, can hold exponents up to +-300
  271. 271. Don't use Variants unless you have to </li></ul><li>When you reference a variable in your program that doesn't exist, Visual Basic will create the variable for you. </li></ul><ul><li>Other </li><ul><li>Boolean - Is either True or False
  272. 272. Currency - Holds a number between +-922,337,203,685,477.5807
  273. 273. String - Holds text, such as a word or sentence
  274. 274. Date - Holds a date from Jan 1, 100 to Dec 31, 9999 </li></ul><li>Variant </li><ul><li>a variable that can hold anything. Visual Basic will make an educated guess
  275. 275. Variants are extremely slow, since and don't work well with many built-in functions. </li></ul></ul>
  276. 276. <ul><li>The For Each/Next Loop </li></ul>For Each ElementVariable In ArrayName ' process the current ElementVariable Next <ul><ul><li>The ElementVariable must be defined with the Variant datatype </li></ul></ul>
  277. 277. Convert Data <ul><li>CBool takes any valid expression and converts it to Boolean. Values of zero convert to False, all others to True. If the expression is String, it must numeris or &quot;True&quot; / &quot;False&quot;
  278. 278. CByte converts an expression to a Byte data type. The value is rounded, must not exceed 255, must not be negative.
  279. 279. CCur converts an expression to a Currency data type.
  280. 280. CDate converts a numeric or string expression to a Date data type.
  281. 281. CDbl converts an expression to a Double data type. The expression must be a number (or string numeric) within range.
  282. 282. CDec converts an expression to a Decimal data type. The expression must be a number (or string numeric) within range. </li></ul>
  283. 283. Convert Data <ul><li>CInt converts an expression to an Integer data type. The expression must be a number (or string numeric) within range. Values are rounded.
  284. 284. CLng converts an expression to a Long data type. The expression must be a number (or string numeric) within range. Values are rounded.
  285. 285. CStr converts a variable of any datatype to a string. </li><ul><li>If the argument is a Date, the &quot;short format&quot; date (m/d/yy) is returned.
  286. 286. If the argument is Boolean, the string &quot;True&quot; or &quot;False&quot; is returned.
  287. 287. If the argument is a number, a string representation of the number is returned. </li></ul><li>The Val function is a generic (and less efficient) way to convert a string to a number. </li><ul><li>returns a Double data type.
  288. 288. It strips all blanks and converts the remaining characters to a number.
  289. 289. It recognizes a sign, decimal point as part of a number;
  290. 290. it will stop scanning the string at the first character that cannot be considered part of a number
  291. 291. . If the string cannot be converted to a number, 0 will be returned. </li></ul><li>The Str function is an older function (dating back to earlier versions of BASIC) that converts a number to a string. </li></ul>
  292. 292. Control Arrays <ul><li>Add Control Elements </li><ul><li>With the same name
  293. 293. With unique integer entries in the “index” property
  294. 294. Can do this with copy / paste </li></ul><li>Using Control Elements </li><ul><li>Event Handler has a paramter called “Index” being the </li><ul><li>index of the control array element
  295. 295. That raised the event </li></ul></ul></ul>
  296. 296. File Types <ul><li>Sequential file
  297. 297. Random file :
  298. 298. Binary file :
  299. 299. Record </li><ul><li>The data type being read </li><ul><li>Native
  300. 300. String
  301. 301. Complex using Type statement </li></ul></ul></ul><ul><li>Access Mode </li><ul><li>Input: sequential input; records read sequentially starting from beginning.
  302. 302. Output: sequential output; records written sequentially from beginning; </li><ul><li>file does not exist, it is created;
  303. 303. file exist, it is overwritten. </li></ul><li>Random: open for random read and write. </li><ul><li>Default Mode </li></ul><li>Append: sequential output to the end of an existing file; </li><ul><li>if the file does not exist it is created </li></ul><li>Binary: open for binary read and write; access is at byte level </li></ul></ul>
  304. 304. File Commands <ul><li>Open / Close </li><ul><li>Freefile – function returns integer of next available file handle number
  305. 305. Open &quot;Filename&quot; [For Mode] [AccessRestriction] [LockType] As #FileNumber [Len = reclength]
  306. 306. Close #FileNumber1 [, #FileNumber2] ... </li></ul><li>Sequential </li><ul><li>Write #FileNumber, OutputList ‘Data with quotes
  307. 307. Print #FileNumber, OutputList ‘Data without quotes
  308. 308. Input #FileNumber, VariableList
  309. 309. Line Input #FileNumber, StringVariable </li></ul></ul><ul><li>Random </li><ul><li>Put #Filenumber, [RecordNumber], Variable
  310. 310. Get #FileNumber, [RecordNumber], Variable </li></ul><li>Binary </li><ul><li>Get [#] filenumber , [ byte position ], varname
  311. 311. Put [#] filenumber , [ byte position ], varname
  312. 312. varname = Input( number , [#] filenumber ) </li></ul></ul>
  313. 313. File Functions <ul><li>EOF(#FileHandle) </li><ul><li>Returns true if EOF reached </li></ul><li>MkDir </li><ul><li>Creates a directory </li></ul><li>RmDir </li><ul><li>Removes a directory </li></ul><li>ChDrive </li></ul><ul><li>ChDir
  314. 314. Kill </li><ul><li>Deletes file </li></ul><li>Name </li><ul><li>Renames File </li></ul><li>FileCopy </li><ul><li>Copy File </li></ul></ul>
  315. 315. File Functions <ul><li>FileDateTime </li><ul><li>Returns a date/time value indicating the date and time that a file was created or last modified. </li></ul><li>GetAttr </li><ul><li>Returns an integer representing the attributes of a file, directory, or folder </li></ul><li>SetAttr </li><ul><li>Statement that lets you specify the attributes for a file </li></ul><li>CurDir </li><ul><li>Returns a string that indicates the current path for a specified disk drive. </li></ul></ul><ul><li>Dir$ (or DIr) </li><ul><li>Returns a string that indicates a file or directory matching specified conditions If the function is called again and no arguments are given, then it returns the second file name for the given pathname and attributes, and so on. </li></ul><li>FileLen </li><ul><li>Returns a Long specifying the length of a file in bytes un opened or before opened </li></ul><li>LOF </li><ul><li>Returns a Long representing the size, in bytes, of a file opened using the Open statement. </li></ul></ul>
  316. 316. Test Data <ul><li>Unit testing
  317. 317. Based on algorithm design
  318. 318. Used to ensure modules meet specifications
  319. 319. This is where you do boundary testing </li><ul><li>Identify the limits of data at each decision point
  320. 320. Test for those limits </li></ul></ul>
  321. 321. Documentation <ul><li>Document the Purpose of each function or loop
  322. 322. Document Boundary Conditions where applicable
  323. 323. Document the purpose and use of all types and data structures.
  324. 324. Document the logic reason for a test, selection or choice.
  325. 325. Use descriptive names for variables
  326. 326. Determine naming conventions and stick to them
  327. 327. Indent all your code </li></ul>
  328. 328. Documentation <ul><li>IPO Input Process Output
  329. 329. Structure Diagrams
  330. 330. Data Flow Diagram
  331. 331. Data Dictionary </li></ul><ul><li>Gantt Charts
  332. 332. Screen flow or storyboard </li></ul>
  333. 333. Customization of Existing Solutions <ul><li>Is the code open and documented
  334. 334. Are the data structures published and available?
  335. 335. What language was the original code written in?
  336. 336. Does it have interfaces for customization?
  337. 337. Are internal functions documented and available?
  338. 338. Are the file structures published and usable? </li></ul>
  339. 339. Language Selection <ul><li>Logic Mode </li><ul><li>Event Driven
  340. 340. Sequential </li></ul><li>Features available </li><ul><li>String handling
  341. 341. File types
  342. 342. Database access </li></ul><li>Hardware Considerations
  343. 343. GUI Requirements </li><ul><li>Built-in
  344. 344. 3 rd Party Package
  345. 345. GUI standards (Windows, Xwindows, Motif, X/OS) </li></ul><li>Experience of Developers </li></ul><ul><li>Event or process driven </li><ul><li>Event Visual ***, Java
  346. 346. Process C, C++, Pascal </li></ul></ul>
  347. 347. Interface Design <ul><li>For each of the following items identify </li><ul><li>Major Function
  348. 348. Major Attributes (Properties)
  349. 349. Major Events
  350. 350. Major Methods </li></ul></ul>
  351. 351. <ul><li>Menu
  352. 352. Button
  353. 353. Toolbar
  354. 354. Textbox
  355. 355. Listbox
  356. 356. Combo Box
  357. 357. CheckBox
  358. 358. Radio Button </li></ul><ul><li>Scroll Bar
  359. 359. Grid
  360. 360. Label
  361. 361. Image Box
  362. 362. Timer
  363. 363. Dialog
  364. 364. Message Box
  365. 365. Form
  366. 366. Frame </li></ul>
  367. 367. Meta Languages <ul><li>BNF
  368. 368. EBNF </li><ul><li>Used in most syntax charts </li></ul><li>Railroad Diagram
  369. 369. Pseudo Code </li></ul><ul><li>Pseudo Code </li><ul><li>Make it up as you go
  370. 370. Include all actions you would with real code </li></ul></ul>
  371. 371. Interpreters <ul><li>Each line is interpreted and executed
  372. 372. Normally allows much more flexible typing and variable handling </li><ul><li>Clists and &&&&persands </li></ul></ul>
  373. 373. Compilation Process <ul><li>Stages from Source to Executable
  374. 374. Compilation: source code ==> relocatable object code (binaries)
  375. 375. Linking: many relocatable binaries (modules plus libraries) ==> one relocatable binary (with all external references satisfied)
  376. 376. Loading: relocatable ==> absolute binary (with all code and data references bound to the addresses occupied in memory)
  377. 377. Execution: control is transferred to the first instruction of the program
  378. 378. At compile time (CT), absolute addresses of variables and statement labels are not known. </li></ul>
  379. 379. Compilation Process <ul><li>Phases of the Compilation Process
  380. 380. Lexical analysis (scanning): the source text is broken into tokens.
  381. 381. Syntactic analysis (parsing): </li><ul><li>tokens are combined to form syntactic structures, typically represented by a parse tree </li></ul><li>Semantic analysis: intermediate code is generated for each syntactic structure. </li><ul><li>Type checking is performed in this phase. Machine-independent optimization: intermediate code is optimized to improve efficiency. </li></ul><li>Code generation: intermediate code is translated to relocatable object code for the target machine.
  382. 382. Machine-dependent optimization: the machine code is optimized </li></ul>
  383. 383. Lexical Analysis <ul><li>Find each individual code unit and assign a token </li><ul><li>Reserve words
  384. 384. Constants
  385. 385. Function Names
  386. 386. Variables
  387. 387. Types </li></ul><li>Built into a table of symbols </li><ul><li>Sometimes things you think of as reserve words are functions in other libraries </li></ul></ul>
  388. 388. Syntactical Analysis <ul><li>Follow syntax definition of language
  389. 389. Usually done using truth tables
  390. 390. The output is a parse tree </li><ul><li>This is just a structure that is convenient to read
  391. 391. Read leaves left to right </li></ul></ul>Sentence Noun Phrase Verb Phrase Verb Noun Phrase the tree John hit
  392. 392. Code Generation <ul><li>Code is generated from templates and fragments
  393. 393. By reading tree left to right
  394. 394. Generates object code </li><ul><li>Byte Code (Java)
  395. 395. Machine code – with relative addressing </li></ul><li>Interpreter this is the point of execution </li></ul>
  396. 396. Role of the CPU in software design
  397. 398. CPU Architecture Cache CoProcessor (numeric) Register A Register B ALU Accumulator Instruction Register Control Unit Data Bus Program Counter
  398. 399. Role of the CPU <ul><li>Machine Code </li></ul><ul><ul><li>These are the CPU instructions - Firmware is the code settings for the cpu
  399. 400. Stored at memory address held by program counter. </li></ul></ul><ul><li>Microcode is instructions in firmware </li></ul><ul><ul><li>describes how data and instructions are moved around the cpu
  400. 401. when they are executed in the ALU </li></ul></ul><ul><li>Registers </li></ul><ul><ul><li>Used as local variables for the cpu programs </li></ul></ul><ul><ul><ul><li>General Purpose – hold local data
  401. 402. Instruction Register – Holds the CPU instruction
  402. 403. Program Counter – Holds the address of the next instruction
  403. 404. Accumulator – output of instruction execution eg add. </li></ul></ul></ul>
  404. 405. Role of the CPU <ul><li>Flag </li><ul><li>Stores some status after an operation – can be tested </li><ul><li>nz- non zero
  405. 406. c - carry </li></ul></ul><li>Bus </li><ul><li>Parallel communications lines to move data to and from memory and attached devices and the CPU </li></ul><li>Interrupts </li><ul><li>Used to drive communications between the CPU and bus attached devices </li></ul><li>Clock </li><ul><li>This is circuits that ensure all other circuits execute at the same time </li></ul></ul>
  406. 407. Assembler <ul><li>Assembler Code </li></ul><ul><ul><li>a one to one mapping of microcode instructions.
  407. 408. Moves data in and out of registers </li></ul></ul>
  408. 409. Cycle <ul><li>Fetch Instruction
  409. 410. Increment Program counter
  410. 411. Setup Execution Circuits
  411. 412. Move data from memory to Register
  412. 413. Execute Instruction and set flags
  413. 414. Restart clock </li></ul>
  414. 415. Parts of CPU <ul><li>ALU – the circuits that execute instructions
  415. 416. Registers – working variables for the CPU
  416. 417. Numeric Co-processor – floating point ALU
  417. 418. Cache – Fast access copy of small section of memory
  418. 419. Stack – pointer or local memory to store current registers on change of context </li></ul>
  419. 420. Memory Map 4 gig Non Pageable Paging Disk Private Memory Space Private Memory Space Private Memory Space Private Memory Space Private Memory Space Private Memory Space Private Memory Space Private Memory Space Private Memory Space Private Memory Space ProcessSchedulers FileHandlers DeviceDrivers Interrupts BIOS ScreenManagers PrintServices Process Communications Networking
  420. 421. Operating System <ul><li>Manages I/O devices
  421. 422. Provides Screen interfaces
  422. 423. Provides services </li><ul><li>Network
  423. 424. Printing
  424. 425. Security </li></ul></ul><ul><li>Scheduling and task management </li><ul><li>Process initiation
  425. 426. Resource sharing
  426. 427. Multi-threading
  427. 428. Context Swapping </li></ul></ul>
  428. 429. BIOS <ul><li>Basic Input Output System
  429. 430. Bootstraps the system
  430. 431. Initialises all the internal circuitry </li></ul><ul><li>Finds the disk bootstrap
  431. 432. Loads bootstrap and passes control </li></ul>
  432. 433. Drivers <ul><li>A handler for some device
  433. 434. This is a process in the operating system
  434. 435. Must meet operating system specifications </li></ul><ul><li>Normally provides a programming interface </li><ul><li>Through the operating system
  435. 436. Direct systems </li></ul></ul>
  436. 437. Program Structure
  437. 438. Structured Programming <ul><li>Each subroutine performs one logical task or process. </li></ul><ul><ul><li>Often reflected in the name </li></ul></ul><ul><li>Structure diagrams reflect a top down program flow
  438. 439. Focus on clarity and reusability.
  439. 440. Stubs are standalone routines that can be passed from one project to another
  440. 441. Unit testing is testing the functionality of a subroutine.
  441. 442. Code elegance </li></ul><ul><ul><li>Efficiency of processing or coding
  442. 443. Clarity of Logic
  443. 444. Often reflective of properties of underlying data. </li></ul></ul>
  444. 445. Code Maintainability. <ul><li>Clear documentation
  445. 446. Appropriate identifier names
  446. 447. Indenting
  447. 448. Coding constants as constant identifiers </li></ul>
  448. 449. Pointers In Code <ul><li>Arrays are pointer implementations
  449. 450. These are memory addresses
  450. 451. Memory areas mapped by data type statement </li></ul><ul><li>Chaining pointers
  451. 452. Pointers contained in the are of memory
  452. 453. Can be used to chain through memory </li></ul>
  453. 454. Error Detection <ul><li>Syntax Errors </li></ul><ul><ul><li>Compiler Detected
  454. 455. Run Time Detected – syntax error causes an incorrect coding option
  455. 456. Normally checked at IDE level </li></ul></ul><ul><li>Logic Errors </li></ul><ul><ul><li>Loops
  456. 457. overflow </li></ul></ul><ul><ul><ul><li>value bigger than variable can hold </li></ul></ul></ul><ul><ul><li>memory exception </li></ul></ul><ul><ul><ul><li>Access wrong part of memory </li></ul></ul></ul><ul><ul><li>divide by zero
  457. 458. subscript out of range for arrays </li></ul></ul><ul><li>RunTime Errors </li><ul><li>Disk errors
  458. 459. User error </li></ul></ul>
  459. 460. Error Detection <ul><li>Code Stubs </li><ul><li>stand-in subroutine </li></ul><li>Drivers </li><ul><li>Written to test or manage a subroutine </li></ul><li>Flags </li><ul><li>Used to record and investigate current state of the code. </li></ul><li>Debug Statements </li><ul><li>Statements to system out or debug out that signpost the code execution
  460. 461. May have a debug flag or even a debug level </li></ul><li>Error Detection </li><ul><li>Peer Checking
  461. 462. Desk Checking </li><ul><li>normally calculate variables on iterations </li></ul><li>Unit testing – reviewing expected output </li></ul></ul><ul><li>Debugging </li><ul><li>Breakpoints
  462. 463. watching variables </li><ul><li>can reset variable contents dynamically </li></ul></ul><li>Program Tracing </li><ul><li>Normally subroutine call history </li><ul><li>examine the call stack </li></ul><li>May include parameters and or local variables </li></ul><li>Stepping </li><ul><li>step
  463. 464. strep over – do not show subroutine execution
  464. 465. step out – complete subroutines before stopping again </li></ul><li>Watch variables </li><ul><li>Record changes of value in a variable. </li></ul></ul>
  465. 466. Documentation <ul><li>Documentation
  466. 467. User
  467. 468. Installation Guide </li><ul><li>Installation
  468. 469. Hardware and Software Requirements
  469. 470. Installation Wizards
  470. 471. Error support </li></ul></ul><ul><li>User Manual </li><ul><li>How to
  471. 472. checklists
  472. 473. wizards
  473. 474. Procedures
  474. 475. Description of data elements
  475. 476. Context based or process based
  476. 477. Organised around topics </li></ul><li>Reference Manual </li><ul><li>Command and Function guide
  477. 478. Many include quick reference
  478. 479. Description of Data elements </li></ul></ul>
  479. 480. Tutorials <ul><li>Scenarios
  480. 481. Step by step walkthroughs
  481. 482. Examples
  482. 483. Samples and Sample Data
  483. 484. Normally split into </li></ul><ul><ul><li>Topics
  484. 485. Lessons </li></ul></ul>
  485. 486. Technical Documentation <ul><li>Often designed for technical support and maintenance personnel
  486. 487. Process Diary </li></ul><ul><ul><li>Never hears of this or seen it
  487. 488. Normally something like a change log </li></ul></ul><ul><ul><ul><li>System Design Changes
  488. 489. Data Structure changes
  489. 490. File structure changes </li></ul></ul></ul>
  490. 491. Source Code Documentation <ul><li>Inline Documentation in the code
  491. 492. Comments </li><ul><li>Should explain the purpose of the code, not the actual coded logic
  492. 493. Summarise
  493. 494. Clear and Concise but not cryptic </li></ul></ul><ul><li>Intrinsic </li></ul><ul><ul><li>Variable and Procedure names. </li><ul><li>Should follow naming conventions including </li><ul><li>use of letter
  494. 495. capitalisation
  495. 496. special characters. </li></ul><li>Often prefixes reflect data types
  496. 497. Describe purpose of identifier </li></ul><li>Indentation
  497. 498. Readability of code from setting out </li></ul></ul>
  498. 499. Source Code Documentation <ul><li>Specifications </li><ul><li>Procedure design </li><ul><li>Algorithm Specification
  499. 500. Boundary conditions </li></ul><li>Data Dictionary
  500. 501. Process Flow
  501. 502. File Formats
  502. 503. Methods/Procedures </li></ul></ul>
  503. 504. Hardware Environment <ul><li>Minimum specifications </li></ul><ul><ul><li>normally will also include operating system </li></ul></ul><ul><li>Special Purpose hardware </li></ul><ul><ul><li>driver requirements </li></ul></ul>
  504. 505. Testing and Evaluation <ul><li>Alpha testing </li></ul><ul><ul><li>Testing complete solution by technical users </li></ul></ul><ul><li>Beta Testing </li></ul><ul><ul><li>Testing complete solution by selected group of users </li></ul></ul><ul><li>Both require problem ticketing and tracking </li></ul>
  505. 506. Problem Ticketing and Tracking <ul><li>Central place for reporting and recording a problem </li><ul><li>Help Desk
  506. 507. Logging System </li></ul><li>Prioritisation of problem </li><ul><li>User identifies business impact
  507. 508. Analyst identifies business and technical importance
  508. 509. Analyst identifies if related to another problem. </li></ul></ul><ul><li>Assignment </li><ul><li>Problem is assigned to a suction team and given a time frame to fix </li></ul><li>Solution Development </li><ul><li>Recreate Problem
  509. 510. Explore Problem
  510. 511. Analyze and propose solution
  511. 512. Negotiate with or advise user </li></ul></ul>
  512. 513. Problem Ticketing and Tracking <ul><li>Solution Implementation </li><ul><li>Create implementation plan
  513. 514. Execute implementation
  514. 515. Undertake unit testing
  515. 516. Undertake system testing </li></ul><li>Solution Release </li><ul><li>When to put fix into the overall system
  516. 517. How to distribute to users </li><ul><li>urgent
  517. 518. standard distribution </li></ul></ul></ul>
  518. 519. Testing Levels <ul><li>Unit / Module </li></ul><ul><ul><li>Testing an individual block of code </li></ul></ul><ul><ul><ul><li>Write transactions </li></ul></ul></ul><ul><li>Program </li></ul><ul><ul><li>Testing a subsystem </li></ul></ul><ul><ul><ul><li>reading writing and recording transactions </li></ul></ul></ul><ul><li>System </li></ul><ul><ul><li>Testing whole system </li></ul></ul><ul><ul><ul><li>calculator </li></ul></ul></ul><ul><li>Regression </li></ul><ul><ul><li>Make sure existing functionality is unimpaired after changes </li></ul></ul>
  519. 520. Developing Test Plans <ul><li>Based on original requirements </li></ul><ul><ul><li>Each requirement becomes a design specification
  520. 521. Each specification has a number of features
  521. 522. Each feature has a number of technical requirements </li></ul></ul><ul><li>A test is developed to ensure each of these elements is complete and correct.
  522. 523. Objectives must be </li></ul><ul><ul><li>clear
  523. 524. unambiguous
  524. 525. specific
  525. 526. easy to answer </li></ul></ul>
  526. 527. Testing Styles <ul><li>White Box </li></ul><ul><ul><li>Test internals
  527. 528. Boundary Conditions
  528. 529. Breakpoints
  529. 530. Used for problem analysis </li></ul></ul><ul><li>Black Box </li></ul><ul><ul><li>Test input/output
  530. 531. Used for problem identification
  531. 532. Used for Regression testing </li></ul></ul>
  532. 533. System Level Testing <ul><li>Tests all aspects of the system
  533. 534. Hardware
  534. 535. Software / Operating System
  535. 536. System Maintenance procedures
  536. 537. Data Management (Files) ‏
  537. 538. Documentation
  538. 539. Training Procedures
  539. 540. Personnel and procedures </li></ul>
  540. 541. Test Data <ul><li>Live test Data </li><ul><li>Captured from operational System
  541. 542. Generated by hand
  542. 543. Generated by test harness
  543. 544. Generated by Case tools </li></ul><li>Stress Testing </li><ul><li>Testing with high volumes
  544. 545. Testing with large amounts of data
  545. 546. Testing with poor quality data (Known errors) ‏ </li></ul></ul>
  546. 547. Testing system Performance <ul><ul><li>Response Times </li><ul><li>Often system will deteriorate when a certain transaction rate is reached.
  547. 548. In Real time Programming – processing may not meet timing constraints </li></ul><li>Multi-user aspects </li><ul><li>May vary transaction mix
  548. 549. May create unknown transaction mix
  549. 550. User habits may create unexpected performance effects </li></ul><li>Mix of transaction types </li><ul><li>some transaction may lock resources
  550. 551. some transaction may tie-up resources for long periods of time </li></ul><li>Data Volumes </li></ul></ul>
  551. 552. Benchmarking <ul><li>Creating some kind of objective standard </li></ul><ul><ul><li>Volume processed per second
  552. 553. Transaction per second </li></ul></ul><ul><li>Identify standard hardware and software environment
  553. 554. Generally used by software vendors </li></ul><ul><ul><li>can often be either </li></ul></ul><ul><ul><ul><li>hard to interpret
  554. 555. misleading </li></ul></ul></ul><ul><li>May be done by industry groups or independent third parties </li></ul>
  555. 556. Quality Assurance <ul><li>Objective to minimise errors and improve the product functionality
  556. 557. This is a cost-benefit equation
  557. 558. Process Driven
  558. 559. Ensure there is traceability and auditability for each step
  559. 560. Dramatically increases the requirement for documentation and management overhead.
  560. 561. Constant reviews of errors and problems </li></ul><ul><ul><li>used to revamp development guidelines and procedures </li></ul></ul>
  561. 562. Testing Documentation <ul><li>Test requirements </li></ul><ul><ul><li>developed from specifications </li></ul></ul><ul><li>Test Plan </li></ul><ul><ul><li>How to Test
  562. 563. What to Test
  563. 564. How to interpret the test </li></ul></ul><ul><li>Test Data </li></ul><ul><ul><li>Driven by test plan
  564. 565. Test Boundary conditions
  565. 566. Often includes random bad data </li></ul></ul><ul><li>Test Results </li><ul><li>Should reflect test plan
  566. 567. Should clearly show what has been tested and what were the results </li></ul><li>Analysis and recommendations </li></ul>
  567. 568. Testing Results <ul><li>Demonstrate problems with system architecture or design
  568. 569. Demonstrate problems with original specifications </li></ul><ul><ul><li>Incompatible specifications
  569. 570. Technical unfeasible
  570. 571. Commercially unviable </li></ul></ul>
  571. 572. Maintenance <ul><li>Comes from </li></ul><ul><ul><li>Bug Fixes </li></ul></ul><ul><ul><ul><li>Often caused by changes </li></ul></ul></ul><ul><ul><li>New Requirements </li></ul></ul><ul><ul><ul><li>User requirements
  572. 573. Legislative changes
  573. 574. Architectural Changes
  574. 575. Changes to technical or Industry Standards </li></ul></ul></ul><ul><li>Changes to Interfaces
  575. 576. Changes to Architecture
  576. 577. Changes to Data Architecture </li></ul>
  577. 578. Maintenance <ul><li>Each change goes through the full system development lifecycle
  578. 579. Makes use of trouble ticketing and tracking system
  579. 580. Software Maintainability </li></ul>
  580. 581. Change Management <ul><li>Prioritisation of user requirements
  581. 582. Architectural and development analysis
  582. 583. Cost Benefit requirements </li></ul>
  583. 584. Upgrade Enhancements <ul><li>COTS integration requires all patches and fixes to be changed on each upgrade
  584. 585. System supported enhancements </li></ul><ul><ul><li>Defined interfaces </li></ul></ul><ul><li>Tricky Dicky enhancements </li></ul><ul><ul><li>Work arounds
  585. 586. very susceptible to changes </li></ul></ul>
  586. 587. Change Management <ul><li>Needs identification and Specification </li></ul><ul><ul><li>Identify functional requirements
  587. 588. Identify flow on changes
  588. 589. May require business Analyst </li></ul></ul><ul><ul><ul><li>specify new business process flow </li></ul></ul></ul><ul><li>Requires </li></ul><ul><ul><li>Structure Diagrams
  589. 590. Data Flow Diagrams </li></ul></ul><ul><li>Specify Changes </li></ul><ul><ul><li>Data Dictionary
  590. 591. Program Specifications
  591. 592. Flee Specifications </li></ul></ul><ul><li>Prototype Solution </li></ul><ul><ul><li>formally or informally specify new or change algorithms
  592. 593. Used to create testing programs </li></ul></ul>
  593. 594. Implementation <ul><li>Program Design
  594. 595. Unit Testing
  595. 596. Module Testing
  596. 597. Program Testing
  597. 598. Field Testing (Optional) ‏ </li></ul><ul><li>Updating system and user documentation
  598. 599. Input into system testing program
  599. 600. Schedule into change rollout program </li></ul>
  600. 601. Documentation <ul><li>Configuration Management </li></ul><ul><ul><li>monitoring and tracking </li></ul></ul><ul><ul><ul><li>code modules
  601. 602. source code
  602. 603. documentation and other assets
  603. 604. scripts
  604. 605. macros </li></ul></ul></ul><ul><li>Version Control </li><ul><li>ensure all code modules are at the same level.
  605. 606. Use the same specifications and data definitions </li></ul><li>Documentation Management </li><ul><li>Versioning
  606. 607. Distribution </li></ul></ul>
  607. 608. Case Tools <ul><li>May provide </li></ul><ul><ul><li>software repository
  608. 609. version control
  609. 610. change management
  610. 611. parallel development </li></ul></ul>
  611. 612. Implementation Methodologies
  612. 613. Direct Cut-Over <ul><li>Old system decommissioned and replaced at once.
  613. 614. Fallback difficult.
  614. 615. Requires immense testing prior to implementation.
  615. 616. Data conversion may be an issue </li></ul>
  616. 617. Parallel <ul><li>Both systems run together for a period of time
  617. 618. May be one live and one in test mode with the same inputs comparing results
  618. 619. Allows user to be trained on the new system.
  619. 620. Later the old system may be run as a fall back service.
  620. 621. Very high costs of implementation
  621. 622. Mission Critical approach.
  622. 623. May require maintenance activities on both systems </li><ul><li>Also allows for the transfer of maintenance from development to maintenance environment. </li></ul></ul>
  623. 624. Phased Cutover <ul><li>Gradual introduction of new system in parts.
  624. 625. May have cost and effort profiles similar to parallel runs. </li></ul>
  625. 626. Pilot <ul><li>New system is installed for a small number of users </li><ul><li>Lighthouse users – effectively do Beta testing.
  626. 627. Allows users to learn the new system from other pilot users. </li></ul></ul>
  627. 628. Current Trends in Software Development
  628. 629. Outsourcing <ul><li>Business outsources to software development, services or maintenance companies.
  629. 630. Specialised work is often outsourced to smaller boutique companies.
  630. 631. Purpose </li><ul><li>To allow organisation to focus on core business.
  631. 632. Prevent underutilisation of expensive technical resources and infrastructure .
  632. 633. Use more sophisticate development and support infrastructure.
  633. 634. May be to save time or money – not normal.
  634. 635. May be to solve temporary resourcing issues. </li></ul></ul>
  635. 636. Employment Trends <ul><li>Short term contracts
  636. 637. On the job training.
  637. 638. Lack or irrelevance of professional qualifications.
  638. 639. Shortage of skills
  639. 640. Constantly changing skills requirements </li></ul>
  640. 641. Networked Software <ul><li>Mainframe
  641. 642. PC
  642. 643. Distributed
  643. 644. Client Server
  644. 645. Web Applications </li></ul>
  645. 646. Languages <ul><li>Java
  646. 647. PhP
  647. 648. Perl
  648. 649. Python </li></ul>
  649. 650. Customisation of Off the Shelf packages <ul><li>Specialised packages for particular industries. </li><ul><li>Restaurant
  650. 651. Hospital </li></ul><li>Generic packages for particular functions </li><ul><li>SAP / Accounting
  651. 652. Business Intelligence </li></ul><li>Integration with other packages
  652. 653. Interface extensions
  653. 654. inefficiencies </li></ul><ul><li>Issues </li><ul><li>Cost
  654. 655. Integration
  655. 656. Ability to support
  656. 657. Business or function fit
  657. 658. Quality of support
  658. 659. Market penetration
  659. 660. Overly functional products – lead to business </li></ul></ul>
  660. 661. Linux and the free software movement <ul><li>Redhat
  661. 662. Lamp
  662. 663. Apache
  663. 664. Asterix
  664. 665. Source code integration </li></ul>
  665. 666. Case Tools <ul><li>Typical Functions </li><ul><li>System Modelling
  666. 667. Data Dictionary creation and management
  667. 668. Documentation
  668. 669. Automated testing
  669. 670. Software Versioning (mercury)
  670. 671. Production of Source Code Templates </li></ul></ul><ul><li>Oracle Designer </li><ul><li>Process flow modeller
  671. 672. Useful for data oriented applications </li></ul></ul><ul><ul><ul><li>Production of a data model (Normalised
  672. 673. Can generate templates and source code
  673. 674. Also handles versioning </li></ul></ul></ul><ul><li>AxiomSys </li><ul><li>Dataflow Diagrams </li></ul><li>DataFactory </li><ul><li>Generation of test data </li></ul></ul>
  674. 675. Quantum Computers <ul><li>This superposition of qubits is what gives quantum computers their inherent parallelism. A 30-qubit quantum computer would equal the processing power of a conventional computer that could run at 10 teraflops (trillions of floating-point operations per second).
  675. 676. Today's typical desktop computers run at speeds measured in gigaflops (billions of floating-point operations per second).
  676. 677. If functional quantum computers can be built, they will be valuable in factoring large numbers, and therefore extremely useful for decoding and encoding secret information. If one were to be built today, no information on the Internet would be safe. </li></ul>
  677. 678. Quantum Computers <ul><li>Quantum computers also utilize another aspect of quantum mechanics known as entanglement.
  678. 679. two atoms become entangled, and the second atom can take on the properties of the first atom.
  679. 680. an atom will spin in all directions. The instant it is disturbed it chooses one spin, or one value; and at the same time,
  680. 681. the second entangled atom will choose an opposite spin, or value. </li></ul>
  681. 682. Blu-ray <ul><li>The name Blu-ray Disc is derived from the blue laser (violet-colored) used to read and write to this type of disc.
  682. 683. Because of the wavelength (405 nanometres), substantially more data can be stored on a Blu-ray Disc than on the DVD format, which uses a red (650 nm) laser.
  683. 684. A two-layer Blu-ray Disc can store 50 gigabytes.
  684. 685. On January 4, 2008, a day before CES 2008, Warner Bros., the only major studio still releasing movies in both HD DVD and Blu-ray Disc format, announced it would release only in Blu-ray Disc after May 2008.
  685. 686. The BD-ROM specification mandates certain codec compatibilities for both hardware decoders (players) and the movie-software (content).
  686. 687. For video, all players are required to support MPEG-2, H.264/MPEG-4 AVC, and SMPTE VC-1.[51]
  687. 688. MPEG-2 is the codec used on regular DVDs, which allows backwards compatibility. </li></ul>
  688. 689. Computer vision systems <ul><ul><li>The organization of a computer vision system is highly application dependent.
  689. 690. stand-alone applications which solve a specific measurement or detection problem,
  690. 691. There are, however, typical functions which are found in many computer vision systems. </li></ul></ul><ul><ul><ul><li>Image acquisition: A digital image is produced by one or several image sensor which, besides various types of light-sensitive cameras
  691. 692. the resulting image data is an ordinary 2D image, a 3D volume, or an image sequence.
  692. 693. The pixel values typically correspond to light intensity in one or several spectral bands (gray images or colour images), but can also be related to various physical measures, such as depth, absorption or reflectance </li></ul></ul></ul>
  693. 694. Computer vision systems <ul><ul><ul><li>Pre-processing: Examples are </li><ul><li>Re-sampling in order to assure that the image coordinate system is correct.
  694. 695. Noise reduction in order to assure that sensor noise does not introduce false information.
  695. 696. Contrast enhancement to assure that relevant information can be detected.
  696. 697. Scale-space representation to enhance image structures at locally appropriate scales. </li></ul><li>Feature extraction: Image features at various levels of complexity are extracted from the image data. Typical examples of such features are </li><ul><li>Lines, edges and ridges.
  697. 698. Localized interest points such as corners, blobs or points. </li></ul></ul></ul></ul>
  698. 699. Computer vision systems <ul><ul><ul><li>More complex features may be related to texture, shape or motion. </li><ul><li>Detection/Segmentation: </li><ul><li>Selection of a specific set of interest points
  699. 700. Segmentation of one or multiple image regions which contain a specific object of interest. </li></ul><li>High-level processing: At this step the input is typically a small set of data, </li><ul><li>Verification that the data satisfy model-based and application specific assumptions.
  700. 701. Estimation of application specific parameters, such as object pose or object size.
  701. 702. Classifying a detected object into different categories. </li></ul></ul></ul></ul></ul>
  702. 703. A wired glove <ul><li>a glove-like input device for virtual reality environments. Various sensor technologies are used </li></ul><ul><ul><li>Often a motion tracker, such as a magnetic tracking device
  703. 704. inertial tracking device, is attached to capture the global position / rotation data of the glove.
  704. 705. These movements are then interpreted by the software that accompanies the glove, so any one movement can mean any number of things.
  705. 706. Gestures can then be categorized into useful information, such as to recognize Sign Language or other symbolic functions. </li></ul></ul>
  706. 707. A wired glove <ul><li>Expensive high-end wired gloves can also provide haptic feedback, </li><ul><li>a simulation of the sense of touch. This allows a wired glove to also be used as an output device.
  707. 708. Traditionally, wired gloves have only been available at a huge cost, with the finger bend sensors and the tracking device having to be bought separately. </li></ul></ul>
  708. 709. Speech Recognition <ul><li>(also known as automatic speech recognition or computer speech recognition) converts spoken words to machine-readable input
  709. 710. The performance of speech recognition systems is usually specified in terms of accuracy and speed
  710. 711. Commercially available speaker-dependent dictation systems usually require only a short period of training (sometimes also called `enrolment').
  711. 712. Most commercial companies claim that recognition software can achieve between 98% to 99% accuracy if operated under optimal conditions. </li></ul>
  712. 713. Speech Recognition <ul><li>'Optimal conditions' usually assume that users: </li><ul><li>have speech characteristics which match the training data,
  713. 714. can achieve proper speaker adaptation, and
  714. 715. work in a clean noise environment (e.g. quiet office or laboratory space). </li></ul><li>Modern general-purpose speech recognition systems are generally based on Hidden Markov Models. </li><ul><li>These are statistical models which output a sequence of symbols or quantities.
  715. 716. a speech signal could be viewed as a piecewise stationary signal or a short-time stationary signal.
  716. 717. That is, one could assume in a short-time in the range of 10 milliseconds, speech could be approximated as a stationary process.
  717. 718. Each word, or (for more general speech recognition systems), each phoneme, will have a different output distribution </li></ul></ul>

×