Software Engineering

Course Code: MIT109

Course Title: Software Engineering (4 Credits)




Course Contents




Unit-1: Software Development Approaches: Evolving Role of Software, Software Characteristics, Software Applications.


Unit-2: Software Design Processes: 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 to Software Reliability, Software reliability metrics, Programming for Reliability- Fault avoidance, Fault tolerance; Software Reuse.


Unit-4: Software Design Principles: Introduction to Software Design, System Models-data -flow model, Semantic data models, Object models; Data Dictionaries, Software Design- The design process, Design Methods, Design description, Design strategies, Design quality; Architectural Design- System structuring, Control models, Modular decomposition, Domain-specific architectures.


Unit-5: Object Oriented Design :Introduction to Object Oriented Design,  Object Oriented Design- Objects, Object Classes & 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: Configuration Management: Introduction to Configuration Management, 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-7: Software Testing Techniques: 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-8: Software Testing Assurance: 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 Testing, Acceptance Testing, Regression testing , Metrics Collection, Computation, and Evaluation, Test and QA plan, Managing Testing Functions.


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


Unit-10: Case Study: System Requirements, Architectural Alternatives.




Unit-1: Software Development Strategies – I Basic Planning and Control: Software Engineering, Characteristics of software Development Strategies, Life-Cycle Models- The waterfall Model, Incremental and Iterative Models; Risk-Reduction Models- The Prototyping Model, The Spiral Model, The Clean Room Model.


Unit-2: Software Development Strategies –II Tools, Objects, and Reuse: Case Tools, Object-oriented and Reuse Model- Object-Oriented Model, Rational Unified Process Model, Commercial Off-the-shelf Model (COTS), The Reengineering Model.


Unit-3: Software Development Strategies – III Process Improvement: Productivity-Driven Dynamic Process Modeling, Human factors in Development Models, The capability Maturity Model, Personal and Team software development Models.


Unit-4: Software Development Strategies-IV Reinventing How It Is Done: Introduction, Open Source development Model, Agile Software Development, Rapid Application Development Model, Workflow Application Model, Aspect oriented Development.


Unit-5: An Assessment of Process Life-Cycle Models: 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-6: 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-7: Diversification of Problem-Solving Strategies in Software Engineering: 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; Diversity in Problem Solver Skills at the Project Management Level.


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