Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
High Level Overview of CS 3500 C# Programming techniques Software architecture Software development tools Personal software practice Other topics C# Programs organized into namespaces Namespaces contain classes and interfaces Programs can be assembled into executables Programs can be assembled into DLLs Implementing classes, methods, properties Inheritance and interfaces IEnumerable<T> and IEnumerator<T> Delegates Events LINQ CS 3500 L20 - 2 Programming Techniques (1) Iteration abstraction – Iterative access to members of a collection – Cursors (similar to Java iterators) – IEnumerator interface – C# iterators (via yield return) – Visitor OO design pattern Delegates – Passing methods as parameters – Customizing sorting and searching algorithms – Registering callbacks – Launching threads Programming Techniques (2) Events – Asynchronous behavior that triggers callbacks – Implementing GUI interfaces – Using asynchronous sockets Threading – An approach to concurrency – Synchronization with locks – Avoiding deadlocks – Critical sections – GUI event thread – Asynchronous sockets Programming Techniques (3) Socket Programming – For communication over a network – Servers accept, clients connect – Synchronous blocking sockets – Asynchronous non-blocking sockets SQL Programming – – – – – Incorporating databases into programs Designing database schema Imposing keys and constraints Queries (selection, projection, join) Insert, delete, update Programming Techniques (4) Object-Oriented Design Patterns – Solutions to commonly-encountered problems – Singleton pattern – Factory pattern – Adapter pattern – Decorator pattern – Visitor pattern – There are many more! Software Architecture (1) Object-oriented architecture – Organizing programs around classes – Information hiding – Exploiting polymorphism via inheritance and intefaces Client/server architecture – Network-based approach – Server program that accepts connections from remote clients – Client programs that requests connections to remote servers – Typically involves sockets and threads architecture Software Architecture (2) Event-driven architecture – Programs organized around asynchronous events that are handled via calls to registered callbacks – Typically involves threads GUI architecture – Users interact with programs via GUI components – Relies heavily on events and callbacks Software Architecture (3) MVC architecture – Model: The “smarts” or “business logic” – View: The user interface – Controller: Mediates between model and view Database-oriented architecture – Program makes use of database, typically via remote server – Program can benefit from ACID properties of database (atomicity, consistency, isolation, durability) Software Development Tools Program development (VS) GUI construction (VS) Version control (SVN) Debugging (from VS) Unit testing (from VS) Coded UI testing (from VS) Database management CS 3500 L20 - 10 Software Engineering Evolution from custom batch applications to networked, parallel, object-oriented systems Software crisis is an age-old issue in computer science Idealized vs. actual failure rates for software Software engineering as intersection of systems engineering, computer science, management, and psychology Software lifecycle: analysis, design, development, testing, maintenance Need process to identify and correct problems early CS 3500 L20 - 11 Version Control Keep track of the evolution of programs, documentation, tests, etc. as they evolve When developing alone, solves the multiple machine problem, allows recovery from mistakes When working with others, supports coordination of efforts and resolution of conflicts CS 3500 L20 - 12 Software Testing Goal of testing is to affirm quality Testing: process of executing a program with the intent of finding an error (up to 40% of SE effort) Testing cannot show the absence of defects Testing models: – – – – Black box testing White box testing Unit testing Test-first approach Testing in practice: unit tests Testing in practice: coded UI tests Debugging A bug is a defect (a mistake) and you put it there! Debugging is difficult, takes an unpredictable amount of time, and most people aren’t systematic Experienced debuggers are roughly 20 times better at finding defects Process: Stabilize the error, locate the error, fix the error, test the fix, look for similar errors, reflect Locating errors: Narrow the region of suspicious code, come up with hypotheses, and devise tests to confirm/refute them Improving program performance Making simple source modifications to improve efficiency isn’t worth it because compilers are so good However, no compiler can compensate for your choice of an inefficient algorithm or data structure Before attempting to improve program performance, obtain timing measurements so you’ll know what to target and whether you succeeded Before attempting to improve program performance, develop regression tests to assess correctness Pareto principle: 80% of the result with 20% of the effort Pay attention to virtual memory and cache effects Pair programming Two programmers working side-by-side at one computer Can produce higher-quality code with less effort than two programmers working individually Works because of pair-pressure, pair-think, and pair-relaying, pair-reviews, and pair-learning UML Graphical notation for describing aspects of software at a higher level of abstraction Class diagrams are used to describe salient parts of class hierarchies Even though graphical, there is a syntax and semantics Intellectual property Copyright: Protects creative expression in many forms, including software – Fair use doctrine provides exception to copyright – Digital media allow perfect copies and easy transmission, all with little expense – Laws changing rapidly in digital age – DMCA provides for notice and takedown and anticircumvention Patent: Protects novel inventions – Expensive and time-consuming to obtain – System has been abused, especially for software patents Trademarks: Protects symbols used for branding Trade secrets: Alternative to patents Ethics Act consistently with the public interest Act in the best interest of employer and client, consistent with the public interest Products should meet highest standards possible Maintain integrity in professional judgment Subscribe to ethical approach to management Advance integrity and reputation of profession Be fair to and supportive of colleagues Participate in lifelong learning