Start Exam: Ocjea

Oracle Certified Java Enterprise Architect

Access: Public Instant Grading

Start FlashCards Download PDF Exam Series Learn

Get the best Software engineering course in your pocket!

The objective of this session is to introduce the subject of software engineering. When you have read this session you will understand what software engineering is and why it is important, know the answers to key questions which provide an introduction to software engineering, understand ethical and professional issues which are important for software engineers.

Introduction

Virtually all countries now depend on complex computer-based systems. More and more products incorporate computers and controlling software in some form. The software in these systems represents a large and increasing proportion of the total system costs. Therefore, producing software in a cost-effective way is essential for the functioning of national and international economies.

Software engineering is an engineering discipline whose goal is the cost-effective development of software systems. Software is abstract and intangible. It is not constrained by materials, governed by physical laws or by manufacturing processes. In some ways, this simplifies software engineering as there are no physical limitations on the potential of software. In other ways, however, this lack of natural constraints means that software can easily become extremely complex and hence very difficult to understand.

Software engineering is still a relatively young discipline. The notion of ‘software engineering’ was first proposed in 1968 at a conference held to discuss what was then called the ‘software crisis’. This software crisis resulted directly from the introduction of powerful, third generation computer hardware. Their power made hitherto unrealisable computer applications a feasible proposition. The resulting software was orders of magnitude larger and more complex than previous software systems.

Early experience in building these systems showed that an informal approach to software development was not good enough. Major projects were sometimes years late. They cost much more than originally predicted, were unreliable, difficult to maintain and performed poorly. Software development was in crisis. Hardware costs were tumbling whilst software costs were rising rapidly. New techniques and methods were needed to control the complexity inherent in large software systems.

These techniques have become part of software engineering and are now widely although not universally used. However, there are still problems in producing complex software which meets user expectations, is delivered on time and to budget. Many software projects still have problems and this has led to some commentators (Pressman, 1997) suggesting that software engineering is in a state of chronic affliction.

As our ability to produce software has increased so too has the complexity of the software systems required. New technologies resulting from the convergence of computers and communication systems place new demands on software engineers. For this reason and because many companies do not apply software engineering techniques effectively, we still have problems. Things are not as bad as the doomsayers suggest but there is clearly room for improvement.


Oracle Certified Master, Java EE 5 Enterprise Architect Mock Exams

Formerly Sun Certified Enterprise Architect (SCEA).

Exam PDF eBook: 
Oracle Certified Java Enterprise Architect
Download SCEA Mock Exam PDF eBook
121 Pages
2010
English US
Educational Materials



Sample Questions from the Oracle Certified Java Enterprise Architect Exam

Question: What does UML stand for and used for?

Choices:

UML stands for Unified Markup Language and used to write an architecture requirements in a standard form

UML stands for Unified Modeling Language and used to graphically represent a business process

UML stands for Unified Modeling Language and used to graphically represent an architecture

UML stands for Unidirectional Modeling Language and used to graphically represent an architecture

Question: What is a true statement or a definition for Architecture?

Choices:

Architecture refers to implementation details of a system components

Architecture is a high level representation of a system

Architecture covers only the nonfunctional requirements of a system, leaving the functional requirements covered later by the developers

An architecture of a reconfigurable/flexible system should shout out the purpose, the nature or the customer-service the system provides

An architecture of a system abstracts its components and their behavior

Question: What are the pros of encapsulation?

Choices:

avoid code duplicity

prevent any inappropriate modification of an object's attributes

other classes, which use a well encapsulated class,won't need to know the implementation details of this class

subtypes of a well-encapsulated class won't need to override most of the inherited methods

modifications to the implementation of the class, won't affect how other classes use the class, as long the interface between them kept unchanged

Question: What does encapsulation mean?

Choices:

Encapsulation is a measure of how a class or a module is dependent on another class or module

Encapsulation means hiding the attributes of a class by marking them private and restrict accessing them through public methods

Encapsulation means hiding the constructors of a class by marking them private and enable constructing objects through one public method

Encapsulation means hiding the internal implementation and representation of an object and provide to the outer world only an interface of public methods to access the object

Question: Which of the following class inheritance scenarios describes polymorphism in Java?

Choices:

one class inherits from multiple parent classes

one class implementing many interfaces

multiple classes implementing one interface

multiple classes inherit from single abstract parent class

Question: What are the pros of a high cohesive class?

Choices:

you can read easily a high cohesive class and understand its purpose and role in the system

testing and maintaining a high cohesive class will be easier

subtypes of a high cohesive won't need to override most of the methods

other classes, which use a high cohesive class,don't need to know the implementation details of this class

small high cohesive classes can be reused by other modules without the need to overhead these modules with extra unrelated functions

Question: You are writing a class which is responsible for withdrawing and depositing into user's bank account. You marked some methods "public", which are the allowed actions the user can invoke. While marking the others along with the data members "private". You also while writing the class made sure that this class will only focus on its main purpose (bank transactions) and not to include any irrelevant methods. Which two design principles are you following?

Choices:

Coupling

Encapsulation

Cohesion

Polymorphism

Abstraction

Inheritance

Question: What is true about coupling between classes?

Choices:

coupling can be only found between a subtype and its super type

coupling means how a method in a class can be affected and require modification due to a modification in another class

coupling is the degree to which classes depend on each other

coupling is the degree to which methods in the same class depend on each other

Question: What is considered a nonfunctional requirement of a system? Choose all what apply

Choices:

Availability

Compatibility

Reliability

Performance

Cost

Question: What are the differences or similarities between architecture and design?

Choices:

Both are of the same high-level of abstraction

Architecture is of higher level of abstraction

Architecture concerns only about the nonfunctional requirements of a system (scalability,security...), whereas design concerns about the functionality required by a system

In the design process, the system components internal details are elaborated based on the architecture

Architecture and design are synonyms for the same task

Question: What does cohesion mean?

Choices:

cohesion is a measure of how the methods of a class or a module are meaningfully and strongly related and how focused they are in providing a well-defined purpose

cohesion is a measure of how the attributes of a class or a module are hidden from other classes and resticly accessed through only public accessors

cohesion is a measure of how a class or a module is dependent on another class or module

cohesion is a measure of how the methods within a class are dependent on each other

Start FlashCards Download PDF Exam Series Learn
Source:  Oracle, Sun, Java and all Java-based trademarks and logos are trademarks or registered trademarks of Oracle and/or its affiliates.