Software Engineering - Syllabus
Embark on a profound academic exploration as you delve into the Software Engineering course () within the distinguished Tribhuvan university's BCA department. Aligned with the BCA Curriculum, this course (CACS253) seamlessly merges theoretical frameworks with practical sessions, ensuring a comprehensive understanding of the subject. Rigorous assessment based on a 60 + 40 marks system, coupled with a challenging passing threshold of , propels students to strive for excellence, fostering a deeper grasp of the course content.
This 3 credit-hour journey unfolds as a holistic learning experience, bridging theory and application. Beyond theoretical comprehension, students actively engage in practical sessions, acquiring valuable skills for real-world scenarios. Immerse yourself in this well-structured course, where each element, from the course description to interactive sessions, is meticulously crafted to shape a well-rounded and insightful academic experience.
Course Description
This course includes the topics that provide fundamental concept and standard of software engineering so that students will be able to develop software and/or handle software project using the global standard of software.
Course Objectives
This Course is designed to provide the students with the basic competencies required to identify requirements, documents the system design and maintain a developed system. It presumes a general understanding of computers and programming which are covered in the first and second semester of the degree.
Units
Definition of Software, Type of Software, Characteristic of Software, Attributes of Good Software, Definition of Software Engineering. Software Engineering Costs, Key Challenges that Software Engineering Facing, System Engineering and Software Engineering, Professional Practice.
Software Development Process Model
Software Process, Software Process Model: The Waterfall Model, Evolutionary Development, Component-Based Software Engineering (CBSE); Process Iteration: Incremental Delivery, Spiral Development: Rapid Software Development: Agile Methods, Extreme Programming, Rapid Application Development, Software Prototyping; Rational Unified Process (RUP), Computer Aided Software Engineering (CASE): Overview of CASE Approach, Classification of CASE tools.
Software Requirement Analysis and Specification
System and Software Requirements, Type of Software Requirements: Functional and Non-Functional Requirements, Domain Requirements, User Requirements; Elicitation-and Analysis of Requirements: Overview of Techniques, View Points, Interviewing, Scenarios, Use-Case. Ethnography, Requirement Validation, Requirement Specification, Feasibility.
Software Design
Design Concept: Abstraction, Architecture, Patterns, Modularity: Cohesion, Coupling; Information Hiding, Functional Independence, , Refinement; Architectural Design; MOdel, Client Server Model, Layered Model, Modular DecompositiOir: Proced al Design TisinR Structured Methods, User Interlace Design: Human-Computer Interaction, Information Presentation, Interface Evaluation; Design Notation.
Coding
Programming Language and Development tools. Selecting Languages and Tools, Good Programming Practices
Software Testing and Quality Assurance
Software Maintenance
Evolving Nature of Software, Different Types of Maintenance: Fault Repair, Software Adaptation, Functionality Addition or Modification; Maintenance Prediction, Re-Engineering, Configuration Management (CM): Importance of CM, Configuration Items, Versioning;
Managing Software Projects
Needs for the Proper Management of Software Projects, Management Activities: Project Planning, Estimating Costs, Project Scheduling, Risk Management, Managing People;