0% found this document useful (0 votes)
2 views

Topic I - Overview of Computers and Programming Languages

The document provides an overview of the software development life cycle (SDLC), detailing its six stages: planning, requirements definition, design, development, testing, and deployment. It also discusses algorithms, flowcharts, and various programming methodologies, highlighting their advantages and disadvantages. Key methodologies covered include Waterfall, Agile, Scrum, and Lean Development, each with unique approaches to software development and project management.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views

Topic I - Overview of Computers and Programming Languages

The document provides an overview of the software development life cycle (SDLC), detailing its six stages: planning, requirements definition, design, development, testing, and deployment. It also discusses algorithms, flowcharts, and various programming methodologies, highlighting their advantages and disadvantages. Key methodologies covered include Waterfall, Agile, Scrum, and Lean Development, each with unique approaches to software development and project management.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 29

Topic I:

An Overview of Computers
and Programming Languages
• Prepared by: Jamillah S. Guialil, MIT ICC 0103 – Intermediate Programming
Agenda:
• Programming Cycle (SDLC)
• Algorithms
• Flowchart
• Programming Methodologies
I. Programming Cycle - SDLC

• Software development life cycle (SDLC) is a structured


process that is used to design, develop, maintain, replace,
and enhance a specific software or process.

• The goal of the SDLC life cycle model is to deliver high-


quality, maintainable software that meets the user’s
requirements at low cost within the give time frame.
6 Stages of SDLC
Stage 1: Planning and Requirement Analysis

This is the foundational stage where the project's goals, objectives, and scope are defined.
Key activities include:
•Gathering detailed requirements from stakeholders (clients, users)
•Analyzing feasibility (technical, economic, operational)
•Defining project scope and boundaries
•Creating a project plan (timeline, budget, resources)
Stage 2: Defining Requirements

• In this stage, all the requirements for the target software are specified. These requirements get
approval from customers, market analysts, and stakeholders.

• This is fulfilled by utilizing SRS (Software Requirement Specification). This is a sort of document that
specifies all those things that need to be defined and created during the entire project cycle.
Stage 3: Defining Requirements

In this phase, the software's architecture and design are created.


Key activities include:
•Creating high-level and low-level design documents
•Designing the user interface (UI) and user experience (UX)
•Selecting appropriate technologies and tools
•Developing prototypes or mockups for user feedback
Stage 3: Defining Requirements
Feature High-Level Design (HLD)
Scope Broad, overarching system view
Level of Detail Abstract, conceptual
Audience Project managers, architects, stakeholders
System architecture: How major components interact (e.g.,
client, server, database).
Technology stack: Programming languages, frameworks,
databases, etc.
Functional decomposition: Breaking down the system into
Focus major modules.
User interface (UI) design: General layout and flow.
Data flow diagrams: High-level overview of data
movement.
Non-functional requirements: Performance, security,
scalability.
A diagram showing how a web application interacts with a
Example
database and a third-party API.
Stage 3: Defining Requirements

Feature Low-Level Design (LLD)


Scope Detailed implementation of components
Level of Detail Specific, technical
Audience Developers, testers
Detailed component design: Class Diagrams,
Data structures, Algorithms.
Database design: Specific tables, fields,
relationships.
User interface (UI) design: Detailed
Focus
specifications for each screen.
Error handling: Specific error codes, logging, and
recovery mechanisms.
Security measures: Authentication,
Authorization, data Encryption.
A detailed description of how a specific login
function will be implemented, including
Example
authentication methods, data validation, and error
handling.
Stage 4: Development

This is where the actual coding and implementation of the software take place.
Key activities include:
• Writing code in the chosen programming language(s)
• Building and integrating software components
• Conducting unit tests (testing individual components)
Stage 5: Product Testing and Integration

This stage focuses on identifying and fixing bugs and ensuring the software meets the defined requirements.
Key activities include:
• Unit testing, integration testing, system testing, user acceptance testing
• Bug tracking and resolution
• Ensuring software quality and reliability
Stage 6: Deployment and Maintenance of Products

Deployment involves releasing the software to the end-users.


Key activities include:
• Installing and configuring the software
• Data migration (if applicable)
• User training and support
• Deployment strategies (e.g., phased rollout, big bang)

Maintenance:
• Fixing bugs and addressing issues reported by users
• Implementing software updates and upgrades
• Providing ongoing support and maintenance
• Monitoring system performance and making necessary adjustments
System Development Strategies
Strategies How it Works Pros Cons

Big bang Deployment The entire system is updated simultaneously. Simple to implement. High risk of downtime and potential for
significant disruption if issues arise.
Rollback can be complex.
Rolling Deployment Updates are gradually rolled out to a small Minimizes downtime, reduces Requires careful monitoring and can be
number of servers at a time. risk of widespread impact from more complex to manage.
bugs.
Blue/Green Two identical production environments are Minimal downtime, easy Requires more resources (two complete
Deployment maintained. Traffic is switched between the rollback, high availability. environments).
"blue" and "green" environments.
A/B Testing Different versions of the software are released Allows for data-driven decisions Can be complex to implement and
Deployment to different groups of users. on which version performs analyze.
better.
Recreate Deployment The old version of the system is completely shut Simple to implement. Significant downtime.
down and replaced with the new version.

Factors to Consider When Choosing a Strategy:


• Downtime tolerance: How much downtime can the system and users tolerate?
• Risk tolerance: How much risk is acceptable in case of issues?
• Application complexity: How complex is the application and its dependencies?
• Resource availability: What resources are available for deployment (e.g.,
infrastructure, personnel)?Update frequency: How often will updates be deployed?
• User base size: How many users will be impacted by the deployment?
II. Algorithm
• A finite sequence of well-defined, unambiguous instructions
designed to accomplish a specific task or solve a particular problem.
• It's a step-by-step procedure that outlines how to achieve a desired
outcome

•Key characteristics:
• Finiteness: Must terminate after a finite number of steps. It shouldn't
run forever.
•Definiteness: Each step must be precisely defined and unambiguous.
No room for interpretation.
•Input: May or may not take input. If it does, the input must be clearly
specified.
•Output: Must produce one or more outputs. The relationship between
input and output should be well-defined.
•Effectiveness: Each step must be feasible and executable within a
finite amount of time and resources.
Properties of Algorithm:
• It should terminate after a limited time.
• It should produce at least one output.
• It should take zero or more input.
• It should be deterministic means giving the same output for the same input case.
• Every step in the algorithm must be effective i.e. every step should do some work.
Problem: Find the largest number in a list of numbers.
Algorithm:
1.Start
2.Assume the first number in the list is the largest.
3.Compare the assumed largest number with the next
number in the list.
4.If the next number is greater, make it the new largest
How to express an Algorithm? number.
1.Natural Language: Natural English language. 5.Repeat steps 3 and 4 for all remaining numbers in
the list.
2.Flowchart: A graphical/pictorial representation of it.
6.Print the largest number found.
3.Pseudo Code: Form of annotations and informative 7.End
text written in plain English which is very much similar to
the real code but as it has no syntax like any of the
programming languages, it can’t be compiled or
interpreted by the computer
III. Flowcharts
A flowchart is a visual representation of a process or workflow using
standardized symbols connected by lines. It's a diagrammatic way to
illustrate the sequence of steps involved in a particular operation.

Purpose of Using Flowcharts:


•Visualizing Complex Processes: Flowcharts make complex
processes easier to understand by breaking them down into smaller,
more manageable steps.
•Improving Communication: They provide a clear and concise way to
communicate a process to others.
•Identifying Bottlenecks: Flowcharts can help identify areas where a
process is inefficient or where delays occur.
•Documenting Processes: They serve as a valuable documentation
tool for recording and preserving process information.
•Planning and Design: Flowcharts are useful in planning and designing
new processes or systems.
•Debugging and Troubleshooting: They can help in identifying the root
cause of problems in a process.
Shows a step that decides the
next step in a process. This is
commonly a yes/no or true/false Data or information into a
Indicates the beginning or question.
Represent a step in a process end of a flowchart. system

Indicates the process of inputting Shows named process which is A process step that isn’t
or outputting external data defined elsewhere. automated

pairs of on-page connecter are used to


Multiple documents Any delay period that is part
A document replace long lines on a flowchart page.
of a process

Flowline
Shows the process’ direction. Each
flowline connects two blocks.

An alternate to the
normal process step
Data input or output
IV. Programming Methodologies
It is systematic approaches to software development. They provide a framework for planning, designing,
building, testing, and maintaining software applications.

Choosing the right methodology is crucial for the success of a project, as it impacts factors like:
• Project timeline
• Budget
• Team collaboration
• Software quality
Waterfall model is very simple and easy to
understand and uses methodology. That is why it is
beneficial for the beginner or novice developer.

Waterfall development methodology saves a


significant amount of time at all the phases
processed and completed at a given time. Each
phase has specific deliverables and an individual
review process.

Sequential approach: Each phase (requirements,


design, implementation, testing, deployment,
maintenance) must be completed before moving to
the next.
Pros: Simple to understand and manage, well-suited
for projects with well-defined requirements.
Cons: Rigid, inflexible to changes, high risk of failure
if requirements change during development.
•Iterative and incremental development: Projects are divided
into short cycles (sprints) with frequent feedback and
adjustments.

•Focus on collaboration and flexibility: Emphasizes customer


involvement and adaptability to changing requirements.

•Examples: Scrum, Kanban, Extreme Programming (XP)

•Pros: Adaptable to change, improves customer satisfaction,


encourages teamwork.

•Cons: Can be challenging to manage, requires highly skilled and


motivated teams.
•Collaboration between development and
operations teams: Focuses on automation and
continuous delivery.

•Key principles: Continuous Integration (CI),


Continuous Delivery (CD), infrastructure as code.

•Pros: Faster delivery cycles, improved reliability,


increased efficiency.

•Cons: Requires significant cultural and


organizational changes.
•Condensed development process: Emphasizes rapid prototyping and user feedback.

•Suitable for projects with well-defined user requirements.

•Pros: Faster development time, reduced costs, increased user involvement.

•Cons: May not be suitable for complex projects, requires highly skilled developers.
•Focus on building a working model of the software early in
the development process to demonstrate its functionality
to the clients.

•Allows for early user feedback and iterative refinement.

•Pros: Reduces risks, improves user satisfaction.

•Cons: Can lead to scope creep if not managed carefully.


The Scrum software development model begins with brief
planning, meeting, and concludes with a final review.

Businesses can accelerate the development of software using this


method that allows a series of iterations in a single go.

It is one of the best software development methodologies because


it easily brings slowest progressing projects on track.

Can be used in any type of projects

+ Use Scrum Development for fast-moving, cutting-edge


developments, rapid codes, and testing mistakes that can be
easily rectified.

+ Decision-making is entirely in the hands of the teams.

- It is good for small, fast-moving projects but not suitable for


large complex projects.
Feature Driven Development is an iterative approach out of all
the software methodologies, intended for use by large teams
working on a project using object-oriented technology. This
type of model is good for organizations that are transitioning
from a phase-based approach to an iterative approach. Feature
Driven methodology is also known as an FDD methodology.

Advantages of FDD Methodology


• It allow multiple teams to work simultaneously. Which, in turn,
reduces the time.
• FDD Helps to move larger size projects and obtain repeatable
success.

Disadvantages of FDD Methodology


•Not an ideal methodology for smaller projects, so it is not good for an
individual software developer.
•High dependency on the main developer means the person should be fully
equipped for an act as coordinator, lead designer, and mentor.
•No written documentation is provided to clients in this methodology, so they
are not able to get proof for their software.
Extreme Programming is an agile software
engineering methodology. This methodology, which is
shortly known as XP methodology, is mainly used for
creating software within a very unstable environment.
It allows greater flexibility within the modeling process.
The main goal of this XP model is to lower the cost of
software requirements. It is quite common in the XP
model that the cost of changing the requirements at
later stages in the project can be very high.

Advantages
• It allows software development companies to save
costs and time required for project realization.
• It emphasize customer involvement.
• It helps to establish rational plans and schedules
and to get the developers personally committed to
their schedules

Disanvantages
• It focused on the code rather than on design
• It only as effective as the people involved, Agile
does not solve this issue.
• It requires meetings at frequent intervals at
enormous expense to customers.
Lean Development Methodology focuses on the
creation of easily changeable software. The goal of
this methodology is to develop software in one-third of
the time, with a limited budget, and a very less amount
of required workflow.

Advantages
• The early elimination of the overall efficiency of the
development process certainly helps to speeds up
the process of entire software development which
surely reduces the cost of the project.
• Delivering the product early is a definite advantage.
It means that the development team can deliver
more functionality in a shorter period of time,
hence enabling more software projects to be
delivered.
• Empowerment of the development team helps in
developing the decision-making ability of the team
members which creates more motivation among
team members.
Activity No.1
Create an algorithm and flowchart of the ff:

1. Program to Check Armstrong Number


2. Program to find the factorial of the given number.
3. Program that will convert Fahrenheit to Celsius
𝐶=(𝐹−32)×5/9

You might also like