1 / 20

Software Engineering

Software Engineering. CSC 180 Lecture 10 Dr. Adam Anthony. A VERY Brief Overview. CSC 180 Part I. CSC 180 Part II. Where big software comes from (today’s lecture) Operating Systems Web Applications Networking Selected Topics The softer side of computing. How computers work

naida-giles
Download Presentation

Software Engineering

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Software Engineering CSC 180 Lecture 10 Dr. Adam Anthony

  2. A VERY Brief Overview CSC 180 Part I CSC 180 Part II • Where big software comes from (today’s lecture) • Operating Systems • Web Applications • Networking • Selected Topics • The softer side of computing • How computers work • Bits and Bytes • Math • Algorithms • Hardcore Computer Science

  3. Overview • Software Engineering Discipline • Software Life Cycle • Development Methodologies • Structuring Projects • Basic design diagrams • Testing • Documentation • Ethical Concerns • Jobs/Majors that support the software life cycle

  4. What is Software Engineering? • First, what is traditional engineering? • Skilled, specialized development and management of a large physical project (automobile, skyscraper, power plant) • Software engineering is the same thing, but for programming projects instead of physical systems • Except: • Fewer standardized components • Hard to define measures (metrics) of success • Costs are intangible • Quality is hard to assess

  5. The Software Life Cycle • Development: software created here • Use: software distributed to users, bugs revealed • Maintenance: • Fix bugs • Add improvements • Compared to physical systems: • maintenance typically involves repairs, not improvements • Maintenance of software takes longer, costs more

  6. The Development Phase

  7. Development: Requirements Specification • Specify what services the system will provide • Identify any special conditions (security, speed, availability) on those services • Define how the outside world will interact with the system • Always keep the customer in mind • They are the ones who buy/use it! • Companies frequently hire systems analysts for this type of work • Need to be a ‘people person’ who also has strong technical knowledge

  8. Use-Case Diagrams • Inside box: • Interactions: features of the software that the user will see/use • Outside box: • Stick figures that represent actors: • People • Other comptuers • Special Devices

  9. Your Turn! • Teams of 3-4: • Brainstorm a use-case diagram for a smart phone application • May be an application that already exists, or something made up • Factors to consider: • Make sure every action is considered (e.g. ‘start game’) • Can other devices be involved (printer, computer, TV, other phones…)? • It’s not graded, so relax and have fun!

  10. Next step in Development: Design • Requirements specification: • More of a contract about what a program will do • Design is an analysis and specification of how the system will do each task • It’s a plan • Companies hire Project Managers for this task • Need strong organization and Leadership skills • Need to build strong relationships in a team based environment • Lots of diagrams and flow charts • Less hands-on with the actual software, but the job is critical to success

  11. Development: Implementation • Finally, the software is going to be made! • This is where programmers live • Need knowledge of design charts, terminology • Need strong programming skills • Problem Solving is key • More creative than you think! • Though you must follow directions, a programmer essentially starts with nothing and finishes with a complete product • Much like contractors who follow a blueprint and erect a building from a vacant lot

  12. Development: Testing • Does the software work correctly? • Requires efforts from several levels: • Analysts check to make sure the specification is satisfied • Program managers check to make sure the design is fulfilled • Programmers check to make sure the code is accurate • Best practices in testing don’t wait until the end: • Each phase should be tested and re-tested frequently over the entire life of the product

  13. Software Engineering Methodology • Classic approach to Software Engineering: The waterfall method • One task after the other • Need to get specification right on the first try, or the whole thing is a bust!

  14. Modern Methodologies • Prototyping Methods • Open-source method • Extreme Programming

  15. Prototyping • Prototype: initial invention/proof of concept that is meant to lead to a more refined product • Incremental Model: • Develop simplified version, perfect it, then • Add more complex features via program updates • Iterative Model • Develop simplified version, perfect it, then • ‘Throw it out’ and start over with a version 2.0 • Sometimes you get both: • Incremental versions 1.1,1.2, 1.3 • Iterative versions 1.X, 2.X • Example products for each model?

  16. Open-Source Methodology • Write some code for ‘version 1’ • Publish it online, give it away for free • Community-based development: • People who appreciate the software will contribute so that it won’t ‘go out of business’ • Money • Time/effort/knowledge • Most people will take the software without paying for it • How do companies make money this way?

  17. Extreme Programming • Referred to as an agile method • Form small teams ( < 12 ) • Program in pairs • Hold daily ‘mini-waterfalls’ to reevaluate progress and make changes quickly before they become big problems • Less formal, more flexible • Problems with this?

  18. Testing • We’ll learn later that guaranteeing that a program always does what it is supposed to is impossible in complex projects • Glass-box testing • Creating tests with full knowledge of the source code and how it is supposed to work • Black-box testing • Creating tests with no knowledge of how the code works, but only knowing what the program is supposed to do • Good testing efforts use both types • Beta Testing: release the software to a small group initially, with no guarantees of quality • Just wait for the program to screw up!

  19. Documentation • Nobody likes doing it, but it’s important • Large disconnect between the designer/ implementer and the standard computer user • Users WILL try things you never thought of! • Not their fault! • User documentation: your standard ‘how to use it’ manual • Technical documentation: installation guide • System documentation: description of system implementation; used by developers for maintenance • RTFM!!!!!

  20. Your Niche in the Development Cycle • Computer Information Systems Analyst: • Systems analyst • Project Manager • Networking Systems Analyst: • Multi-level support to help all levels work together efficiently • Computer Science: • Programming • Research/Development • Digital Media & Design • Requirements Specification and Design (esp. interfaces)

More Related