0% found this document useful (0 votes)
20 views

Chapter 1 A

Uploaded by

arshalarmar68
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
20 views

Chapter 1 A

Uploaded by

arshalarmar68
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 32

Software Engineering (CoSc3061)

for G3 Computer Science

Chapter 1

Introduction to Software Engineering

1
What is Software?
• Computer programs and associated documentation

• A Program:- an executable code, which serves some


computational purpose.
•Software may be developed for a particular customer or
may be developed for products or a general market.
• Software products may be
– Generic - developed to be sold to a range of different
customer
– Bespoke (custom) - developed for a single customer
according to their specification 2
What is Software Engineering

• Software engineering is an engineering


branch associated with development of
software product using well-defined
scientific:
– principles,
– Methods
– procedures.
• It is an engineering discipline that is
concerned with all aspects of software
production.
• Outcome of SE: software product which is:
– Efficient
– reliable
3
Conti…

• Software engineering is the establishment and use of


sound engineering principles in order to obtain
economically software that is reliable and efficiently run
on real machines.
• Software engineering is a modeling activity.

• Software engineering is a problem-solving activity.

• Software engineering is a knowledge acquisition


activity.
• Software engineering is a rationale-driven activity. 4
SE Vs CS

Computer Science Software Engineering


is concerned with
 theory  the practicalities of developing
 fundamentals  delivering useful software

Algorithms, date structures, SE deals with practical problems in


complexity theory, numerical complex software products
methods

Computer science theories are currently insufficient to act as a complete


underpinning for software engineering, BUT it is a foundation for practical
aspects of software engineering
SE Body of Knowledge

Source: http://www.sei.cmu.edu/pub/documents/99.reports/pdf/99tr004.pdf
Software Development Methodologies
 There are numerous ways to organize the process of
developing and writing code, Each one is unique based on
the order.
 Software development methodology is series of processes
used in software development.
 A software development methodology is a series of
processes describe how the work is to be carried out to
achieve the original goal based on the requirements.
 It describe how the life cycle of a piece of software is
designed.
 A methodology is a formalized approach for implementing
SDLC (i.e., it is a list of steps and deliverables).
7
Cont….
• Selecting a methodology is not simple, as no one
methodology is always best.
• Many organization have also their own
standards & policies to guide the choice of
methodology.
• To decide w/c methodology to use may depend
on
– systems nature, constraints, and rules …
• D/f types of system development methodologies
– Structured , Object-Oriented,
8
Criteria for Selecting a Methodology
• Clarity of user requirements
• Familiarity with technology
• System complexity
• System reliability
• Short time schedules
• Constraints of a software project

9
Two Orthogonal View of Software
 Two software development methodologies/Approaches,
that are used to analyze, design and develop software
systems. Both have some similarities as well as differ in a
number of ways.
1.Traditional (Structured )System Development: Focuses
on data and functions.
Here Algorithms + Data structures = Programs
“A software system is a set of mechanisms for
performing certain actions on certain data.”
2. Object Oriented System Development: Focuses on
objects that combines data and functionality.

10
Structured Analysis and Design
 Traditional system development technique, time-
tested and easy to understand.
 It emphasis on procedure and top down strategy
to solve the complexity of things and intended to
move forward gracefully from one phase to the
other.
 Predictive approach, organized into phases, with
deliverables and milestones to measure the
progress.
 Designers break down larger processes into
smaller ones to reduce complexity. 11
Structured Approach…..
1. Focus on processes: Structured Analysis focuses on the
processes involved in a software system, modeling them as
a series of connected steps.
2. Top-down approach: Structured Analysis follows a top-
down approach, breaking down complex systems into
smaller, simpler parts that can be more easily understood.
3. Data-centered: Structured Analysis focuses on the data that
a software system manipulates, modeling it as data flows
between processes.
4. Emphasis on functional decomposition: Structured Analysis
emphasizes the functional decomposition of a software
system into smaller, independent functions.
12
Continued…
• Major principles(information hiding)
– Structured development helps hide information
about a program's structure and processes but does
not hide details of the data within the program.
 Modularization
– Divide large, complex problems into smaller, more
easily handled modules.
• Hierarchy(Top-down approach)
• Define all the tasks or processes in a system
from top to bottom in increasing levels of detail

13
 Processes and data are treated as two separate
components Continued…
 Can be either process- or data-centered
 Use modeling techniques to describe the
basic business processes and data that support
them.
 B/c two sets of diagrams are used, analyst
must decide w/c set to develop first and use
as the core of the system—process-or data
model diagrams
 There is debate over w/c should come first,
processes or data, b/c both important to
system. 14
SDLC Phases
– Uses a series of phases, called SDLC, to plan, analyze,
design, implement, and support an IS.
– Analysis Phase : Understanding, finding and describing
concepts in the problem domain.
• Model of what the system will do.
– Does not define how system accomplish its purpose.
– Made of environmental and behavioral models
• Environmental Model
– Defines the scope of the proposed system
– Defines the boundary and interaction b/n system and
outside world.
– Composed of, Statement of Purpose and Context
Diagram. 15
Continued…
• Behavioral Model
–Model of the internal behavior and data
entities of the system
– Models the functional requirements
– Composed of, Data Flow
Diagram(DFD), Entity Relationship
Diagram (ERD), Data Dictionary.
– Design Phase: (understanding and defining software solution )
• Logical database design
• Physical database design
• User interface design 16
Advantages
1.Clear and straightforward: It easy to understand
and implement.
2.Easy to identify high-level functions and
processes involved in system by help of top-
down approach.
3.Well-suited for small to medium-sized systems.
4.Emphasis on data: It places a strong emphasis
on the data that a software system manipulates,
making it easier to understand the relationships
between data and processes.
17
Disadvantages

1. Limited scalability: cumbersome when dealing with


complex or large-scale systems.
2. Lack of object orientation making it more difficult to
manage and maintain large systems over time.
3. Limited ability to model complex relationships: or
less suitable for modeling large/ complex systems.

18
Object Oriented Analysis and Design
• OO analysis and design become popular b/c
– Represent data and process together, object
• Objects may represent actual people, things, concept
transactions and events…etc.
• Views the system in terms of objects that combine data
and processes.
• It is popular approach for analyzing, designing a system,
by applying OO paradigm and visual modeling
throughout the development life cycles for better
communication and product quality.

19
Cont…
 Decompose the system according to key abstractions in
the problem domain (domain objects).
 This objects has attribute (data) and methods (functions).
 Model the structural and behavioral aspects of objects as
they interacts each other using visual modeling.
 Object oriented systems development develop software
by building objects that can be:
Easier to adapt changes/ modify
Easier to maintain
 Promote greater design and code reuse
Simplifies the problem of integrating components to
configure large system.
20
Object-Oriented Approach…..
1. Focus on objects: by modeling them as instances of classes
that encapsulate both data and behavior.
2. Bottom-up approach: using bottom-up approach builds
complex systems from smaller one.
3. Object-centered: OOAD focuses on the objects that make
up a software system, modeling their relationships and
interactions.
4. Emphasis on object-oriented design patterns: OOAD
emphasizes the reuse of objects and object-oriented design
patterns, reducing the amount of code that needs to be
written and improving the quality and consistency of the
software
21
SDLC Phases
• Analysis Phase
– Problem domain model is developed
showing its important properties.
– Develop an object model of application
domain.
– Object models represent data and behavior,
and show how objects affect other objects.
– Model specifies functional behavior of the
system independent of implementation details.
– Use-case, Class, Sequence, & Activity 22
Continued…
• Design Phase
– Analysis model is refined and adapted to the
environment.
• Class Modeling, State & Collaboration
diagrams
– Can be separated into two stages
• System design
–Concerned with overall system
architecture.
• Object design
–Implementation details are added to 23
Advantages
1.Reusable code: Reducing the amount of code
that needs to be written.
2.Scalability: Better suited for large /complex
systems.
3.Object orientation : Making it easier to
manage and maintain large systems over time.
4.Better modeling of complex relationships:
Suited for modeling large/complex systems

24
Disadvantages
1. Steep learning curve: OOA can be more difficult to
understand and implement than Structured Analysis,
especially for those who are not familiar with object-
oriented programming.
2. Bottom-up approach: Make it difficult to understand
high-level functions and processes involved in a
software system.
3. Emphasis on objects: Strong emphasis on objects,
making it more difficult to understand the
relationships between data and processes
25
Continued…
• Similarities
– Both had started off from programming techniques
– Both use graphical design to analyze and model
the requirements.
– Both provide a systematic step-by-step process for
developers.

• Differences
– OOAD encapsulates the systems' data and
processes into objects, while SSAD treated them
26
separately.
Summary
Structured Object-Oriented
Used to develop traditional projects Used to develop OO projects that
that uses procedural programming. depends on OO programming.
The main focus is on the process and The main focus is on data structure and
procedures real-world objects.
Focus on Process, Data Focus on objects
High risk Low risk
Low Reusability High Reusability
Suitable for small to medium projects Suitable for large /complex systems.

Requirement engineering includes the


Structuring requirements include DFDs
Use case model (find Use cases, Flow of
(Data Flow Diagram), Structured
events, Activity Diagram), the Object
Analysis, ER (Entity Relationship)
model (find Classes and class relations,
diagram, CFD (Control Flow Diagram),
Object interaction, Object to ER
Data Dictionary, Decision table/tree, and
mapping), State chart Diagram, and
the State transition diagram.
deployment diagram.
27
Cont…
It works with Top-down approach. It works with Bottom-up approach.
Program is divided into number of Program is organized by having
submodules or functions. number of classes and objects.

It is suitable for well-defined projects It is suitable for large projects with


with stable user requirements. changing user requirements.

Increases complexity Reduce complexity and redundancy

Increases duration of the project Decreases duration of the project

This technique is old and is not This technique is new and is mostly
preferred usually. preferred.

28
Computer-Aided Software Engineering (CASE)
 Software systems which are intended to provide automated
support for software process activities, such as requirements
analysis, system modelling, debugging and testing

Upper-CASE
 Tools to support the early process activities of
requirements and design
Lower-CASE
 Tools to support later activities such as
programming, debugging and testing
What are the attributes of good software?
• The software should deliver the required functionality and
performance to the user and should be maintainable,
dependable and usable.
•Maintainability
–Software must evolve to meet changing needs
•Dependability
•Efficiency
– Software should not make wasteful use of system resources
• Usability
–Software must be usable by the users for which it was
designed
 Reliability, Scalability , Portability , Reusability and the
like.
What are the key challenges facing software engineering?
• Legacy systems
– majority of software systems that use today developed many years yet, so there
is challenge of maintaining and updating this software .

• Heterogeneity
– Systems are required to operate as distributed techniques that include a mix
of hardware and software.
• Delivery
– Many traditional software engineering techniques are time-consuming, so there
is challenge of shortening delivery times for large and complex systems
without compromising system quality.
 Risk challenge
⁻ Dealing with the increased complexity of software needed for new
applications.
 Security, Trust and Scale
32

You might also like