MISReport
MISReport
Submitted by:
Hamza Waseem 2022-CS-54
Muhammad Mudassir 2022-CS-32
Ehsan Ullah 2022-CS-36
Asad Ullah 2022-CS-11
Zohaib Arshad 2022-CS-51
Supervised by:
Prof. Dr Muhammad Shoaib
Department of Computer Science
University of Engineering and Technology
Lahore Pakistan
Contents
1. Introduction ................................................................................................................................ 4
2. What is Software? ....................................................................................................................... 4
System Software:............................................................................................................................. 4
Application Software: ...................................................................................................................... 5
2.1 Characteristics of Software ................................................................................................... 6
Understandability:................................................................................................................... 6
Cost-Effectiveness: .................................................................................................................. 6
Maintainability: ....................................................................................................................... 7
Modularity: ............................................................................................................................. 7
Reliability:................................................................................................................................ 7
Portability: ............................................................................................................................... 7
Documentation: ...................................................................................................................... 8
Reusability: .............................................................................................................................. 8
Interoperability: ...................................................................................................................... 8
3. Software Engineering .................................................................................................................. 9
3.1 Layered Approach ................................................................................................................. 9
Quality Focus: .......................................................................................................................... 9
Process Layer:........................................................................................................................ 10
Methods Layer: ..................................................................................................................... 10
Tools Layer:............................................................................................................................ 10
3.2 Need for Software Engineering ........................................................................................... 11
4. Software Development Life Cycle Models ................................................................................ 11
4.1 Classical Waterfall Model .................................................................................................... 12
Feasibility Study: ................................................................................................................... 12
Requirement Analysis: .......................................................................................................... 12
Design:................................................................................................................................... 12
Coding & Unit Testing:........................................................................................................... 12
Integration & System Testing ................................................................................................ 12
Maintenance: ........................................................................................................................ 12
4.2 Iterative Waterfall Model ........................................................................................................ 12
4.3 Prototyping Model .................................................................................................................. 13
Requirement Gathering: ....................................................................................................... 13
Quick Design ......................................................................................................................... 13
Customer Evaluation ............................................................................................................. 14
Refinement ............................................................................................................................ 14
Implementation: ................................................................................................................... 14
4.4 Spiral Model ............................................................................................................................ 14
Objective Determination......................................................................................................... 7
Risk Analysis ............................................................................................................................ 7
Development & Testing: Builds and tests the product. .......................................................... 7
Planning for Next Phase: Reviews progress and plans subsequent iterations. ...................... 7
4.5 RAD Model (Rapid Application Development)........................................................................ 15
Business Modeling ................................................................................................................ 15
Data Modeling ....................................................................................................................... 16
Process Modeling .................................................................................................................. 16
Application Generation ......................................................................................................... 16
Testing & Turnover ................................................................................................................ 16
5. Conclusion ................................................................................................................................. 17
6. References ................................................................................................................................. 17
1. Introduction
Software fundamentals form the backbone of modern computing, encompassing the principles,
methodologies, and models used to develop reliable and efficient software systems. This report
explores the core concepts of software, the discipline of software engineering, and various
software development life cycle models. Understanding these fundamentals is essential for
building high-quality software that meets user needs and business goals.
2. What is Software?
Software is a collection of computer programs, procedures, rules, and associated documentation
that enable a data processing system to perform specific tasks. It is broadly categorized into:
System Software
System software is a type of computer program that manages and controls a computer's hardware
and application programs. It acts as an interface between the hardware and the application
software, providing a platform for applications to run. The operating system (OS) is a primary
example of system software.
Tasks: File management, memory management, process scheduling, and handling input/output.
Device Drivers:
Specialized programs that allow the operating system to communicate with hardware devices.
Examples:
Firmware:
Permanent software programmed into hardware (usually in ROM).
Language Translators:
Convert high-level programming languages into machine code.
Types:
• Compiler (e.g., GCC for C++)
• Interpreter (e.g., Python interpreter)
• Assembler (converts assembly language to machine code)
• Includes operating systems like Windows, Linux, and macOS.
Application Software:
Application Software refers to programs designed to help users perform specific tasks or solve
particular problems on a computer or digital device. Unlike system software (which manages
hardware), application software is user-oriented and helps accomplish personal, educational, or
business activities.
Examples:
Web Browsers:
Used to access and navigate the internet.
Multimedia Software:
Used for creating and editing images, audio, and video.
Examples:
Example: Clear comments in code and meaningful variable names help make software
understandable.
Cost-Effectiveness:
• Meaning: The software should deliver good value for the cost spent on development,
deployment, and maintenance.
• Why it matters: Budget-friendly software development ensures resources are used
efficiently.
Example: An open-source software that provides similar features as expensive software is more
cost-effective.
Maintainability:
• Meaning: The ability to easily fix bugs, add new features, or upgrade the software when
needed.
• Why it matters: Maintenance is a major part of the software lifecycle—poorly
maintainable software becomes expensive over time.
Modularity:
• Meaning: The software is divided into separate modules or components, each handling a
specific function.
• Why it matters: Makes the software easier to develop, test, and maintain.
Example: A web application where the login system, dashboard, and payment system are
separate modules.
Reliability:
• Meaning: The software should perform consistently and correctly under defined
conditions without crashing.
• Why it matters: Users trust reliable software for critical tasks like banking, healthcare,
etc.
Portability:
• Meaning: The software should be able to run on different operating systems or devices
with little or no modification.
• Why it matters: Saves time and cost by not rewriting software for every platform.
Documentation:
• Meaning: The software should come with clear, comprehensive documents explaining its
usage, design, and code.
• Why it matters: Helps new developers understand the system and allows users to use the
software properly.
Example: User manuals, developer guides, API documentation.
Reusability:
• Meaning: Parts of the software (code, functions, components) can be used again in other
projects.
• Why it matters: Speeds up development and ensures consistency across software
systems.
Interoperability:
• Meaning: The software can interact with other systems, devices, or applications
seamlessly.
• Why it matters: Important in environments where multiple systems need to work
together.
Example: A hospital system that can communicate with pharmacy software and lab systems.
3. Software Engineering
Software Engineering is the systematic application of disciplined and quantifiable approaches to
the development, operation, and maintenance of software. It provides a structured framework
that guides developers in building software systems that are efficient, reliable, and cost-effective.
Rather than relying solely on coding skills, software engineering emphasizes a professional,
organized process similar to traditional engineering disciplines. This includes careful planning,
clear design, proper implementation, thorough testing, and ongoing maintenance.
A key aspect of software engineering is its focus on measurable and repeatable processes.
Developers follow defined methodologies and standards to ensure consistency, maintainability,
and scalability. The main goal is to produce high-quality software that meets user requirements,
performs efficiently, and remains easy to update over time. This is particularly important in
large-scale or complex projects, where unstructured development can lead to errors, delays, and
budget overruns.
Quality Focus:
At the heart of software engineering lies a strong focus on quality. This means ensuring that the
final product not only functions correctly but also meets all the specified requirements, customer
expectations, and industry standards. Quality is not limited to just testing the software at the end
it must be embedded into every phase of development, from planning to delivery. A strong
quality focus ensures that the software is reliable, maintainable, efficient, and user-friendly.
Maintaining high quality helps reduce errors, improve customer satisfaction, and minimize the
cost of post-release fixes.
Process Layer:
The process layer forms the foundation of software engineering. It defines the overall structure
and flow of activities required to produce software efficiently. This includes critical phases such
as requirement gathering, design, implementation, testing, deployment, and maintenance. A well-
defined process ensures that software is developed in a systematic, repeatable, and organized
manner. It also helps in managing risks, maintaining schedules, and ensuring that resources are
used wisely. Various process models, such as the Waterfall Model, Agile, or Spiral Model, guide
teams through these structured steps.
Methods Layer:
Provides the “how-to” of software development.
Includes:
• Software analysis
• System modeling
• Design techniques
• Coding standards
• Testing strategies
• Ensures developers follow consistent, efficient, and correct approaches.
• Examples include object-oriented design and test-driven development (TDD).
• Helps in translating project requirements into working and maintainable software.
Tools Layer:
Involves the use of CASE (Computer-Aided Software Engineering) tools.
• Requirement gathering
• System design (e.g., UML diagrams)
• Coding and debugging
• Testing and quality assurance
• Version control and project management
• Improves productivity, consistency, and workflow efficiency.
• Examples include Visual Studio, GitHub, Selenium, and Jira.
• Enables better collaboration and helps maintain software quality throughout the lifecycle.
2. Error Detection:
The model emphasizes early error detection by continuously checking the outputs at the
end of each phase. This reduces the risk of major flaws in later stages of development.
3. Phase Containment:
Changes and fixes are contained within the specific phase, ensuring that corrections
don’t affect other parts of the project. This improves stability and reduces the potential
for disruptions.
4. Improved Quality:
By iterating through each phase and validating the work at every step, the quality of the
software is improved, and the final product is more reliable.
5. Requirement Gathering:
The first step involves collecting the initial user requirements, but instead of gathering all
requirements upfront, only the basic or most essential requirements are collected. This
helps to quickly start building a prototype, which is a preliminary version of the software.
6. Quick Design:
A basic prototype of the system is created with the available information. This prototype
is a simplified, working version of the application or system, which may lack full
functionality but gives users a glimpse of how the final product might look and function.
7. Customer Evaluation:
The prototype is then presented to the users for evaluation. This stage involves getting
feedback from the users on the functionality, design, and features. The goal is to identify
if the prototype meets their needs and expectations or if any adjustments are needed.
8. Refinement:
Based on the feedback from users, the prototype is refined and improved. Features are
added, modified, or removed as necessary. This process continues in iterative cycles, with
each new version of the prototype being evaluated by the users until their requirements
are met.
9. Implementation:
Once the prototype has gone through sufficient iterations and the users are satisfied with
the result, the final product is developed. The final version of the software is built based
on the refined prototype, fully implementing all the desired features, and then it is
deployed for use.
Risk Analysis:
• This phase is dedicated to identifying and analyzing potential risks early in the project.
• Risks could include technical challenges, cost overruns, time delays, and more.
• A plan is made to mitigate these risks, which is crucial for the project's success.
Business Modeling:
• Understand the flow of information and define how data is handled across business
functions.
• Identify business needs and gather high-level requirements.
Data Modeling:
• Define and refine data objects and their relationships.
• Focuses on how data is processed and stored within the application.
Process Modeling:
• Develop processes to manipulate data objects, based on business logic.
• Defines how data moves through the system and what transformations occur.
Application Generation:
• Rapid creation of working software components using tools like CASE (Computer-Aided
Software Engineering).
• Code is generated quickly, often through reusable components or visual tools..
• Because prototypes are refined with user feedback, less time is needed for final testing.
5. Conclusion
Software fundamentals are critical for developing robust and efficient software systems. By
understanding the nature of software, the principles of software engineering, and the various
SDLC models, developers can create products that meet user expectations and business
objectives. Adopting the right development model, such as the waterfall, prototyping, or spiral
model, ensures a structured and risk-managed approach to software development. A strong
foundation in software fundamentals not only improves the quality and maintainability of
software but also enhances team collaboration, reduces development time, and minimizes project
failures. Moreover, by applying key characteristics such as modularity, reliability, and portability,
developers can build scalable systems that are adaptable to future needs. As technology continues
to evolve, mastering these core principles equips software engineers with the tools necessary to
face new challenges and innovate effectively.
6. References
Pressman, R. S. (2020). Software Engineering: A Practitioner's Approach. McGraw-Hill
Education.
IEEE. (2022). Guidelines for Software Requirements Specifications. IEEE Std 830-1998.
Rajib Mall. (2018). Fundamentals of Software Engineering (4th ed.). PHI Learning Pvt. Ltd.
W3Schools. (2023). Software Development Life Cycle (SDLC). Retrieved from
www.w3schools.com
Stack Overflow. (2023). Discussions on Software Engineering Models and Practices. Retrieved
from https://stackoverflow.com
IBM Developer. (2023). Software Engineering Practices and Methodologies. Retrieved from
https://developer.ibm.com