SE Module 3
SE Module 3
Module 3
Pavan M,IS& E
JNNCE,Shimoga
* In 2001, Kent Beck and 16 others (known as the “Agile Alliance”) cre-
ated the Manifesto for Agile Software Development, emphasizing:
▶ Avoiding rigid adherence to either camp may allow teams to adopt the
most effective practices from each.
* Respect:
- Built as team members work collaboratively and deliver software suc-
cessfully.
- Respect grows among team members and stakeholders as they see
the process’s value.
- Immediate implementation,
- High-value first, or
- High-risk stories first.
* After the first release, project velocity is calculated to:
- Estimate future delivery dates,
- Adjust for overcommitments if necessary.
* Customers can update stories, prompting replanning as needed.
Design:
* Follows the Keep It Simple (KIS) principle, focusing only on imme-
diate requirements.
* Uses CRC (Class-Responsibility-Collaborator) cards to organize object
oriented classes:
- CRC cards are the main design tool in XP.
- Simplifies organization and communication of design concepts.
Modifications to XP Practices:
Story-Driven Development (SDD):
▶ Stories for acceptance tests are written before any coding begins.
Domain-Driven Design (DDD):
▶ Builds a domain model that aligns with how experts view their subject.
Pairing:
▶ Extends pair programming to include managers and stakeholders.
▶ Promotes knowledge sharing across team members.
Iterative Usability:
▶ Favors usability design that evolves with each increment.
▶ Prioritizes user feedback over initial, rigid interface designs.
Overview:
Pavan M,IS& E (JNNCE,Shimoga) Agile Development December 13, 2024 40 / 94
Scrum II
* Scrum is an agile development method created by Jeff Sutherland
and further refined by Schwaber and Beedle.
* Scrum principles align with the Agile Manifesto and support devel-
opment within the framework activities of requirements, analysis,
design, evolution, and delivery.
Core Scrum Process Patterns:
* Backlog:
- A prioritized list of project requirements or features that provide busi-
ness value to the customer.
- The product manager updates and reprioritizes items in the backlog as
necessary.
* Sprints:
- Work units focused on completing a requirement from the backlog within
a predefined time-box (usually 30 days).
- Changes are not introduced during a sprint, providing a stable, short-
term work environment.
Overview:
* Developed by Peter Coad and refined by Stephen Palmer and John
Felsing.
* An agile, feature-based process model suited for object-oriented
software engineering.
* Adapted for moderately-sized and larger projects.
Overview:
* LSD adapts lean manufacturing principles to software engineering.
* Core principles are: eliminate waste, build quality in, create knowl-
edge, defer commitment, deliver fast, respect people, and opti-
mize the whole.
Principles Applied to Software Development:
* Eliminate Waste:
- Avoid adding unnecessary features.
- Assess cost and schedule impact of new requirements.
- Remove superfluous process steps.
- Streamline information access for team members.
- Ensure effective testing to catch maximum errors.
- Reduce decision-making time for software-related changes.
- Enhance information flow to stakeholders.
Pavan M,IS& E
JNNCE,Shimoga
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 58 / 94
Outline
8 Software Engineering Knowledge
9 Core Principles
Principles That Guide Process
Principles That Guide Practice
10 Principles That Guide Each Framework Activity
Communication Principles
Planning Principles
Modeling Principles
Requirements Modeling Principles
Design Modeling Principles
Construction Principles
Coding Principles
Validation Principles
Testing Principles
Deployment Principles
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 59 / 94
Software Engineering Knowledge I
Overview:
* Steve McConnell’s editorial in IEEE Software highlights the distinction
between technology-specific knowledge and software engineering prin-
ciples.
* Emphasizes the importance of understanding both types of knowledge
for a successful career in software development.
Technology-Specific Knowledge:
* Includes languages and platforms like Java, Perl, HTML, C++, Linux,
Windows NT.
* Necessary for performing computer programming tasks.
* Has a short half-life (approximately 3 years).
* Constantly evolving, requiring continuous learning and adaptation.
Software Engineering Principles:
* Do not become obsolete quickly.
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 60 / 94
Software Engineering Knowledge II
* Serve as a foundation for a professional programmer’s career.
* Include concepts such as modularity, abstraction, encapsulation, and
software lifecycle management.
* Provide guidelines for designing, developing, and maintaining software
systems.
Stable Core of Knowledge:
* By the year 2000, a stable core of software engineering knowledge had
evolved.
* Represents about 75% of the knowledge needed to develop complex
systems.
* Core principles guide the application and evaluation of software engi-
neering models, methods, and tools.
* Includes best practices, design patterns, and methodologies that remain
relevant over time.
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 61 / 94
Software Engineering Knowledge III
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 62 / 94
Core Principles I
Overview:
* Core principles guide the application of a meaningful software process
and effective software engineering methods.
* Establish a philosophical foundation for software teams.
* Guide framework and umbrella activities, process flow, and production
of software engineering work products.
Process Level Principles:
* Provide a foundation for navigating the process flow.
* Help in performing framework and umbrella activities.
* Ensure the production of effective software engineering work products.
Practice Level Principles:
* Establish values and rules for analyzing problems, designing solutions,
implementing and testing solutions, and deploying software.
General Principles:
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 63 / 94
Core Principles II
* Provide value to end users.
* Keep it simple.
* Maintain the vision of the product and the project.
* Recognize that others consume and must understand what you produce.
* Be open to the future.
* Plan ahead for reuse.
* Think!
Challenges:
* General principles are highly abstract and can be difficult to translate
into day-to-day practice.
Detailed Principles:
* The following subsections provide a more detailed look at the core
principles that guide process and practice.
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 64 / 94
Principles That Guide Process I
Overview:
* Importance of the software process and various process models.
* Core principles applicable to all process models.
Principle 1: Be Agile
* Emphasize economy of action.
* Keep technical approaches simple.
* Produce concise work products.
* Make decisions locally whenever possible.
Principle 2: Focus on Quality at Every Step
* Ensure the quality of work products at every process activity, action,
and task.
Principle 3: Be Ready to Adapt
* Adapt approach to constraints imposed by the problem, people, and
project.
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 65 / 94
Principles That Guide Process II
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 66 / 94
Principles That Guide Process III
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 67 / 94
Principles That Guide Practice I
Overview:
* Goal: Deliver on-time, high-quality, operational software meeting stake-
holder needs.
* Core principles guide technical work regardless of methods, techniques,
or approaches used.
Principle 1: Divide and Conquer
* Emphasize separation of concerns (SoC).
* Subdivide large problems into manageable elements.
* Each element should deliver distinct functionality.
Principle 2: Understand the Use of Abstraction
* Simplify complex elements to communicate meaning.
* Use different levels of abstraction in analysis and design.
* Recognize that abstractions can sometimes ”leak” details.
Principle 3: Strive for Consistency
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 68 / 94
Principles That Guide Practice II
* Ensure consistency in requirements models, designs, code, and test
cases.
* Consistent user interfaces enhance usability.
Principle 4: Focus on the Transfer of Information
* Pay attention to information transfer across interfaces.
* Address potential errors, omissions, and ambiguities.
Principle 5: Build Software That Exhibits Effective Modularity
* Ensure each module focuses on a well-constrained aspect.
* Modules should be cohesive and exhibit low coupling.
Principle 6: Look for Patterns
* Use patterns to resolve recurring problems.
* Create a shared language for communicating solutions.
Principle 7: Represent the Problem and Solution from Different
Perspectives
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 69 / 94
Principles That Guide Practice III
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 70 / 94
Principles That Guide Each Framework Activity I
Overview:
* Principles have a strong impact on the success of each generic frame-
work activity in the software process.
* These principles are refinements of the core principles discussed in Sec-
tion 4.2.
* They are stated at a lower level of abstraction.
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 71 / 94
Communication Principles I
Overview:
* Effective communication is crucial for gathering customer requirements.
* Applies to communication among technical peers, customers, stake-
holders, and project managers.
Principle 1: Listen
* Focus on the speaker’s words.
* Ask for clarification if needed.
* Avoid interruptions and contentious behavior.
Principle 2: Prepare Before You Communicate
* Understand the problem before meetings.
* Research business domain jargon if necessary.
* Prepare an agenda for meetings.
Principle 3: Facilitate the Activity
* Have a leader to guide the conversation.
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 72 / 94
Communication Principles II
* Mediate conflicts and ensure principles are followed.
Principle 4: Face-to-Face Communication is Best
* Use visual aids like drawings or documents to support discussions.
Principle 5: Take Notes and Document Decisions
* Assign a recorder to document important points and decisions.
Principle 6: Strive for Collaboration
* Use collective knowledge to describe functions or features.
* Build trust and create common goals through collaboration.
Principle 7: Stay Focused; Modularize Your Discussion
* Keep discussions on one topic until resolved.
* Facilitator should manage the flow of conversation.
Principle 8: If Something is Unclear, Draw a Picture
* Use sketches or drawings to clarify points.
Principle 9: Move On When Necessary
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 73 / 94
Communication Principles III
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 74 / 94
Planning Principles I
Overview:
* Planning defines a road map to achieve strategic goals and tactical
objectives.
* Effective planning balances detail and flexibility to accommodate changes.
Principle 1: Understand the Scope of the Project
* Scope provides the destination for the software team.
Principle 2: Involve Stakeholders in the Planning Activity
* Stakeholders define priorities and establish constraints.
* Negotiation may be required for delivery order, timelines, and other
issues.
Principle 3: Recognize That Planning is Iterative
* Plans must be adjusted as work progresses and changes occur.
* Replanning is necessary after each software increment based on user
feedback.
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 75 / 94
Planning Principles II
Principle 4: Estimate Based on What You Know
* Estimates should reflect the current understanding of the work.
* Unreliable information leads to unreliable estimates.
Principle 5: Consider Risk as You Define the Plan
* Identify high-impact, high-probability risks and plan contingencies.
* Adjust the project plan to accommodate potential risks.
Principle 6: Be Realistic
* Consider human factors, communication noise, and the inevitability of
change.
* Acknowledge that mistakes will happen.
Principle 7: Adjust Granularity as You Define the Plan
* High-granularity plans provide detailed tasks over short time incre-
ments.
* Low-granularity plans provide broader tasks over longer periods.
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 76 / 94
Planning Principles III
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 77 / 94
Modeling Principles I
Overview:
* Models help understand the entity to be built.
* Software models represent information, architecture, functions, fea-
tures, and behavior.
* Models operate at different levels of abstraction.
Types of Models:
* Requirements Models: Represent customer requirements in informa-
tion, functional, and behavioral domains.
* Design Models: Represent software characteristics like architecture,
user interface, and component-level detail.
Principle 1: Build Software, Not Models
* Focus on delivering software quickly.
* Avoid models that slow down the process or add little value.
Principle 2: Travel Light
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 78 / 94
Modeling Principles II
* Create only necessary models.
* Keep models up-to-date.
Principle 3: Simplify Models
* Produce the simplest model that describes the problem or software.
* Simple models are easier to integrate, test, and maintain.
Principle 4: Build Changeable Models
* Assume models will change.
* Ensure requirements models are reasonably complete.
Principle 5: Purpose of Models
* State an explicit purpose for each model.
* Avoid creating models without solid justification.
Principle 6: Adapt Models to the System
* Adjust model notation or rules to fit the application.
Principle 7: Useful, Not Perfect Models
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 79 / 94
Modeling Principles III
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 80 / 94
Requirements Modeling Principles I
Overview:
* Numerous requirements modeling methods developed over the past
three decades.
* Methods address analysis problems and their causes using various no-
tations and heuristics.
* All methods share a set of operational principles.
Principle 1: Represent and Understand the Information Domain
* Encompasses data flowing into the system, out of the system, and data
stores.
* Includes data from end users, other systems, external devices, user
interfaces, reports, etc.
Principle 2: Define Software Functions
* Functions provide direct benefit to end users and internal support.
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 81 / 94
Requirements Modeling Principles II
* Functions can transform data, control internal processing, or affect
external elements.
* Described at various levels of abstraction.
Principle 3: Represent Software Behavior
* Driven by interaction with the external environment.
* Includes input from end users, control data from external systems, and
monitoring data.
Principle 4: Partition Models to Uncover Detail
* Use a layered or hierarchical approach.
* Divide complex problems into manageable subproblems.
* Employ partitioning or separation of concerns.
Principle 5: Move from Essential Information to Implementation
Detail
* Start with the end-user’s perspective.
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 82 / 94
Requirements Modeling Principles III
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 83 / 94
Design Modeling Principles I
Overview:
* Design model is analogous to an architect’s plans for a house.
* Provides various views of the system, refining details progressively.
* Different methods (data-driven, pattern-driven, object-oriented) can be
used.
* All methods share common design principles.
Principle 1: Traceability to Requirements Model
* Design elements should be traceable to the requirements model.
* Translates information into architecture, subsystems, and components.
Principle 2: Consider System Architecture
* Architecture is the system’s skeleton, affecting interfaces, data struc-
tures, control flow, and more.
* Start with architectural considerations before component-level issues.
Principle 3: Importance of Data Design
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 84 / 94
Design Modeling Principles II
* Data design is crucial for architectural design.
* Well-structured data design simplifies program flow and improves effi-
ciency.
Principle 4: Careful Interface Design
* Design internal and external interfaces with care.
* Well-designed interfaces enhance integration and testing.
Principle 5: User Interface Design
* Tune user interface to end-user needs, emphasizing ease of use.
* Poor interface design can negatively impact software perception.
Principle 6: Functional Independence
* Components should be functionally independent and cohesive.
* Focus on single functions or subfunctions.
Principle 7: Loose Coupling
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 85 / 94
Design Modeling Principles III
* Components should be loosely coupled to each other and the external
environment.
* Lower coupling reduces error propagation and improves maintainability.
Principle 8: Understandable Design Representations
* Design models should be easily understandable.
* Effective communication medium for coding, testing, and maintenance.
Principle 9: Iterative Design Development
* Develop design iteratively, striving for simplicity with each iteration.
* Refine design and correct errors in early iterations.
Quality Factors:
* External Quality Factors: Observable by users (e.g., speed, reliability,
correctness, usability).
* Internal Quality Factors: Important to software engineers, leading to
high-quality technical design.
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 86 / 94
Construction Principles I
Overview:
* Encompasses coding and testing tasks leading to operational software.
* Software ready for delivery to customer or end user.
Coding:
* Direct creation of programming language source code (e.g., Java).
* Automatic generation of source code from design-like representations.
* Automatic generation of executable code using fourth-generation pro-
gramming languages (e.g., Visual C++).
Testing:
* Unit Testing: Focus on individual components.
* Integration Testing: Conducted as the system is constructed.
* Validation Testing: Assesses whether requirements are met for the
complete system or software increment.
* Acceptance Testing: Conducted by the customer to exercise all re-
quired features and functions.
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 87 / 94
Coding Principles I
Overview:
* Principles align with programming style, languages, and methods.
* Fundamental principles guide the coding task.
Preparation Principles:
* Understand the problem to be solved.
* Understand basic design principles and concepts.
* Choose a programming language suitable for the software and its envi-
ronment.
* Select a programming environment with helpful tools.
* Create unit tests for the component to be coded.
Programming Principles:
* Follow structured programming practices.
* Consider pair programming.
* Select appropriate data structures for the design.
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 88 / 94
Coding Principles II
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 89 / 94
Validation Principles I
Overview:
* Validation principles ensure code quality after the first coding pass.
Steps to Follow:
* Conduct a code walkthrough when appropriate.
* Perform unit tests and correct any uncovered errors.
* Refactor the code to improve its structure and readability.
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 90 / 94
Testing Principles I
Overview:
* Testing aims to find errors in the software.
* A good test case has a high probability of finding undiscovered errors.
* A successful test uncovers an undiscovered error.
Principle 1: Traceability to Customer Requirements
* Tests should be linked to customer requirements.
* Most severe defects are those that cause the program to fail to meet
requirements.
Principle 2: Plan Tests Early
* Test planning should begin as soon as the requirements model is com-
plete.
* Define test cases once the design model is solidified.
Principle 3: Apply the Pareto Principle
* 80
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 91 / 94
Testing Principles II
* Isolate and thoroughly test these components.
Principle 4: Test from Small to Large
* Begin with individual components (unit testing).
* Progress to integrated clusters and the entire system.
Principle 5: Exhaustive Testing is Impossible
* Too many path permutations to test every combination.
* Adequately cover program logic and conditions in component-level de-
sign.
Benefits of Testing:
* Uncovers errors in the software.
* Demonstrates that software functions according to specifications.
* Provides data on software reliability and quality.
* Cannot show the absence of errors, only their presence.
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 92 / 94
Deployment Principles I
Overview:
* Deployment includes delivery, support, and feedback.
* Occurs multiple times as software evolves.
* Each cycle provides operational software increments, documentation,
and guidance for future increments.
Principle 1: Manage Customer Expectations
* Avoid overpromising and underdelivering.
* Communicate clearly and conscientiously.
Principle 2: Assemble and Test a Complete Delivery Package
* Include all executable software, support files, and documentation.
* Thoroughly beta-test with actual users in various configurations.
Principle 3: Establish a Support Regime
* Plan and prepare support materials.
* Ensure responsiveness and accurate information for end users.
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 93 / 94
Deployment Principles II
Pavan M,IS& E (JNNCE,Shimoga) Principles that guide practice December 13, 2024 94 / 94