Lecture 1.1
Lecture 1.1
Lecture 1.1
ENGINEERING
Lecture 1
Miss Rubab wafa
INTRODUCTION TO SOFTWARE ENGINEERING
3. Embedded software:
▪ This type of software is placed in “Read-Only- Memory
(ROM)”of the product and control the various functions of the
product.
▪ The product could be an aircraft, automobile, security system,
signalling system, control unit of power plants, etc.
▪ The embedded software handles hardware components and is
also termed as intelligent software .
Changing Nature of Software :
4. Business software :
1. Reduces complexity:
▪ Large software systems are always complicated and challenging to progress.
▪ Software engineering divides big problems into various small issues. And then
start solving each small issue one by one.
▪ All these small problems are solved independently to each other and then
integrated together to produce the software product
2. To minimize software cost:
▪ A lot of resources are required to develop large-scale software systems, such
as manpower, software licenses, hardware…etc.
▪ As companies seek to build cutting-edge software to drive growth, determining
the overall budget becomes very tricky.
▪ Software engineering provides systematic means for having regular interaction
and obtaining a budget estimates.
Importance of Software Engineering
3. To decrease time:
▪ One of the main criteria to measuring project success and yet the most
challenging is delivering software projects on time.
▪ Schedule issues are the main reason for conflicts on projects especially during
the second half of projects where the actual implementation takes place to
produce the final working product.
▪ Software engineering involves the processes required to ensure timely
completion of a project.
5. Reliable software:
▪ Software reliability is the “probability that the software will execute for a particular
period of time without failure”.
▪ Software engineering provides models for software quality measurements and
evaluations.
▪ Examples include models for estimating defects inserted and removed throughout
the software lifecycle.
Software Engineer Job Duties
➢ Cost
➢ schedule
➢ Quality
➢ Scale
➢ change
Cost
➢ software is very expensive primarily due to the fact that software development is
extremely labor-intensive
➢ To get an idea of the costs involved, let us consider the current state of practice in the
industry. Lines of code (LOC) or thousands of lines of code (KLOC) delivered is by far the
most commonly used measure of software size in the industry.
➢ As the main cost of producing software is the manpower employed, the cost of developing
software is generally measured in terms of person-months of effort spent in development.
➢ The productivity in the software industry for writing fresh code generally ranges from few
hundred to about 1000+ LOC per person-month. This productivity is over the entire
development cycle, not just the coding task.
➢ Software companies often charge the client for whom they are developing the software
between $3000 - $15,000 per person-month. With a productivity of 1000 LOC per person-
month, it means that each line of delivered code costs between $3 and $15! And even
small projects can easily end up with software of 50,000 LOC.
➢ With this productivity, such a software project will cost between $150,000 and $750,000!
Schedule
▪ Besides cost and schedule, the other major factor driving software engineering is
quality
▪ Unfortunately, a large number of cases have occurred regarding the unreliability of
software
▪ the software often does not do what it is supposed to do or does something it is not
supposed to do
▪ Clearly, developing high quality software is another fundamental goal of software
engineering.
Quality
▪ There are many quality attributes, reliability is generally accepted to be the main
quality criterion.
▪ As unreliability of software is due to the presence of defects in the software, one
measure of quality is the number of defects in the delivered software per unit size
(generally taken to be thousands of lines of code, or KLOC)
▪ The quality objective is to reduce the number of defects per KLOC as much as
possible.
▪ Current best practices in software engineering have been able to reduce the defect
density to less than 1 defect per KLOC.
Quality
▪ Software development life cycle (SDLC) is a framework defining tasks performed at each step
in the software development process.
▪ Set of activities and their relationships to each other to support the development of
a software system
▪ It consists of a detailed plan describing how to develop, maintain, replace and alter or enhance
specific software.
▪ The life cycle defines a methodology for improving the quality of software and the overall
development process.
▪ Any software development process is divided in several logical stages that allow a software
company to organize its work efficiently in order to build a software product of the required
functionality within a specific time frame and budget
Identifying Software Development Activities
▪ Questions to ask:
▪ What is the problem?
▪ What is the solution?
▪ What are the best mechanisms to implement the solution?
▪ How is the solution constructed?
▪ Is the problem solved?
▪ Can the customer use the solution?
▪ How do we deal with changes that occur during the development?
Are enhancements needed?
Software Development Activities (Example 1)
▪ Every project has a specific set of requirements that describe what the finished
product should do and how it should operate
▪ A project's requirements can help set a framework for the tasks and goals the
project team aims to achieve
▪ Learning how to gather and document these requirements can help you create
an efficient and organized project process.
▪ Requirements gathering is a process that involves creating a list of requirements
for a project.
▪ These requirements represent features, functions or activities that a team must
complete to finish a project and achieve its goals
▪ Detailed requirements are elicited through interaction with the customer/end user in
the iteration the requirement is to be implemented and directly reflected in software.
6-Step Requirements Gathering Process
▪ Customers
▪ Decision-makers
▪ Users
▪ Marketing
▪ Sales
▪ Key suppliers
▪ Distributers and other partners
Remember to search for “hidden stakeholders.” Ask probing questions in early meetings, before
you begin eliciting requirements. Identify all stakeholder groups who need to be involved.
Ideally, you want input from every group who has skin in the game; give them all the opportunity
to state their needs.
Establish Project Goals and Objectives
1. What are you trying to achieve with this new product or project?
2. What are the overall outcomes your customers want from the product?
3. What are your company’s business goals?
4. What are the actionable, measurable objectives you need to achieve to realize those
goals and outcomes?
▪ Write them down. State them clearly, and get all your stakeholders to sign-off on
them. Your goals and objectives will act as a framework for your decision-making.
▪ Each requirement you write should help satisfy a project objective and accomplish a
goal. If it doesn’t, you should either discard it or made it a candidate for a future
release.
Elicit Requirements From Your Stakeholders
▪ Be sure to listen actively during interviews. Ask probing questions and take copious
notes. Afterward, organize your notes and follow up as necessary. Document
each exercise or encounter thoroughly
Document the Requirements
▪ Many product managers prioritize features by tagging them with labels, such as “must
have,” “high want,” and “nice to have.” But it’s also important to rank order each
requirement within those categories.
▪ There are two reasons for this.
▪ The first is time to market. Schedules often slip. When they do, you may need to trim
features and requirements to meet your release date.
▪ The second reason is that requirements evolve. During implementation, you’re likely to
discover new needs. Some may be critically important and supersede existing
requirements in terms of priority. You need to know where those new requirements fit
in your pecking order.
▪ Solving high priority requirement may easily solve less propority
problems/requirements
Software Requirement Specifications
▪ The production of the requirements stage of the software development process is Software
Requirements Specifications (SRS) (also called a requirements document).
▪ SRS is a formal report, which acts as a representation of software that enables the customers
to review whether it (SRS) is according to their requirements. Also, it comprises user
requirements for a system as well as detailed specifications of the system requirements.
Following are the features of a good SRS document:
1. Correctness: User review is used to provide the accuracy of requirements stated in the SRS.
SRS is said to be perfect if it covers all the needs that are truly expected from the system.
2. Completeness: The SRS is complete if, All essential requirements, whether relating to
functionality, performance, design, constraints, attributes, or external interfaces.
Functional requirements
For example
▪ The system sends a confirmation email when a new user account is created.
Nonfunctional requirements
▪ Correctness: The software which we are making should meet all the
specifications stated by the customer.
▪ Usability/Learnability: The amount of efforts or time required to learn how
to use the software should be less. This makes the software user-friendly
even for IT illiterate people.
▪ Integrity : Just like medicines have side-effects, in the same way a software
may have a side-effect i.e. it may affect the working of another application.
But a quality software should not have side effects.
▪ Reliability : The software product should not have any defects. Not only
this, it shouldn't fail while execution.
▪ Efficiency : This characteristic relates to the way software uses the
available resources. The software should make effective use of the storage
space and execute command as per desired timing requirements.
NFRs
▪ Security : With the increase in security threats nowadays, this factor is gaining
importance. The software shouldn't have ill effects on data / hardware. Proper
measures should be taken to keep data secure from external threats
▪ Interoperability : Interoperability is the ability of software to exchange information with
other applications and make use of information transparently.
▪ Reusability : If we are able to use the software code with some modifications for
different purpose then we call software to be reusable.
▪ Adaptability : An software system can tolerate changes in its environment without
external intervention.
▪ Maintainability : Maintenance of the software should be easy for any kind of user.
▪ Flexibility : Changes in the software should be easy to make.
▪ Extensibility : It should be easy to increase the functions performed by it.
▪ Scalability : It should be very easy to upgrade it for more work(or for more number of
users).
Assignment no 1