Schedule
Overview, 26 Mar
Desired Learning Outcomes
- State the class policies concerning grading, attendance,
participation and academic integrity.
Reading Assignment (due next session)
- Pressman Chapter 1 and 2.
- Brooks, Chapter 1.
Lab Assignment
- Think about what this class may mean to you. Reflect on
our introductory discussions and things you may have heard
about the class. Write in your journal.
Introduction to Software Engineering, 28 Mar
Desired Learning Outcomes
- Describe the four eras in the evolution of software.
- Compare and contrast the hardware failure curve with the
idealized and actual software failure curves.
- Explain what the author means by the term "chronic
affliction" with respect to software.
Delineate the problems associated with this "affliction"
and explain the causes of those problems.
- Outline the "classic" or "waterfall" model of the software
development process. Describe each phase of the process.
- Describe "prototyping" and explain its applicability to
software engineering.
- Describe the "spiral" model of software development.
- Explain "fourth generation" program development techniques.
- Describe the three generic steps in the software life cycle
and explain the specific steps within each.
- Describe the view of the super-programmer and explain why
super-programmers won't save the industry from the chronic
affliction.
- Explain the role of technology in the resolution of the
chronic affliction.
Reading Assignment-due next session
Lab Assignment
- X-Windows Familiarization. Using the handout provided by the instructor,
investigate the X-Windows environment on the HP400s and HP700s.
Software Organization Maturity, 2 Apr
Desired Learning Outcomes
- State why an organization needs to understand its software
development processes.
- List the
five maturity levels establish the the Software
Engineering Institute.
- Describe the characteristics commonly observed in a Level 1
organization.
- Describe the characteristics of a Level 2 organization.
- Describe the characteristics of a Level 3 organization.
- Describe the characteristics of a Level 4 organization.
- Describe the characteristics of a Level 5 organization.
- Given a description of an organization, selected the maturity
level that most closely matches the organization. Explain your
reasons.
Reading Assignment (Due next session)
- Pressman, Chapter 2.
-
Jones, What Are Function Points?
Lab Assignment
Project Management, SW Metrics, 4 Apr
Desired Learning Outcomes
- Describe the purpose and benefits of establishing the objectives
and scope of a software development at the outset.
- Describe the direct and indirect measures of software.
- Explain the six types of software measurements.
- Define "quality" and relate the definition to software.
- Give examples of size-oriented metrics.
- Give examples of function-oriented metrics.
- Explain what is meant by "correctness," "maintainability",
"integrity," and "usability" with respect to software quality metrics.
- Present the arguments for measuring software.
- Explain how to establish a baseline.
- Explain how to gather software metrics.
Reading Assignment (due next session)
- Pressman Chapter 3.
- Brooks, Chapters 2, 9
Lab Assignment
- Conduct Function Point Estimation. This will ultimately
be part of Section 3 of the
contract proposal.
Project Management, Estimation, 9 Apr
Desired Learning Outcomes
- Explain the three dimensions along which one can conduct
estimates for a project.
- Explain the concept of "software scope" and apply the
concept to a software development situation.
- List and define the resource types associated with a software
development project.
- List and describe the various tools available to software engineers.
- Define and discuss the benefits of "reusability."
- Explain the two decomposition techniques used for estimation.
Apply them to a software development situation.
- Explain the COCOMO model for software estimation.
Apply it to a software development situation.
- Explain the Putnam Estimation model.
Apply it to a software development situation.
- Describe automated estimation tools. Give examples.
Reading Assignment (due next session)
- Pressman Chapter 4.
- Brooks, Chapters 3, 7, 14.
Lab Assignment
Project Management, Planning, 11 Apr
Desired Learning Outcomes
- Define what is meant by "risk" with respect to software development.
- Explain what is included in the four risk analysis activities.
Conduct a risk analysis of a proposed software development.
- Explain the concept of "overhead" with respect to communication paths.
Explain why teams are a good idea in spite of this overhead.
Describe the process you can use to reduce the impact of this "overhead."
- Define "task network." Construct a task network for a proposed
software development effort.
- Explain the "40-20-40" rule and describe its significance.
- Apply the Critical Path Method to a proposed development effort.
- Describe the importance of project tracking.
- Describe how to approach the "make or buy" decision.
- Describe the "Chief Programmer Team" approach to software development
organization.
- Produce an outline of a software project plan.
Reading Assignment (due next session)
- Pressman Chapter 17, through section 17.3.
Lab Assignment
Lab, 26 Jan.
Complete contract proposal.
Software Quality Assurance, 16 Apr
Desired Learning Outcomes
- Define "quality."
- State which phases of the project life cycle to which SQA applies.
- State and define the three software quality factors proposed by McCall.
- Identify the subfactors associated with each of the three factors.
- Define each subfactor associated with the software quality factors.
- Explain Hewlett-Packard's FURPS system for assessing the quality
of software.
- List and define the seven activities associated with SQA.
- State the reason why software reviews are needed.
- State the two primary (high level) functions fulfilled by software reviews.
- Describe the typical cost escalation factors associated with
defect discovery at each phase of the product life cycle.
- Explain the "defect amplification model."
- Describe the Formal Technical Review (FTR) process,
including any products generated by the process.
- List guidelines for conducting a FTR and explain why they are useful.
- Produce an outline of a FTR checklist and include major areas of
concern within each major topic.
Reading Assignment (due next session)
- Pressman Chapter 17, section 17.4 through the end.
Lab Assignment
- Review Cal Poly Software Quality Assurance Plan.
SQA, continued, 18 Apr
Desired Learning Outcomes
- Describe the "design structure quality index" (DSQI) and
explain the various factors associated with it.
- Compute a DSQI, given information about a software project.
- Describe the IEEE Software Maturity Index (SMI) and explain the
various factors associated with it.
- Compute a SMI, given information about a software project.
- State the principles of statistical SQA and explain how they
may be applied.
- Define reliability, with respect to software.
- Define MTBF, MTTF and MTTR.
- Calculate a system's availability, given information about a
software project.
- Define "software safety."
- Describe the steps you would take to assess the current
state of SQA in an organization.
- Describe the benefits of SQA.
- Describe the negative aspects of SQA.
- Produce an outline of a SQA Plan.
Lab Assignment
- Prepare for SQA Plan Formal Technical Review.
Software Configuration Management, 23 Apr
Desired Learning Outcomes
- List the phases of the software lifecycle in which Software
Configuration Management (SCM) is useful.
- Describe the high-level activities included in SCM.
- State the First Law of System Engineering.
- Define "baseline."
- Define "Software Configuration Item (SCI)."
- List the typical SCIs associated with a software development project.
- List the five SCM tasks.
- Define the five SCM tasks.
- Define "basic object" and "composite object."
- Describe "version control."
- Outline the process for processing a change to an SCI.
- State the purpose of configuration audits.
- Define "status reporting" with respect to SCM.
Include the typical questions answered by this process.
Lab Assignment
- Lab 4. Prepare SW Configuration Management Plan.
Reading Assignment (due next session)
- Pressman Chapter 21.
- Brooks, Chapters 10, 15.
Configuration Management Practicum, 25 Apr
Desired Learning Outcomes
- Conduct an FCA/PCA
- Critique an FCA/PCA
Reading Assignment (due next session)
- Pressman Chapter 5.
- Brooks, Chapter 4.
Computer System Engineering, 30 Apr
Desired Learning Outcomes
- List the common elements of a computer-based system.
- State the high-level objective of the computer system
engineering process.
- State what is meant by "bounding" a system.
- Define "allocation" with respect to the system engineering process.
- Describe the activities associated with the Definition phase of
the system engineering process.
Include the products generated in this phase.
- Describe the activities associated with the Development phase.
Identify any products produced by this phase.
- Describe the verification, release and maintenance phase,
identifying any products produced by this phase.
- List and explain the steps associated with defining the
Human-Computer Interface (HCI).
- State the purposes of the system analysis process.
- Explain the activities of the analyst in each of the 6 steps of
system analysis.
- State the purpose for modeling the system architecture.
- List the five elements of an architecture template.
- Explain the purpose of an "architecture context diagram."
- Explain the purpose of an "architecture flow diagram."
- Describe the contents of an Architecture Diagram Specification (ADS).
- Apply the concepts of system analysis to a software development project.
- Produce an outline of a typical System Specification.
- State the purposes of the System Specification Review (SSR).
- List typical questions answered by the SSR.
Lab Assignment
- Conduct preliminary work on Software Requirements Document (SRD).
Reading Assignment (due next session)
- Pressman Chapter 6.
- Brooks, Chapter 11.
Requirements Analysis Fundamentals, 2 May
Desired Learning Outcomes
- State the purpose of the requirements analysis phase of the
software development process.
- List and define the five areas of effort in the requirements analysis phase.
- Identify the inputs to the requirements analysis phase.
- Identify the fundamental question answered by the requirements
analysis phase.
- List the products of the requirements analysis phase.
- Describe the role of the requirements analyst.
Include a description of the necessary character traits.
- Define "context-free questions." Describe the benefits of
using context free questions and describe when they may be helpful.
- Describe the Facilitated Application Specification Technique (FAST).
Include the basic guidelines for implementing this approach.
Reading Assignment (due next session)
Lab Assignment
Requirements Analysis Fund. cont., 7 May
Desired Learning Outcomes
- List the four fundamental principles of analysis.
- Define "information flow."
- Define "information content."
- Define "information structure."
- Describe the role of modeling in system analysis.
- Describe the benefits of "partitioning" in systems analysis.
- Define "essential view" and "implementation view" in the
system analysis context.
- Describe each of the steps in software prototyping.
- Define "fourth-generation technique."
- Define "reusable software component."
- Define "formal specification language."
- List and define the eight specification principles.
- Produce an outline for a Software Requirements Specification (SRS).
- Describe the SRS review process.
- Apply the concepts of system analysis to a software development project.
Reading Assignment (due next session)
- Pressman Chapter 7, omit 7.2.2-7.2.6, 7.3.2-7.3.4,
Structured Analysis, 9 May
Desired Learning Outcomes
- List the primary goals of structured analysis.
- List the two primary elements of a structured analysis.
- Define Data Flow Diagram (DFD).
- Explain what is meant by the arrows in a DFD.
- Explain what is meant by the bubbles in a DFD.
- Explain how DFDs show levels of increasing detail.
- Define "external entity" in the DFD context.
- Define "data store" in the DFD context.
- Define "information flow continuity" and "balancing" with
respect to DFDs.
- Define "data dictionary."
- Define "processing narrative."
- Apply the concepts of structured analysis to a software development.
- List the six guidelines for producing a DFD.
- List the information contained in the Data Dictionary (DD).
Reading Assignment (due next session)
- Pressman Chapter 10.1 through 10.3
Software Design Fundamentals, 14 May
Desired Learning Outcomes
- Describe the inputs into the software design phase.
- State the benefits of a thorough design and the probable
consequences of proceeding to the coding phase without an adequate design.
- Define "software design" in terms of its purpose and the activities
associated with this phase.
- List the two steps of the design process.
- List the high-level guidelines for evaluating the quality of a
software design.
- Define "abstraction," in the context of software.
- State the benefits of applying the concept of abstraction to the
software design process.
- Differentiate between "procedural abstraction" and "data abstraction."
- Apply the concept of abstraction to a software development problem.
- Define "stepwise refinement" and explain its use in software development.
- Define "modularity" and explain its use in software development.
- Explain the typical relationship between the number of modules and
the effort required to maintain those modules.
- Define "software architecture."
- Define "program structure."
- Define "depth," "width," "fan-in," "fan-out," "visibility,"
and "connectivity."
- Define "software procedure."
- Explain the concept of "information hiding," including the possible
benefits of applying this technique.
Reading Assignment (due next session)
- Pressman Chapter 10, section 10.4 through the end.
Software Design Fundamentals, cont., 23 May
Desired Learning Outcomes
- List the features used to categorize module types.
- Explain the concept of "functional independence" and
describe its benefits.
- Explain the concept of "cohesion"; and describe its benefits.
- List and define the type of cohesion (the cohesion spectrum).
- Explain the concept of "coupling" and describe why software
engineers avoid coupling.
- List the various types of coupling.
- Define "data design."
- Define "architectural design."
- Define "procedural design."
- Explain the basic approach embodied in "structured programming."
- Explain the use of graphical design notations.
- List the two commonly used graphical design notations.
- Describe the use of decision tables.
- Describe the use of Program Design Languages (PDLs).
- Produce an outline of a Design Specification.
- Apply the techniques of software design to a software development.