Title: Announcements:
1Announcements
- The blackboard vista (e-learning) site is
available via goWMU - I will be changing my office hours. The new
office hours are as follows - Wednesday 115-315 PM, Thursday 11-noon
- All assignment submissions must run using Visual
Studio 2008 - Did someone leave their sunglasses last class?
(If so, I might have them) - Is someone in this class typing their lecture
notes? If so, please see me after class - thanks!
2CS1120 C Review
- Will be this Friday (9/05/08) from noon-2 PM in
C-224 (same as lecture)
3CS1120 Computer Science II
4What exactly is software?
- Possible definitions of software are
- Instructions (i.e., computer programs) executed
to provide features, functions, and performance - Data structures that enable the programs to
adequately manipulate information - Documents that describe the operation and use of
programs
5Categories of Software
- System Software
- Compilers, editors, file management utilities
- Application Software
- Standalone programs to solve a specific need
- Engineering/Scientific Software
- Computer-aided design, simulation
- Web-applications
- Embedded Software
- Resides inside another product or system
- Product-line Software
- Inventory control, financial applications
- Artificial Intelligence Software
- Neural networks, pattern recognition, robotics,
game playing
6What is Software Engineering?
- This is the study and use of engineering
principles to create software that is both
reliable and efficient on real computers
7Software Quality
- Software engineering is the production of quality
software - External quality
- May be detected by its users
- Internal quality
- Perceptible only to computer professionals who
have access to the actual software text - What matters is the external quality, but it can
only be achieved through internal quality
8External Quality
- Correctness
- Perform the exact tasks as specified
- Robustness
- Ability to react appropriately to abnormal
conditions - Extendibility
- Ease of adapting program to changes of
specification - Reusability
- Ability of software elements to serve for the
construction of many different applications.
9External Quality
- Other Quality
- Compatibility, Portability, Ease of Use,
Efficiency, Timeliness, Integrity - Tradeoffs
- Integrity v.s. Ease of Use
- Efficiency v.s. Portability
- Timeliness v.s. Extendibility
10The Waterfall Model
- This is the classic life cycle
- One of the oldest models in software engineering
- A sequential and systematic approach to software
development - Communication --gt Planning --gt Modeling --gt
Construction --gt Deployment
11Software Life Cycle
- This is a more realistic look at software - as a
continuous process
12Software Life CyclePhase 1 Specification
- Answers What do we build?
- Define clearly all aspects of the problem
- What is input (valid/invalid) data?
- What assumptions are possible?
- Are there special cases?
- What enhancements are likely in the future?
13Software Life CyclePhase 2 Design
- Divide into manageable parts - modules
- Specify each modules purpose, assumptions,
input, and output - Develop algorithms
- Look for existing software components
14Software Life CyclePhase 3 Risk Analysis
- Attempts to answer What can go wrong, and how
bad can it be? - Predict and manage what risks you can
- Risks to timetable, cost, human health, etc.
should be taken into account - Risks can greatly influence the direction of a
project
15Software Life CyclePhase 4 Verification
- Answers Are the algorithms correct?
- Some algorithms can be proven correct
- assertion condition at a certain point
- invariant condition that is always true
16Software Life CyclePhase 5 Coding
- Translate the algorithms into a particular
programming language - Minor phase in the software life cycle
17Software Life CyclePhase 6 Testing
- Answers Did we build it correctly?
- Try to make the software fail
- Develop as many test cases as possible
- Both a science and an art
18Software Life CyclePhase 7 Refining a Solution
- Add bells and whistles
- Retest after any changes are made
19Software Life CyclePhase 8 Production
20Software Life CyclePhase 9 Maintenance
- Fix previously undiscovered bugs
- Add new features
- Enhance old features
- Generally the most costly phase (80 of total
cost by some estimates)
21Software Life CycleDocumentation
- Performed extensively in every phase
- In modern software development, there are
typically different people working on each phase
of the software life cycle - Novice programmers usually undervalue
documentation
22Continuing Effort
23More Models
- There are many models of software development
- Incremental Process Models
- Incremental, RAD (Rapid Application Development)
- Evolutionary Process Models
- Prototyping, Spiral, Concurrent Development
- Specialized Process Models
- Component-Based, Formal Methods, Aspect-Oriented
24The IN Method
- Agile Development
- This software engineering methodology focuses on
customer satisfaction, incrementally developing
software using small teams, using simplicity of
development, and heavy communication with
customers - There are many flavors including
- Extreme Programming (XP), Adaptive Software
Development (ASD), Dynamic Systems Development
Method (DSDM), Scrum, Crystal, Feature Driven
Development (FDD), and Agile Modeling (AM)