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

Window Programming Ch1

The document discusses various approaches to software development including structured, agile, prototyping, rapid application development, end-user, waterfall, incremental, and spiral approaches. It also discusses principles of software development such as keeping it simple, maintaining vision, planning for reuse, and being open to the future.

Uploaded by

Abdurezak Ahmed
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
37 views

Window Programming Ch1

The document discusses various approaches to software development including structured, agile, prototyping, rapid application development, end-user, waterfall, incremental, and spiral approaches. It also discusses principles of software development such as keeping it simple, maintaining vision, planning for reuse, and being open to the future.

Uploaded by

Abdurezak Ahmed
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 26

Ambo University Woliso Campus

School of Technology and Informatics


Department of Computer Science

Windows Programming
( C# )

1
Chapter 1

2
Software Development
 Program refers to any piece of software
or a sequence of instructions stored in the
memory of the computer system.
 Software is a set of instructions that
makes the computer perform tasks.
Software comprises the program that tells
the computer hardware what to do.

3
Software Development
 Software development is the process of
developing software through successive
phases in an orderly way.
 Software development is the process of
creating new software solutions or
modifying existing software solutions.

4
Software Development approaches
• There are five commonly used, among
approaches to software development.
Structured Approach
Agile approach
Prototyping Approach
Rapid Application Development
Approach
End-User Approach.

5
1. Structured approach
• “Structured Approach to developing a software
application involves the use of the program
development cycle:
Defining the problem
Planning the solution
Building the solution
Checking the solution
Modifying the solution”.
 Used when there is a high budget, where there is a
long time period to complete the project.
6
2. Agile approach
 Agile - quick thinking, co-ordinated, active
and lean.
 Adapts well to changing situations.
 Suited to web-based software development
and other software applications that are
modified regularly.
 Speed of getting a working solution, Working
versions of the software are regularly
delivered.
7
3. Prototyping approach
 Is the development of a working model which
may then be developed further into a fully
functioning solution.
 The developer makes a small scale model of
the proposed program so that users can give
feedback and ensure it meets their needs.
 Focus on what the users interacts with, the
input and output requirements only
 Good approach for small scale projects.
8
4. Rapid applications development approach

• Is a sequential process often using CASE tools


which allows the rapid development of software
applications.
• It requires constant communication between
developers and the end users in order to understand
the problem properly.
• It uses libraries of code and typically a GUI IDE".
• Extremely good approach for small scale projects
• Reuse of code is encouraged

9
5. End-user approach
• is the customizing of existing programs to
meet specific needs of the end user or
customer.
• End user development is when the end user is
the one who designs and creates the program
for their own needs.
• Very useful approach for small scale projects
& for small budgets.

10
Other approaches
 Waterfall Approach
 Development activities are performed in
order, with possibly minor overlap, but with
little or no iteration between activities.
 User needs are determined, requirements are
defined, and the full system is designed,
built, and tested for ultimate delivery at one
point in time.

11
Waterfall Approach
 Often also referred to as the linear and
sequential model, for the flow of activities in
this model.
 Software development activities move to the
next phase only after the activities in the
current phase are over.
 However, like is the case with a waterfall, one
cannot return to the previous stage.

12
Waterfall Approach

13
Incremental Approach
• Determines user needs and defines the overall
architecture, but then delivers the system in a
series of increments (“software builds”).
• The first build incorporates a part of the total
planned capabilities;
• the next build adds more capabilities, and so
on, until the entire system is complete.

14
Incremental Approach

15
Spiral Approach
 A risk-driven controlled prototyping approach
that develops prototypes early in the
development process to specifically address
risk areas followed by assessment of
prototyping results and further determination
of risk areas to prototype.
 Prototyping continues until high risk areas are
resolved and mitigated to an acceptable level.

16
Spiral Approach

17
Principles Of Software
Development

18
1. The Reason It all Exists
• A software system exists for one reason: to
provide value to its users.
• Before specifying a system requirement,
noting a piece of system functionality,
determining the hardware platforms or
development processes, ask yourself questions
such as:
• "Does this add real VALUE to the system?" If
the answer is "no", don't do it.
19
2. Keep It Simple
• Software design is not a haphazard
(disorganized) process.
• All design should be as simple as possible, but
no simpler.
• This facilitates having a more easily
understood, and easily maintained system.

20
3. Maintain the Vision
o A clear vision is essential to the success of a software
project.
o Brooks’s states: “ Conceptual integrity is the most
important consideration in system design”.
o Stroustrup also notes: “ Having a clear internal
structure is essential to constructing a system that is
understandable, can be extended and reorganized, and
is maintainable and testable”.
o Booch summarizes: “ It is only through having a clear
sense of systems architecture that it becomes possible
to discover common abstractions and mechanisms”.

21
4. What You Produce, Others Will Consume

• Always specify, design, and implement


knowing someone else will have to understand
what you are doing.
• The audience/users for any product of
software development is potentially large.
• Code with concern for those that must
maintain and extend the system.
• Making their job easier adds value to the
system.

22
5. Be Open to the Future

o Build For Today Design For Tomorrow


o A system with a long lifetime has more value.
o Never design yourself into a corner.
o Always ask "what if", and prepare for all
possible answers
o By creating systems that solve the general
problem, not just the specific one.

23
6. Plan Ahead for Reuse
o Reuse saves time and effort.
o Achieving a high level of reuse is arguably the
hardest goal to accomplish in developing a
software system.
o The reuse of code and designs has been
proclaimed as a major benefit of using object-
oriented technologies.
o Planning ahead for reuse reduces the cost and
increases the value of both the reusable
components and the systems into which they
are incorporated. 24
6. Plan Ahead for Reuse
o Reuse saves time and effort. Achieving a high
level of reuse is arguably the hardest goal to
accomplish in developing a software system.
o The reuse of code and designs has been
proclaimed as a major benefit of using object-
oriented technologies.
o Planning ahead for reuse reduces the cost and
increases the value of both the reusable
components and the systems into which they
are incorporated.
25
Yo u
a n k
Th

26

You might also like