SOFTWARE
ENGINEERING
Introduction to Software Engineering
Topics
1. Failures in Software Engineering
2. What is Software Engineering?
3. Concepts in Software Engineering
4. Development Activities
5. Managing Software
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
Failures in Software Engineering
• Before the 1970’s software developers were having
difficulties delivering software products.
• On Time
• On Budget
• On Expectations (Quality)
• On Expectations (Scope)
• The term software engineering was coined in 1968
as a response to the difficulties encountered by
software developers.
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
Failures in Software Engineering
• Some problems are:
• Year 1900 Bug (Y2K Bug)
• Leap Year Bug
• Interface Misuse
• Security (Worms and Viruses)
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
What is Software Engineering?
• Software Engineering is a modeling activity.
• Software Engineering is a problem-solving activity.
• Software Engineering is knowledge acquisition
activity.
• Software Engineering is a rationale-driven activity.
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
What is Software Engineering?
• Software Engineering is a modeling activity.
• Natural Science
• Biology
• Chemistry
• Others
• Social Science
• Psychology
• Sociology
• Artificial Science
• Computer Science
• Engineering
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
What is Software Engineering?
• Software Engineering is a problem-solving activity.
• Formulate Problem
• Analyze Problem
• Search for Solutions
• Select a Solution
• Specify the Solution
• Software Engineering is not ALGORITHMIC.
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
What is Software Engineering?
• Software Engineering is knowledge acquisition
activity.
• Linear Approach (Waterfall Model)
• Nonlinear Approach (Non-Waterfall Models)
• Issue-Based
• Risk-Based
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
What is Software Engineering?
• Software Engineering is a rationale-driven activity.
• Understanding the decisions that were done and the
reasons behind these decisions.
• Why was the system proposed?
• Why are these the features that were considered?
• Other decisions that were done.
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
Concepts in Software Engineering
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
Concepts in Software Engineering
• Participants and Roles
• Participants are the stakeholders.
• Roles are the participants’ functions and importance in
the project.
• Systems and Models
• Systems are the Real outputs or realities.
• Models are the abstractions of realities.
• Work Products
• Tangible outputs of the project such as documents and
systems.
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
Concepts in Software Engineering
• Activities, Tasks, and Resources
• Activities are sets of tasks towards a major goal, such as
system design and analysis.
• Tasks are specific undertakings to accomplish activities
such as interview for requirement elicitation.
• Resources are used to accomplish activities and tasks
such as time, money and manpower.
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
Concepts in Software Engineering
• Goals, Requirements, and Constraints
• Goals are high-level principles that guide a project.
These goals are usually in conflict such as safe and low
cost cars.
• Requirements are features that the system must have.
These are usually the functional requirements.
• Constraints are the expectations from the system. These
are usually the nonfunctional requirements.
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
Concepts in Software Engineering
• Notations, Methods, and Methodologies
• Notations are graphical or textual set of rules for
representing models such as the roman numerals,
English alphabet and the UML.
• Methods are repeatable techniques for accomplishing
tasks such as the recipe to cook chicken curry.
• Methodologies are collection of methods such as
cookbook for cooking chicken.
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
Development Activities
• Requirement Elicitation
• Analysis
• System Design
• Object Design
• Implementation
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
Development Activities
• Requirement Elicitation
• Clients and developers define the purpose of the
system.
• Actors and Use cases are the usual output of this
Activity.
• Nonfunctional requirements are also identified during
this activity.
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
Development Activities
• Analysis
• In this activity developers aim to produce a model of the
system that is correct, complete, consistent,
unambiguous, realistic, and verifiable.
• The Use Cases are transformed into Object Models
• The result of this activity are object models with
attributes, operations and associations.
• Problems are addresses by the developers and the
clients.
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
Development Activities
• System Design
• The developers describe the design goals of the project
and decompose the system into workable subsystems.
• Hardware and software requirements are also specified
in this activity.
• This activity results to:
• subsystem decompositions; and
• deployment diagram.
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
Development Activities
• Object Design
• Developers use objects to bridge the analysis model and
the actual hardware and software requirements.
• The result of this activity is a detailed object model.
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
Development Activities
• Implementation
• This activity focuses on writing the source code of the
system based on the models.
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
Management Software
Development
• Communication
• Rational Management
• Testing
• Software Configuration Management
• Project Management
• Software Life Cycle Modeling Activities
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
Management Software
Development
• Communication
• Passing of messages from one stakeholder to another
stakeholder.
• Rationale Management
• Making decisions based on available data and situations.
• Testing
• Testing is done throughout the development activities to
ensure quality.
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
Management Software
Development
• Software Configuration Management
• Concerned with monitoring and controlling changes to
the system.
• Project Management
• Focused on the delivery of quality products that meet
requirements (scope) within budget and the specified
timeframe.
• Software Life Cycle Modeling Activities
• Model that describes the software development process
Object-Oriented Software Engineering: Conquering Complex and Changing Systems