Download presentation
Presentation is loading. Please wait.
1
20 February Detailed Design Implementation
2
Software Engineering Elaborated Steps Concept Requirements Architecture Design Implementation Unit test Integration System test Maintenance
3
What do you think about this design? Mystery site
4
Design Principles Correctness Robustness Flexibility Reusability Efficiency
5
Correctness Always a goal. Others may be negotiable. Definition: satisfies all of the application’s requirements How do we know the requirements are correct? Approaches Inspections Readable (“I didn’t have time to write a short letter, so I wrote a long one instead.”) Modular Formal verification Invariants, pre- and post-conditions Usually used only in critical components
6
Robustness Ability to handle anomalous situations Techniques Verifying input Initialization Parameter checking Range Constraints Husk and kernel
7
Importance of Robustness: USS Yorktown (1998) Guided missile cruiser that suffered widespread system failure off the coast of Virginia Dead in the water for more than two hours Crew member mistakenly entered a zero in a data field of an application Divide by zero Buffer overflow Shut down the propulsion system
8
Flexibility Requirements changes Adding more of the same function New type of member, account, question or game Adding new type of function Printing what was only displayed, withdrawing when only depositing was allowed, creating a new game Changing function Allowing reverse as well as forward, overdraft protection
9
Using XML Design issues Encapsulating things that may change Late binding Separation of instruction and data Examples Layout of your interface Description of changeable data More detail Thursday
10
Reusability How to make it reusable Match real world concepts Avoid unnecessary coupling Document Complete specification (assertions, constraints) Explanation of function and algorithm Generic names
11
Efficiency All about trade-offs What do you care about being efficient? Time Memory usage External storage Download Start-up Shutdown Usage Development How important? Fundamental requirement Nice enhancement
12
Software Engineering Elaborated Steps Concept Requirements Architecture Design Implementation Unit test Integration System test Maintenance
13
Coding Tips: Class Exercise Write down your favorite programming tip Not a coding trick A big item that helps across systems Examples Use meaningful variable names Use indentation and spacing
14
Start Small A lesson from agile programming Don’t design every class that you can think of Don’t design every feature
15
Documentation No such thing as a self-documenting program Things that can be generated helpful but give no insights Explain alternatives not used Explain why you are doing it Same line comments: saying enough to be useful? Your comments are prose and should read accordingly
16
Do you write… code interspersed with comments? or prose interspersed with executable lines?
17
Documentation Example “Use a string search to find the requested protein.” “A binary search turned out to be slower than a string-matching algorithm for the most interesting data sets. Despite the need for preprocessing, this more complex Boyer-Moore algorithm is a better choice for finding the requested protein string.”
18
Error Handling Black list vs. white list Should you identify what is good or what is bad? When is each appropriate? Which is easier to maintain?
19
Tools Version Management Build Systems Integrated Development Environments
20
Version Management There is nothing permanent except change. Heraclitus 500 BCE
21
Version Management Both during and after development Both code and documentation Uses Multi-developer change control Releases Support for different environments Computers Operating systems
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.