Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 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