0% found this document useful (0 votes)
80 views35 pages

Fundamentals of Software Engineering

The document provides an overview of software engineering fundamentals including a course description, learning outcomes, prerequisites, required texts, and assessment methods. It describes what software engineering is, different types of software and products, and ethics in software engineering. It also covers software processes, the waterfall model, incremental model, and activities in software development like requirements, design, implementation, verification and validation, and evolution.

Uploaded by

Betelhem
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
80 views35 pages

Fundamentals of Software Engineering

The document provides an overview of software engineering fundamentals including a course description, learning outcomes, prerequisites, required texts, and assessment methods. It describes what software engineering is, different types of software and products, and ethics in software engineering. It also covers software processes, the waterfall model, incremental model, and activities in software development like requirements, design, implementation, verification and validation, and evolution.

Uploaded by

Betelhem
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 35

Software Engineering

Fundamentals

Yared Yenealem
Course description
• Provides an intro to
• the problems of Software Dev’t
• maintenance
• Processes and methods used to address them
• SDLC (Software Dev’t Life Cycles)
• Deals with
• Project planning
• Cost estimation
• Tracking and control
• Staffing, risk mgm’t, software configuration plan
Learning Outcomes
• Understand the basic principles of Software Engineering
• Write requirements specification documents
• Design a system, component, or process to meet desired needs
• Verify and validate a Software system practice effective
communication skill
prerequisites

None
Required Texts
• Textbook
• Ian Sommerville. Software Engineering 10th edition or later
• References
• Behforooz and Hudson. Software Engineering Fundamentals
Assessment Methods
• Quizzes
• Reading assignments (not weighted)
• Home-take or group Assignments
• Project (weight will be determined later)
• Exams (mid and final-optional)
Nine Chapters
• History and overview
• Software Processes
• Requirements Engineering
• Software Project management
• Software Design
• Coding and Testing
• Software Maintenance
• Software Tools and environments
Chapter One: History and Overview
• Objectives
• Understand what SE is and why it’s important
• Know who’re Software Engineers
• Understand some ethical and professional issues important for Software
Engineers
What is Software Engineering?
• What is Engineering?
• What is Software?
• Software Engineering
• an engineering discipline concerning with all aspects of software production.
• All aspects- all phases from conception to actualization.
• The application of engineering to Software
• The application of a systematic, disciplined, quantifiable approach to the
development, operation, and maintenance of software.
Reading assignment
what is the difference between
• Software Engineering
• System Engineering
• Computer Science

Discussion: What is computer science? Why you chose to study it after


all?
More on the essence of Software
Characteristics
• Software is developed or engineered
• Not manufactured in the classical sense

• Software doesn’t “wear out.”


• But it does deteriorate due to changes
• No software spare parts unlike hardware
• Usually custom-built
Types of Software
• System software
• Written to service other programs
• Compilers, editors, drivers, Operating systems components,
• Application software
• Stand-alone programs that solve a specific business need
Types of Software Products
• Generic products
• Stand-alone systems produced and sold on open market
• Examples
• Word processors
• Drawing packages
• Databases
• Mobile apps
• Library systems
• Accounting systems
Contd.
• Customized (bespoke) software
• Commissioned by and developed for a particular customer
• Examples
• Air traffic control systems
• Control systems for electronic devices
Software Engineering Ethics
• Confidentiality
• Competence
• Intellectual property rights
• Computer misuse
Software Engineering principles
• Public (interest)
• Client and employer (interest)
• Product (standard)
• Judgement (integrity and independence)
• Management
• Colleagues (fair and supportive)
• Profession (reputation)
• Self (lifelong learning)
Home work
• Provide a number of examples (both positive and negative) that
indicate the impact of software on our society

• Who is a software Engineer?


Chapter 2

Software Processes
Software Processes
• A structured set of activities required to develop a software system
• The set of activities and associated outcome that produce a software
product.
• Activities that leads to the production of the software
• A sequence of steps to be followed
• a framework for the activities, actions, and tasks that are required to
build high-quality software.
• Process = a series of activities
4 fundamental SE activities
• Software specification (requirements engineering)
• Software design and implementation
• Software verification and validation
• Software evolution (software maintenance)
Software specification
(requirements engineering)
• Defining what the system should do
• The functionalities of the software and constraints on its operation
• Functionalities
• Constraints and qualities
• Requirements
• A statement of what the system must do or what characteristics it needs to
have
• A characteristic or feature that must be included in a software to be
acceptable to users
Design and implementation
• Defining the organization of the software and implementing it
Software verification and validation
• Conforms to it’s spec + Meets customer needs
• Verification
• The process of checking that the software meets the specs
• Did I build what I need?
• Are we building the product right?
• Validation
• The process of checking whether the spec captures the customer’s needs and
expectations.
• Did I build what I said I would?
• Are we building the right product?
Software evolution
• The software must evolve to meet changing customer needs
• The process of refining the system to make sure it continues to meet
business needs.
• To fix errors and problems, repair defects, diagnose problems
• Add new capabilities and enhancements
• Improve efficiency, reliability or maintainability
Software Process Model
(SDLC)
• A simplified representation of a software process
• An abstract representation of a process
• Involves simplification
• Process models contain
• Activities
• Products
• roles
Generic models (process paradigms)
• Waterfall model
• Incremental model
Waterfall model
• Cascade from one phase to another
• the following phase should not start until the previous phase has
finished.
• Requirements for the problem are well understood
• The oldest paradigm for SE
Waterfall Model:
A systematic, sequential approach/roadmap to SW
dev't that begins with customer spec of requirements
and progresses through planning, modeling,
construction, and deployment , culminating in
ongoing support of the completed software.
Problems with Waterfall
• Not flexible
• Changes can cause confusion
• Very linear
• Requires the customer to state all requirements explicitly
• Requires the customer to have patience
• A working version at the end.
• Blocking states
• some project team members must wait for other members of the team to
complete dependent tasks.
• Consumes time (time consuming)
Cond.
• High amounts of risks and uncertainty
• You cannot go back a step; if the design phase has gone wrong, things can get
very complicated in the implementation phase.
• Never backward
• Difficulty responding to change
Advantages of waterfall
• Simple and easy to use
• Easy to manage
• Good for smaller projects where requirements are very well
understood
• Documentation is produced at each stage.
Incremental model
• The incremental model delivers a series of releases, called
increments, that provide progressively more functionality for the
customer as each increment is delivered
• The product is designed, implemented and tested incrementally (a
little more is added each time) until the product is finished.
Incremental model
Contd.
• Costly
• Flexible
• Customer collaboration and interaction
• Customer feedback
• Errors are easy to be identified.
• Degrades system structure as new increments are added.
Evolutionary process model
(reading assignment)
• Market competition
• Time-to-market

You might also like