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 / P. Janga (TA)
- 3. Java--to be learned in lab--you will develop
basic skills, expert status not required - 4. teams--we will form these by next Monday--3-4
per team - 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 495
- 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. - Lab sections formally there are 2 lab sections.
In practice we will treat these as one big
section. Most weeks we will ALL meet in 890
Rhodes for about 1 hour of discussion, then each
team will work together. I will be available to
work with you most of the time and Mr. Janga will
also be available.
3First ProjectAssignment (Preview)
- assignment (due WEEK 3 in lab) Team assignment
- In lab your team will specify, design, implement,
and test a (java) program consisting of at least
one component built by each team member. Use
this mini-project to explore the planning and
management concepts which you will apply to the
quarter project. Based on your experiences with
this mini-project, fill in DETAILED answers to
the questions below. This will be CHAPTER 1,
RESOURCES AND PLANNING, for your quarter project
report. - RESOURCES
- List all personnel and skills of each (Java
experience, software project experience, good
writing skills, etc.) - List the number of hours each team member has
available to devote to the project over the
quarter. - List all hardware and software resources that
will be used for development. - PLANNING
- Describe the team organization.
- List who will be assigned to oversee each of the
following documentation testing version
control and backups productivity overall
management (number of managers depends on team
organization chosen). - Describe how the team members will communicate
and coordinate their work. - Give the time and place of weekly team meetings
(at least one meeting per week is required). - Describe completely the process model you will
follow and explain why this model is appropriate
for the project and for your available resources. - Describe completely how you will handle version
control and backups. - Give the formulas you will use for calculating
productivity (you must measure individual and
team time spent and you must measure how much you
have producedweekly and overall)see update on
next slide - Describe your plan for testing. As we will
discuss later, it is important that each
component be tested by someone who is not the
author. It is also important that you follow an
incremental plan for integrating components into
your system, testing the whole system each time a
new component is integrated. As you develop
components, you should also be building up a set
of test cases which can be run each time a change
is made to the system. - Provide a RISK TABLE for your project (see
lecture notes) - Provide both a GANTT CHART and TRACKING DOCUMENT
for your project (see lecture notes). You can
build the Gantt chart using the project
development schedule given on the web page for
495. - Describe the CODING STANDARDS you will use (see
lecture notes). - Describe how you will produce up-to-date
documentation (content and formonline?) in
parallel with the project.
4Course 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.
5People, Product, Process--gt Project
6Software Life Cycle
7People (Stakeholders)Roles, Goals, Functions
Role Responsibility Customer High level
requirements, project scope User What tasks
must system carry out? What is level of
expertise? Business Manager Organize, track
work Technical Manager Manage technical
issues Developer Design, implement,
test Technical Writer Documentaion, manuals
Goals / Functions conflicts?
8Questions 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?
9Important 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
- Utility software for computer systems (compilers,
e.g.) - Utility software for general users (spreadsheets,
e.g.)
10References
11Mythical Man-Month
12Why is Managing Programming Hard?
13System Architect
14Separate Architecture, Implementation
15Process Model
16Productivity