Chapter 1 A
Chapter 1 A
Chapter 1
1
What is Software?
• Computer programs and associated documentation
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
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.
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