AASTU Chapter Four
AASTU Chapter Four
Software Development
Methodologies and Paradigms
College of Engineering
Department of Software Engineering
By: Kassahun Admkie
PhD candidate in Artificial Intelligence and Robotics , AASTU
12/3/2024 1
Contents
• Software Engineering Practice
• Essence of Practice
• Types of Practice
12/3/2024 2
Recall
• Software engineering (SE) is concerned with developing and
maintaining software systems that behave reliably and efficiently, are
affordable to develop and maintain, and satisfy all the requirements
that customers have defined for them.
12/3/2024 3
Software Engineering: Solving Problem
• The analysis process
12/3/2024 4
• The synthesis process
12/3/2024 5
Software Engineering Practice
• Consists of a collection of concepts, principles, methods, and
tools that a software engineer calls upon on a daily basis
12/3/2024 8
Cont’d
3. Carry out the plan (construction; code generation)
• Does the solution conform to the plan? Is the source code
traceable back to the design?
• Is each component of the solution correct? Has the design and
code been reviewed, or better?
12/3/2024 9
Cont’d
4. Examine the results for accuracy (testing and quality
assurance)
• Is it possible to test each component of the solution? Has a
reasonable testing strategy been implemented?
• Does the solution produce results that conform to the data,
function, and behavior that are required?
• Has the Software been validated against all stakeholders
requirement?
12/3/2024 10
Core Principles of Software Engineering
1. Remember the reason that the software exists
• The software should provide value to its users and satisfy the requirements
2. Keep it simple
• All design and implementation should be as simple as possible
12/3/2024 14
Cont’d
6. Strive for collaboration and consensus
10. Negotiation is not a contest or a game; it works best when both parties win
12/3/2024 15
Planning Practice
1. Understand the scope of the project
12/3/2024 16
Cont’d
6. Be realistic on how much can be done each day by each person and
how well
12/3/2024 17
Modeling Practice (Analysis)
1. The information domain of a problem (the data that flows in and out of a system)
must be represented and understood
4. The models that depict information, function, and behavior must be partitioned in a
manner that uncovers detail in a layered (or hierarchical) fashion
5. The analysis task should move from essential information toward implementation
detail
12/3/2024 18
Modeling Practice (Design)
1. The design should be traceable to the analysis model
12/3/2024 19
Cont’d
6. Component-level design should be functionally independent (high
cohesion)
12/3/2024 20
Construction Practices (Before Coding)
1. Understand the problem you are trying to solve
2. Understand basic design principles and concepts
3. Pick a programming language that meets the needs of the software to be
built and the environment in which it will operate
4. Select a programming environment that provides tools that will make
your work easier
5. Create a set of unit tests that will be applied once the component you
code is completed
12/3/2024 21
Construction Practices (When Coding Begin)
1. Constrain your algorithms by following structured programming
practices
2. Select data structures that will meet the needs of the design
3. Understand the software architecture and create interfaces that are
consistent with it
4. Keep conditional logic as simple as possible
5. Create nested loops in a way that makes them easily testable
6. Select meaningful variable names and follow other local coding
standards
7. Write code that is self-documenting
8. Create a visual layout (e.g., indentation and blank lines) that aids
code understanding
12/3/2024 22
Construction Practices (When Coding End)
1. Conduct a code walkthrough
2. Perform unit tests (black-box and white-box) and correct errors you
have uncovered
12/3/2024 23
Testing Practice
1. All tests should be traceable to the software requirements
2. Tests should be planned long before testing begins
3. The Pareto principle applies to software testing
• 80% of the uncovered errors are in 20% of the code
4. Testing should begin “in the small” and progress toward testing “in the
large”
• Unit testing --> integration testing --> validation testing --> system testing
12/3/2024 24
Deployment Practice
1. Customer expectations for the software must be managed
• Be careful not to promise too much or to mislead the user
12/3/2024 25
Software Engineering
Methodologies
12/3/2024 26
Software Engineering Methodologies
• SE methods provide an organized and systematic approach
to developing software for a target computer.
Heuristic Methods
• Starting from a high-level view of the software (including data and control
elements) and then progressively decomposing or refining the model
components through increasingly detailed designs
12/3/2024 29
Software Engineering Methodologies (Cont.)
• The detailed design eventually converges to very specific details or specifications
of the software that must be coded (by hand, automatically generated, or both),
built, tested, and verified.
• The data model is constructed from the viewpoint of the data or information
used. Data tables and relationships define the data models.
• Used primarily for defining and analyzing data requirements supporting database
designs or data repositories typically found in business software, where data is
actively managed as a business systems resource or asset.
12/3/2024 30
Software Engineering Methodologies (Cont.)
Object-Oriented Analysis and Design Methods:
Prototyping Methods
• Usually the method used for trying out specific new features, soliciting feedback
on software requirements or user interfaces, further exploring software
requirements, software design, and other cases.
12/3/2024 32
Software Engineering Methodologies (Cont.)
• The software engineer selects a prototyping method to understand
the least understood aspects or components of the software first;
• The style chosen is based on the type of results the project needs, the quality of
the results needed, and the urgency of the results.
Prototyping Target: The target of the prototype activity is the specific product being
served by the prototyping effort.
12/3/2024 34
Software Engineering Methodologies (Cont.)
Prototyping Evaluation Techniques: A prototype may be used or evaluated in a
number of ways by the software engineer or other project stakeholders.
• Primarily by the underlying reasons that led to prototype development in the first
place.
• The prototype may also serve as a model for a future software development
effort (for example, as in a user interface specification).
12/3/2024 35
Software Engineering Methodologies (Cont.)
Agile Methods
❑ Short,
❑ Self-organizing teams,
❑ Simpler designs,
❑ Code refactoring,
12/3/2024 36
Software Engineering Methodologies (Cont.)
- Test-driven development,
12/3/2024 37
Software Engineering Methodologies (Cont.)
RAD:
• Rapid software development methods are used primarily in data-intensive,
business systems application development.
12/3/2024 38
Software Engineering Methodologies (Cont.)
XP:
• This approach uses stories or scenarios for requirements, develops
tests first, has direct customer involvement on the team (typically
defining acceptance tests), uses pair programming, and provides for
continuous code refactoring and integration.
• Each increment of software is tested with automated and manual
tests
• An increment may be released frequently, such as every couple of
weeks or so.
12/3/2024 39
Software Engineering Methodologies (Cont.)
Scrum:
• This agile approach is more project management-friendly than the
others.
• The scrum master manages the activities within the project
increment; each increment is called a sprint and lasts no more than
30 days.
• A Product Backlog Item (PBI) list is developed from which tasks are
identified, defined, prioritized, and estimated.
• A working version of the software is tested and released in each
increment.
• Daily scrum meetings ensure work is managed to plan.
12/3/2024 40
Software Development
Paradigm
(Process Models)
12/3/2024 41
Software Development Paradigm
• Is a strategy to develop the software
• They are not mutually exclusive and are often used together
➢ WATERFALL MODEL
➢ ITERATIVE MODEL
➢ PROTOTYPING MODEL
➢ SPIRAL MODEL
12/3/2024 42
Waterfall Model
• The simplest process model
• All the phases of SDLC will function one after another in linear manner when
the first phase is finished then only the second phase will start
12/3/2024 47
Spiral Model
• It like a spiral with many loops
• Has four phases and the software project repeatedly passes through these
phases in iterations called Spirals
• Each loop of the spiral represents a phase of the software process
• Each phase in this model are (the four sectors / quadrants)
➢ First quadrant (Identification/ Objective Setting)
➢ Second Quadrant (Design)
➢ Third Quadrant (Construct or Build)
➢ Fourth Quadrant (Evaluation and Risk Analysis)
12/3/2024 48
12/3/2024 49
Identification- Phase One
• starts with gathering the business requirements in the baseline spiral. In the
subsequent spirals as the product matures, identification of system
requirements, subsystem requirements and unit requirements are all done in
this phase.
• This also includes understanding the system requirements by continuous
communication between the customer and the system analyst.
Design – Phase Two
• Design phase starts with the conceptual design in the baseline spiral and
involves architectural design, logical design of modules, physical product
design and final design in the subsequent spirals.
12/3/2024 50
Construct or Build- Phase Three
• Production of the actual software product at every spiral. In the baseline spiral when
the product is just thought of and the design is being developed a POC (Proof of
Concept).
• Then in the subsequent spirals with higher clarity on requirements and design details
a working model of the software called build is produced with a version number.
• These builds are sent to customer for feedback.
Evaluation and Risk Analysis- Phase Four
• Risk Analysis includes identifying, estimating, and monitoring technical feasibility and
management risks, such as schedule slippage and cost overrun.
• After testing the build, at the end of first iteration, the customer evaluates the
software and provides feedback.
12/3/2024 51