0% found this document useful (0 votes)
27 views42 pages

SE Introduction

a detailed description of software intoduction about how se is helpful in managing our projects and official work platforms

Uploaded by

laraibnoor620
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)
27 views42 pages

SE Introduction

a detailed description of software intoduction about how se is helpful in managing our projects and official work platforms

Uploaded by

laraibnoor620
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/ 42

Software Engineering

Software Engineering: A Practitioner’s Approach, 7/e by Roger S.


Pressman
Introduction
• Programs and OSs used by a computer

• Software is a set of instructions, data or programs used to operate


computers and execute specific tasks.

• Software is: (1) instructions (computer programs) that when executed


provide desired features, function, and performance; (2) data
structures that enable the programs to adequately manipulate
information and (3) documentation that describes the operation and
use of the programs.
Introduction
• Software is developed or engineered. It is not manufactured.

• Does not “wear out”.

• Although the industry has been moving towards component based


construction for decades now, most of the software still continues to
be custom built.
Software Applications
• System software
• Application software
• Engineering and scientific software
• Embedded software
• Web Apps
• AI softwares
Legacy software
• software must be adapted to meet the needs of new computing
environments or technology.
• software must be enhanced to implement new business
requirements.
• software must be extended to make it interoperable with other more
modern systems or databases.
• software must be re-architected to make it viable within a network
environment.
Software Engineering
• Some realities:
• a concerted effort should be made to understand the problem before a
software solution is developed.
• design becomes a pivotal activity
• software should exhibit high quality
• software should be maintainable
• The seminal definition:
• [Software engineering is] the establishment and use of sound engineering
principles in order to obtain economical software that is reliable and works
efficiently on real machines.
Software Engineering
The IEEE definition:

Software Engineering: (1) The application of a systematic, disciplined,


quantifiable approach to the development, operation, and
maintenance of software; that is, the application of engineering to
software. (2) The study of approaches as in (1).
why
• Why Software Engineering
What is software engineering
• Software Engineering is the process of designing, developing, testing, and
maintaining software. It is a systematic and disciplined approach to software
development that aims to create high-quality, reliable, and maintainable
software.

• includes a variety of techniques, tools, and methodologies.

• It is a rapidly evolving field, and new tools and technologies are constantly being
developed to improve the software development process.

• By following the principles of software engineering and using the appropriate tools
and methodologies, software developers can create high-quality, reliable, and
maintainable software that meets the needs of its users.
What is software engineering
• Software Engineering is mainly used for large projects based on software
systems rather than single programs or applications.

• The main goal of Software Engineering is to develop software applications for


improving quality, budget, and time efficiency.

• Software Engineering ensures that the software that has to be built should be
consistent, correct, also on budget, on time, and within the required
requirements.
Software Engineering
Software Engineering
• Framework Activities • Umbrella Activities
• Communication • Software project management
• Planning • Formal technical reviews
• Modeling • Software quality assurance
• Requirements Analysis • Software configuration
• Design management
• Construction • Work product preparation and
• Code generation production
• Testing • Reusability management
• Deployment • Measurements
• Risk management
Advantages of Software Engineering
• Improved Quality: By following established software engineering principles
and techniques, the software can be developed with fewer bugs and higher
reliability.
• Increased Productivity: Using modern tools and methodologies can
streamline the development process, allowing developers to be more
productive and complete projects faster.
• Better Maintainability: Software that is designed and developed using sound
software engineering practices is easier to maintain and update over time.
• Reduced Costs: By identifying and addressing potential problems early in the
development process, software engineering can help to reduce the cost of
fixing bugs and adding new features later on.
Advantages of SE
• Increased Customer Satisfaction: By involving customers in the development
process and developing software that meets their needs, software engineering
can help to increase customer satisfaction.
• Better Team Collaboration: By using Agile methodologies and continuous
integration, software engineering allows for better collaboration among
development teams.
• Better Scalability: By designing software with scalability in mind, software
engineering can help to ensure that software can handle an increasing number of
users and transactions.
• Better Security: By following the Software Development Life Cycle (SDLC) and
performing security testing, software engineering can help to prevent security
breaches and protect sensitive data.
Software Development LifeCycle
• SDLC refers to a methodology with clearly defined processes for
creating high-quality software.

• is composed of distinct work phases that are used by systems


engineers and systems developers to deliver information system.

• SDLC provides a set of phases/steps/activities for system designers


and developers to follow. Each phase builds on the results of the
previous one.
The software process
1. Understand the problem (communication and analysis).
2. Plan a solution (modeling and software design).
3. Carry out the plan (code generation).
4. Examine the result for accuracy (testing and quality assurance).
1. Understand the problem
• Who has a stake in the solution to the problem? That is, who are the
stakeholders?
• What are the unknowns? What data, functions, and features are
required to properly solve the problem?
• Can the problem be compartmentalized? Is it possible to represent
smaller problems that may be easier to understand?
• Can the problem be represented graphically? Can an analysis model
be created?
2. Plan the solution
• Have you seen similar problems before? Are there patterns that are
recognizable in a potential solution? Is there existing software that
implements the data, functions, and features that are required?
• Has a similar problem been solved? If so, are elements of the solution
reusable?
• Can subproblems be defined? If so, are solutions readily apparent for
the subproblems?
• Can you represent a solution in a manner that leads to effective
implementation? Can a design model be created?
3. Carry out the Plan
• Does the solution conform to the plan? Is source code traceable to
the design model?
• Is each component part of the solution provably correct? Has the
design and code been reviewed, or better, have correctness proofs
been applied to algorithm?
4. Examine the Result
• Is it possible to test each component part of the solution? Has a
reasonable testing strategy been implemented?
• Does the solution produce results that conform to the data, functions,
and features that are required? Has the software been validated
against all stakeholder requirements?
SE Process Flows
• 4 types of process flows in software engineering
• Linear
• Evolutionary
• Parallel
• iterative
1. Linear Process Flow
2. Evolutionary Process Flow
3. Parallel Process Model
Identifying Taskset
• A task set defines the actual work to be done to accomplish the
objectives of a software engineering action.
• A list of the task to be accomplished [Milestones]
• A list of the work products to be produced [Deliverables]
• A list of the quality assurance filters to be applied [QA tools and
methods].
Process Assessment and
Improvement
• Standard CMMI Assessment Method for Process Improvement (SCAMPI) — provides a
five step process assessment model that incorporates five phases: initiating, diagnosing,
establishing, acting and learning.
• CMM-Based Appraisal for Internal Process Improvement (CBA IPI)—provides a
diagnostic technique for assessing the relative maturity of a software organization; uses
the SEI CMM as the basis for the assessment [Dun01]
• SPICE—The SPICE (ISO/IEC15504) standard defines a set of requirements for software
process assessment. The intent of the standard is to assist organizations in developing
an objective evaluation of the efficacy of any defined software process. [ISO08]
• ISO 9001:2000 for Software—a generic standard that applies to any organization that
wants to improve the overall quality of the products, systems, or services that it
provides. Therefore, the standard is directly applicable to software organizations and
companies. [Ant06]
Prescriptive Models
• Prescriptive process models advocate an orderly approach to software
engineering That leads to a few questions …
• If prescriptive process models strive for structure and order, are they
inappropriate for a software world that thrives on change?
• Yet, if we reject traditional process models (and the order they imply) and
replace them with something less structured, do we make it impossible to
achieve coordination and coherence in software work?
Software Development LifeCycles
The waterfall model
Waterfall Model-Benefits
• The project scope stays relatively static, meaning cost and timelines can
be determined early on in the project.
• By completing a full design early in the project, changes to systems stay
minimal, meaning the cost to fix and alter designs is kept low.
• A structured approach to a project means that everyone understands
what needs to be done and when. SMEs can effectively plan their time
over the fixed period.
• By having detailed documentation and designs, a project can lose key
members without too much hassle since the documentation describes in
reasonable detail how any SME of the product or skill are needed to
complete the work.
Waterfall model-Constraints
• It is difficult to estimate the total time a project will take to complete.

• It is hard to allow for new requirements in an ever-changing world.


The V-Model
Benefits and constraints of V-Model
Incremental Model
• Grouped Requirements
• Each group is
implemented in parallel
and released for
customer to review.
Incremental Development-Explained
Incremental vs. Iterative and
Incremental-Explained
Benefits and constraints-
Incremental Model
Software Development LifeCycles
Evolutionary Models-The Spiral
Model
P r o t o t y p I n g
The Unified Process
• Is a kind of iterative development model.
• Phases are divided into timeboxed iterations.
• Each iteration results in an increment.
• It’s a risk focused process.
• Time and budget
• Poor quality code
• Non-availability of required hardware
• Scope variations
• End-user engagement
Unified process-project lifecycle
• The unified process divides the project into four phases:

• Inception [communication and planning]

• Elaboration (milestone) [planning and modeling]

• Construction (release)[code generation and testing]

• Transition (final production release)[deployment]


RUP LifeCycle

You might also like