Schedule

Overview, 26 Mar

Desired Learning Outcomes

  1. State the class policies concerning grading, attendance, participation and academic integrity.

Reading Assignment (due next session)

Lab Assignment

Introduction to Software Engineering, 28 Mar

Desired Learning Outcomes

  1. Describe the four eras in the evolution of software.
  2. Compare and contrast the hardware failure curve with the idealized and actual software failure curves.
  3. 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.
  4. Outline the "classic" or "waterfall" model of the software development process. Describe each phase of the process.
  5. Describe "prototyping" and explain its applicability to software engineering.
  6. Describe the "spiral" model of software development.
  7. Explain "fourth generation" program development techniques.
  8. Describe the three generic steps in the software life cycle and explain the specific steps within each.
  9. Describe the view of the super-programmer and explain why super-programmers won't save the industry from the chronic affliction.
  10. Explain the role of technology in the resolution of the chronic affliction.

Reading Assignment-due next session

Lab Assignment

Software Organization Maturity, 2 Apr

Desired Learning Outcomes

  1. State why an organization needs to understand its software development processes.
  2. List the five maturity levels establish the the Software Engineering Institute.
  3. Describe the characteristics commonly observed in a Level 1 organization.
  4. Describe the characteristics of a Level 2 organization.
  5. Describe the characteristics of a Level 3 organization.
  6. Describe the characteristics of a Level 4 organization.
  7. Describe the characteristics of a Level 5 organization.
  8. Given a description of an organization, selected the maturity level that most closely matches the organization. Explain your reasons.

Reading Assignment (Due next session)

  1. Pressman, Chapter 2.
  2. Jones, What Are Function Points?

Lab Assignment

Project Management, SW Metrics, 4 Apr

Desired Learning Outcomes

  1. Describe the purpose and benefits of establishing the objectives and scope of a software development at the outset.
  2. Describe the direct and indirect measures of software.
  3. Explain the six types of software measurements.
  4. Define "quality" and relate the definition to software.
  5. Give examples of size-oriented metrics.
  6. Give examples of function-oriented metrics.
  7. Explain what is meant by "correctness," "maintainability", "integrity," and "usability" with respect to software quality metrics.
  8. Present the arguments for measuring software.
  9. Explain how to establish a baseline.
  10. Explain how to gather software metrics.

Reading Assignment (due next session)

Lab Assignment

Project Management, Estimation, 9 Apr

Desired Learning Outcomes

  1. Explain the three dimensions along which one can conduct estimates for a project.
  2. Explain the concept of "software scope" and apply the concept to a software development situation.
  3. List and define the resource types associated with a software development project.
  4. List and describe the various tools available to software engineers.
  5. Define and discuss the benefits of "reusability."
  6. Explain the two decomposition techniques used for estimation. Apply them to a software development situation.
  7. Explain the COCOMO model for software estimation. Apply it to a software development situation.
  8. Explain the Putnam Estimation model. Apply it to a software development situation.
  9. Describe automated estimation tools. Give examples.

Reading Assignment (due next session)

Lab Assignment

Project Management, Planning, 11 Apr

Desired Learning Outcomes

  1. Define what is meant by "risk" with respect to software development.
  2. Explain what is included in the four risk analysis activities. Conduct a risk analysis of a proposed software development.
  3. 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."
  4. Define "task network." Construct a task network for a proposed software development effort.
  5. Explain the "40-20-40" rule and describe its significance.
  6. Apply the Critical Path Method to a proposed development effort.
  7. Describe the importance of project tracking.
  8. Describe how to approach the "make or buy" decision.
  9. Describe the "Chief Programmer Team" approach to software development organization.
  10. Produce an outline of a software project plan.

Reading Assignment (due next session)

Lab Assignment

Lab, 26 Jan.

Complete contract proposal.

Software Quality Assurance, 16 Apr

Contract Proposal Due!

Desired Learning Outcomes

  1. Define "quality."
  2. State which phases of the project life cycle to which SQA applies.
  3. State and define the three software quality factors proposed by McCall.
  4. Identify the subfactors associated with each of the three factors.
  5. Define each subfactor associated with the software quality factors.
  6. Explain Hewlett-Packard's FURPS system for assessing the quality of software.
  7. List and define the seven activities associated with SQA.
  8. State the reason why software reviews are needed.
  9. State the two primary (high level) functions fulfilled by software reviews.
  10. Describe the typical cost escalation factors associated with defect discovery at each phase of the product life cycle.
  11. Explain the "defect amplification model."
  12. Describe the Formal Technical Review (FTR) process, including any products generated by the process.
  13. List guidelines for conducting a FTR and explain why they are useful.
  14. Produce an outline of a FTR checklist and include major areas of concern within each major topic.

Reading Assignment (due next session)

Lab Assignment

SQA, continued, 18 Apr

Desired Learning Outcomes

  1. Describe the "design structure quality index" (DSQI) and explain the various factors associated with it.
  2. Compute a DSQI, given information about a software project.
  3. Describe the IEEE Software Maturity Index (SMI) and explain the various factors associated with it.
  4. Compute a SMI, given information about a software project.
  5. State the principles of statistical SQA and explain how they may be applied.
  6. Define reliability, with respect to software.
  7. Define MTBF, MTTF and MTTR.
  8. Calculate a system's availability, given information about a software project.
  9. Define "software safety."
  10. Describe the steps you would take to assess the current state of SQA in an organization.
  11. Describe the benefits of SQA.
  12. Describe the negative aspects of SQA.
  13. Produce an outline of a SQA Plan.

Lab Assignment

Software Configuration Management, 23 Apr

Desired Learning Outcomes

  1. List the phases of the software lifecycle in which Software Configuration Management (SCM) is useful.
  2. Describe the high-level activities included in SCM.
  3. State the First Law of System Engineering.
  4. Define "baseline."
  5. Define "Software Configuration Item (SCI)."
  6. List the typical SCIs associated with a software development project.
  7. List the five SCM tasks.
  8. Define the five SCM tasks.
  9. Define "basic object" and "composite object."
  10. Describe "version control."
  11. Outline the process for processing a change to an SCI.
  12. State the purpose of configuration audits.
  13. Define "status reporting" with respect to SCM. Include the typical questions answered by this process.

Lab Assignment

Reading Assignment (due next session)

Configuration Management Practicum, 25 Apr

Desired Learning Outcomes

  1. Conduct an FCA/PCA
  2. Critique an FCA/PCA

Reading Assignment (due next session)

Computer System Engineering, 30 Apr

Desired Learning Outcomes

  1. List the common elements of a computer-based system.
  2. State the high-level objective of the computer system engineering process.
  3. State what is meant by "bounding" a system.
  4. Define "allocation" with respect to the system engineering process.
  5. Describe the activities associated with the Definition phase of the system engineering process. Include the products generated in this phase.
  6. Describe the activities associated with the Development phase. Identify any products produced by this phase.
  7. Describe the verification, release and maintenance phase, identifying any products produced by this phase.
  8. List and explain the steps associated with defining the Human-Computer Interface (HCI).
  9. State the purposes of the system analysis process.
  10. Explain the activities of the analyst in each of the 6 steps of system analysis.
  11. State the purpose for modeling the system architecture.
  12. List the five elements of an architecture template.
  13. Explain the purpose of an "architecture context diagram."
  14. Explain the purpose of an "architecture flow diagram."
  15. Describe the contents of an Architecture Diagram Specification (ADS).
  16. Apply the concepts of system analysis to a software development project.
  17. Produce an outline of a typical System Specification.
  18. State the purposes of the System Specification Review (SSR).
  19. List typical questions answered by the SSR.

Lab Assignment

Reading Assignment (due next session)

Requirements Analysis Fundamentals, 2 May

Desired Learning Outcomes

  1. State the purpose of the requirements analysis phase of the software development process.
  2. List and define the five areas of effort in the requirements analysis phase.
  3. Identify the inputs to the requirements analysis phase.
  4. Identify the fundamental question answered by the requirements analysis phase.
  5. List the products of the requirements analysis phase.
  6. Describe the role of the requirements analyst. Include a description of the necessary character traits.
  7. Define "context-free questions." Describe the benefits of using context free questions and describe when they may be helpful.
  8. 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

  1. List the four fundamental principles of analysis.
  2. Define "information flow."
  3. Define "information content."
  4. Define "information structure."
  5. Describe the role of modeling in system analysis.
  6. Describe the benefits of "partitioning" in systems analysis.
  7. Define "essential view" and "implementation view" in the system analysis context.
  8. Describe each of the steps in software prototyping.
  9. Define "fourth-generation technique."
  10. Define "reusable software component."
  11. Define "formal specification language."
  12. List and define the eight specification principles.
  13. Produce an outline for a Software Requirements Specification (SRS).
  14. Describe the SRS review process.
  15. Apply the concepts of system analysis to a software development project.

Reading Assignment (due next session)

Structured Analysis, 9 May

Desired Learning Outcomes

  1. List the primary goals of structured analysis.
  2. List the two primary elements of a structured analysis.
  3. Define Data Flow Diagram (DFD).
  4. Explain what is meant by the arrows in a DFD.
  5. Explain what is meant by the bubbles in a DFD.
  6. Explain how DFDs show levels of increasing detail.
  7. Define "external entity" in the DFD context.
  8. Define "data store" in the DFD context.
  9. Define "information flow continuity" and "balancing" with respect to DFDs.
  10. Define "data dictionary."
  11. Define "processing narrative."
  12. Apply the concepts of structured analysis to a software development.
  13. List the six guidelines for producing a DFD.
  14. List the information contained in the Data Dictionary (DD).

Reading Assignment (due next session)

Software Design Fundamentals, 14 May

Desired Learning Outcomes

  1. Describe the inputs into the software design phase.
  2. State the benefits of a thorough design and the probable consequences of proceeding to the coding phase without an adequate design.
  3. Define "software design" in terms of its purpose and the activities associated with this phase.
  4. List the two steps of the design process.
  5. List the high-level guidelines for evaluating the quality of a software design.
  6. Define "abstraction," in the context of software.
  7. State the benefits of applying the concept of abstraction to the software design process.
  8. Differentiate between "procedural abstraction" and "data abstraction."
  9. Apply the concept of abstraction to a software development problem.
  10. Define "stepwise refinement" and explain its use in software development.
  11. Define "modularity" and explain its use in software development.
  12. Explain the typical relationship between the number of modules and the effort required to maintain those modules.
  13. Define "software architecture."
  14. Define "program structure."
  15. Define "depth," "width," "fan-in," "fan-out," "visibility," and "connectivity."
  16. Define "software procedure."
  17. Explain the concept of "information hiding," including the possible benefits of applying this technique.

Reading Assignment (due next session)

Software Design Fundamentals, cont., 23 May

Desired Learning Outcomes

  1. List the features used to categorize module types.
  2. Explain the concept of "functional independence" and describe its benefits.
  3. Explain the concept of "cohesion"; and describe its benefits.
  4. List and define the type of cohesion (the cohesion spectrum).
  5. Explain the concept of "coupling" and describe why software engineers avoid coupling.
  6. List the various types of coupling.
  7. Define "data design."
  8. Define "architectural design."
  9. Define "procedural design."
  10. Explain the basic approach embodied in "structured programming."
  11. Explain the use of graphical design notations.
  12. List the two commonly used graphical design notations.
  13. Describe the use of decision tables.
  14. Describe the use of Program Design Languages (PDLs).
  15. Produce an outline of a Design Specification.
  16. Apply the techniques of software design to a software development.