Fundamentals of Software Development (4331604) - Winter 2023 Solution

Solution guide for Fundamentals of Software Development (4331604) Winter 2023 exam

Question 1(a) [3 marks]

Define Software and explain its characteristics.

Answer:

Software is a collection of programs, instructions, and documentation that performs tasks on a computer system.

Key Characteristics:

CharacteristicDescription
IntangibleCannot be touched physically
LogicalCreated through systematic approach
ManufacturedDeveloped, not produced traditionally
ComplexHas intricate internal structure

Mnemonic: "In Logic, Manufacturing Creates" (Intangible, Logical, Manufactured, Complex)

Question 1(b) [4 marks]

Write a note on Software engineering – A layered technology.

Answer:

Software engineering is structured as a layered technology with each layer supporting the next.

Layered Structure:

LayerPurposeDescription
Quality FocusFoundationEmphasis on delivering quality products
ProcessFrameworkDefines how software development is done
MethodsTechniquesSpecific ways to perform activities
ToolsAutomationSoftware that supports methods

Mnemonic: "Tools Make Process Quality" (Tools, Methods, Process, Quality)

Question 1(c) [7 marks]

Explain Software Process framework and umbrella activities.

Answer:

Software Process Framework provides structure for software development with core activities and umbrella activities.

Framework Activities:

ActivityPurposeKey Tasks
CommunicationUnderstand requirementsStakeholder interaction, requirement gathering
PlanningCreate roadmapEstimation, scheduling, risk assessment
ModelingCreate blueprintsAnalysis and design models
ConstructionBuild softwareCoding and testing
DeploymentDeliver to usersInstallation, support, feedback

Umbrella Activities:

  • Software project tracking: Monitor progress and control quality
  • Risk management: Identify and mitigate potential problems
  • Quality assurance: Ensure standards are met
  • Configuration management: Control changes systematically
  • Work product preparation: Create deliverable documents

Mnemonic: "Can People Model Construction Daily" + "Track Risk Quality Configuration Work"

Question 1(c OR) [7 marks]

Define SDLC and explain each phase.

Answer:

SDLC (Software Development Life Cycle) is a systematic process for developing software applications.

SDLC Phases:

PhasePurposeKey ActivitiesDeliverables
PlanningDefine scopeFeasibility study, resource allocationProject plan
AnalysisGather requirementsRequirement collection, documentationSRS document
DesignCreate architectureSystem design, database designDesign documents
ImplementationWrite codeProgramming, unit testingSource code
TestingVerify qualitySystem testing, bug fixingTest reports
DeploymentRelease softwareInstallation, user trainingLive system
MaintenanceOngoing supportBug fixes, enhancementsUpdated system

Mnemonic: "Please Analyze Design Implementation Testing Deployment Maintenance"

Question 2(a) [3 marks]

Describe advantage disadvantage of prototype model.

Answer:

Prototype Model Analysis:

AdvantagesDisadvantages
Early feedback from usersTime consuming development process
Reduced risk of failureCost increase due to iterations
Better understanding of requirementsScope creep may occur

Mnemonic: "Early Reduced Better" vs "Time Cost Scope"

Question 2(b) [4 marks]

Explain Prototyping Model and justify when to use with example.

Answer:

Prototyping Model creates working model of software early in development process.

When to Use:

SituationExampleJustification
Unclear requirementsOnline shopping cartUser interface needs refinement
New technologyMobile banking appFeasibility testing required
User interaction criticalGaming applicationUser experience validation needed

Mnemonic: "Requirements Quick Build User Satisfied Final"

Question 2(c) [7 marks]

Sketch and discuss (I) Waterfall model & (II) Incremental Model.

Answer:

(I) Waterfall Model:

Linear sequential approach where each phase must complete before next begins.

CharacteristicsDescription
SequentialOne phase at a time
Documentation drivenHeavy documentation
Suitable forWell-defined requirements

(II) Incremental Model:

Development in small increments with each increment adding functionality.

FeatureWaterfallIncremental
FlexibilityLowHigh
RiskHighLow
DeliveryEnd of projectMultiple deliveries

Mnemonic: "Water Falls Once, Increments Build Multiple"

Question 2(a OR) [3 marks]

Describe advantage and disadvantage of Incremental Model.

Answer:

Incremental Model Analysis:

AdvantagesDisadvantages
Early delivery of working softwareTotal cost may be higher
Easier testing of small incrementsSystem architecture issues
Reduced risk through early feedbackManagement complexity increases

Mnemonic: "Early Easier Reduced" vs "Total System Management"

Question 2(b OR) [4 marks]

Write concept of Rapid Application Development (RAD) and explain it.

Answer:

RAD emphasizes rapid prototyping and quick feedback over planning and testing.

RAD Components:

PhaseDurationActivitiesOutput
Business ModelingShortDefine information flowBusiness requirements
Data ModelingShortDefine data objectsData models
Process ModelingShortDefine processing functionsProcess descriptions
Application GenerationShortUse tools to createWorking application
Testing & TurnoverShortTest and deliverFinal system

Mnemonic: "Business Data Process Application Testing"

Question 2(c OR) [7 marks]

Design and describe Spiral Model and give advantage and disadvantage.

Answer:

Spiral Model combines iterative development with systematic risk analysis.

Spiral Quadrants:

QuadrantActivityPurpose
PlanningObjective settingDefine requirements and constraints
Risk AnalysisRisk assessmentIdentify and resolve risks
EngineeringDevelopmentBuild and test the product
EvaluationCustomer assessmentEvaluate results and plan next iteration

Advantages vs Disadvantages:

AdvantagesDisadvantages
High risk projects handled wellComplex management required
Good for large applicationsExpensive for small projects
Customer involved throughoutRisk analysis expertise needed

Mnemonic: "Plan Risk Engineer Evaluate" + "High Good Customer" vs "Complex Expensive Risk"

Question 3(a) [3 marks]

Illustrate importance of SRS

Answer:

SRS (Software Requirements Specification) is crucial foundation document for software development.

Importance Table:

AspectImportanceBenefit
CommunicationStakeholder understandingClear expectations
ContractLegal agreementDispute resolution
Testing basisValidation criteriaQuality assurance

Mnemonic: "Communication Contract Testing"

Question 3(b) [4 marks]

Specify characteristics of good & bad SRS

Answer:

SRS Quality Characteristics:

Good SRSBad SRS
Complete - All requirements coveredIncomplete - Missing requirements
Consistent - No contradictionsInconsistent - Conflicting statements
Unambiguous - Clear meaningAmbiguous - Multiple interpretations
Verifiable - Can be testedUnverifiable - Cannot be validated

Additional Good Characteristics:

  • Modifiable: Easy to change and maintain
  • Traceable: Links to source and design

Mnemonic: "Complete Consistent Unambiguous Verifiable" vs "Incomplete Inconsistent Ambiguous Unverifiable"

Question 3(c) [7 marks]

Classify Types of Requirements in SRS

Answer:

Software requirements are classified into two main categories.

(i) Functional Requirements:

Define what the system should do - specific behaviors and functions.

TypeDescriptionExample
Business RulesCore business logic"Calculate tax based on income bracket"
User ActionsSystem responses"Login with username/password"
Data ProcessingInformation handling"Generate monthly sales report"
External InterfacesSystem interactions"Connect to payment gateway"

(ii) Non-functional Requirements:

Define how the system should perform - quality attributes and constraints.

CategoryRequirementExampleMeasurement
PerformanceResponse time"Page load < 3 seconds"Time metrics
SecurityData protection"Encrypt user passwords"Security standards
ReliabilitySystem uptime"99.9% availability"Failure rates
UsabilityUser experience"Max 3 clicks to checkout"User metrics
ScalabilityGrowth capacity"Support 10,000 users"Load capacity

Comparison Table:

AspectFunctionalNon-Functional
FocusWhat system doesHow system performs
TestingBlack-box testingPerformance testing
DocumentationUse casesQuality metrics

Mnemonic: "Functional = What, Non-Functional = How"

Question 3(a OR) [3 marks]

Describe skill to manage software projects

Answer:

Project management requires diverse skill set for successful software delivery.

Essential Skills:

Skill CategoryDescriptionApplication
TechnicalUnderstanding technologyArchitecture decisions
LeadershipTeam motivationConflict resolution
CommunicationStakeholder interactionStatus reporting

Mnemonic: "Technical Leadership Communication"

Question 3(b OR) [4 marks]

Briefly give the Responsibility of software project Manager.

Answer:

Software Project Manager oversees entire project lifecycle and ensures successful delivery.

Key Responsibilities:

AreaResponsibilityActivities
PlanningProject roadmapSchedule, budget, resource allocation
ExecutionTeam coordinationTask assignment, progress monitoring
QualityStandard complianceCode reviews, testing oversight
CommunicationStakeholder updatesStatus reports, risk communication

Additional Duties:

  • Risk Management: Identify and mitigate project risks
  • Team Development: Mentor team members and resolve conflicts

Mnemonic: "Plan Execute Quality Communicate Risk Team"

Question 3(c OR) [7 marks]

Compare PERT chart – Gantt chart side by side.

Answer:

Both charts are project management tools but serve different purposes and have distinct characteristics.

Detailed Comparison:

AspectPERT ChartGantt Chart
PurposeShow task dependenciesShow project timeline
StructureNetwork diagramBar chart
FocusCritical path analysisSchedule visualization
Time DisplayEstimated durationsActual dates
DependenciesExplicit arrowsImplicit connections
Best ForComplex projectsSimple scheduling

Visual Representation:

When to Use:

ScenarioPERTGantt
Project TypeResearch & DevelopmentConstruction, Software
UncertaintyHigh uncertaintyWell-defined tasks
AudienceTechnical teamManagement, Clients

Advantages Comparison:

PERT AdvantagesGantt Advantages
Critical path identificationEasy to understand visually
Flexible timing estimatesProgress tracking capability
Risk analysis supportResource allocation display

Mnemonic: "PERT = Path, Gantt = Bars"

Question 4(a) [3 marks]

Give steps of Project Monitoring and control process

Answer:

Project monitoring ensures project stays on track through systematic observation and corrective actions.

Monitoring Steps:

StepActivityPurpose
Track ProgressMeasure actual vs plannedIdentify deviations
Assess QualityReview deliverablesEnsure standards
Take ActionImplement correctionsMaintain alignment

Mnemonic: "Track Assess Take"

Question 4(b) [4 marks]

Discuss i)Risk Assessment ii)Risk Mitigation

Answer:

(i) Risk Assessment:

Process of identifying and evaluating potential project risks.

Assessment TypeMethodOutput
Risk IdentificationBrainstorming, checklistsRisk list
Risk AnalysisProbability × ImpactRisk priority
Risk EvaluationRisk matrixAction priorities

(ii) Risk Mitigation:

Strategies to reduce risk impact and probability.

StrategyDescriptionExample
AvoidanceEliminate risk sourceChange technology
ReductionMinimize impactAdd testing
TransferShift risk to othersInsurance, outsourcing
AcceptanceLive with riskContingency planning

Mnemonic: "Avoid Reduce Transfer Accept"

Question 4(c) [7 marks]

Define project risk and how Manage Risk Management it.

Answer:

Project Risk is an uncertain event that, if occurs, has positive or negative effect on project objectives.

Risk Characteristics:

CharacteristicDescriptionExample
UncertaintyMay or may not occurTechnology failure
ImpactAffects project parametersCost, schedule, quality
ProbabilityLikelihood of occurrence30% chance of delay

Risk Management Process:

Risk Management Steps:

StepActivitiesToolsOutput
Risk IdentificationBrainstorming, interviewsChecklists, SWOTRisk register
Risk AssessmentProbability and impact analysisRisk matrixRisk ratings
Risk ResponseDevelop mitigation strategiesResponse templatesAction plans
Risk MonitoringTrack risk indicatorsDashboardsStatus reports

Risk Categories:

CategoryExamplesMitigation Approach
TechnicalTechnology obsolescenceProof of concept
ProjectResource unavailabilityResource planning
BusinessMarket changesStakeholder engagement
ExternalRegulatory changesLegal consultation

Risk Response Strategies:

  • Negative Risks (Threats): Avoid, Transfer, Mitigate, Accept
  • Positive Risks (Opportunities): Exploit, Share, Enhance, Accept

Mnemonic: "Identify Assess Respond Monitor" + "Avoid Transfer Mitigate Accept"

Question 4(a OR) [3 marks]

Describe Software design process and explain Design methodologies.

Answer:

Software design transforms requirements into blueprint for implementation through systematic approach.

Design Process:

PhaseActivityOutput
AnalysisUnderstand requirementsProblem definition
ArchitectureHigh-level structureSystem architecture
Detailed DesignComponent specificationDesign documents

Mnemonic: "Analysis Architecture Detail"

Question 4(b OR) [4 marks]

Compare Cohesion and Coupling side by side.

Answer:

Both concepts measure module design quality but focus on different aspects.

Comprehensive Comparison:

AspectCohesionCoupling
DefinitionDegree of relatedness within moduleDegree of interdependence between modules
GoalHigh cohesion desiredLow coupling desired
FocusInternal module structureInter-module relationships
Quality IndicatorStronger = BetterWeaker = Better

Types Comparison:

Cohesion Types (Best to Worst)Coupling Types (Best to Worst)
Functional - Single purposeData - Simple data sharing
Sequential - Output→InputStamp - Data structure sharing
Communicational - Same dataControl - Control information
Procedural - Sequential executionExternal - External dependencies
Temporal - Same timeCommon - Global data
Logical - Similar functionsContent - Internal data access
Coincidental - No relation

Impact on Design:

FactorHigh CohesionLow Coupling
MaintainabilityEasy to modifyIndependent changes
ReusabilitySelf-contained modulesFlexible integration
TestingFocused test casesIsolated testing

Mnemonic: "Cohesion = Inside Strong, Coupling = Between Weak"

Question 4(c OR) [7 marks]

Sketch Data Flow Diagram with levels and explain.

Answer:

Data Flow Diagram (DFD) shows how data moves through system using graphical notation with multiple levels of detail.

DFD Symbols:

SymbolRepresentsDescription
Circle/BubbleProcessTransforms input to output
RectangleExternal EntitySource or destination
Open RectangleData StoreRepository of data
ArrowData FlowMovement of data

DFD Levels:

Level Descriptions:

LevelScopePurposeDetail
Level 0 (Context)Entire systemSystem boundarySingle process
Level 1Major functionsHigh-level processes5-7 processes
Level 2Sub-functionsProcess breakdownDetailed view
Level 3+Fine detailsImplementation levelVery specific

Example - Student Information System:

Level 0 (Context Diagram):

[Student] → Student Info → [Student System] → Reports → [Admin]

Level 1 DFD:

Balancing Rules:

  • Data Conservation: Input = Output at each level
  • Process Numbering: Hierarchical numbering system
  • External Entities: Same at all levels

Benefits of Leveled DFDs:

BenefitDescriptionAdvantage
AbstractionHide complexityEasy understanding
DecompositionBreak down processesManageable chunks
VerificationCheck completenessQuality assurance

Mnemonic: "Context Major Sub Fine" + "Process Entity Store Flow"

Question 5(a) [3 marks]

Give Characteristics of good UI.

Answer:

Good User Interface design ensures effective user interaction with software system.

UI Characteristics:

CharacteristicDescriptionBenefit
SimpleEasy to understandReduced learning curve
ConsistentUniform behaviorPredictable interaction
ResponsiveQuick feedbackUser satisfaction

Mnemonic: "Simple Consistent Responsive"

Question 5(b) [4 marks]

Briefly explain Unit testing

Answer:

Unit Testing verifies individual software components in isolation to ensure correct functionality.

Unit Testing Overview:

AspectDescriptionPurpose
ScopeIndividual modules/functionsComponent verification
IsolationTest in isolationIndependent validation
AutomationAutomated test executionEfficient testing
Early DetectionFind bugs earlyCost-effective debugging

Testing Process:

Benefits:

  • Early bug detection reduces fixing costs
  • Code quality improvement through testing discipline
  • Regression testing prevents future breaks

Mnemonic: "Scope Isolation Automation Early"

Question 5(c) [7 marks]

Draw activity diagrams of the train reservation system, explain each step.

Answer:

Activity Diagram shows workflow of train reservation system from user request to ticket confirmation.

Step-by-Step Explanation:

StepActivityDescriptionDecision Points
1User LoginAuthenticate user credentialsValid/Invalid
2Search TrainsFind available trains for route/dateResults found
3Select TrainChoose specific trainTrain selection
4Choose SeatsSelect seat preferencesAvailability check
5Enter DetailsProvide passenger informationData validation
6Review BookingConfirm booking detailsUser confirmation
7Process PaymentHandle payment transactionSuccess/Failure
8Generate TicketCreate ticket documentTicket creation
9Send ConfirmationDeliver confirmation to userProcess complete

Activity Types:

TypeSymbolPurposeExamples
ActionRounded RectanglePerform activitySearch Trains
DecisionDiamondChoose pathValid Credentials?
Start/EndCircleBegin/TerminateStart, End
FlowArrowShow sequenceProcess flow

Parallel Activities:

  • Payment processing and seat reservation can occur simultaneously
  • Confirmation email and SMS can be sent in parallel

Exception Handling:

  • Login Failure: Return to login screen
  • No Seats: Allow different seat selection
  • Payment Failure: Retry payment options
  • System Error: Show error message and restart

Mnemonic: "Login Search Select Choose Enter Review Pay Generate Send"

Question 5(a OR) [3 marks]

Compare Verification, Validation side by side.

Answer:

Both are quality assurance activities but focus on different aspects of correctness.

Verification vs Validation:

AspectVerificationValidation
Question"Are we building right?""Are we building right thing?"
FocusProcess correctnessProduct correctness
MethodReviews, inspectionsTesting, user feedback

Mnemonic: "Verification = Right Process, Validation = Right Product"

Question 5(b OR) [4 marks]

Define Testing describe any two testing type.

Answer:

Testing is process of evaluating software to detect errors and ensure it meets requirements.

Testing Definition: Systematic examination of software to find defects and verify functionality.

Two Testing Types:

(1) Black Box Testing:

AspectDescriptionExample
ApproachTest without knowing internal structureInput/Output testing
FocusFunctional requirementsLogin validation
TechniqueEquivalence partitioningValid/Invalid inputs
TesterExternal perspectiveUser acceptance

(2) White Box Testing:

AspectDescriptionExample
ApproachTest with knowledge of code structurePath coverage
FocusInternal logicCode branches
TechniqueStatement coverageAll lines executed
TesterDeveloper perspectiveUnit testing

Comparison:

FactorBlack BoxWhite Box
KnowledgeNo code knowledgeFull code knowledge
CoverageFunctional coverageStructural coverage
LevelSystem levelUnit level

Mnemonic: "Black = External, White = Internal"

Question 5(c OR) [7 marks]

Describe each Coding standards and guidelines.

Answer:

Coding Standards are set of rules and conventions for writing consistent, maintainable, and readable code.

Purpose of Coding Standards:

BenefitDescriptionImpact
ReadabilityEasy to understand codeFaster maintenance
ConsistencyUniform coding styleTeam collaboration
MaintainabilityEasy to modifyReduced costs
QualityFewer defectsReliable software

Major Coding Standards Categories:

(1) Naming Conventions:

ElementStandardExamplePurpose
VariablescamelCaseuserName, totalAmountClear identification
ConstantsUPPER_CASEMAX_SIZE, DEFAULT_VALUEDistinguish constants
Functionsdescriptive verbscalculateTax(), validateInput()Action clarity
ClassesPascalCaseCustomerAccount, OrderManagerType identification

(2) Code Structure:

AspectGuidelineExampleBenefit
IndentationConsistent spacing4 spaces or 1 tabVisual hierarchy
Line LengthMaximum 80-120 charsBreak long linesScreen readability
BracesOpening brace styleSame line vs new lineConsistency
CommentsMeaningful descriptions// Calculate tax amountCode documentation

(3) Code Organization:

PrincipleGuidelineLimitBenefit
File OrganizationOne class per fileRelated functions groupedEasy navigation
Function LengthKeep functions small20-30 lines maxBetter testing
Class SizeSingle responsibilityFocused purposeMaintainability
Module CouplingMinimize dependenciesLoose couplingFlexibility

(4) Documentation Standards:

TypeFormatContentExample
Header CommentsFile descriptionPurpose, author, date// Customer management module
Function CommentsParameter descriptionInput/output specs@param userId - unique identifier
Inline CommentsComplex logicWhy, not what// Using binary search for performance
API DocumentationPublic interfacesUsage examplesMethod signatures

(5) Error Handling:

PracticeDescriptionExamplePurpose
Exception HandlingUse try-catch blockstry { ... } catch (Exception e)Graceful failure
Error MessagesMeaningful messages"Invalid email format"User guidance
LoggingRecord error detailslog.error("Database connection failed")Debugging support
ValidationInput checkingCheck null valuesPrevent errors

(6) Performance Guidelines:

AreaStandardExampleImpact
Memory UsageAvoid memory leaksClose resourcesSystem stability
Algorithm ChoiceEfficient algorithmsUse appropriate data structuresResponse time
Database AccessMinimize queriesUse connection poolingScalability
Code OptimizationAvoid premature optimizationProfile before optimizingMaintainability

Code Review Standards:

Review Checklist:

CategoryCheck ItemsPurpose
FunctionalityRequirements met, edge cases handledCorrectness
StandardsNaming, formatting, documentationConsistency
SecurityInput validation, authenticationSafety
PerformanceEfficient algorithms, resource usageScalability

Benefits of Following Standards:

BenefitDescriptionLong-term Impact
Team ProductivityFaster developmentReduced development time
Code QualityFewer bugsLower maintenance costs
Knowledge TransferEasy understandingSmooth team transitions
Tool SupportBetter IDE supportEnhanced development experience

Implementation Strategy:

  1. Establish Guidelines: Create team-specific coding standards document
  2. Tool Integration: Use automated formatting and linting tools
  3. Training: Conduct workshops on coding best practices
  4. Enforcement: Include standards in code review process
  5. Continuous Improvement: Regular updates based on team feedback

Popular Coding Standards:

LanguageStandardOrganizationFocus
JavaGoogle Java StyleGoogleComprehensive guidelines
PythonPEP 8Python Software FoundationPythonic code
JavaScriptAirbnb StyleAirbnbModern JS practices
C#Microsoft GuidelinesMicrosoft.NET ecosystem

Mnemonic: "Name Structure Organize Document Handle Perform Review"