Title: Software Engineering--Introduction
1Software Engineering--Introduction
Software Engineering--Introduction
2Course Administration
- Syllabus, grading, schedule--class lab--will
all be on www.ece.uc.edu/cpurdy - Contact information C. Purdy / A. Ravi (TA)
Prof. J. Seitzer, guest lecturer - 3. Java--to be learned in lab--you will develop
basic skills, expert status not required - 4. teams--we will form these by Friday 3-4 per
team (TURN IN SURVEY please) - 5. project--most will be done in lab
- 6. passing 493/495 you must pass both classes
if you fail one, you will receive an F in both
otherwise you will receive a separate grade in
each of these classes - 7. grading 493 495explained on web pages
- 8. cell phones--for each call you get in class,
you lose 3 points on your final grade - 9. Electronic communication (text messages,
laptops, etc.) - NOT ALLOWED in lecture as these distract from
class discussions - 10. Reading assignments please read BEFORE
class be ready to discuss in class (there will
generally be low stakes writing for these) - Group work / individual work we will do a lot
of each--follow rules for each assignment. - First lab (Wednesday) please write your name
and java skill level (5 strong 3 know some
java 1 little or none) on a piece of paper and
hand it in to Mr. Ravi this will be used for
forming pairs for lab 1
3Course Themes
- The lectures and assignments in this course will
focus on developing knowledge and skills for - effective teamwork
- project management
- software development
- "lifelong learning"
- In this course we will be concentrating on the
process of developing software, not on technical
skills in specialized areas such as database
management, wireless computing, etc. - The skills we will learn can also be applied to
hardware projects and to mixed hardware /
software projects.
4People, Product, Process--gt Project
what is "software engineering"? the "art" of
building and maintaining software
systems "software engineering is a
discipline whose aim is the production of
fault-free software, delivered on time and within
budget, that satisfies the users
needs. Schach, Object-Oriented and Classical
Software Engineering, 5th ed.,
Mc-Graw-Hill 2002, p. 4
5People, Product, Process--gt Project
- Importance of fault-free Software bugs can be
lethal. - The 2003 North America blackout was triggered
by a local outage that went undetected due to
a race condition 55 million people were
without power - Smart ship USS Yorktown was left dead in the
water in 1997 for nearly 3 hours after a divide
by zero error - Y2K problem similarly 2038 problem
many Unix systems calculate the time in seconds
since 1 January 1970, and store this figure as
a 32-bit signed integer, for which the maximum
possible value is 231-1 (2,147,483,647).
6People, Product, Process--gt Project
- "software engineering is a discipline whose aim
is the production of fault-free software,
delivered on time and within budget, that
satisfies the users needs. - Schach, Object-Oriented and Classical Software
- Engineering, 5th ed., Mc-Graw-Hill 2002,
p. 4 - components of software system construction (4
Ps) - people
- product
- process
- project
7Software Life Cycle
8People (Stakeholders)Roles, Goals, Functions
Role Responsibility Customer High level
requirements, project scope User What tasks
must system carry out? What is level of
expertise? Software salesperson Get
requirements delivery dates, cost Business
Manager Organize, track work Technical
Manager Manage technical issues Developer Design
, implement, test Technical Writer Documentation,
manuals
Goals / Functions conflicts?
9Questions to Think About
- some points to ponder
- "software crisis"--systems become more and more
complex - --what can we automate?
- --how can we verify/ test such complex systems?
- "hardware/software" boundary
- --how can we do "co-design"?
- --where is the boundary?
- types of software systems
- --how do important application-specific systems
differ? - --what impact do differences have on
development? - --which systems will be most important in the
coming years?
10Important System Types
- Some Common System Typeswhat is the
same/different? - Databases
- Communication systems
- Entertainment systems
- Web-based applications
- Medical systems
- Manufacturing / transportation systems
- Simulation programs to support engineering and
science - Parallel/distributed applications
- Embedded systems
- Intelligent systems / robots - http//www.youtube.
com/watch?v7fYMxaBTqls - Utility software for computer systems (compilers,
e.g.) - Utility software for general users (spreadsheets,
e.g.)
11References
12Dilbert
13Dilbert Powerpoint Poisoning
14Mythical Man-month
15Mythical Man-Month
16Why is Managing Programming Hard?
17System Architect
18Separate Architecture, Implementation
19Process Model
20Productivity
21What did we do today?
- Welcome to class (and turn in your Java
surveys!) - Its a process course -- teamwork,
methodology, lifelong learning ALL in the
context of good code development - The 4 Ps -- people, product , process,
project - Plethora of models plan, do, fix
- Fred Brooks , et. al Mythical Man Month