New Building Website

CSA 348 Applied Software Engineering (3 credits)

Typically offered during both the fall and spring semesters.

Catalog description:

Study of all phases of the systems development life cycle: project identification and justification, requirements analysis, data modeling, process modeling, design and specification techniques, prototyping, systems architectures, software design and construction, and object oriented analysis and design.

Prerequisite:

CSA274

 
Course Objectives:

  • Survey and apply alternative approaches to the software development life-cycle including project organization and management.
  • Apply object oriented system modeling.
  • Apply methods of requirements identification, elicitation, and analysis.
  • Translate a logical system design into a physical system design and program specifications using object oriented design methodology.
  • Apply methods of configuration management and software testing.
  • Explain the purpose of design in the creation of software systems, and understand the use of abstraction in this process.
  • Describe the importance of formal methods of analysis and design and of recording analysis and design decisions.
  • Describe methods of quality assurance in analysis, design, and implementation.
  • Effectively document and communicate a software system, both in writing and orally.
  • Apply several analysis and design exercises to amplify the above concepts and methods, including a team project.

 Practiced Success Skills

  • Team project requiring analysis of a problem leading to preparation of a detailed written Software Requirements Specification (SRS)
  • One or more presentations related to project milestones and final SRS
  • Independent work with a client to create the SRS 

Learning Outcomes:

CSA348.1:       Describe the software life cycle, distinguishing among the purposes of the various phases.
CSA348.1.1:     The student can identify and describe the purpose of, and activities in, the stages of a development life cycle.
CSA348.1.2:     The student can identify and describe different software life cycle models, and processes and activities associated with each phase.
CSA348.1.3:     The student can define life cycle testing activities such as usability testing, unit testing, integration testing, and regression testing.
CSA348.1.4:     The student can describe the importance of recording analysis and design decisions.
CSA348.1.5:     The student can identify and analyze alternative solutions to a problem, including build vs. buy.

CSA348.2:       Describe and apply standard methods of project planning, requirements analysis, design, and verification and validation to system development problems.

CSA348.2.1:     The student can apply contemporary analysis and design methods, such as object-oriented analysis and design (OOA/D).
CSA348.2.2:     The student can create and interpret a project plan using task durations, dependencies, and milestones in the context of a software development model.
CSA348.2.3:     The student can describe the purpose of configuration management to control different versions of a system.
CSA348.2.4:     The student can describe methods of verification and validation, including testing approaches and tools.
CSA348.2.5:     The student can describe the costs of failing to do adequate quality assurance.
CSA348.2.6:     The student can work in a team environment to apply methods and tools to a significant portion of the software life cycle.

CSA348.3:        Use standard tools, e.g. UML, to analyze and synthesize components of software systems.
CSA348.3.1:     The student can create a requirements specification document using scenarios (use cases) and document them with UML (e.g. use case diagrams and sequence diagrams).
CSA348.3.2:      The student can create a design specifications including domain models and software architectures and document with UML.
CSA348.3.3:      The student can translate design to class-level specifications and document class-level behavior with UML.
CSA348.3.4:      The student can use abuse cases to identify potential ethical conflicts in the use of a software system and propose modifications to mitigate abuses.

Required topics (approximate weeks allocated):

  • Introduction (0.5)
    • Definition, Concepts, Activities
  • Modeling with UML (1.0)
    • Use Case Diagrams
    • Class Diagrams
    • Interaction (sequence) Diagrams
  • Project Organization and Communication (0.5)
    • Project organization
    • Project activities
  • Requirements Elicitation (1.0)
    • Elicitation concepts
    • Elicitation activities
    • Negotiation
  • Requirements Analysis (1.0)
    • Analysis Concepts
    • Analysis Activities
  • System Design (2.0)
    • System architecture
    • Design activities
    • Addressing Design Goals
  • Object Design (2.0)
    • Design Patterns
    • Reuse
    • Interface specification
    • Mapping models to code
  • Testing (1.0)
    • Testing Concepts
    • Testing Activities
    • Testing Management
  • Rationale Management (0.5)
  • Configuration Management (0.5)
  • Project Management (0.5)
  • Software Life Cycle (1.0)
  • Software Engineering Methodologies (1.0)
    • Methodology Issues
    • Agile methods
    • Component Based Software Engineering
  • Exams (1.0)
  • Oral Presentations (1.5)