0% found this document useful (0 votes)
12 views6 pages

Se Chap 1

Uploaded by

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

Se Chap 1

Uploaded by

Deep gaichor
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 6

Software:

Software is: 1. Instructions that when executed provide desired features, function,
and performance; 2. Data structures that enable the programs to adequately
manipulate information, and 3. Descriptive information in both hard copy and
virtual forms that describes the operation and use of the programs.

Software Engineering: Software engineering is the establishment and use of sound


engineering principles in order to obtain economically software that is reliable
and works efficiently on real machines.

Layered Technology
Software engineering is a layered technology.
To develop a software, we need to go from one layer to another.
All these layers are related to each other and each layer demands the fulfillment
of the previous layer
The layers of software engineering as shown in the above diagram are:-
Tools
Methods
Process
A Quality Focus

A Quality Focus
- It is a process improvement culture which leads to development of increasingly
more effective approaches to software engineering.
- It provides integrity so that data can be accessed by authorized person.
- It focuses on maintablility and usability.
Process
- The foundation of software engineering is process layer.
- It binds all layers together enabling development of software on time.
- Process defies a framework that must be established for effective delivery of
software enginerring technology.
Methods
- Methods provide technical - how to buliding software.
- It includes tasks like communication, requirements analysis, design modeling,
program construction, testing and support.
Tools
- Tools provide automated or semi automated support for the process and methods.
- Tools are integrated which means information created by one tool can be used by
other.

Characteristics of software engineering are :


Software is developed or engineered, it is not manufactured in classical sense.
- Although some similarities exist between software development and hardware
manufacture, the two activities are
fundamentally different.
- In both activities high quality is achieved through good design, but the
manufacturing phase for hardware can introduce quality
problems that are non- existent for software.
Software doesn't wear out. But it does deteriorate.
- Software undergoes many changes. as changes are made, new defects are
introduced causing failure rate to increase.
- Before the failure rate returns to normal, another change is requested causing
the rate to increase again. Slowly minimum failure
rate increases, Software is deteriorating due to change.
Software are Custom built.
- The reusable components have been created so that engineer can concentrate on
truly innovative elements of design.
- A software component should be designed and implemented so that it can be
reused in many different programs.
Efficiency
It is ability of software to use system resources in most effective and
efficient manner.
Software must use storage space, memory, processing power and network bandwidth.

Types of Software
System Software
- System software is a collection of programs written to service other programs.
- Few examples of system software are compilers, editors and file management
utilities used to process complex
but determinate information structure.
Ex DOS, WINDOWS.
Engineering Software
- Engineering Software are characterised by "number crunching "algorithms.
- However modern applications are moving away from conventional numerical
algorithms.
Ex CAD, CAM
Embedded Software
- Embedded software is used to control product/ system for end-user.
- It can perform very limited functions and provide control capability.
Ex Microwave, Washing Machine.
Real Time Software
- Real time software controls real world events as they occur.
- It includes data gathering, analysis, control and monitoring component.
Ex Airways, Railways Reservation System.
Artificial Intelligence Software
- In this software, non numerical algorithms are used to solve complex problems
which cannot be handeled by computation.
- It is used in games, robotics, expert systems, artificial neural networks,
pattern matching etc.

.Software process framework


A process framework establishes the foundation for a complete software process by
identifying a small number of framework activities that are applicable to all
software projects.
It is collection of tasks, milestones, productivity and software quality assurance
points.
Communication
- It involves communication with customer to determine software's objectives,
requirements and encompass requirement gathering.
Planning
- It establishes a plan that analyses technical risk, lists resource requirements
and defines work schedule.
Modeling
- Models are created for better understanding of software requirements and design
to developer and customer.
Construction
- It combines code generation and testing that is required uncovering errors in
the code.
Deployment
- The software is delivered to customer who evaluates the delivered product and
provides feedback based on evaluation.

Waterfall model
The waterfall model is a traditional, sequential approach to software development
where stages are completed one after the other,
starting from customer requirements and progressing through communication,
planning, modeling, construction, and deployment.
The waterfall model needs all project requirements to be clearly stated at the
beginning. This makes it easier to explain
the early stages of the project to customers.
It's suitable for projects with fixed requirements and linear progress but not for
fast-paced environment with frequent changes.

Advantages
Simple and easy to understand.
Good for projects with fixed requirements.
Step by step approach.

DisAdvantages
Inflexible and not adaptable to changes.
Not good model for complex and obect oriented `
Not suitable for dynamic projects.
High amount of risk and uncertainty.

Distinguish between perspective process model and agile process model.


-->
Parameter Perspective Process Model Agile Process Model
Quality It changes from analysis>Design>Code>Test It focuses on all
aspects of SDLC at any given time

Quality control Issues detected and fixed at the end of the Early detection
and fixing in each sprint.
project.

Continual Lesson learned from previous release Lesson learned


from Previous sprint will be
implemented in next release. implemented in the next
sprint.

Risk No risk identification during testing phase. Early identification and


mitigation in every sprint.

Developmental Follows Life cycle models. Follows iterative and


incremental developmental model
Model

Customer Feedback At the end of project At the end of every


sprint

Oriented Process Oriented. People Oriented.

Planning Predictive planning is required. Adaptive planning is


required.

Customer Role Important Critical

Communication Formal communication is required. Informal communication


is required.

Distinguish between waterfall model and spiral model.


-->
Difference Waterfall and Spiral Model:
Parameters Waterfall Model Spiral Model

Working Nature Sequential method Evolutionary method

Involvement of Minimum, at end of project completion Maximum, earlier


in project development
Customer

Identification & After completion of all stages Earlier while


developing the project
rectification of
errors

Simplicity Easy Model Complex Model

Flow of the Phases One after another, difficult to go back In


iteration, easy to go back

Project size Small Large

Flexibility to change Difficult Easy


contents

Cost Less More

Framework type Linear Iterative

Extreme programming
Extreme programming is a lightweight, efficient, low-risk, flexible, predictable,
scientific, and fun way to develop software. eXtreme Programming (XP) was conceived
and developed to address the specific needs of software development by small teams
in the face of vague and changing requirements. Extreme Programming is one of the
Agile software development methodologies. It provides values and principles to
guide the team’s behavior. The team is expected to self-organize. Extreme
Programming provides specific core practices.
Where
- Each practice is simple and self-complete.
- Combination of practices produces more complex and emergent behavior.
Extreme Programming is based on the following values-
- Communication
- Simplicity
- Feedback
- Courage
- Respect
Extreme Programming involves-
- Writing unit tests before programming and keeping all of the tests running at
all times. The unit tests are automated and eliminate defects early, thus reducing
the costs.
- Starting with a simple design just enough to code the features at hand and
redesigning when required.
- Programming in pairs (called pair programming), with two programmers at one
screen, taking turns to use the keyboard. While one of them is at the keyboard, the
other constantly reviews and provides inputs.
- Integrating and testing the whole system several times a day.
- Putting a minimal working system into production quickly and upgrading it
whenever required.
- Keeping the customer involved all the time and obtaining constant feedback.
Iterating facilitates the accommodating changes as the software evolves with the
changing requirements.
Extreme Programming solves the following problems often faced in the software
development projects-
- Slipped schedules: Short and achievable development cycles ensure timely
deliveries.
- Cancelled projects: Focus on continuous customer involvement. ensures
transparency with the customer and immediate resolution of any issues.
- Costs incurred in changes: Extensive and ongoing testing makes sure the changes
do not break the existing functionality. A running working system always ensures
sufficient time for accommodating changes such that the current operations are not
affected.
- Production and post-delivery defects: Emphasis is on the unit tests to detect
and fix the defects early.
- Misunderstanding the business and/or domain: Making the customer a part of the
team ensures constant communication and clarifications.
- Business changes: Changes are inevitable and are accommodated at any point of
time.
- Staff turnover: Intensive team collaboration ensures enthusiasm and goodwill.
Cohesion of multi-disciplines fosters the team spirit.
Extreme Programming takes the effective principles and practices to extreme levels.
Extreme Programming
- Code reviews are effective as the code is reviewed all the time.
- Testing is effective as there is continuous regression and testing.
- Design is effective as everybody needs to do refactoring daily.
- Integration testing is important as integrate and test several times a day.
- Short iterations are effective as the planning game for release planning and
iteration planning

Agile Model
The Agile model is an iterative and flexible approach to software development that
prioritizes collaboration, adaptability,
and customer feedback.
Breaks down work in smaller parts called sprints.
It includes frequent testing and regular adaptation to changing requirements.
It promotes collaboration engineers allowing for faster development cycles and
greater responsiveness to customer needs.
Advantages
It reduces total development time.
Flexible and Adaptable to changes.
Increased customer involvement.
Continuous Improvement.
DisAdvantages
Less Documentation
Adapting to agile mindset takes time and efforts.
Unpredictable timelines

Scrum
Scrum is a type of agile framework. It is a framework within which people can
address complex adaptive problem
while productivity and creativity of delivering product is at highest possible
values.
Scrum uses Iterative process.
Scrum emphasizes self organization.
Scrum is simple to understand.
Scrum framework help team to work together.

Dynamic Systems Development Method (DSDM):


1. Feasibility Study:
It establishes the essential business necessities and constraints related to the
applying to be designed then assesses whether or not the application could be a
viable candidate for the DSDM method.
2. Business Study:
It establishes the use and knowledge necessities that may permit the applying to
supply business value; additionally, it is the essential application design and
identifies the maintainability necessities for the applying.
3. Functional Model Iteration:
It produces a collection of progressive prototypes that demonstrate practicality
for the client.
(Note: All DSDM prototypes are supposed to evolve into the deliverable
application.) The intent throughout this unvarying cycle is to collect further
necessities by eliciting feedback from users as they exercise the paradigm.
4. Design and Build Iteration:
It revisits prototypes designed throughout useful model iteration to make sure that
everyone has been designed during a manner that may alter it to supply operational
business price for finish users. In some cases, useful model iteration
and style and build iteration occur at the same time.
5. Implementation:
It places the newest code increment (an “operationalized” prototype) into the
operational surroundings. It ought to be noted that:
(a) the increment might not 100% complete or,
(b) Changes are also requested because the increment is placed into place. In
either case, DSDM development work continues by returning to the useful model
iteration activity.

Selection criteria's for Software Process Model


Following are the parameters which is used to select
1. Requirements Characteristics
• Reliability of Requirements
• How often the requirements can change
• Types of requirements
• Number of requirements
• Can the requirements be defined at an early stage
• Requirements indicate the complexity of the system
2. Development team :
• Team size
• Experience of developers on similar type of projects
• Level of understanding of user requirements by the developers
• Environment
• Domain knowledge of developers
• Experience on technologies to be used
• Availability of training
3. User involvement in the project :
• Expertise of user in project
• Involvement of user in all phases of the project
• Experience of user in similar project in the past
4. Project type and associated risk :
• Stability of funds
• Tightness of project schedule
• Availability of resources
• Type of project
• Size of the project
• Expected duration for the completion of project
• Complexity of the project
• Level and the type of associated risk

You might also like