Software Engineering

Course Attendees

Still no participant

Course Reviews

Still no reviews

Code - CUTM1605

Credit - 2-0-1

Course Objectives:

  • The aim of the course is to provide an understanding of the working knowledge of the techniques for estimation, design, testing, and quality management of large software development projects.
  • To learn software development processes that include process models, user requirements, specifications, software design, coding, software testing, maintenance, documentation, software process/product metrics, risk management, quality management.
  • Describe and compare various software development methods and understand the context in which each approach might be applicable.
  • Expand students’ familiarity with mainstream languages used to model and analyze object designs (e.g., UML).
  • Introduce state-of-the-art tools and techniques for large-scale software systems development.
  • Implement the major software development methods in practical projects.

Learning Outcomes:

  • Learn and understand Software Development Life Cycle.
  • Identify, collect user requirements and prepare design documents required for managing software.
  • Ability to translate end-user requirements into system and software requirements, using e.g. UML, and structure the requirements in a Software Requirements Document (SRD).
  • Build software using DevOps model so as to release the software faster and more frequently.
  • Identify and apply appropriate software architectures and patterns to carry out high level design of a system and be able to critically compare alternative choices.
  • The students will have experience and/or awareness of design & testing principles to software project development and will be able to develop a simple testing report.

Course Syllabus:

 

Module I - Introduction to Software Engineering and Process Models

The evolving role of software, changing nature of software, software myths, software development challenges.

Generic view of process: process framework, the capability maturity model integration (CMMI), process patterns, process assessment, personal and team process models.

Process Models and Software Development Life Cycle Phases, Traditional Life Cycle Models: Waterfall Model, ‘V’ Model, Prototyping Model, the Iterative Waterfall Model, the Spiral Model, Evolutionary model, Component-Based Software Engineering (CBSE). Rapid software development models: Agile methods, Extreme programming, Rapid application development (RAD).

 

 

Module II - Software Requirement Analysis and Specification

Software Requirement Engineering: Functional and non-functional requirements, user requirements, system requirements, interface specification, the software requirements document.

Requirement Engineering Process: Requirement Inception, Identification of Stakeholders, Feasibility studies, requirements elicitation and analysis, requirements validation, requirements management.

System models: Context models, behavioral models, data models, object models, structured methods.

Module III – Object Oriented Analysis and Design

Introduction to OOAD with OO Basics – Unified Process – UML diagrams – Use Case –Case study – the Next Gen POS system, Inception -Use case Modelling – Relating Use cases – include, extend and generalization – When to use Use-cases. Class Diagram–– Elaboration – Domain Model – Finding conceptual classes and description classes – Associations – Attributes – Domain model refinement – Finding conceptual class Hierarchies – Aggregation and Composition – Relationship between sequence diagrams and use cases – When to use Class Diagrams.

Module IV – Dynamic OO Modeling

Dynamic Diagrams – UML interaction diagrams – System sequence diagram – Collaboration diagram – When to use Communication Diagrams – State machine diagram and Modelling –When to use State Diagrams – Activity diagram – When to use activity diagrams Implementation Diagrams – UML package diagram – When to use package diagrams – Component and Deployment Diagrams – When to use Component and Deployment diagrams.

Module V - Software Testing

Structured Design Methodologies: Coupling and Cohesion, Software Testing: Testing Fundamentals, Verification & Validation, Black Box Testing, White Box Testing, Unit Testing, Integration Testing, Object Oriented Testing, System Testing, Alpha and beta testing, Regression testing.

Module VI - Software Quality Assurance

Software Quality Concepts, Software Quality Metrics and its Classification, Software Size Metrics: LOC Metrics, Function Point Metrics, Process point. Software Configuration Management (CM), Software Quality Assurance (SQA), Software Quality and Agile Methods, Automated and Manual Functional Testing:  Acceptance testing, Mock objects, User interface testing (HTTPUnit, Canoo), Performance testing. Software Metrics and Analytics, Quality and Process Standards and Guidelines

Module VII - Risk Management in Software Engineering Projects

Risk management: Reactive vs. Proactive Software Risk, Risk Identification, Risk projection, Risk refinement, Risk mitigation, monitoring & management - The RMMM Managing people.

 

Text Books:

  1. Roger S. Pressman, "Software Engineering: A practitioner's Approach", 7th edition, McGraw-Hill International edition
  2. Ian Sommerville, "Software Engineering", 10th edition, Pearson Education
  3. Rajib Mall, "Fundamentals of Software Engineering", 4th edition, Prentice Hall India Learning Private Limited.
  4. Grady Booch. Object-oriented analysis and design with applications / Grady Booch. -. 2nd ed. ISBN 0-8053-5340-2.

Reference Books:

  1. Grady Booch, James Rambaugh, Ivar Jacobson, "The unified modeling language user guide", Pearson Education.
  2. James F. Peters, WitoldPedrycz, John Wiley, "Software Engineering, an Engineering approach"
  3. Waman S Jawadekar, "Software Engineering principles and practice", The McGraw-Hill Companies.

Our Main Teachers

Rakesh Kumar Ray

Assistant Professor in Department of Computer Science
VIEW PROFILE

Rakesh Kumar Ray, M. Tech. in Computer Science, BPUT Odisha. His research area includes the application of machine learning and image processing in the fields of smart agriculture. Programming Skill: C Programming C ++ Programming Java and J2EE C# Programming