Software Engineering

  • Course level: All Levels


This  Software Engineering course, part of the Software Development MicroMasters Program, introduces how teams to design, build and test multi-version software systems.

This Software Engineering course covers the basic principles and concepts of software engineering; system requirements; secure programming in the large; modeling and testing; object-oriented analysis and design using the UML; design patterns; frameworks and APIs; client-server architecture; user interface technology; and the analysis, design, and programming of extensible software systems.

Sample labs and assignments:
– Evaluating the performance of various simple software designs.
– Adding features to an existing system.
– Testing a system to verify conformance to test cases.
– Building a GUI for an application.
– Numerous exercises building models in UML, particularly class diagrams and state machines.
– Developing and presenting a simple set of requirements (to be done as a team) for some innovative client-server applications of very small size.
– Implementing the above, using reusable technology to the greatest extent possible.

Additional teaching considerations:

– This Software Engineering course is a good starting point for exposing students to moderately sized existing systems. With such systems, they can learn and practice the essential skills of reading and understanding code written by others. Students should write code in the context of a particular domain, for example, the biological, physical, mathematical, or chemical sciences or even wider spectra such as game programming, business applications, and graphics and animation.

– It is suggested that a core subset of UML be taught, rather than trying to cover all features.

– It may be challenging for instructors to convey the nature of SE to students; however, this challenge may be addressed through strategies such as field trips to businesses and industries that utilize large software systems, guest lectures by developers and users of large software systems, and discussions about embedded systems in everyday life including ATMs, wireless devices, cell phones, various mobile devices, and computer games.



What Will I Learn?

  • How to build a non-trivial software system using an agile approach in a pair or team
  • Techniques for specifying the functional and non-functional aspects of a software system
  • Techniques for designing and testing a software system
  • The role of refactoring in building a quality system
  • And everything about software Engineering

Topics for this course

80 Lessons

Software Engineering

Software Engineering Basics00:00:00
Overview of Software Engineering00:00:00
Software Evolution00:00:00
Software Evolution Laws00:00:00
E-Type Software Evolution00:00:00
Software Paradigms00:00:00
Need of Software Engineering00:00:00
Characteristics of Good Software00:00:00
Software Development Life Cycle00:00:00
Software Development Paradigm00:00:00
Waterfall Model00:00:00
Structured Evolutionary Prototyping Model00:00:00
Incremental Model00:00:00
Rapid Application Development (RAD)00:00:00
Spiral Model00:00:00
V Model00:00:00
Scrum Development Model00:00:00
Big Bang Model00:00:00
Software Project Management00:00:00
Need of Software Project Management00:00:00
Software Project Manager00:00:00
Software Project Management Activities00:00:00
Project Estimation00:00:00
Project Estimation Techniques00:00:00
Project Scheduling00:00:00
Resource Management00:00:00
Project Risk Management00:00:00
Project Execution and Monitoring00:00:00
Project Communication Management00:00:00
Configuration Management00:00:00
Project Management Tools00:00:00
Critical Path Analysis00:00:00
Requirement Engineering Process00:00:00
Requirement Elicitation Techniques00:00:00
Software Requirements00:00:00
User Interface Requirements00:00:00
Software Metrics and Measures00:00:00
Software Design Levels00:00:00
Cohesion and Coupling00:00:00
Software Quality Attributes00:00:00
Data Flow Diagram00:00:00
Structured Charts00:00:00
HIPO Diagram00:00:00
Structured English00:00:00
Pseudo Code00:00:00
Decision Tables00:00:00
Entity Relationship Model00:00:00
Data Dictionary00:00:00
Structured Design00:00:00
Function Oriented Design00:00:00
Object Oriented Design00:00:00
Software Design Approaches00:00:00
Software User Interface Design00:00:00
Command Line Interface (CLI)00:00:00
Graphical User Interface00:00:00
User Interface Golden Rules00:00:00
Halstead’s Complexity Measures00:00:00
Cyclomatic Complexity Measures00:00:00
Function Point00:00:00
Structured Programming00:00:00
Functional Programmingon00:00:00
Programming Style00:00:00
Software Documentation00:00:00
Software Validation and Verification00:00:00
Manual Vs Automated Testing00:00:00
Testing Approaches00:00:00
Black Box Testing00:00:00
White Box Testing00:00:00
Testing Levels00:00:00
Testing Documentation00:00:00
Software Maintenance Overview00:00:00
Types of Maintenance00:00:00
Cost of Maintenance00:00:00
Maintenance Activities00:00:00
Software Re engineering00:00:00
Component Reusability00:00:00
CASE Tools00:00:00
Components of CASE Tools00:00:00
Scope of CASE Tools00:00:00
Software Engineering
40 £

Enrolment validity: Lifetime