Software Engineering Syllabus

Course Code: BCA513

Course Title: Software Engineering (4 Credits)



Course Contents


Unit 1: Software Development Approaches: Introduction; Evolving Role of Software; Software Characteristics; Software Applications.


Unit 2: Software Design Processes: Introduction; What is meant by Software Engineering?; Definitions of Software Engineering; The Serial or Linear Sequential Development Model; Iterative Development Model;  The incremental Development Model; The Parallel or Concurrent Development Model; Hacking.


Unit 3: Software Reliability: Introduction; Software reliability metrics; Programming for Reliability: Fault avoidance, Fault tolerance, Software Reuse.


Unit 4: Software Design Principles: Introduction, System Models: Data-flow models, Semantic data models, Object models, Inheritance models,  Object aggregation, Service usage models, Data Dictionaries; Software Design: The design process, Design Methods, Design description, Design strategies, Design quality; Architectural Design: System structuring, The repository model, The client–server model, The abstract machine model, Control models, Modular decomposition, Domain-specific architectures.


Unit 5: Object Oriented Design: Introduction; Object Oriented Design: Objects, Object Classes & Inheritance, Inheritance, Object identification, An object-oriented design example, Object aggregation; Service Usage; Object Interface Design: Design evolution, Function oriented design, Data –flow design; Structural Decomposition: Detailed design.


Unit 6: An Assessment of Process Life-Cycle Models: Introduction; Overview of the Assessment of Process; The Dimension of time; The Need for a business model in Software engineering; Classic Invalid assumptions: First Assumption: Internal or External Drivers, Second Assumption: Software or Business Processes, Third Assumption: Processes or Projects, Fourth Assumption: Process Centered or Architecture Centered; Implications of the New Business Model; Role of the Problem-Solving Process in This Approach: Data, Problem Definition, Tools and Capabilities; Redefining the Software Engineering Process: Round-Trip Problem-Solving Approach, Activities, Goals, Interdisciplinary Resources, Time.


Unit 7: Configuration Management: Introduction; Change Management; Version and Release Management: Version identification, Release management, Version management tools; Software Maintenance; The maintenance process, System documentation, Maintenance costs, Maintainability measurement; Software Reengineering; Software Refactoring,


Unit 8 : Software Testing Techniques: Introduction; Software Testing Fundamental; Testing Principles; White Box Testing; Control Structure Testing; Black Box Testing; Boundary Value Analysis; Testing GUIs; Testing Documentation and Help Facilities.


Unit 9: Software Testing Assurance: Introduction; Verification and Validation: Validation Testing, Validation Test Criteria; Test Plan:  Test Documentation; Test Strategies:  Top-Down Testing, Bottom-Up Testing, Thread testing, Stress testing,  Back-to-back testing; Principles of Testing; Testing methods and tools: Testing through reviews, Black-box testing (Functional testing), White box testing (glass-box testing), Testing software changes; Additional requirements in testing OO Systems; System Testin;g Acceptance Testing; Regression testing; Metrics Collection, Computation, and Evaluation; Test and QA plan; Managing Testing Functions.


Unit 10: Software Testing Strategies: Introduction; Organizing for software testing; Software Testing Strategy; Unit Testing: Unit Test Considerations; Top-down Integration; Bottom-up Integration.


Unit 11: People and Software Engineering: Introduction; Traditional Software Engineering; The importance of people in problem solving process: The Rolers of Users in Problem definition; Human driven software engineering; The people factor – Multidisciplinary aspects; The team factor; The customer factor.


Unit 12: Software Technology and Problem Solving: Introduction; Software Technology as Enabling Business Tool – What Computers Can Do ?: Exponential Growth in Capability, Business Problem-Solving Optimization, The E-Business Revolution, Portability Power, Connectivity Power; Software Technology as a Limited Business Tool – What Computers Cannot Do?: People Have Different Needs That Change over Time, Most Users Do not Understand Computer Languages, Decisions and Problems – Complex and Ill Structured, Businesses View Software Technology as a Black Box for Creating Economic Value; A View of Problem Solving and Software Engineering.


Unit 13: Diversification of Problem-Solving Strategies in Software Engineering: Introduction; Understanding Diversification in Software Engineering: Driving Forces of Diversity in Development Strategies; The Hidden Value of Differences; Integration – Not Differentiation: Investing in Diversification, Factors That Affect Interdisciplinary Ignorance, Unreliable Sources of Information, Partial Knowledge, Lack of Communication, Interorganizational Ignorance; Diversity in Problem Solver Skills at the Project Management Level.


Unit 14: Case Study: Introduction; System Requirements; Architectural Alternatives.