The document provides an overview of software engineering, detailing its definition, characteristics, types, and the software development life cycle (SDLC). It discusses various software types, attributes of good software, and methodologies like Waterfall, Incremental, RAD, Spiral, and Agile models. Additionally, it introduces the Capability Maturity Model Integration (CMMI) for assessing process maturity in organizations.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0 ratings0% found this document useful (0 votes)
15 views
UNIT1
The document provides an overview of software engineering, detailing its definition, characteristics, types, and the software development life cycle (SDLC). It discusses various software types, attributes of good software, and methodologies like Waterfall, Incremental, RAD, Spiral, and Agile models. Additionally, it introduces the Capability Maturity Model Integration (CMMI) for assessing process maturity in organizations.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 55
UNIT-I
Introduction to Software Engineering
Engineering: The Application of Science to the Solution of Practical Problems. Software Engineering: The Application of CS to Building Practical Software Systems. Software is a set of instructions to acquire inputs and to manipulate them to produce the desired output “A systematic approach to the analysis, design, implementation and maintenance of software.”
“ The systematic application of tools and techniques in the
development of computer-based applications.”
“ Software Engineering is about designing and developing high-
quality software.” The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. Description of the Software A software is described by its capabilities. The capabilities relate to the functions it executes, the features it provides and the facilities it offers.
EXAMPLE
Software written for Sales-order processing would have different functions
to process different types of sales order from different market segments .
The features for example , would be to handle multi-currency computing,
updating product , sales and Tax status.
The facilities could be printing of sales orders, email to customers and
reports to the store department to dispatch the goods. What is Good Software? Software has number of attributes which decide whether it is a good or bad . The definition of a good software changes with the person who evaluates it. The software is required by the customer , used by the end users of an organization and developed by software engineer. Each one will evaluate the different attributes differently in order to decide whether the software is good. What are the attributes of good software? The software should deliver the required functionality and performance to the user and should be maintainable, dependable and usable. Maintainability Software must evolve to meet changing needs Dependability Software must be trustworthy Efficiency Software should not make wasteful use of system resources Usability Software must be usable by the users for which it was designed Types of software The various categories of software are 1. System software 2. Application software 3. Engineering and scientific software 4. Embedded software 5. Product-line software 6. Web-applications 7. Artificial intelligence software 1.System Software A collection of programs written to service other programs at system level. For example, compiler, operating systems. 2.Application Software: Application software is defined as programs that solve a specific business need. Application software is used to control business function in real time. Example: Word processing software, spreadsheet software,multimedia software. 3. Engineering and Scientific Software - Software using “number crunching” algorithms for different science and applications. Example: System simulation, computer-aided design. 4.Embedded software Resides in read-only memory and is used to control products and systems for the consumer and industrial markets. Examples are software used in instrumentation and control applications like washing machines,satellites,microwaves,etc. 5.Product-lineSoftware: Designed to provide a specific capability for use by many different customers, product line software can focus on the limited and esoteric marketplace or address the mass consumer market. Example: Word processing,Graphics,DBMS 6.Web Application:
It is a client-server computer program which the client
runs on the web browser. Example: e-commerce and B2B application,to develop web based applications like html,php,xml,etc. 7.Artificial Intelligence Software:
Artificial intelligence software makes use of a non
numerical algorithm to solve a complex problem. Application within this area includes robotics, expert system, pattern recognition, artificial neural network, theorem proving and game playing. Software - Characteristics • Software has a dual role. It is a product, but also a vehicle for delivering a product. • Software is a logical rather than a physical system element. • Software has characteristics that differ considerably from those of hardware. 1.Software is developed or engineered, it is not manufactured in the classical sense 2.Software doesn’t “wear out” 3.Most software is custom-built, rather than being assembled from existing components. • Software is developed or engineered; it is not manufactured in the classical sense: Although some similarities exist between software development and hardware manufacturing, few activities are fundamentally different. In both activities, high quality is achieved through good design, but the manufacturing phase for hardware can introduce quality problems than software. • The software doesn’t “wear out.”: Hardware components suffer from the growing effects of many other environmental factors. Stated simply, the hardware begins to wear out. Software is not susceptible to the environmental maladies that cause hardware to wear out. When a hardware component wears out, it is replaced by a spare part. There are no software spare parts. • The software continues to be custom-built: A software part should be planned and carried out with the goal that it tends to be reused in various projects. In the hardware world, component reuse is a natural part of the engineering process. Software Development Life Cycle (SDLC) The Software Development Life Cycle (SDLC) is a process used by software development organizations to plan, design, develop, test, deploy, and maintain software applications. There are several reasons why organizations use the Software Development Life Cycle (SDLC) when developing software applications: To provide a structured and organized approach to software development: The SDLC provides a framework for managing the software development process, which helps to ensure that all necessary steps are taken and that the final product meets the requirements. 1.To ensure that the software is of high quality. 2.To manage risks and costs. 3.To improve communication and collaboration. 4.To improve efficiency and productivity. 5.To increase the likelihood of a successful project outcome. The SDLC is a valuable tool for organizations to use when developing software applications, as it helps to ensure that the final product is of high quality, meets the requirements, and is delivered on time and within budget. The SDLC typically includes the following phases: 1. Requirements gathering and analysis: This phase involves gathering information about the software requirements from stakeholders, such as customers, end-users, and business analysts. 2. Design: In this phase, the software design is created, which includes the overall architecture of the software, data structures, and interfaces. It has two steps: • High-level design (HLD): It gives the architecture of software products. • Low-level design (LLD): It describes how each and every feature in the product should work and every component. 3. Implementation or coding: The design is then implemented in code, usually in several iterations, and this phase is also called as Development. Things you need to know about this phase: • This is the longest phase in SDLC model. • This phase consists of Front end + Middleware + Back- end. • In front-end: Development of coding is done even SEO settings are done. • In Middleware: They connect both the front end and back end. • In the back-end: A database is created. 4. Testing: The software is thoroughly tested to ensure that it meets the requirements and works correctly. 5. Deployment: After successful testing, The software is deployed to a production environment and made available to end-users. 6. Maintenance: This phase includes ongoing support, bug fixes, and updates to the software. • There are different methodologies that organizations can use to implement the SDLC, such as Waterfall, Agile, Scrum, V- Model and DevOps. CAPABILITY MATURITY MODEL INTEGRATION(CMMI) Capability Maturity Model Integration (CMMI) • Developed by SEI(Software Engineering institute) • Assess the process model followed by an organization and rate the organization with different levels • A set of software engineering capabilities should be present as organizations reach different levels of process capability and maturity Objectives of CMMI : • Fulfilling customer needs and expectations. • Value creation for investors/stockholders. • Market growth is increased. • Improved quality of products and services. • Enhanced reputation in Industry. • CMMI process meta model can be represented in different ways 1.A continuous model 2.A staged model Continuous model: Continuous representation improves capability of specific processes within the organization. Lets organization select specific improvement that best meet its business objectives and minimize risk Levels are called capability levels. Describes a process in 2 dimensions Each process area is assessed against specific goals and practices and is rated according to the following capability levels. Six levels of CMMI Level 0:Incomplete Level 1:Performed Level 2:Managed Level 3:Defined Level 4:Quantitatively managed Level 5:Optimized CMMI Incomplete Process is adhoc . Objective and goal of process areas are not known. Performed Goal, objective, work tasks, work products and other activities of software process are carried out. Managed Activities are monitored, reviewed, evaluated and controlled. Defined Activities are standardized, integrated and documented. Quantitatively Managed Metrics and indicators are available to measure the process and quality. Optimized Continuous process improvement based on quantitative feed back from the user. Use of innovative ideas and techniques, statistical quality control and other methods for process improvement. CMMI - Staged model Staged representation matures the organization as a whole PROCESS MODELS • Help in the software development • Guide the software team through a set of framework activities • Process Models may be linear, incremental or evolutionary THE WATERFALL MODEL • Used when requirements are well understood in the beginning • Also called classic life cycle • A systematic, sequential approach to Software development • Begins with customer specification of Requirements and progresses through planning, modeling, construction and deployment. 1.Project initiation & requirement gathering What is the Problem to Solve? What Does Customer Need/Want? Interactions Between SE and Customer Identify and Document System Requirements Generate User Manuals and Test Plans 2.Planning Prioritize the requirements Plan the process 3.Analysis and design How is the Problem to be Solved? High-Level Design Determine Components/Modules Transition to Detailed Design Detail Functionality of Components/Modules 4.Coding and Testing Writing Code to Meet Component/Module Design Specifications Individual Test Modules in Isolation Integration of Components/Modules into Subsystems Integration of Subsystems into Final Program 5.Deployment • System Delivered to Customer/Market • Bug Fixes and Version Releases Over Time Strengths • Easy to understand, easy to use • Provides structure to inexperienced staff • Milestones are well understood • Sets requirements stability • Good for management control (plan, staff, track) • Works well when quality is more important than cost or schedule Waterfall Drawbacks All projects cannot follow linear process All requirements must be known upfront Few business systems have stable requirements. The customer must have patience. Leads to ‘blocking states’ Inappropriate to changes When to use the Waterfall Model Requirements are very well known Product definition is stable Technology is understood New version of an existing product Porting an existing product to a new platform. THE INCREMENTAL PROCESS MODEL
Linear sequential model is not suited for projects
which are iterative in nature Incremental model suits such projects Used when initial requirements are reasonably well- defined and compelling need to provide limited functionality quickly Functionality expanded further in later releases Software is developed in increments The Incremental Model Communication Planning Modeling Construction Deployment THE INCREMENTAL MODEL • Software releases in increments • 1st increment constitutes Core product • Basic requirements are addressed • Core product undergoes detailed evaluation by the customer • As a result, plan is developed for the next increment. Plan addresses the modification of core product to better meet the needs of customer • Process is repeated until the complete product is produced THE RAD (Rapid Application Development) MODEL • An incremental software process model • Having a short development cycle • High-speed adoption of the waterfall model using a component based construction approach • Creates a fully functional system within a very short span time of 60 to 90 days The RAD Model consists of the following phases: Communication Planning Construction Component reuses automatic code generation testing Modeling Business modeling Data modeling Process modeling Deployment integration delivery feedback THE RAD MODEL • Multiple software teams work in parallel on different functions. • Modeling encompasses three major phases: Business modeling, Data modeling and process modeling • Construction uses reusable components, automatic code generation and testing Problems in RAD • Requires a number of RAD teams • Requires commitment from both developer and customer for rapid-fire completion of activities • Requires modularity • Not suited when technical risks are high THE SPIRAL MODEL The spiral model, initially proposed by Boehm An evolutionary model which combines the best feature of the classical life cycle and the iterative nature of prototype model. Each phase in spiral model begins with design goal & ends with client reviewing. Using the spiral model, the software is developed in a series of incremental releases. During the early iterations, the additional release may be a paper model or prototype. During later iterations, more and more complete versions of the engineered system are produced. Include new element : Risk element. Starts in middle and continually visits the basic tasks of communication, planning, modeling, construction and deployment THE SPIRAL MODEL • Realistic approach to the development of large scale system and software • Software evolves as process progresses • Better understanding between developer and customer • The first circuit might result in the development of a product specification Software Engineering • Subsequent circuits develop a prototype • And sophisticated version of software When to use Spiral Model? • When deliverance is required to be frequent. • When the project is large • When requirements are unclear and complex • When changes may require at any time • Large and high budget projects Advantages • High amount of risk analysis • Useful for large and mission-critical projects. • Cost estimation becomes easy. • Additional functionality or changes can be done at later stage. • Development is fast & features are added in a systematic way. • There is always space for customer feedback. Disadvantages • Can be a costly model to use. • Risk analysis needed highly particular expertise • Doesn't work well for smaller projects. Agility and Agile Process model Agile: • The term agile means the ability of response to changes from requirementsb,technology& people. • When a team is developing a project(the client requirement,technologies,staff/employees working on project)can change.hence adopting to those aspects is done here easily & efficiently. Agile Process • "Agile process model" refers to a software development approach based on iterative development. • Agile methods break tasks into smaller iterations, or parts do not directly involve long term planning. • Hence if any changes are needed then in next iteration they are applied. Characteristics of Agile Process: 1.Modularity 2.Iterative 3.Time bound 4.Adaptive 5.Incremental Phases of Agile model: 1. Requirements gathering 2. Design the requirements 3. Construction/ iteration 4. Testing/ Quality assurance 5. Deployment 6. Feedback 1. Requirements gathering: In this phase, you must define the requirements. You should explain business opportunities and plan the time and effort needed to build the project. Based on this information, you can evaluate technical and economic feasibility. 2. Design the requirements: When you have identified the project, work with stakeholders to define requirements. You can use the user flow diagram or the high-level UML diagram to show the work of new features and show how it will apply to your existing system. 3. Construction/ iteration: When the team defines the requirements, the work begins. Designers and developers start working on their project, which aims to deploy a working product. The product will undergo various stages of improvement, so it includes simple, minimal functionality. 4. Testing: In this phase, the Quality Assurance team examines the product's performance and looks for the bug. 5. Deployment: In this phase, the team issues a product for the user's work environment. 6. Feedback: After releasing the product, the last step is feedback. In this, the team receives feedback about the product and works through the feedback. Advantages: 1.Frequent Delivery 2.Face-to-Face Communication with clients. 3.Efficient design and fulfills the business requirement. 4. Anytime changes are acceptable. 5. It reduces total development time. Disadvantages: 1.Due to the shortage of formal documents, it creates confusion and crucial decisions taken throughout various phases can be misinterpreted at any time by different team members 2.Due to the lack of proper documentation, once the project completes and the developers allotted to another project, maintenance of the finished project can become a difficulty. Other process models of Agile Development and Tools • Crystal • Scrum Scrum • Scrum is aimed at sustaining strong collaboration between people working on complex products, and details are being changed or added. It is based upon the systematic interactions between the three major roles: Scrum Master, Product Owner, and the Team. Scrum Master: Scrum Master is a central figure within a project. His principal responsibility is to eliminate all the obstacles that might prevent the team from working efficiently. Product Owner Product Owner, usually a customer or other stakeholder, is actively involved throughout the project, conveying the global vision of the product and providing timely feedback on the job done after every sprint. Scrum Team Scrum Team is a cross-functional and self-organizing group of people that is responsible for the product implementation. It should consist of up to 7 team members, in order to stay flexible and productive Crystal Crystal is an agile methodology for software development. It places focus on people over processes, to empower teams to find their own solutions for each project rather than being constricted with rigid methodologies. Crystal methods focus on:- People involved Interaction between the teams Community Skills of people involved Their Talents Communication between all the teams