SOFTWARE ENGINEERING CSC 180 Lecture 10 Dr. Adam Anthony.
-
Upload
roger-harper -
Category
Documents
-
view
216 -
download
0
Transcript of SOFTWARE ENGINEERING CSC 180 Lecture 10 Dr. Adam Anthony.
SOFTWARE ENGINEERINGCSC 180 Lecture 10
Dr. Adam Anthony
A VERY Brief Overview
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
CSC 180 Part I CSC 180 Part II
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
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
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
The Development Phase
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
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
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!
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
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
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
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!
Modern Methodologies
Prototyping Methods Open-source method Extreme Programming
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?
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?
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?
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!
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!!!!!
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)