Advanced Software Engineering Principles PDF

Document Details

AmusingRetinalite57

Uploaded by AmusingRetinalite57

Amity University

Tags

software engineering software development lifecycle formal methods advanced technology

Summary

This document from Amity University details advanced software engineering principles, covering topics such as software life cycle models, formal methods, and component-based software engineering. It's targeted at postgraduate students.

Full Transcript

Advanced Software Engineering Principles Programs Offered Post Graduate Programmes (PG)...

Advanced Software Engineering Principles Programs Offered Post Graduate Programmes (PG) n e i Master of Business Administration Advanced Softwarel Master of Computer Applications Master of Commerce (Financial Management / Financial Technology) Master of Arts (Journalism and Mass Communication) Master of Arts (Economics) Master of Arts (Public Policy and Governance) O n Engineering Principles y Master of Social Work Master of Arts (English) it Master of Science (Information Technology) (ODL) Master of Science (Environmental Science) (ODL) Diploma Programmes Post Graduate Diploma (Management) r s e Post Graduate Diploma (Logistics) Post Graduate Diploma (Machine Learning and Artificial Intelligence) Post Graduate Diploma (Data Science) i v Undergraduate Programmes (UG) Bachelor of Business Administration Bachelor of Computer Applications Bachelor of Commerce U n y Bachelor of Arts (Journalism and Mass Communication) t Bachelor of Arts (General / Political Science / Economics / i English / Sociology) Bachelor of Social Work Bachelor of Science (Information Technology) (ODL) A m c ) Product code ( AMITY Amity Helpline: (Toll free) 18001023434 For Student Support: +91 - 8826334455 Support Email id: [email protected] | https://amityonline.com e in nl O Advanced Software Engineering Principles ity rs ve ni U ity m )A (c  e © Amity University Press in All Rights Reserved No parts of this publication may be reproduced, stored in a retrieval system or transmitted nl in any form or by any means, electronic, mechanical, photocopying, recording or otherwise without the prior permission of the publisher. O SLM & Learning Resources Committee ity Chairman : Prof. Abhinash Kumar Members : Dr. Ranjit Varma rs Dr. Maitree Dr. Divya Bansal Dr. Arun Som ve Dr. Sunil Kumar Dr. Reema Sharma Dr. Winnie Sharma ni Member Secretary : Ms. Rita Naskar U ity m )A (c Published by Amity University Press for exclusive use of Amity Directorate of Distance and Online Education, Amity University, Noida-201313 Contents Page No. e Module - I: Life Cycle Models 01 in 1.1 Overview to Software Engineering 1.1.1 Introduction to Software Engineering 1.1.2 Introduction to Lifecycle Model nl 1.1.3 Incremental Development 1.1.4 Spiral Model O 1.1.5 Component Model 1.1.6 Agile Software Development 1.1.7 Waterfall Model ity 1.1.8 Prototype Model 1.1.9 Rapid Application Development (RAD) Model 1.1.10 Selection of Appropriate SDLC Model Module - II: Formal Methods 2.1 Basic Concepts 2.1.1 Basic Concepts of Formal Specification rs 52 ve 2.1.2 Importance of Formal Methods 2.1.3 Overview and Advantages of Formal Methods Model 2.1.4 Use of Formal Methods in SDLC ni 2.2 Mathematical Preliminaries 2.2.1 Basic Concepts of  Mathematical Preliminaries 2.3 Mathematical Notations for Formal Specification U 2.3.1 Overview and Types of Mathematical Notations for Formal Specification 2.4 Formal Specification Languages 2.4.1 Overview of Formal Specification Languages ity 2.4.2 Types of Formal Specification Languages 2.4.3 Difference between Informal and Formal Specification Language 2.5 Z-Notations m 2.5.1 Syntax, Type and Semantics of Z-Notations 2.5.2 Benefits and Limitations of Z 2.5.3 Specification to Convert Requirements Written in Natural Language to Z Formal )A 2.6 Ten commandments of Formal Methods 2.6.1 Tips to Use Formal Methods Module - III: Component-Based Software Engineering 98 (c 3.1 Overview of Component-Based Software Engineering 3.1.1 Introduction to Component-Based Software Engineering: Part 1 3.1.2 Introduction to Component-Based Software Engineering: Part 2 3.1.3 Domain Engineering 3.1.4 Economics of Component-Based Software Engineering 3.2 Cleanroom Software Engineering e 3.2.1 Cleanroom Approach in 3.2.2 Functional Specification 3.2.3 Cleanroom Testing 3.2.4 Structure of Client/Server System nl Module - IV: Client/Server Software Engineering 138 4.1 Overview to Client/Server Software Engineering O 4.1.1 Software Engineering for Client Server Systems 4.1.2 Design for Client Server Systems and Testing Issues 4.1.3 Peer to Peer Architecture ity 4.1.4 Service Oriented Software Engineering 4.2 Web Engineering 4.2.1 Service Engineering rs 4.2.2 Software Development with Services 4.2.3 Software Testing Issues 4.2.4 Analysis Modelling Issues ve 4.2.5 WebE Process 4.2.6 Framework for WebE 4.2.7 Formulating/Analysing Web-Based Systems ni 4.2.8 Management Issues 4.3 Service Oriented Software Engineering 4.3.1 Introduction to Service Oriented Software Engineering U 4.3.2 Services as Reusable Components 4.3.3 Service Engineering 4.3.4 Software Development with Services ity Module - V: Re-engineering and CASE 202 5.1 Re-engineering 5.1.1 Business Process Re-engineering and Software Re-engineering m 5.1.2 Introduction to Building Blocks of CASE 5.1.3 Forward Re-engineering and Economics of Re-engineering )A 5.1.4 Reverse Engineering and Restructuring Engineering 5.2 Computer-Aided Software Engineering 5.2.1 Introduction and Building Blocks of CASE 5.2.2 Taxonomy of Case Tools (c 5.2.3 TCS Robot: Case Tools 5.2.4 Integration Architecture and Case Repository Advanced Software Engineering Principles 1 Module - I: Life Cycle Models Notes Learning Objectives e At the end of this module, you will be able to: in Understand Software Engineering Analyze Lifecycle Model nl Know Spiral and Component Model Learn Agile Software Development Discuss Waterfall and Prototype Model O Introduction Before a software product can be developed, user needs and constraints must be ity identified and made clear; the product must be made to be user- and implementer-friendly; the source code must be carefully implemented and tested; and supporting documentation must be created. Software maintenance tasks include reviewing and analysing change requests, redesigning and altering source code, thoroughly testing updated code, updating documentation to reflect changes and distributing updated work products to the right user. rs The need for systematic approaches to software development and maintenance became apparent in the 1960s. Many software projects at the period suffered from cost overruns, schedule slippage, unreliability, inefficiency and lack of customer consent. ve It became evident that the demand for software was exceeding our capacity to produce and update it as computer systems became bigger and more sophisticated. Consequently, software engineering has developed into an important topic in technology. ni The nature and complexity of software have seen significant changes in the past forty years. Applications from the 1970s returned alphanumeric results using a single processor and single line inputs. On the other hand, modern software are much more complex, rely on client-server technology and feature an intuitive user interface. They are compatible with a U wide range of CPUs, operating systems and even hardware from different countries. Software groups tackle development issues and backlogs in addition to doing their utmost to stay abreast of rapidly emerging new technologies. Improvements to the ity development process are even recommended by the Software Engineering Institute (SEI). It’s an hourly requirement that cannot be avoided. But it often results in conflict between individuals who welcome change and others who adamantly stick to traditional working practices. Consequently, in order to prevent disputes and enhance software development m and deliver high-quality software on schedule and under budget, it is imperative to embrace software engineering concepts, practices and methods. Software is a collection of instructions that a user can use to gather inputs, manipulate )A them and then produce the desired output in terms of features and performance. It also comes with a collection of materials designed to help users comprehend the software system, such as the program handbook. In contrast, engineering focuses on creating goods through the application of precise, scientific ideas and techniques. (c 1.1 Overview to Software Engineering Software is one of the most significant technologies in the world today and is essential to the development of computer-based systems and goods. Software has developed over Amity Directorate of Distance & Online Education 2 Advanced Software Engineering Principles the past 50 years from a specialised tool for information analysis and problem solutions to a whole industry. However, we still struggle to provide high-caliber software on schedule and Notes within budget. e Software covers a broad range of technologies and application domains through programs, data and descriptive information. Those that have to maintain legacy software in still face unique difficulties. Simple collections of information content have given way to sophisticated systems that display complex functionality and multimedia content. These systems and applications are based on the web. These WebApps are software even though nl they have special features and needs. Software engineering is the process, methods and tools that make it possible to create complex computer-based systems with speed and quality. All software initiatives O can benefit from the five framework activities that make up the software process: planning, communication, modelling, construction and deployment. A set of fundamental principles guide the problem-solving process of software engineering practice. Even as our collective understanding of software and the tools needed to construct it advances, a ity wide range of software myths still mislead managers and practitioners. You’ll start to see why these fallacies should always be disproved as you get more knowledge about software engineering. rs 1.1.1 Introduction to Software Engineering Software systems are intricately designed intellectual works. Software development must guarantee that the system is delivered on schedule, stays within budget and satisfies ve the requirements of the intended application. In 1968, at a NATO meeting, the phrase “software engineering” was coined to advocate for the need of an engineering approach to software production in order to achieve these aims. Software engineering has advanced significantly and established itself as a field since that time. ni “The goal of software engineering as a discipline is to significantly increase software productivity and quality while lowering software costs and time to market through research, education and practice of engineering processes, methods and techniques.” U The process of turning a preliminary system concept into a software system that operates in the intended environment is known as software development. Software development activities include software specification, software design, implementation, testing, deployment and maintenance, just like many engineering projects. The user and ity customer’s desires are determined by the software specification. These are stated as prerequisites or competencies that the software system needs to meet. In order to fulfil the software requirements, software design creates a software solution. Specifically, it establishes the software system’s general software structure, also referred to as the m software architecture. The architecture shows the relationships, interfaces and interactions between the main parts of the system. High-level algorithms and user interfaces for the system’s component )A parts are also defined by software design. The design is turned into computer programs, which are tested to make sure they function as the user and customer expects during implementation and testing. After installation, the software system is checked and adjusted to make sure it functions as intended in the target environment. The software system is continuously updated to fix bugs and improve functionality during the maintenance phase (c until it is replaced or abandoned. Software engineering is an engineering profession that covers every facet of software creation, from system specification in its early phases to post-implementation maintenance. Two important words in this definition are as follows: Amity Directorate of Distance & Online Education Advanced Software Engineering Principles 3 1. Engineering specialisation: Engineers are those who make things work. When applicable, they employ theories, techniques and instruments. They do, however, employ them sparingly and always look for answers to issues, even in the absence of relevant theories Notes e and techniques. Engineers search for answers within organisational and budgetary constraints because they are aware of these limitations. in 2. Every facet of producing software: The technical procedures involved in software development are only one aspect of software engineering. In addition, it covers tasks like managing software projects and creating instruments, procedures and theories to nl aid in the creation of software. Getting results of the necessary quality on time and within budget is the goal of engineering. Since engineers can’t be perfectionists, this frequently requires accepting O concessions. On the other hand, programmers can dedicate as much time as they like to the development of their own programs. Since producing high-quality software is frequently best achieved by methodical and ity organised work practices, software engineers generally take this approach to their job. But engineering is all about choosing the best way for a given set of conditions, so in some cases, a less formal, more creative approach to development might work. For the creation of web-based systems, which calls for a combination of software and graphical design talents, less formal development is especially appropriate. rs Activities related to software quality assurance (QA) are conducted concurrently with development activities. The purpose of quality assurance (QA) activities is to guarantee that development activities are executed accurately, that necessary artifacts—like software ve requirements document (SRD) and software design document (SDD)—are created and adhere to quality standards and that the software system will meet the requirements. Testing, requirements analysis, design evaluation, code review and inspection are the methods used to achieve these. ni Activities related to software project management guarantee that the software system under development will be delivered within budget and on schedule. Project planning is a U crucial component of project management. It happens just at the start of a project, right after the specifications for the software system are decided. Specifically, the expected amounts of time and effort needed to complete the three project activity tracks. A project schedule is created to provide direction. Project management is in charge of continuously ity monitoring the project’s expenses and progress during the development and deployment phase, as well as carrying out the necessary adjustments to adjust the project to new circumstances. Origins of the Term Software Engineering m In the 1960s, software engineering became its own independent field of engineering. “Software engineering” has been around since, at the very least, 1963–1964. It was first used by Margaret Hamilton, who worked on the Apollo space program, to differentiate )A software engineering from hardware and other engineering specialties. An hour on a computer cost hundreds of times as much as an hour on a programming at the time because hardware was so valuable.2. In the name of efficiency, maintainability and clarity of the code were frequently compromised. Software became more and more important as (c computer applications became larger and more complex. When the phrase “software engineering” was used as the name of a 1968 NATO conference, it was still more of a pipe dream than a practical field. The title was deliberately chosen by the organisers, particularly Fritz Bauer, to suggest that software manufacturing Amity Directorate of Distance & Online Education 4 Advanced Software Engineering Principles should be grounded in the kinds of theoretical underpinnings and applied disciplines that are customary in the more established engineering departments. Notes Many things have changed since then. Margaret Hamilton received the Presidential e Medal of Freedom on November 22, 2016, in recognition of her efforts developing software that helped prepare for the Apollo missions. in Why Software Engineering First, every aspect of modern civilisation uses software. Software is essential to the nl operation and growth of enterprises. Software is essential to the operation of many machinery and gadgets, including cars, trucks, aeroplanes and medical equipment. Software is also essential to cloud computing, artificial intelligence (AI) and the Internet O of Things (IoT). Software systems are growing exponentially in size, complexity and dispersion. These days, creating systems with millions of lines of code is not unusual. The F35 fighter, for instance, has 8 million lines of code; the Windows operating system from Microsoft has roughly 50 million lines of code; and Google Search, Gmail and Google Maps ity combined have 2 billion lines of code. Three decades ago, the software cost accounted for 5%–10% of the total system cost for many embedded systems, which are composed of both hardware and software. Today, that percentage is between 90% and 95%. Firmware, system on a chip (SoC) and/or application-specific integrated circuits (ASIC) are used in some embedded systems. These are integrated circuits, where the hardware and software rs are fused together. Since they are expensive to replace, the software’s quality is essential. To develop systems, these demand a software engineering methodology. Second, collaboration is aided by software engineering, which is necessary for the ve development of huge systems. It takes a lot of work to design, create, test and maintain large software systems. An average software developer can write between fifty and one hundred lines of source code a day. This covers the amount of time needed for analysis, design, implementation, testing and integration. For a system with 10,000 lines of code, ni a single software engineer would need to dedicate approximately 100–200 days, or 5–10 months, of effort. For a software engineer, 5,000–10,000 days, or 20–40 years, would be needed to complete a medium-sized system with 500,000 lines of source code. Any U business cannot afford to wait this long. Thus, a team or teams of software engineers are required to design and implement real-world software systems. For instance, 20–40 software engineers are needed for a year to work on a medium-sized software system. Collaboration amongst two or more software engineers presents significant hurdles in terms ity of coordination, communication and conception when developing software systems. The process of conceptualisation involves monitoring and categorising real-world occurrences in order to create a mental model that will aid in understanding the intended use of the system. Because software engineers may have various perspectives on m the world based on variances in their education, cultural backgrounds, professional experiences, preconceptions and other variables, conceptualisation can be difficult for teams working together. This is explained in the tale of the blind men and the elephant. )A Comparable to the four blind guys attempting to see or comprehend an application are we software engineers. How can the team members create software that will accurately automate the application if they have the wrong impression of it? How can a team of people with disparate perspectives create and execute software components that complement one another? Software engineering helps developers create a shared knowledge of an (c application for which the software is designed by providing modelling languages like the Unified Modelling Language (UML), methods and procedures. Software engineers must convey their analysis and design concepts to one another when working as a team. But the natural language is too colloquial and vague at times. Amity Directorate of Distance & Online Education Advanced Software Engineering Principles 5 Once more, UML enhances developer communication. Lastly, how can software engineering teams coordinate and cooperate with each other while they work together? How do they assign the components to the teams and individual members, for instance Notes e and split up the work? How do they combine the elements created and put into practice by various teams and individuals within the team? Software engineering offers an answer. in That is, these issues are resolved by software development methods and methodologies, software project management and quality assurance. Software Engineering Ethics nl Every part of our life is controlled and impacted by software, which permeates every area of our society. Software has the power to benefit or hurt our society and other people. O Thus, when developing, deploying and testing software, software engineers need to take social and ethical duties into account. The “Software Engineering Code of Ethics and Professional Practice” was suggested by the ACM/IEEE-CS Joint Task Force on Software Engineering Ethics and Professional Practices in this regard. ity The goal of software engineers is to elevate the field of software analysis, specification, design, development, testing and maintenance to a useful and esteemed one. As part of their responsibility to the public’s health, safety and welfare, software developers must abide by the following eight principles: 1. 2. rs Public—Software developers are expected to behave in the public interest. Client and employer—Software developers are expected to behave in a way that serves ve the public interest while acting in the best interests of their employers and clients. 3. Product—Software engineers are responsible for making sure that their creations and any associated changes adhere to the strictest industry standards. 4. Judgment—It is expected of software engineers to exercise professional judgement with ni independence and honesty. 5. Management—Managers and leaders in software engineering must support and adhere U to an ethical management philosophy for software development and upkeep. 6. Profession—In line with the public interest, software engineers should enhance the integrity and credibility of their profession. ity 7. Colleagues—Software developers are expected to treat their peers fairly and to encourage them. 8. Self—Software engineers are expected to support an ethical attitude to the practice of their job and engage in lifelong learning about it. m These ethical guidelines should guide software engineers in both their daily and professional life. Software engineers, for instance, are required to maintain client or employer confidentiality. A software engineer’s employer’s or client’s intellectual property )A must also be respected and safeguarded. A software engineer occasionally has to make a decision. For instance, a software engineer may be aware that, in rare situations, a component may behave abruptly, resulting in harm to property or even fatalities. He is also aware that his business needs to regain market share by releasing the product as soon as possible. If he discloses the issue, the release will need to be delayed significantly and he (c will be labelled as the “trouble maker.” If he doesn’t report, a terrible tragedy could occur. In our sector, instances of this hypothetical situation have really happened time and time again. Those in management must also make moral decisions. Amity Directorate of Distance & Online Education 6 Advanced Software Engineering Principles Software Engineering and Computer Science What distinguishes computer science from software engineering? Both working Notes professionals and students frequently ask this question. Computer science prioritises e accuracy, performance, resource sharing, computational efficiency and optimisation. These are reasonably fast and accurately measurable. All of the time and money invested in in computer science research during the past few decades (from 1950 to the present) has been directed towards enhancing these areas. Software engineering prioritises software PQCT, in contrast to computer science. For nl instance, the aim of computer science is frequently to find the best answer. A good-enough solution would be used in software engineering to cut down on expenses and development or maintenance time. The goal of software engineering research and development is to O greatly increase software PQCT. Unfortunately, it is difficult and time-consuming to quantify the influence of a software engineering process or technique. The influence needs to be evaluated over an extended period of time and with significant resources in order to be useful. For instance, it took experts over ten years to determine the detrimental effects of ity the unregulated goto statement. In other words, when the goto statement is used carelessly, the outcome is badly designed programs that are challenging to read, test and maintain. Computer science is solely concerned with technical matters. Non-technical problems are dealt with by software engineering. For instance, the initial phases of the development rs process concentrate on determining the needs of the business and creating specifications and limitations. Domain expertise, experience with research and design, communication prowess and client interactions are prerequisites for these tasks. Project management ve expertise and knowledge are equally necessary for software engineering. Human variables like user preferences and system usage patterns must be taken into account when designing user interfaces. Political considerations must also be taken into account while developing software because the system may have an impact on a large number of ni individuals. Understanding and appreciating software engineering processes, approaches and principles may be facilitated by being aware of the distinctions between software U engineering and computer science. Take into consideration, for instance, the architecture of a software system that requires database access. Computer science may place an emphasis on effective data retrieval and storage and support program designs that allow direct database access. A program with such an architecture would be susceptible to ity modifications made to the database management system (DBMS) and database design. The program must be significantly altered if the database schema or DBMS are modified or replaced. This might be expensive and challenging. Software engineers would therefore not view this as a sensible design choice unless they really need efficient database access. In m order to save maintenance time, money and effort, software engineers would rather have a design that minimises the effects of database changes. Computer science and software engineering are closely connected fields, )A notwithstanding their differences. Similar to physics and electrical and electronics engineering or chemistry and chemical engineering, computer science and software engineering work together. In other words, software engineering is built on the theoretical and technological basis of computer science. Computer science is applied in software engineering. Software engineering does, however, have its own areas of study. These (c include, among other things, research on software processes and procedures, software validation, software verification and testing strategies. The field of software engineering is vast. Programming languages, algorithms and data structures, database management systems, operating systems, artificial intelligence, and Amity Directorate of Distance & Online Education Advanced Software Engineering Principles 7 computer networks are just a few of the computer science topics that a software engineer should be knowledgeable in. Software engineers working on embedded systems must possess a fundamental understanding of electronic circuits and hardware interface. Lastly, Notes e developing domain expertise and design experience is a gradual process for a software engineer to become a skilled software architect. Software engineering is an attractive in field because of these problems as well as the capacity to develop and construct big, sophisticated systems to fulfil real-world objectives. Software engineers and researchers have a lot of options thanks to the constantly growing field of computer applications. nl Software engineering is important because it plays a key part in creating software systems that are dependable, high-quality, and maintainable in order to address a variety of business, technological, and societal needs. The following are some salient features that O underscore the importance of software engineering: 1. Innovation Enabler: Software engineering fosters innovation by offering an organised method for creating, developing, and implementing software solutions that tackle new possibilities and obstacles. It gives businesses the ability to develop novel goods, ity services, and business plans that promote social progress and economic expansion. 2. Quality and Reliability: To make sure that software systems fulfil requirements and function dependably in a range of operating settings, software engineering concepts and practices place a strong emphasis on quality assurance, testing, and verification. Good 3. rs software increases productivity, user happiness, and faith in technology. Productivity and Efficiency: By optimising workflows, automating tedious operations, and promoting teamwork, software engineering approaches, tools, and best practices ve raise productivity and efficiency in development. This makes it possible for businesses to provide software solutions more affordably and swiftly. 4. Scalability and Adaptability: The design and implementation of scalable and adaptable software structures that can take into account changing business requirements, ni technological improvements, and developing user needs are supported by software engineering principles. Software systems that are flexible and scalable can expand and change over time without sacrificing stability or performance. U 5. Risk Management: Throughout the software development lifecycle, organisations can identify and manage potential risks and uncertainties with the aid of software engineering approaches like risk analysis and mitigation. The probability of budget overruns, quality ity problems, and project delays is reduced by proactive risk management. 6. Global Collaboration: Software engineering makes it possible for dispersed teams to collaborate successfully on software projects regardless of where they are physically located. Global team members may coordinate and share knowledge easily thanks to m communication platforms, version control systems, and collaboration tools. 7. Regulatory Compliance and Security: Software engineering procedures take security and regulatory compliance into account to make sure software systems follow the law, )A morality, and industry norms. Adherence to regulatory frameworks like GDPR, HIPAA, and PCI DSS is crucial in safeguarding user privacy and minimising legal liabilities. 8. Continuous Improvement: Through procedures like code reviews, retrospectives, and post-implementation reviews, software engineering fosters a culture of continuous improvement. Organisations are able to improve software quality, performance, and user (c experience iteratively over time by drawing lessons from feedback and past experiences. 9. Developer Empowerment: Software engineering equips developers with the know-how, abilities, and resources required to take on challenging technical problems and make Amity Directorate of Distance & Online Education 8 Advanced Software Engineering Principles significant contributions to software projects. A thriving and dynamic software engineering ecosystem is fostered via community participation, professional development, and Notes ongoing learning. e Traditional software engineering and advanced software engineering represent different stages or approaches in the evolution of software development methodologies. in Here’s a comparison of the two: Methodology: nl Traditional software engineering often refers to the Waterfall model or other sequential models where development progresses through fixed stages such as requirements gathering, design, implementation, testing, and maintenance, with little room for O iteration. Advanced software engineering typically involves agile methodologies such as Scrum, Kanban, or Extreme Programming (XP). These methodologies emphasize iterative development, frequent collaboration with stakeholders, and adapting to change ity throughout the development process. Flexibility and Adaptability: Traditional software engineering methodologies tend to be rigid and less adaptable to rs changes in requirements or technology. Advanced software engineering methodologies are designed to be flexible and adaptable, allowing teams to respond quickly to changes in requirements, technology, ve or market conditions. Focus on Documentation: Traditional software engineering places a strong emphasis on comprehensive documentation at each stage of development. ni Advanced software engineering values working software over comprehensive documentation, although documentation is still important for communication and U knowledge transfer within the team. Team Structure and Collaboration: Traditional software engineering often involves separate teams for each stage of ity development (e.g., analysts, designers, developers, testers), with limited collaboration between team members. Advanced software engineering promotes cross-functional teams that include members with diverse skills (e.g., developers, testers, designers, product owners) who m collaborate closely throughout the development process. Customer Involvement: Traditional software engineering may have limited customer involvement, with )A requirements gathered upfront and little interaction during development. Advanced software engineering encourages continuous customer involvement through techniques such as frequent demos, user feedback sessions, and prioritization of features based on customer value. (c Risk Management: Traditional software engineering tends to address risks upfront in the planning stages and relies on predictive methods to manage them. Amity Directorate of Distance & Online Education Advanced Software Engineering Principles 9 Advanced software engineering acknowledges that uncertainty and risks are inherent in software development and focuses on identifying and mitigating risks iteratively throughout the project. Notes e Delivery Frequency: in Traditional software engineering often results in longer development cycles, with software released in large, infrequent updates. Advanced software engineering enables more frequent and incremental delivery nl of working software, allowing for quicker feedback and faster response to changing requirements or market conditions. 1.1.2 Introduction to Lifecycle Model O The software process outlines the best way to oversee and plan a software development project while keeping constraints and limitations in mind. A software process is a set of operations connected by ordering constraints that, when carried out correctly and in ity accordance with the ordering constraints, should result in the desired output. The objective is to provide software of the highest calibre at a fair price. It is obvious that a method is unacceptable if it is unable to handle large software projects, scale up, or generate high- quality software. rs Large software development firms typically have multiple processes going at once. Although many of these are unrelated to software engineering, they do affect software development. It is possible to categorise these process models as non-software ve engineering. This category includes training models, social process models and business process models. Though they fall beyond the purview of software engineering, these procedures have an effect on software development. A software process is the procedure that addresses the managerial and technical aspects of software development. It is obvious ni that developing software requires a wide range of tasks. It is preferable to consider the software process as a collection of component processes, each with a distinct type of activity, as different kinds of activities are typically carried out by different people. Even U though they obviously cooperate to accomplish the overall software engineering goal, each of these component processes typically has a distinct objective in mind. A collection of principles, best practices and recommendations known as the Software Process Framework delineates high-level software engineering procedures. It makes no mention of ity the sequence or method by which these procedures are performed. A software process outlines a software development methodology. On the other hand, a software project is a development endeavour that makes use of a software process. Software products are the end results of a software project. Every software development m project starts with a set of specifications and is anticipated to produce software that satisfies those specifications by the end. A software process is an abstract sequence of steps that must be completed to translate user requirements into the final product. The software )A process can be thought of as an abstract type and every project is completed using it as an example of this type. Put another way, a process may involve multiple initiatives, each of which may result in a multitude of products. The collection of actions and related outcomes that culminate in a software product is (c called a software process. These tasks are primarily completed by software engineers. All software processes have four basic process actions in common. These pursuits consist of: Software Specification: It is necessary to define the software’s functionality as well as the limitations imposed on it. Amity Directorate of Distance & Online Education 10 Advanced Software Engineering Principles Software Development: It is necessary to build the program to meet the standard. Software Validation: To make sure the program accomplishes what the user desires, it Notes needs to be verified. e Software Evolution: Software must adapt to changing user requirements. These operations are organised differently and are explained in varying degrees of depth in by different software processes. Both the schedule and the outcomes of the various activities differ. To create the same kind of product, different companies could employ various nl procedures. Nonetheless, certain procedures are better suited for particular kinds of applications than others. The software product that is to be developed will most likely be of lower quality or less usefulness if an improper process is employed. These operations O are organised differently and are explained in varying degrees of depth by different software processes. Both the schedule and the outcomes of the various activities differ. To create the same kind of product, different companies could employ various procedures. Nonetheless, certain procedures are better suited for particular kinds of applications than ity others. The software product that is to be developed will most likely be of lower quality or less usefulness if an improper process is employed. A streamlined illustration of a software process given from a particular perspective is called a software process model. A software process model is an abstraction of the rs process it represents since models are by definition simplifications. Process models might incorporate tasks associated with software engineering personnel, software products and activities that are part of the software process. ve Example: Here are a few instances of the several kinds of software process models that could be created: A Workflow Model: This displays the order in which the process’s inputs, outputs and ni dependencies are displayed. Human actions are represented by the activities in this model. An Activity or Dataflow Model: This depicts the procedure as a collection of tasks, each of which transforms data in some way. It demonstrates how an input, like a specification, gets converted into an output, like a design, during a process. Compared to the activities U in a workflow model, these activities could be lower level. They could stand for human or computer-performed alterations. An Action/Role Model: This illustrates the responsibilities and tasks of the individuals working on the software process. ity The general models or paradigms of software development vary widely and include: The Waterfall Approach: By using the aforementioned activities, this portrays them as distinct process phases, such as software design, implementation, testing and requirements definition. Each stage is “signed off” when it has been defined, at which m point work moves on to the next. Evolutionary Development: The steps of specification, development and validation are interwoven in this method. From highly abstract specifications, a preliminary system )A is quickly created. After receiving feedback from the client, this is improved to create a system that meets their needs. After then, the system might be supplied. As an alternative, it might be reimplemented with a more methodical approach to create a system that is more reliable and manageable. (c Formal Transformation: This method is centred on creating a formal mathematical system definition and turning it into a program by applying mathematical techniques. Since these changes maintain “correctness,” you can be certain that the created program complies with its specifications. Amity Directorate of Distance & Online Education Advanced Software Engineering Principles 11 System Assembly from Reusable Components: This methodology presupposes the existence of certain system components. Rather than creating these components from the ground up, the system development approach concentrates on their integration. Notes e Characteristics of a Software Model in “What are the qualities that good software should have?” is the first question that every developer thinks of while designing any kind of software. Before delving into the technical aspects of any software, we would like to outline the fundamental expectations that users have. A software solution must, first and foremost, satisfy all end-user or client needs. Users nl The development and maintenance expenses of the program should also be kept to a minimum. The software development process must be completed in the allotted period. O These, then, were the obvious expectations for any project (recall that software development is a project in and of itself). Let’s now examine the components of software quality. The Software Quality Triangle provides a clear explanation for this group of variables. Three qualities define quality application software: ity ™™ Operational Characteristics ™™ Transition Characteristic ™™ Revision Characteristics Operational Characteristics of a Software rs These elements pertain to the “exterior quality” of software and are dependent on functionality. Software has a number of operational characteristics, including: ve Correctness: All of the requirements specified by the client should be satisfied by the program that we are developing. Usability/Learnability: It should take less time or effort to become proficient with the ni software. Because of this, even those without any IT experience can easily utilise the software. Integrity: Software can have side effects, such as impairing the functionality of another U application, just like medications can. However, good software shouldn’t have any negative impacts. Reliability: There should be no flaws in the software product. In addition, it shouldn’t malfunction while operation. ity Efficiency: This feature has to do with how the software makes use of the resources that are accessible. The program must utilise the storage capacity efficiently and carry out commands in accordance with the required temporal specifications. Security: These days, this component is becoming more and more important due to m the rise in security risks. The hardware and data shouldn’t be negatively impacted by the software. It is important to take the right precautions to protect data from outside dangers. )A Safety: The program shouldn’t endanger lives or the environment. Revision Characteristics of Software These engineering-based variables, such as efficiency, documentation and structure, are related to the “interior quality” of the software. Any excellent software should have these (c built in. Software’s various revision characteristics include: Maintainability: Any type of user should find it simple to maintain the software. Amity Directorate of Distance & Online Education 12 Advanced Software Engineering Principles Flexibility: It should be simple to make changes to the software. Extensibility: Increasing the functions it can do should be simple. Notes Scalability: Upgrading it for additional work (or for more users) ought to be relatively e simple. Testability: It ought to be simple to test the software. in Modularity: It is said that all software is composed of independent parts and modules. The final software is then created by integrating these parts. Software has high modularity if it is broken up into independent, discrete components that can be tested nl and changed independently. Transition Characteristics of the Software O Interoperability: Software’s ability to share data and use it transparently with other applications is known as interoperability. Reusability: Software is considered reusable if its code may be used for different ity purposes with minor alterations. Portability: Software is said to be portable if it can carry out the same tasks on multiple platforms and situations. Each of these criteria has varying degrees of importance depending on the application. Software Development Life Cycle (SDLC) rs These are the models that support the development of the desired program. It is the ve comprehensive and diagrammatic visualisation of the software life cycle. It consists of all the tasks required to advance a software product through each stage of its life cycle. Stated differently, it organises the range of tasks carried out on a software product from inception to retest. Figure below illustrates the many stages of the SDLC. ni requirements U ity Maintenance Design SDLC m )A Testing Development Figure: Illustrates various Software Development Life Cycle (SDLC) phases. https://iaeme.com/MasterAdmin/Journal_uploads/IJARET/VOLUME_11_ISSUE_12/IJARET_11_12_019.pdf (c Requirements: One of the most crucial stages in determining the client’s need is requirement. There will be multiple review meetings to ensure that the criteria are consistent. Every review result ought to be recorded and monitored. They recommend Amity Directorate of Distance & Online Education Advanced Software Engineering Principles 13 doing both official and informal interviews with the appropriate stakeholders of the applicant. This will make it easier for developers to understand exactly what is required of the application. Make sure to properly record these findings so that the group’s retreat is Notes e cognizant of the necessity. As a result, it aids in lowering the flaws brought about by the criteria alone. in Design: The usage of case diagrams and thorough business-related design documentation is changing specifications. Development: The development group is in charge of this phase, wherein the updated nl technical reviews and structural documents are inputs. Every piece of code needs to go through the team’s inspection process, which includes going over the developed code and reviewing the unit’s test cases before executing them. O Testing: The testing step is one of the SDLC’s main validation stages. the emphasis on thoroughly testing the apps that were created using the requirements matrix. Maintenance: To finalise and analyse the maintenance phase and organise the issues ity and findings under consideration, a technical analysis meeting ought to be conducted. 1.1.3 Incremental Development The concept behind incremental development is to create a working prototype, share rs it with users, then iterate through multiple iterations until a workable solution is created. Activities for specification, development and validation are integrated rather than done in isolation and there is quick feedback between them all. ve ni U ity m Figure: Incremental development https://engineering.futureuniversity.com/BOOKS%20FOR%20IT/Software-Engineering-9th-Edition-by-Ian- Sommerville.pdf )A A key component of agile methodologies is incremental software development, which is superior to waterfall approaches for the majority of commercial, e-commerce and personal applications. The method we solve issues is reflected in incremental development. We rarely figure out the entire solution to an issue up front; instead, we approach a solution piecemeal and then go back when we see that we made a mistake. It is less expensive and (c simpler to make modifications to the program while it is being built when it is developed incrementally. Part of the functionality required by the customer is incorporated into every system version or increment. Typically, the most crucial or urgently needed functionality is included Amity Directorate of Distance & Online Education 14 Advanced Software Engineering Principles in the system’s initial increments. This implies that the client can assess the system at a comparatively early development stage to determine whether it meets the needs. If not, Notes then all that needs to be done is modify the current increment and maybe provide new e functionality for future increments. Comparing incremental development to the waterfall methodology reveals three key in advantages: 1. It is less expensive to adapt to shifting customer needs. Comparatively speaking, substantially less analysis and documentation needs to be repeated than with the nl waterfall model. 2. Receiving input from customers regarding the development work completed is simpler. O Consumers are able to provide feedback on software demos and observe the extent of implementation. It is challenging for customers to assess development from software design documentation. 3. Even in cases when all of the functionality has not been included, it is still possible to ity deliver and deploy valuable software to customers more quickly. Clients can utilise and benefit from the software more quickly than they might in a waterfall process. Nowadays, the most popular method for developing application systems is incremental development in one form or another. This strategy can be agile, plan-driven, or, more rs frequently, a combination of these strategies. The system increments are predetermined in a plan-driven method; if an agile approach is used, the development of later increments is contingent upon progress and client goals, but the early increments are recognised. ve The gradual method has two issues from a management standpoint: 1. It is impossible to see the process. To track their progress, managers require regular deliverables. Documents reflecting each iteration of the system are not cost-effective to ni prepare when systems are developed quickly. 2. With each additional increment, the structure of the system tends to deteriorate. Frequent change tends to destroy the software’s structure unless time and resources U are dedicated to refactoring to fix it. It gets harder and more expensive to incorporate new software updates. When multiple teams work on separate parts of large, complex, long-term systems, ity the challenges associated with incremental development become especially severe. Big systems require a solid foundation or architecture and the roles of the many teams working on different components of the system must be distinctly outlined in relation to that architecture. Rather than being developed gradually, this needs to be thought out beforehand. It is possible to build a system piecemeal and get feedback from users without m really delivering and implementing it in the user’s environment. When software is deployed and delivered incrementally, it is incorporated into actual, functional processes. As testing out new software can interfere with regular company procedures, this isn’t always feasible. )A Initial software requirements are often quite well specified, but a strictly linear process is not possible due to the sheer size of the development effort. Furthermore, there can be a strong need to allow customers access to a small number of software features right away, then improve and expand on those features in upcoming software releases. In these (c situations, a process model built to generate the software incrementally can be selected. The linear and parallel process flow components covered in earlier topics are combined in the incremental model. With reference to the figure below, as calendar time advances, the incremental model applies linear sequences in a staggered manner. Deliverable Amity Directorate of Distance & Online Education Advanced Software Engineering Principles 15 “increments” of the software are generated by each linear sequence in a way that is comparable to the increments generated by an evolutionary process flow. Word processing programs created with the incremental paradigm, for instance, Notes e might offer the following features in stages: basic file management, editing and document production in the first increment; more complex editing and document production in the in second; advanced page layout in the third increment; and spelling and grammar checking in the fourth. It is important to remember that the prototyping paradigm can be included into any increment’s process flow. nl A core product is frequently the first increment in an incremental model. In other words, while many additional features—some known, some unknown—are still unmet, the fundamental needs are met. The consumer uses the core product (or has it thoroughly O evaluated). A plan for the subsequent increment is created in response to use and/or assessment. The plan covers the development of new features and functionality as well as the modification of the core product to better suit the needs of the consumer. After each increment is delivered, this process is continued until the entire product is manufactured. ity rs ve ni U ity Figure: Incremental Process Models https://www.mlsu.ac.in/econtents/16_EBOOK-7th_ed_software_engineering_a_practitioners_approach_ by_roger_s._pressman_.pdf m A plan is created for the upcoming increment. The plan covers the development of new features and functionality as well as the modification of the core product to better suit the needs of the consumer. After each increment is delivered, this process is continued until the )A entire product is manufactured. The delivery of a functioning product with each increment is the main goal of the incremental process model. Although early iterations are simplified copies of the finished product, they do include features that benefit the user and a platform for user assessment. (c When staffing is not available for a full implementation by the project’s set business deadline, incremental development is especially helpful. Less personnel is needed to implement early increments. If the main product is well received, more employees can be brought on board to carry out the following increment, if needed. Increments can also Amity Directorate of Distance & Online Education 16 Advanced Software Engineering Principles be scheduled to control technical concerns. For instance, new hardware that is under development and whose delivery date is uncertain can be needed for a major system. Early Notes increments may be able to be planned so as to avoid utilising this hardware, allowing for the e prompt delivery of some functionality to end customers. in 1.1.4 Spiral Model Boehm proposed the spiral model, a paradigm for risk-driven software processes. This is depicted in the figure below. In this instance, the software process is depicted as a spiral nl as opposed to a list of tasks with some backtracking. Every spiral loop stands for a different stage of the software development process. As a result, the innermost loop may deal with system viability, the subsequent loop with requirements clarification, the following loop with O system design and so forth. Change tolerance and change avoidance are combined in the spiral model. It makes the assumption that project risks are the cause of changes and incorporates explicit risk management techniques to lower these risks. A risk-driven process model generator called the spiral development model is used ity to direct multi-stakeholder concurrent engineering of software-intensive systems. It stands out primarily for two reasons. One is a cyclical method that gradually increases the degree of definition and implementation of a system while lowering the degree of risk associated with it. The other is a series of anchor point benchmarks designed to guarantee stakeholder rs commitment to workable and agreeable system solutions. ve ni U ity m )A Figure: Boehm’s spiral model of the software process https://engineering.futureuniversity.com/BOOKS%20FOR%20IT/Software-Engineering-9th-Edition-by-Ian- Sommerville.pdf (c The spiral’s loops are divided into four sectors: 1. Objective setting: There are set specific goals for that project phase. A thorough management strategy is created after identifying the process and product constraints. Amity Directorate of Distance & Online Education Advanced Software Engineering Principles 17 Risks associated with the project are identified. Depending on these risks, different plans may be made for strategies. 2. Risk assessment and reduction: A thorough study is done for every project risk that has Notes e been identified. Measures are implemented to lower the risk. For example, a prototype system might be created if there’s a chance the requirements aren’t adequate. in 3. Development and validation: A development model for the system is selected following the assessment of risks. Throwaway prototype, for instance, might be the ideal development strategy in cases where user interface hazards predominate. A development process nl based on formal transformations might be the best option if safety concerns are the primary concern and so on. The waterfall model might be the optimal development model to adopt if sub-system integration is the primary risk that has been identified. O 4. Planning: After evaluating the project, a choice is made regarding whether to proceed with a second spiral loop. Plans are created for the project’s subsequent phase in the event that it is agreed to proceed. ity The spiral model’s clear identification of risk sets it apart from other software process models. The spiral cycle starts with the elaboration of goals like functionality and performance. Then, some approaches to accomplishing these goals and resolving the obstacles in their path are listed. Sources of project risk are identified and each alternative is evaluated in relation to each goal. The following stage involves mitigating these risks analysis. rs through information-gathering exercises including simulation, prototyping and in-depth After the risks have been evaluated, some development work is done and then the ve process moves on to planning the next step. Simply put, risk is the possibility of anything going wrong. One danger, for instance, is that the existing compilers may not generate object code that is sufficiently efficient, or they may be unreliable if a new programming language is to be used. Risk mitigation is a crucial component of project management since ni risks can result in suggested software changes as well as project issues like schedule and cost overruns. U Software is developed in a sequence of evolutionary releases using the spiral model. The release in the early stages could be a model or prototype. Later iterations result in ever-more-complete versions of the engineered system. A practical method for creating large-scale software and systems is the spiral model. Software changes as the process ity goes on, which helps the developer and the client recognise and respond to risks at every stage of development. The prototype approach can be applied at any point in the product’s lifecycle thanks to the spiral model, which also leverages it as a risk reduction tool. It keeps the standard life cycle’s methodical, step-by-step methodology while incorporating it into an iterative framework that more closely mimics the real world. When used correctly, the spiral m model should lower risks before they become an issue by requiring a direct assessment of technical risks at every stage of the project. )A However, the spiral model is not a cure-all, much like other paradigms. Customers may be hard to persuade that the evolutionary approach is controlled, especially in contract scenarios. It requires a high level of knowledge in risk assessment and depends on this expertise to succeed. Issues will surely arise if a significant risk is not identified and controlled. (c Risk Handling in Spiral Model Any unfavorable circumstance that could compromise the effective execution of a software project is considered a risk. The spiral model’s ability to manage these unforeseen Amity Directorate of Distance & Online Education 18 Advanced Software Engineering Principles risks once the project has begun is its most crucial component. It is easier to resolve such risks by creating a prototype. Notes 1. By giving developers, the opportunity to create prototypes at every stage of the software e development life cycle, the spiral model facilitates risk management. 2. Risk management is also supported by the prototyping model; however, risks have to be in fully identified prior to the project’s development activity commencing. 3. However, in practice, project risk could arise after development work begins; in such instance, the prototyping model cannot be applied. nl 4. Every stage of the Spiral Model involves dating and analyzing the product’s attributes, as well as identifying and modelling the risks that exist at that particular moment. O 5. As a result, this model has far greater flexibility than previous SDLC models. Why Spiral Model is called Meta Model? Because it incorporates every other SDLC model, the Spiral model is referred to as ity a Meta-Model. The Iterative Waterfall Model, for instance, is genuinely represented by a single loop spiral. 1. The spiral model applies the Classical Waterfall Model’s step-by-step methodology. 2. As a risk-handling strategy, the spiral model builds a prototype at the beginning of each 3. rs phase, adopting the Prototyping Model’s methodology. Additionally, it is possible to view the spiral model as a support for the evolutionary model, with each spiral iteration serving as a stage in the evolutionary process that ve builds the entire system. Advantages of the Spiral Model A few benefits of the Spiral Model are listed below. ni 1. Risk Handling: The Spiral Model is the ideal development model to use for projects with a lot of unknown risks that crop up during the development process since it analyses and manages risks at every stage of the process. U 2. Good for large projects: For extensive and complicated undertakings, the Spiral Model is advised. 3. Flexibility in Requirements: This model allows for the accurate incorporation of change ity requests made at a later stage of the requirements. 4. Customer Satisfaction: Clients become accustomed to the system by using it before the full product is finished since they can observe the product’s progress throughout the early stages of software development. m 5. Iterative and Incremental Approach: Software development can be done incrementally and iteratively using the Spiral Model, which enables flexibility and adaptability in response to unforeseen circumstances or shifting requirements. )A 6. Emphasis on Risk Management: The Spiral Model emphasises risk management heavily, which lessens the effect that risk and uncertainty have on the software development process. 7. Improved Communication: Regular reviews and assessments are facilitated by the (c Spiral Model, which helps enhance communication between the development team and the client. 8. Improved Quality: Multiple iterations of the software development process are possible using the Spiral Model, which can lead to increased software quality and dependability. Amity Directorate of Distance & Online Education Advanced Software Engineering Principles 19 Disadvantages of the Spiral Model Some of the spiral model’s primary drawbacks are listed below.

Use Quizgecko on...
Browser
Browser