Module 8

Software Engineering / JavaScript Flow Control

Outline Chapter 9

Chapter 9 Object-Oriented Design and High-Level Programming Languages

9.1 Object-Oriented Methodology

Object Orientation

Design Methodology

Example

9.2 Translation Process

Compilers

Interpreters

9.3 Programming Language Paradigms

Imperative Paradigm

Declarative Paradigm

9.4 Functionality in High-Level Languages

Boolean Expressions

Data Typing

Input/Output Structures

Control Structures

9.5 Functionality of Object-Oriented Languages

Encapsulation

Classes

Inheritance

Polymorphism

9.6 Comparison of Procedural and Object-Oriented Designs

Ethical Issues: Hoaxes and Scams


Related FGCU Courses

http://icarus.fgcu.edu:8080/CourseDescriptions/

COP 3003 Object-Oriented Programming

SE & CIS Requirement

Computer programming concepts and problem solving are explored using an object-oriented programming language. Topics include use of predefined classes, creation of objects and classes, encapsulation using visibility modifiers, inheritance, class hierarchies, polymorphism, interfaces, exceptions, and stream I/O. Graphics, graphical user interfaces (GUIs), basics of networking, and multi-threading are explored. Depending on the selected language, some language-specific features are introduced. Includes two hours of lecture and one hour of lab per week.

CEN 3031 Software Engng Fundamentals

SE Requirement

The software engineering process stages are studied and applied to the development of a significant computer application using object-oriented design. These stages include requirements, design, prototyping, implementation, documentation, testing, code reviews, maintenance, and enhancements. Tools and strategies to use at the various stages are explored, including those used in the management of large amounts of code.


Lesson

Day One

  • Chapter questions review

  • Learning programming languages

  • Coding JavaScript

Day Two

  • Object-Oriented Methodology

    • Object Orientation

    • Design Methodology

    • Functionality of Object-Oriented Languages

      • Encapsulation

      • Classes

      • Inheritance

  • JavaScript Objects w3schools

Project Review

JS Introduction

  • JS in your web site

Project Preview

JS Flow Control

Software Engineering (SE)

In every computing application domain, professionalism, quality, schedule, and cost are critical to producing software systems. Because of this, the elements of software engineering are applicable to developing software in all areas of computing. A wide variety of software engineering practices have been developed and utilized since the need for a discipline of software engineering was first recognized. Many trade-offs between these different practices have also been identified. Practicing software engineers have to select and apply appropriate techniques and practices to a given development effort in order to maximize value. To learn how to do so, they study the elements of software engineering. Software engineering is the discipline concerned with the application of theory, knowledge, and practice to effectively and efficiently build reliable software systems that satisfy the requirements of customers and users. This discipline is applicable to small, medium, and large-scale systems. It encompasses all phases of the lifecycle of a software system, including requirements elicitation, analysis and specification; design; construction; verification and validation; deployment; and operation and maintenance. Whether small or large, following a traditional plan-driven development process, an agile approach, or some other method, software engineering is concerned with the best way to build good software systems. Software engineering uses engineering methods, processes, techniques, and measurements. It benefits from the use of tools for managing software development; analyzing and modeling software artifacts; assessing and controlling quality; and for ensuring a disciplined, controlled approach to software evolution and reuse. The software engineering toolbox has evolved over the years. For instance, the use of contracts, with requires and ensure clauses and class invariants, is one good practice that has become more common. Software development, which can involve an individual developer or a team or teams of developers, requires choosing the most appropriate tools, methods, and approaches for a given development environment.

ACM Topics:

  • System design principles: levels of abstraction (architectural design and detailed design), separation of concerns, information hiding, coupling and cohesion, re-use of standard structures

  • Design Paradigms such as structured design (top-down functional decomposition), object-oriented analysis and design, event driven design, component-level design, data-structured centered, aspect oriented, function oriented, service oriented

  • Structural and behavioral models of software designs

  • Design patterns


KA Learning Outcomes:

  1. Articulate design principles including separation of concerns, information hiding, coupling and cohesion, and encapsulation. [Familiarity]

  2. Use a design paradigm to design a simple software system, and explain how system design principles have been applied in this design. [Usage]

  3. Construct models of the design of a simple software system that are appropriate for the paradigm used to design it. [Usage]

  4. Within the context of a single design paradigm, describe one or more design patterns that could be applicable to the design of a simple software system. [Familiarity]