0% found this document useful (0 votes)
14 views11 pages

Software Engineering Overview and Models

Software Engineering is the disciplined application of engineering principles to software design, development, testing, and maintenance, ensuring reliability and efficiency. The Software Crisis refers to the challenges in delivering complex software systems on time and within budget due to increasing complexity and poor methodologies. Requirement Engineering is the systematic process of identifying and managing user needs, involving steps like feasibility study, elicitation, analysis, specification, validation, and management.

Uploaded by

mayankmangla343
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views11 pages

Software Engineering Overview and Models

Software Engineering is the disciplined application of engineering principles to software design, development, testing, and maintenance, ensuring reliability and efficiency. The Software Crisis refers to the challenges in delivering complex software systems on time and within budget due to increasing complexity and poor methodologies. Requirement Engineering is the systematic process of identifying and managing user needs, involving steps like feasibility study, elicitation, analysis, specification, validation, and management.

Uploaded by

mayankmangla343
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

Part A – Short Answer

Ques 1. Define Software Engineering. Explain its importance as a discipline

Answer. Software Engineering is the systematic and disciplined application of engineering


principles to the design, development, testing, and maintenance of software. It ensures
software is reliable, efficient, cost-effective, and meets user requirements.

Importance of Software Engineering:

1. Provides a structured development process (SDLC models).

2. Improves quality, reliability, and security of software.

3. Saves cost and time through proper planning and reuse.

4. Ensures scalability and easy maintenance.

5. Meets user needs through requirement analysis.

6. Supports teamwork, documentation, and project management.

7. Helps adapt to new technologies.

8. Essential for large, critical, and safety-sensitive systems.

Ques 2. What is a Software Crisis? Discuss causes and solutions.

Answer. The Software Crisis refers to the set of problems faced during the early days of
software development (1960s–70s) when the demand for complex software systems grew
rapidly, but the methods to develop them were immature. It describes the difficulties in
delivering software on time, within budget, and with acceptable quality, leading to
unreliable, costly, and hard-to-maintain systems.

Causes of Software Crisis:

1. Increasing complexity of software systems.

2. Poor project management and lack of proper methodologies.

3. Inaccurate requirements or changing customer needs.

4. Low reliability and quality due to insufficient testing.

5. High cost and delays from inefficient practices.

6. Poor documentation and maintainability of code.

7. Lack of skilled professionals in early software development.

Solutions to Software Crisis:


1. Adoption of Software Engineering principles (structured design, modularity, SDLC
models).

2. Use of better project management and estimation techniques.

3. Requirement analysis and validation with customer involvement.

4. Improved testing, verification, and quality assurance methods.

5. Use of modern tools and programming practices (CASE tools, version control, agile
methods).

6. Proper documentation and maintenance practices.

7. Training and skill development for software engineers.

Ques3. Write short notes on Software Processes & Characteristics.

Answer. A software process is a structured set of activities and tasks used to develop and
maintain software. It defines how software is planned, developed, tested, delivered, and
maintained. Common processes include Waterfall, Spiral, Incremental, Agile, and V-Model.
Each process provides guidelines for requirement analysis, design, coding, testing,
deployment, and maintenance.

Characteristics of Software:

1. Intangible – cannot be touched or seen physically.

2. Engineered, not manufactured – developed through design and coding, not


produced like hardware.

3. Does not wear out – but may fail due to bugs or changing requirements.

4. Complexity – often more complex than hardware systems.

5. Customizable & flexible – can be updated or modified.

6. High development cost – most cost lies in development and maintenance.

Ques4. Compare Waterfall, Prototype, Evolutionary, and Spiral Models.

Answer.

Model Description Advantages Disadvantages Suitable For

Waterfall Linear sequential Simple, easy to Inflexible to Small projects


Model model; phases manage, well- changes, poor for with well-
(requirements → unclear defined
Model Description Advantages Disadvantages Suitable For

design → coding →
testing →
requirements,
maintenance) documented. requirements.
late testing.
completed one after
another.

A working prototype
of software is built Better requirement
Can be time- Projects where
quickly, refined understanding, user
Prototype consuming, may requirements
based on user involvement, reduced
Model lead to poor are unclear or
feedback, then risk of
design if rushed. evolving.
converted into final misunderstanding.
system.

Software is
developed in
Delivers partial system Requires strong
increments; each Large projects
Evolutionary quickly, flexible to planning, may
version improves on needing gradual
Model changes, continuous lead to scope
the previous one development.
user feedback. creep.
until final product is
achieved.

Combines iterative
development with
risk analysis; Risk management, Costly, requires
High-risk, large,
development is in handles complex expertise in risk
Spiral Model and mission-
cycles (planning → projects, flexible and analysis, complex
critical projects.
risk analysis → iterative. to manage.
engineering →
evaluation).

Ques5. Write a short note on Data Dictionary.

Answer. A Data Dictionary is a centralized repository that stores details about data used in a
system, such as names, types, structures, and relationships. It acts as a reference for
developers, analysts, and users to understand how data is organized and managed.

Contents of a Data Dictionary:

 Data item name

 Data type and size


 Default values and constraints

 Source and destination of data

 Relationships with other data items

Importance:

1. Provides a common understanding of data across the project.

2. Helps avoid redundancy and inconsistencies.

3. Supports database design, documentation, and maintenance.

4. Useful for validation, debugging, and system modifications.

Part B – Descriptive / Analytical

Ques6. What is Requirement Engineering? Explain its process in detail.

Answer. Requirement Engineering (RE) is the systematic process of identifying, analyzing,


documenting, validating, and managing the needs of users and stakeholders for a software
system. It ensures the software developed meets customer expectations and business
objectives.

Process of Requirement Engineering:

1. Feasibility Study:

o Analyzes whether the proposed system is technically, economically, and


operationally possible.

o Helps decide if the project should proceed.

2. Requirement Elicitation:

o Gathering requirements from stakeholders using techniques like interviews,


surveys, brainstorming, and observation.

3. Requirement Analysis:

o Examining requirements for conflicts, ambiguities, and feasibility.

o Prioritizing and refining requirements.

4. Requirement Specification:

o Documenting requirements in a clear and structured way, usually in a


Software Requirement Specification (SRS) document.
5. Requirement Validation:

o Ensuring documented requirements are correct, complete, and agreed upon


by stakeholders.

o Methods: reviews, prototyping, test-case generation.

6. Requirement Management:

o Tracking and controlling changes in requirements throughout the software


lifecycle.

o Ensures adaptability to evolving business needs.

Ques7. Discuss Requirement Elicitation Techniques (FAST, OFD, Use Case approach).

Answer. Requirement elicitation is the process of gathering requirements from stakeholders


to understand what the software should do. Some key techniques are:

1. FAST (Facilitated Application Specification Technique):

o A group meeting-based approach where users, developers, and analysts work


together.

o Conducted like a workshop with brainstorming sessions, discussions, and


questionnaires.

o Advantages: Encourages active user participation, resolves conflicts early,


improves mutual understanding.

2. OFD (Object-Oriented Fact Finding / Object Fact Diagram):

o Focuses on identifying objects, attributes, and relationships in the system.

o Represents requirements visually using diagrams.

o Advantages: Helps in modeling real-world entities, reduces ambiguity,


provides a clear structure for system design.

3. Use Case Approach:

o Describes system functionality from the user’s perspective.

o A use case defines interactions between an “actor” (user or external system)


and the software to achieve a goal.

o Advantages: Easy to understand, user-focused, ensures requirements align


with user needs, supports testing scenarios.
Ques11. Draw a Level-0 and Level-1 DFD for an Online Shopping System / Payroll System.

Answer.

Ques12. Draw an ER Diagram for a Library Management System / Hospital System.

Answer.
Ques13. Explain Size Estimation Techniques (Lines of Code, Function Point Count) with
example.

Answer. In software engineering, size estimation techniques are used to measure the size of
a software project for effort, cost, and time estimation. Two widely used techniques are:

1. Lines of Code (LOC):


 Measures the size of software by counting the number of lines in the source code
(excluding comments and blank lines).

 Assumes more lines mean more effort and cost.

 Advantages: Simple, widely used, easy to automate.

 Disadvantages: Language-dependent, encourages longer code, ignores quality and


complexity.

Example:
If a project has:

 2000 LOC in C,

 Productivity = 50 LOC per person-day,

Then effort required = 2000 ÷ 50 = 40 person-days.

2. Function Point Count (FPC):

 Measures size based on functionality delivered to the user, not on lines of code.

 Independent of programming language.

 Uses five components:

1. External Inputs (EI)

2. External Outputs (EO)

3. External Inquiries (EQ)

4. Internal Logical Files (ILF)

5. External Interface Files (EIF)

Each component is given a weight (low/avg/high complexity), and total function points are
calculated.

Example:
Suppose a system has:

 10 inputs (avg complexity, weight = 4 → 10×4 = 40)

 5 outputs (high complexity, weight = 7 → 5×7 = 35)

 3 files (avg complexity, weight = 10 → 3×10 = 30)

Total Function Points = 40 + 35 + 30 = 105 FP


If productivity = 5 FP per person-day,
Effort required = 105 ÷ 5 = 21 person-days.

Ques14. What are Cost Estimation Models? Explain COCOMO model in detail.

Answer. Cost estimation models are mathematical models used to predict the effort, time,
and cost required to develop a software project. They help in budgeting, resource allocation,
and project planning.

Common models:

1. Expert Judgment (based on past experience).

2. Delphi Technique (consensus from experts).

3. Work Breakdown Structure (WBS).

4. Algorithmic Models – e.g., COCOMO (Constructive Cost Model).

COCOMO Model (Constructive Cost Model):

Proposed by Barry Boehm (1981), the COCOMO model is an algorithmic model that
estimates effort (in person-months), development time, and cost based on the size of the
software (in KLOC = thousands of lines of code).

COCOMO Basic Formula:

 Effort (E) = a × (KLOC)^b (in person-months)

 Development Time (D) = c × (Effort)^d (in months)

 People Required (P) = Effort ÷ Development Time

Where a, b, c, d are constants depending on the project type:

Project Type a b c d Description

Organic 2.4 1.05 2.5 0.38 Small, simple projects with experienced teams.

Semi-Detached 3.0 1.12 2.5 0.35 Medium-size, mixed experience teams.

Embedded 3.6 1.20 2.5 0.32 Complex, real-time, tight hardware/software constraints.

Example:
Estimate effort and time for an Organic project of 32 KLOC.

 Effort = 2.4 × (32)^1.05 ≈ 91 person-months

 Development Time = 2.5 × (91)^0.38 ≈ 14 months

 People Required = 91 ÷ 14 ≈ 7 persons

Advantages of COCOMO:

 Simple, widely used, gives quantitative estimates.

 Provides different models (Basic, Intermediate, Detailed).

 Useful for comparing projects.

Limitations:

 Depends heavily on LOC (language-dependent).

 Early size estimation may be inaccurate.

 Assumes past productivity rates remain constant.

Ques15. Define Cohesion & Coupling. Explain different types with examples.

Answer. Cohesion:

o The degree to which elements within a single module (class/function) belong


together.

o High cohesion = module focuses on a single, well-defined task → better


maintainability.

 Coupling:

o The degree of dependency between different modules.

o Low coupling = modules are independent, changes in one module have


minimal effect on others.

Types of Cohesion (from worst to best):

1. Coincidental Cohesion – Parts are grouped randomly (e.g., a utility module with
unrelated functions).

2. Logical Cohesion – Elements perform similar activities but are grouped together (e.g.,
all input functions in one module).
3. Temporal Cohesion – Tasks executed at the same time are grouped (e.g., initialization
module).

4. Procedural Cohesion – Functions grouped to follow a sequence of execution (e.g.,


data read → process → write).

5. Communicational Cohesion – Functions operate on the same input/output data (e.g.,


module that reads a record and processes it).

6. Sequential Cohesion – Output of one function is input for the next (e.g., data parsing
→ validation → storage).

7. Functional Cohesion (Best) – Every element contributes to a single, well-defined task


(e.g., module to calculate student GPA).

Types of Coupling (from tightest to loosest):

1. Content Coupling (Worst) – One module modifies/uses the internal data of another
directly.
Example: Module A changes variables inside Module B.

2. Common Coupling – Multiple modules share global data.


Example: Global variable accessed by many modules.

3. Control Coupling – One module controls the behavior of another by passing control
flags.
Example: Passing a “mode” variable to change execution flow.

4. Stamp Coupling – Modules share a composite data structure, but use only part of it.
Example: Passing a whole object when only one field is needed.

5. Data Coupling (Best) – Modules communicate only by passing required data.


Example: Passing two numbers to a function to calculate sum.

You might also like