SE455 Software Development Methods -- Lecture 1
Course Overview
Required Skills and Tools
- Internet connection and basic skills: email, www, ftp
- C++ compiler (Unix or MS Windows, GUI not required)
- Wordprocessor (Everything must be typed.)
- Drawing program (No hand-drawn diagrams.)
prev next first index
Course Project
You are required to complete a project of developing a moderate-size software system using Object-Oriented design and implementation techniques.
You may develop any of the following types of programs:
- a)
- application programs,
such as personal organizers, games, etc.
- b)
- simulation programs of some real-world systems,
such as traffic control systems.
- c)
- general-purpose class libraries with demo programs.
And, use your imagination. If you can't seem to find one, I have an idea for you.
prev next first index
Course Project Requirements
- Use Object-Oriented design, and implementation techniques.
- Implement the system in C++.
- Around 1,500 lines of C++ source code.
- Work alone.
prev next first index
Project Milestones and Deliverables
- Week 2
- One-page problem statement.
Problem, scope, and anticipated obstacles.
- Week 4
- Object-oriented model of the system.
Include class/object/interaction/state diagrams, and class specifications.
- Week 7
- Object-oriented design of the system.
Apply design patterns. C++ class interface complete.
- Week 10
- Code complete. Project report.
prev next first index
Exams
- Midterm exam
- week 6.
Written exam.
All distance-learning students must show up in class, unless there is a conflict. Contact me ASAP.
- Final exam
- week 11.
Take-home, project report and term paper.
prev next first index
C++ Self-Assessment
- a)
- Develop a template linked list class.
- It should support the usual operations on a list such as insertion and deletion.
- It also supports a Write function that writes the contents of the list to cout.
prev next first index
C++ Self-Assessment (cont'd)
- b)
- Develop a class hierarchy of shapes, which includes:
Shape
Closed Shape
Circle, Rectangle, ...
Open Shape
Line, Curve, ...
Text
Each class supports a virtual function Write that writes the attributes of the shape to cout.
prev next first index
C++ Self-Assessment (cont'd)
- c)
- Instantiate a list of shapes. Insert several different shapes into the list, and print out the contents of the list of shapes.
If you have:
- no difficulty --- fine
- some difficulty --- will be ok, read and practice
- major difficulty --- not ready
prev next first index
The Objective
To study methods for developing high-quality, large-scale software systemsin a cost-effective manner.
- Scale
- 100,000 LOC
- Qualities
- reliability, reuseability, extensibility, maintainability.
We will focus on
- philosophies and approaches that are persistent and recurrent rather than fashionable but transient tools and packages;
- long-term adaptability rather than near-term proficiency.
prev next first index
The Scope
- Review of object-oriented analysis/modeling.
- Object-oriented design patterns.
- Object-oriented framework.
- Design and implementation techniques in C++.
- Testing and debugging techniques.
prev next first index
Software Development
Problems:
- Low quality
- High development/maintenance cost
- Long delays
- High cancelation rate
Reasons:
- Complexity
- Evolution and longevity
- Diverse user needs and high expectations
prev next first index
Software Development (cont'd)
Solutions:
- Control complexity
- Enhance flexibility and extensibility
- Promote reuseability
Today's technology --- Object-Oriented methodology.
Tomorrow's technology --- automation, Computer-Aided Design.
prev next first index
Object-Oriented Methodology
- Addresses some of the critical problems.
- Evidence and data show it works.
- Has matured in the past a few years and acquired industry support.
- Radically different from the traditional practice.
Review basics of OO:
- Fundamental elements of OO.
- Notations for OO analysis and design.
prev next first index
Elements of Object Model
Major elements:
- Abstraction
- capture the essential characteristics
- Encapsulation
- separate interface from implementation
- Modularity
- decompose system into a set of cohesive and loosely coupled modules
- Hierarchy
- bring an order to abstraction
prev next first index
Elements of Object Model (cont'd)
Minor elements:
- Typing
- enforce that objects of different types are not interchangeable.
- Concurrency
- allow active objects, or multiple threads of control
- Persistence
- existence transcends time and/or space
prev next first index
Notations for OO Modeling and Design
- Leading methods: Booch and OMT
- New standard: Unified Modeling Language (UML)
- Diagrammatic notations:
- Class diagram: classes, data, operations, and relationships.
- Object diagram: objects or instances, data, and relationships for objects.
- State diagram: dynamic behavior within a class or object.
- Interaction diagram: dynamic behavior among objects.
- Use-case diagram: system behavior and scenarios from the users' perspective.
prev next first index
Design Goals
To attain and maximize the following design qualities:
- Soundness: reliable, logical, feasible
- Modifiability: changeable, extensible, reusable
- Clarity: concise, understandable, well-structured
- Efficiency: minimum consumption of time and system resources
Challenges:
- Balancing conflicting goals.
- Managing trade-offs.
- Satisfying multiple constraints.
prev next first index
Software Design Is An Art
- There are desirable qualities but no quantifiable measurements.
- It can not be taught, but can only be learned through
- studying the masterpieces
- practice and experience
- Techniques are only the tools for expression, what's more important is the sense of appreciating ``beauty.''
- Software design is a creative activity! Have fun!
prev next first index
Assignment of This week
Recommended reading Booch Chapters 1 through 5.
Problem statement of your course project. (Even if you choose to do the project suggested by in the instructor.)
Next week's topics:
- Review of OO modeling, case study (Booch Chapter 8)
prev next first index
Index of Slides
Course Overview
Required Skills and Tools
Course Project
Course Project Requirements
Project Milestones and Deliverables
Exams
C++ Self-Assessment
C++ Self-Assessment (cont'd)
C++ Self-Assessment (cont'd)
The Objective
The Scope
Software Development
Software Development (cont'd)
Object-Oriented Methodology
Elements of Object Model
Elements of Object Model (cont'd)
Notations for OO Modeling and Design
Design Goals
Software Design Is An Art
Assignment of This week