You are on page 1of 43
3/12/22, 6:25 AM Engineering - Quick Guies Software Engineering - Quick Guide Software Engineering Overview Let us fist understand what software engineering stands for. The term is made of two words, software and engineering, Software is more tan just a program code. A program is an executable code, which serves some computational purpose. Software is considered te be collection of executable programming code, associated libraries and documentations. Software, when made for @ specific requirement is called software product. Engineering on the other hand, i all about developing products, using welkdef ned, scienti principles and methods. Software engineering is an engineering branch associated with dovelopmant of software product using welkdefinad scientific principles, methods ‘and procedures, The outcome of sofware engineering is an oficient and relble sofware product. Defi IEEE defines sofware engineering a: ions (1) The application ofa systematic ciscipned.quantfable approach to the developmentoperation and maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in the above statement. Fritz Bauer, a Gorman computer scientist, defines software engineering as ‘Software engineering Is the establishment and use of sound enghneering principles in order to obtain economically software that is rellable and work efficiently on real machines, Software Evolution “The process of developing @ software product using sofware engineering principles and methods is referred to as software evolution. This includes the intial development of software and its maintenance and updates, tll desired software praduct is developed, which satisfies the ‘expected requirements, wo Change Request hig System Release Software Impact Analysis. Evolution ] ‘System update Release Panning ————— hitps:iwwiztutorialspoint com/software_engineering'sofware_engineering_quick_guide.him us 3/12/22, 6:25 AM Sots Evolution starts fom the requirement gathering process. Afler which developers create a prootype of the intended sofware and show i to the users lo gel thir feedback at the early stage of software product development. The users suggest changes, an which several consecutive updates and maintenance keep on changing too. This process changes tothe original software, til the desired software is accomplished. Engineering - Quick Guigs Even after the user has desired software in hand, the advancing technology and the changing requirements force the software product to change ‘accordingly. Re-creting softwara trom scratch and to go one-or-one with requirement isnot feasible. The only feasible and economical solution is {to update the existing sofware so that it matches the latest requirements. Software Evolution Laws Lohman has given laws for software evolution. He divided the software into three diferent catagories: ‘+ Stype (statictype) -This is a software, which works strictly accorting to defined sneciications and solutions, The solution and the ‘method to achieve it, both are immediately understood before coding, The s-type software is least subjected to changes hence this isthe ‘simplest of al, For example, calculator program for mathematical computation. + Patype (practical-type) - This isa software with a collection of procedures, This is defined by exactly wat prooedures can do. In this software, the specifications can be described but the solution is nat obvious instantly For example, gaming software. ‘+ Etype (embedded-type) - This sofware works closely asthe requirement of real-world environment This software has a high degree of ‘evolution as there are various changes in laws, taxes etc. inthe real word situations. For example, Online trading sofware. E-Type software evolution Lehman has given eight laws for E-Type sofware evolution - + Continuing change -An Esype sofware system must continue to acep to the real word changes else I becomes progressively less useful + Increasing complexity -As an E-ype software system evolies, its complexity tends to increase unless works done o maintain or reduce it + Conservation of familiarity «The family with the software or the knowledge about how it was developed, why wast developed in that Patioular manner et. must be retained at any cos, o implement the changes in the system. + Continuing grown onder for an E-ypesystom tended to resolve some business problem Is size of mperetng the changes grows according othe fest changes of the business ‘+ Reducing quality -An E-type software system declines in quality unless rigorously maintained and adapted toa changing operational environment, «Feedback systems: The E-ype sofware systems constitute muloop, multi-level feedback systems and must be treated as such to be ‘successfully modified or improved ‘+ Selfregulation -E-ype system evolution processes are self-regulating with the distribution of product and process measures close to ormal ‘+ Organizational stability -The average effective global activity rate in an evolving E-type system is invariant over the iftime ofthe product Software Paradigms ‘Software paradigms refer to the methods and steps, which are taken while designing the sofware. There are many methods proposed and are in Work today, but we need to see wherein the software engineering these paradigms stand. These can be combined into various categories, though ‘each of them is contaned in one another: Re aca De) ety Programming paradigm is @ subset of Software design paradigm which is further a subset of Software development paradigm. Software Development Paradigm ‘This Paradigm is known as software engineering paradigms where all the engineering concepts pertaining to the development of software are ‘applied. I includes various researches and requirement gathering which helps the software product lo build. lt consists of — «Requirement gathering hitps wuz tutorialspoint. com/sofws _engineeringisofware_engineering_quick_guide.him 21a 3/12/22, 6:25 AM + Software design © Programming Engineering - Quick Guies Software Design Paradigm ‘This paradigm isa part of Software Development and includes — © Design © Maintenance © Programming Programming Paradigm ‘This paradigm i related closely to programming aspect of software development. Ths includes — + Coding + Testing + Integration Need of Software Engineering ‘The need of software anginesring arses because of higher rate of change in user requirements and environment on which the software Is working + Large software -Itis easier to build a wal than to a house or building, ikewise, as the size of software become large engineering has to slep to give it a scientific process. + Scalability: I the sofware process were not based on scientfc and engineering concepts, it would be easier to re-create new software than to scale an existing one. * Cost-As hardware industry has shown is skills and huge manufacturing has lower down he price of computer and electronic hardware, But te cost of software remains high If proper process is not adapted, ‘© Dynamic Nature-The always growing and adapting nature of sofware hugely depends upon the environment in which user works If the nature of software is always changing, new enhancements need to be done in the existing one. This is where software engineering plays a ‘900d role, «Quality Management-Betir process of software development provides better and quality sofware product, Characteristics of good software ‘A sofware product can be judged by what it offers and how wallitcan be used. This software must sasty on the fllowing grounds: + Operational © Transitional Maintenance Wel-engineered and crafted software is expected to have the folowing characteristics: Operational ‘This tells us how well sofware works in operations. t can be measured on: © Budget © Usabiliy + Efficiency © Correctness + Functionality + Dependabiliy © Security = Safety ‘Transitional ‘This aspect is important when the software ‘moved from one platform to another: © Portability «© Interoperabiliy, © Reusabiity + Adaptabily Maintenance ‘This aspoct briefs about how well a software has the capabilies to maintain issn the ever-changing environment: © Modularity tps lwwiztutorialspoint. com/sofws _engineeringisofware_engineering_quick_guide.him 3143 3/12/22, 6:25 AM © Maintainabiliy © Flexibility © Scalability Im shor, Software enginaering is a branch of computer science, which uses well-defined enginesring concepts required to produce efficient, durable, scalable, r-budget and on-time software products. Engineering - Quick Guies Software Development Life Cycle Software Dovelopment Life Cycle, SDLC for short, is a well-defined, structured sequence of stages in software engineering to dovelop the Intended software product SDLC Activities SLC provides a series of steps tobe folowed to design and develop a sofware product fflenty, SLC framework includes the folowing stops: Communication equtement Gathering Feasiiy Study System Analysis Software Design SDLC ry Testing Integration Implementation Operations & Maintenance Disposition Communication This i the fst step where the user inates the request fr a desiced software product. He contacts the service provider and tes to negotiate the terms. He submits his request tothe service providing organization in writing Requirement Gathering ‘This step onwards the software development team works to carry on the project: The team holds discussions with various stakeholders from problom domain and tries to bring out as much information as possible on thelr requirements. The requirements are contemplated and segregated Into user requirements, system requlrements and functional requtements, The requrements are collected using a number f practices as given «studying the existing or obsolete system and software, ‘conducting interviews of users and developers, + referring tothe database or collecting answers from the questionnaires. Feasibility Study ‘Alter requirement gathering, the team comes up with a rough plan of sofware process. AL this step the team analyzes if a software can be made to {ull all requirements of the user and i there is any possibly of sofware being no more useful It is found out, if the project is financially, practically and technologcaly feasible forthe organization to take up. There are mary algorithms available, which help the developers to conclude the feasibilty ofa sofware project. ‘System Analysis [At this step the developers decide a roadmap of ther plan and try to bring up the best sofware model suitable forthe project. System analysis includes Understanding of software product tations, learning system related problems or charges to be dane in existing systems beforehand, identiying and addressing the impact of project on organization and personnel etc. The project team analyzes the scope ofthe project and plans the schedule and resources accordingly, Software Design Next step isto bring down wile knowledge of requirements and analyss onthe desk and design the software product. Te inputs from users and information gathered in requirement gsthering phase are the inputs of this step, The output of this step comes in the form of twa designs; logical hitps:lwwwztutorialspoint comisofwa _engineeringisofware_engineering_quick_guide.him 4103 3/12/22, 6:25 AM ‘Software Engineering - Quick Guide ‘design and physical design. Engineers produce meta-data and data dictonares, logical diagrams, date-low diagrams and in some cases pseudo codes. Coding This step is also known as programming phase. The implementation of goftware design stars in terms of wring program cade in the sultable programming language and developing errar-sree executable programs efficiently. ‘esting ‘An estimate says that 50% of whole software development process should be tested. Ertors may ‘uin the software from ciical level to ts own removal. Software testing is done while coding by the developers and thorough testing is conducted by testing experts at various levels of code ‘such as modile testing, program testing, product testing, ishouse testing and testing the product at user's end. Ealy discovery of errors and their remedy isthe key lo reliable software. Integration Software may noed to be integrated with the Ibrares, databases and other program(s). This stage of SDLC Is involved in the integration of ‘oftware with outer world entities, Implementation ‘This means instaling the sofware on user machines. At times, software needs postnstallation configurations at user end, Software is tested for poriabilty and adapiabiliy and integration relates issues are solved during implementation Operation and Maintenance ‘This phase confrms the sofware operation in terms of more efficiency and less errors. If required, the users are trained on, oF aided with the {documentation on how to operate the software and how to keep the software operational. The sofwarais maintained timely by updating the code according to the changes taking place in user end environment or technology. This phase may face challenges from hidden bugs and real-world unidentified problems. Disposition [As time lapses, the software may decline on the performance front. t may go completely obsolete or may need intense upgradation. Hence a pressing need to eliminate a major portion of the system arises. This phase includes archiving data and required software components, closing ‘down the system, planning dispasiton acity and terminating system at appropriate enc-o-system te. ‘Software Development Para‘ ‘The sofware development paracigm helps developer to select a strategy to develop the sofware. A sofware development paradigm has its own ‘set of fools, methods and procedures, which are expressed clearly and defines sofware development Iife cycle. A few of sofware development paradigms or process models are defined as follows: Waterfall Model Waterfall mode! isthe simplest model of software development paradigm. It says the all the phases of SOLC wil function one after another in linear ‘manner. Thats, when the frst phase is finished then any the second phase wil stat and so on, wegen =, a Waterfall Model irsonrtnon |, Operations & Maintenance ‘This model assumes that everything is cartied out and taken place perfectly as planned in the previous stage and there is no need to think about the past issues that may arise in the next phase. This model does not work smoothly if there are some issues left al the previous step. The ‘Sequential nature of model does not allow us go back and undo or redo our actions. ‘This models best suited when developers already have designed and developed similar software in the past and are aware of all is domains. erative Model ‘This model leads the software development process in iterations. It projects the process of development in cyclic manner repeating every step afer every cyclo of SDLC process. hitps:lwwiztutorialspoint com/software_engineering!sofware_engineering_quick_guide.him ia 3/12/22, 6:25 AM Engineering - Quick Guide nt iteration n net “The software is frst developed on very small scale and all the stops are followed which are taken into consideration. Then, on avery next iteration, more features and modules are designed, coded. tested and added to the software. Every cycle produees a software, whichis complete in itself ‘and has more features and capabilities than that ofthe previous one, ‘Alor each iteration, the management team can do work on risk management and prepare for tne next ileration. Because a cycle includes small portion of whole software process, its easier 1o manage the development process butt consumes more resources. Spiral Model Spiral model is @ combination of both, erative model ané one ofthe SDL model. It can be seen as if you choose one SOLC model and combine itwith oyelc process (trative model). reese ‘This model considers risk, which often goes un-notced by most other models. The model slats with determining objectives and constrains of the ‘software al th slat of one iteration. Next phase is of prototyping the software. This includes risk analysis. Then one standard SDLC madelis used to build the software. Inthe fourth phase of the plan of next tration is prepared V-model ‘The major drawback of waterfall model's we move to the next stage only when the previous one is ished and there was no chance to go back if ‘something is found wrong in later stages. V-Model provides means of testing of software at each stage in reverse manner. Regulrement 4. >» Acceptance Gathering Testing, system 4, System Analysis Testing a software Integration Design Testing * a Bee OS % § Mw hitps:lwwwztutrialspoint comisofwa _engineeringisofware_engineering_quick_guide.him 21a 3/12/22, 6:25 AM Sots [At every slage, test plans and test cases are created lo verify and validate the product according tothe requirement of that stage. For example, in requirement gathering stage the test team prepares al th test cases in crrespandance Io the requirements. Later, when the product is developed and is ready for testing, test cases ofthis stage verify the software against its validly lowards requirements al this stage. Engineering - Quick Guies “This makes both verification and validation go in paral. This models also known as verification and validation model Big Bang Mode! ‘This model is the simplast model nits form. I requires fils planning, los of programming and lols of funds. This model is conceptualized around the big bang of univorse. As scionliss say that after big bang lots of galaxios, plants and stars ovolved just a6 an overt. Likewise, if wo pul together lots of programming and funds, you may achieve the best software product, Time Etforts creer} software For this model, very small amount of planning is required. It does not follow any process, or at times the customer is not sure about the requirements and fulure needs. So the input requirements are arbitrary. ‘This models nat suitable for large sofware projects but good one for leaning and experimenting, For an in-depth reading on SDLC and its various models, click her. Software Project Management ‘The job patton of an T company engaged in software development can be seen splitin two pats: Software Creation + Software Project Management A project is wel-defined tas, which Isa collection of several operations done in order to achieve a goal (or example, sofware development and dolor). A Project can be characterized as: + Every project may has a unique and distinct goal ‘= Projectis not routine activity or day-to-day operations, ‘© Project comes witha start time and end time, ‘+ Project ends when its goal is achieved hence itis @ temporary phase inthe lifetime ofan organization, + Project needs adequate resources in terms of ime, manpower, finance, material and knowledge-bank, Software Project, A Software Project is the complete procedure of software development from requirement gathering to testing and maintenance, carried out ‘according tothe execution methodologies, in @ specified period of ime to achieve intended sofware product, Need of software project management ‘Software is said to be an intangible product. Sotware development isa kind ofall new stream in world business and there's very litle experience in building software products, Most sofware products are talor made to ft clients requirements, The most important is that the underlying technology changes and advances so frequently and rapidly that experience of one product may not be applied to the other one. All such business ‘and environmental constraints bring isk in software development hence it is essential to manage software projects efficent. 1% Scope ““ a OO ™ Quality ‘The image above shows triple constraints for software projects, Is an essental part of sofware organization to deliver quality product, Keeping the cost within clent’s budget constrain and deliver the project as per scheduled. There are several factors, both intemal and external, which may impact this triple constrain triangle. Any of three factor can severely impact the other two. “Therefore, sofware project management is essential o incorporate user requirements along with budget and time constraints. hitps:iwwiztutorialspoint com/sofware_engineering!sofware_engineering_quick_guide him 7143 3/12/22, 6:25 AM Engineering - Quick Guies Software Project Manager ‘A software project manager is @ person who undertakes the responsibiliy of executing the software project. Software project manager is ‘thoroughly aware of ll the phases of SDLC thatthe software would go through. Project manager may never direcy involve in producing the end Product but he controls and manages the activites involved in production. [A project manager closely monitors the development process, prepares ard executes various plans, arranges necessary and adequate resources, maintains communication among all team members in order to address iseues of cost, Budget, resources, time, qually and customer satisfaction. Let us see few responsibilities that a project manager shoulders - Managing People «Actas project leader «Lesion with stakeholders ‘+ Managing human resources ‘Setting up reporting hierarchy ete, Managing Project ‘Defining and setting up project scope ‘+ Managing project management activities ‘© Monitoring progress and performance + Risk analysis at every phase + Take necessary step to avoid of come out of problems + Actas project spokesperson Software Management Activi ‘Software project management comprises of a number of activities, which contains planning of project, deciding scope of sofware product, ‘estimation of cast in various tems, scheduling of tasks and events, and resource management, Project management activities may include: ‘© Project Planning ‘+ Scope Management + Project Estimation Project Planning ‘Software project planning is task, whic is performed before the production of software actualy stats. Ils tere forthe software production but involves no concrete activity that has any cirecion connection with software production; rather it's a set of multiple processes, which facilitates software production, Project planning may include the folowing ‘Scope Management It defines the scope of project: ths includes all the actvilles, process need to be done in order to make a delverable software product. Scope management is essential because It creates boundaries ofthe project by clearly defining what would be done in the project and what would not be done. This makes project to contain limited and quantifiable tasks, which can easily be documented and in tum avoids cost and ‘ime overrun During Project Scope management it's necessary to - + Define the scope Decide its verification and control ‘Divide the project into various smaller parts for ease of management, + Verily the scope + Conttol the scope by incorporating changes to the scope Project Estimation For an effective management accurate estimation of various measures Is @ must, With correct estimation managers can manage and control the project more efficiently and effectively Project estimation may involve the following: + Software size estimation ‘Software size may be estimated either in terms of KLOG (Kilo Line of Code) or by calculating number of function points in the software, Lines of code depend upon coding practices and Function points vary according tothe user or software requifement. + Effort estimation ‘The managers estimate efforts in terms of personnel requirement and man-Nour required to produce the software. For effrt estimation software size shouldbe known, This can ether be derived by managers’ experience, organization's historical data or software size can be Converted into oforts by using some standard formulae. hitps:lwwwztutrialspoint comisofwa _engineeringisofware_engineering_quick_guide.him ia 3/12/22, 6:25 AM + Time estimation Engineering - Quick Guies Once size and effort re estimated, the time required to produce the software can be estimated. forts required is segregated into sub categories as por the requirement specifications and interdependency of various components of sofware. Software tasks aro divided into ‘smaller tasks, activites or events by Work Breakthrough Structure (WBS). The tasks are scheduled on day-to-day basis or in calendar months. “The sum of ime requied to complet al tasks in hours or days isthe foal ime invested to complete the project. «Cost estimation ‘This might be considered as the mas cifcut ofall because it depends on more elements than any ofthe previous anes. For estimating project cos, tis required to consider = Size of software © Software qualiy © Hardware ‘= Additional sotware o tool, licenses etc ‘= Skilled personnel with task-specitc skills = Travel involved = Communication ‘© Teaining and support We discussed various paramotors involving project estimation such as size, effort, ime and cost Project manager can estimate the listed factors using two broadly recognized techniques — Decomposition Technique “This technique assumes the sofware as a product of various compositions. “There are two main models «Line of Code Estimation is dane on behalf of numberof ine of codes in the software product ‘+ Function Points Estimation is done on behalf of number of function points inthe software product, Empirical Estimation Technique ‘This technique uses empirically derived formulae to make estimation These formulae are based on LOC or FPS. + Putnam Model ‘This model is made by Lawrence H. Putnam, which is based on Norden's frequency dlstrbution (Rayleigh curve). Putnam model maps. time and efforts required with software size. = cocomo COCOMO stands for COnsirucve COst MOdel, developed by Barty W. Boehm. It divides the software product info three categories of software: organic, semi-detached and embedded Project Scheduling Project Scheduling n a projet refers to roadmap of al actives to be done with specified order and within time slot alloted to each activity Project managers tend to tend to define various tasks, and project milestones and arrange them keeping various factors in mind. They look for task le in critical path in the schedule, whicn are necessary to complete in specific manner (because of task interdependency) and strctly within the time allocated. Arrangement of tasks which les cut of crtcal path are loss tkly to impact aver all schedule of the project. For scheduling a project, is necessary to- ‘+ Break down the project tasks into smaller, manageable form ‘+ Find out various tasks and correlate thom ‘© Estimate time frame required for each task + Divide time into work-units ‘© Assign adequate number of work-units for each task ‘© Caleulate total time required forthe project from start to finish Resource management {All elements used te develop a software product may be assumed as resource for that project. This may include human resource, productive tools ‘and sofware libraries, ‘The resources are available In limited quantty and stay in the organization as a pool of assets. The shortage of resources hampers the velopment of project and it can lag behind the schedule. Allocating extra resources increases development cost in the end. iis therefore necessary to estimate and allocate adequate resources forthe project. hitps:lwwwztutrialspoint comisofwa _engineeringisofware_engineering_quick_guide.him 9143 3/12/22, 6:25 AM Engineering - Quick Guies Resource management includes - ‘+ Defining proper organization project by creating a project team and allocating responsibilities to each team member ‘Determining resources required at a particular stage and their availability ‘© Manage Resources by generating resource request when they are required and de-allocating them when they are no more needed. Project Risk Management Risk management involves all actives pertaining to identification, analyzing and making provision for predictable and non-predictable risks in the project. Risk may include the following «Experienced staff leaving the project and new staf coming in © Change in organizational management. ‘© Requirement change or misinterpreting requirement, + Under-estimation of required time and resources. + Technological changes, environmental changes, business competition, Risk Management Process “There are following activites involved in isk management process + Identification «Make note of all possible risks, which may occur i the projec. + Categorize -Categorze knowin risks into high, medium and low risk intensity as per their possible impact on the projec Analyze the probability of occurence of risks at various phases. Make plan to avoid or face risks. Altempt to minimize thelr side- ‘© Monitor - Closely monitor the potential risks and thei early symploms. Also monitor the efects of steps taken to mitigate or avoid them, Project Execution & Monitoring In this phase, the tasks described in project plans are executed according to their schedules. Execution needs moritoring in order to check whether everything s going according tothe plan. Moritarng is observing to check the probabiliy of tisk and taking measures to address the risk or report the staus of various tasks, “These measures include ~ ‘Activity Monitoring - ll actities scheduled witin some task can be monitored on day-to-day basis. When al actives in a task are ‘completed itis considered as complete Status Reports -The reports contain status of actives and tasks completed within a given time fame, generally a week. Status can be ‘marked as frished, pending or work-in-progress et «Milestones Checklist -Every projects divided into mutiple phases where major tasks are performed (milestones) based on the phases of ‘SDLC. This milestone checklists prepared once every few weeks and reports the status of milestones. Project Communication Management Erfective communication plays val role in the success ofa projec. It bridges gaps between clint and the organization, among the team members ‘as wellas othe stake holders in the project such as hardware suppliers. ‘Communication canbe oral or written, Communication management process may have the folowing steps: ‘Planning -This step includes the identifications of athe stakeholders in the project and the mode of communication among ther. t also considers it any additional communication facilites are required. ‘+ Sharing After determining various aspects of planning, manager focuses on sharing correct information withthe core person on corect time. This keeps every one involved the project up to date with project progress ands status 4+ Feedback Project managers use various measures and feedback mechanism and crete status and performance reports. This ‘mechanism ensures tht input from various stakeholders is coming tothe project manager as their feedback + Closure At the end of each major event, end of@ phase of SDLC or end of the projec isl, administrative closure is formally announced to update every stakeholder by sending email by distributing @ hardcopy of document or by ather mean of effective communication. ‘Alter losure, the leam moves to next phase ox project Configuration Management Configuration management is a process of tracking and controling the changes in sofware in terms of the requirements, design, functions and development of the product. IEEE defines it as “he process of identitying and defining the items inthe system, conraling the change of these items throughout their life cycle, recording and reporting the status of tems and change requests, an veriying the completeness and correctness of tems" Generally, once the SRS is finalized there is less chance of requirement of changes from user, If they occur, the changes are addressed only with prior approval of higher management, as there Isa possibilly of cost and time overrun _engineeringisofware_engineering_quick_guide.him 10143 3/12/22, 6:25 AM ‘Software Engineering - Quick Guide [A phase of SOLC is assumed over it basetined, ie. baseline is a measurement that defines completeness ofa phase. A phase is baselined when all activities pertaining to it are finished anc well documented. If it was nat the final phase, its ouput would be used in nex! immediate phase, Configuration management isa discipline of organization adminstration, which takes care of occurrence of any change (process, requirement, technological, strategical etc.) after a phase is basslined. CM keeps check on any changes done in software. Change Control Change contral is function of configuration management, which ensures that all changes made to sftwara system are consistent and made as per ‘organizational rules and regulations. ‘A change in the configuration of product goes through following steps - ‘+ Identification - A change request arives from either intemal or extemal source. When change request is identified formally, it is properly documented. = valid on -Validy ofthe change request is checked and is handling procedure is confirmed ‘© Analysis - The impact of change request is analyzed in terms of schedule, cost and required efforts. Overall impact of the prospective change on system is analyzed = Control high authorities before change Is incorporated into the system. It is decided ifthe change is worth incorporation or not. fits not, change request is refuses formally 1¥ te prospective change either impacts toa many entities in the system or its unavoidable itis mandatory to take approval of + Execution - I the previous phas does a thorough revision ifnecessary. determines to execute the change request, this phase lake appropriate actions to execute the change, Close request - The change is verified for correct implomentation and merging with the rest of the systam. This newly incorporated change in the software is documented properly and the requests formally is closed, Project Management Tools “The risk and uncertainty rises multfold wth respect to the size ofthe project, even when the projects developed according to set methodologies. “There are tools avaliable, which aid for efective project management. A few are described - Gantt Chart Gantt charts was devised by Henry Gantt (1917). It represents project schedule with respect fo time periods II a horizontal bar chart with bars representing activities and time scheduled forthe project activites, Weeks 1/23 /4isisi7isisin PERT Chart PERT (Program Evaluation & Review Technique) chart isa tool that depicts project as network diagram. It's capable of graphically representing ‘main events of project in both parallel and consecutive way, Events, which occur one after another, show dependency of the later event over the Previous one, Events are shown as numbered nodes. They are connected by labeled arrows depicting sequence of tasks in the project. Resource Histogram ‘This is a graphical tool that contains bar or chart representing number af resources (usually skied stat) required over time for a project event (or phase). Resource Histogram is an effective tool fr staf planning and coordination, hitps:lwwiztutorialspoint com/software_engineering!sofware_engineering_quick_guide.him a3 syi2i2n, 6:25 aM Software Engingering - Quick Gude seat O17 py Ogre Dar Ort Designer [4 4 39.3 2/2114 Developer |0 0 12 44.3 Tester | 0 0 0 0 21212 Total 4445666 8 3° Moose Mi vewoper 54 a o Days. Critical Path Analysis “This tools is useful in recognizing interdependent tasks in the project. It also helps to find out the shortest path or ctcal path to complete the project successfully Like PERT diagram, each event i allotted a specific ime frame. Ths tool shows dependency of event assuming an event can proceed to next only ithe previous one is completed. ‘The events are arranged according to their earliest possible start time, Path betwean slar and end nade iserical path which cannot be further reduced and all events require to be executed in same order Software Requirements ‘The software requirements are description of fealures and functionalities ofthe target system, Requitements convey the expectations of users ‘rom the software product. The requirements can be obvious or hidden, known or unknown, expected or unexpected from client's pont of view. Requirement Engineering ‘The process to gather the software requirements from client, analyze and document them is krown as raquremant engineering “The goal of requirement engineering is to develop and maintain sophisticated and descriptive ‘System Requirements Spectication’ document Requirement Engineering Process Itisa four step process, which includes — + Feasibility Study + Requirement Gathering + Software Requirement Specification Software Requirement \alidation Let us see the process brietly - Feasibility study ‘When the cient approaches the organization for goting the desired product developed, i comes up with rough idea about what al functions the ‘software must perform and which all features are expected from the sofware Referencing o ths information, the analysts does a detailed study about whether the desired system and is functonality are feasible to develop, ‘This feasblty study is focused towards goal of the organization. This study analyzes whether the software product can be practically materialized in arms ofimplemantaton, contribution of project te organization, cost constraints and as per values and abjectves of the ganization. l explores technical aspects ofthe project and product such as usablly, maintainabllty, productivity and integration abilty “The output ofthis phase should be a feasibly study repor tht should contain adequate comments and recommendations for management about whether or nat the projet should be undertaken. Requirement Gathering Iv the feasibly roport is postive towards undertaking the project, next phase starts with gathering roquirements from tho user. Analysts and ‘engineers communicate with the client and end-users to know thelr Ideas on what the software should provide and which features they want the hitps:lwwwztutrialspoint comisofwa _engineeringisofware_engineering_quick_guide.him 12143 3/12/22, 6:25 AM software fo include, Engineering - Quick Guies Software Requirement Specification 'SRS is a document created by system analyst after the requirements are collected tram various stakeholders. SSRS defines how the intended software wil interact with hardware, external interfaces, speed of operation, sponse time of systom, portability of Software across various platforms, maintsinabiliy, speed of recovery after crashing, Securty, Quality, Limitations etc “The requirements received ‘fom client are written in natural language. It isthe responsibilty of system analyst to document the requtements in technical language so that they can be comprehended and useful by the sofware development team. SSRS should come up with fllowing features: ‘© User Requirements are expressed in natural language. «Technical requirements are expressed in structured language, which is used inside the organization, ‘+ Design description should be writen in Pseudo code. ‘+ Format of Forms and GUI screen prints ‘+ Conditional and mathematical notations for DFDs ete Software Requirement Validation ‘Aterrequlrement specifications are developed, the requlrements mentioned in this decument are validated, User might ask for iegal, impractical Soliton or experts may interpret the requirements incorrect, This results in huge increase in cost if not nipped inthe bud. Requirements can be checked against fllawing conditions ~ ‘© tfthey can be practically implemented I they are valid and as per functionality and domain of software I there are any ambiguities they are complete they can be demonstrated Requirement Elicitation Process rement elicitation pracess can be depicted using the followng diagram: a ee een eae Cornea Eee Requirements gathering - The developers discuss withthe clent ang end users and know ther expectations from the software + Organizing Requirements -The developers prioritize and arrange the requirements in order of importance, urgency and convenience. [Negotiation & discussion If requirements are ambiguous or there are some conflicts In requirements of various stakeholders, if they are itis then negotiated and discussed with stakeholders. Requirements may then be prortized and reasonably compromised. ‘The requirements come from various stakeholders. To remove the ambiguity and conflicts, they ae discussed for clarty and corectness. Unrealstic requirements are compromised reasonably Documentation -Al formal & informal, funcional and non-functional requirements are documented and made available for next phase processing Requirement Elicitation Techniques. Requements Elation is the process to find out the requirements for an Intended software eystem by communicating with cllent. end users, _system users and others who have a stake inthe sofware system development “There are various ways lo discover requirements Interviews. Interviews are strong medium to collect requirements. Organization may conduct several types of interviews such as: ‘+ Structured (closed) interviews, where every single information to gather is decided in advance, they follow pattern and matter of discussion fir. ‘+ Non-structured (open interviews, where information to gather is not decided in advance, more flexible and less biased. Oral interviews + Witten interviews ‘© One-to-one interviews which are held between two persons across the table ‘© Group interviews which are held between groups of participants, They help to uncover any missing requirement as numerous people ae involves. Surveys ‘Organization may conduct surveys among various stakeholders by querying about their expectation and requirements from the upcoming system, hitps:lwwwztutrialspoint comisofwa _engineeringisofware_engineering_quick_guide.him 13943 3/12/22, 6:25 AM Questionnaires Engineering - Quick Guies ‘A document with pre-defined set of objective questions and respective options is handes over to all stakeholders to answer, which are collected ‘and compiled. {A shortcoming ofthis technique i, if an option for some issue is not mentioned inthe questionnate, the issue might be left unatended, ‘ask analysis ‘Team of engineers and developers may analyze the operation for which the new system is required. If the client already has some software to perform certain operation, itis studied and requirements of proposed system are collected. Domain Analysis Every sofware falls into some domain category. The expert people in the domain can be a great help to analyze general and specific requirements Brainstorming ‘An informal debate 's held among various stakeholders and all hel inputs are recorded for further requitements analysis. Prototyping Prototyping Is building user interface without adding detail functionally for user to interpret the features of intended software product. It helps ‘Giving beter idea of requirements, If there is no sofware installed at clients end for developer's reference and the client snot aware of is own requirements, tne developer creates a prototype based on intially mentioned requirements. The prototype is shown tothe cient and the feedback Is noted. The client feedback serves as an input for requirement gathering Observation ‘Team of experts vist the clan's organization or workplace. They observe the actual working ofthe existing inslaled systems. They observe the workflow at clent’s ond ard how execution problems are dealt The team itsolf draws some conclusions which aid to form roquirements expocted {rom the software. Software Requirements Characteristics Gathering software requirements isthe foundation ofthe entire sofware development project. Hence they must be clear, corect and well-defined. ‘A complete Software Requirement Specifications must be: = Clear © Conect = Consistent © Coherent + Comprehensible © Modifiable © Verifiable + Priritzed © Unambiguous © Traceable Credible source Software Requirements We should ty to understand whal sor of requirements may arse in he requirement elicitation phase and what kinds of requirements are expected ‘rom the software system. Broadly software requirements should be categorized in two categories: Funetional Requirements Requirements, which are relate lo functonal aspect of sotware faint this catagory. “They define uncions ane functionality within and from the sofware system, Examples « «© Search option given to user to search from various invoices. ‘+ User should be able to mail any report to management ‘+ Users can be alvided into groups and groups can be given separate rights, ‘+ Should comply business rules and administrative functions. «Software is developed keeping downward compatibility intact. hitps:lwwwztutrialspoint comisofwa _engineeringisofware_engineering_quick_guide.him aia 3/12/22, 6:25 AM Non-Functional Requirements Engineering - Quick Guies Requirements, which ate not related to functional aspect of software, fall into this category. They are implicit or expected characteristics of Software, which users make assumption of Non-functional requiromonts include ~ = Security = Logging Storage © Configuration Performance = Cost + Interoperabiliy, + Flexibility + Disaster recovery + Accessibilty Requirements ae calagorized logical as ‘© Must Have : Software cannot be said operational without them, + Should have : Enhancing the functionality of software. + Could have : Software can stil propery function with these requirements, ‘© Wish list: These requirements do not map to any objectives of sofware, While developing software, ‘Must have’ must be implemented, ‘Should have' is a matter of debate with stakeholders and negation, whereas ‘could have’ and wish Is’ can be kept for software updates. User Interface requirements Utis an important part of any software or hardware or hybrid system. A software is widely accepted fits - easy o operate © quick in esponse «effectively handing operational errs ‘+ providing simple yet consistent user interface User acceptance majorly depends upon how user can use the software. UI is the only way for users to perceive the system. A wall performing software system must also be equipped with attractive, clear, consistent and responsive user inerface, Otherwise the functionalites of software ‘systom can not be used in convenient way. A system is said be good ik provides means to use it efciendy, User interlace requitements aco briefly mentioned below + Content presentation © Easy Navigation Simple intertace + Responsive Consistent Ul elements ‘+ Feedback mechanism Default settings + Purposeful layout ‘+ Strategial use of color and texture. ‘© Provide help information + User centric approach ‘Group based view settings. ‘Software System Analyst System analyst in an IT organization is @ person, who analyzes the requirement of proposed system and ensures that requirements are conceived ‘and documented properly & correctly. Role of an analyst starts during Software Analys's Phaso of SDLC. Its the responsibilty of analyst to make ‘sure that the developed sofware meets the requirements ofthe client System Analysts have the folowing responsbites: ‘+ Analyzing and understanding requirements of intended software ‘= Understanding how the project wil contribute in the organization objectives Identiy sources of requirement Validation of requirement ‘+ Develop and implement requirement management plan hitps:iwwiztutorialspoint com/sofware_engineering!sofware_engineering_quick_guide him 15143 3/12/22, 6:25 AM Sots Engineering - Quick Guigs Documentation of business, technical, process and product requirements Coordination with lens to prioritize requirements and remove and ambiguity Finalizing acceptance cfteria with cient and other stakeholders Software Metrics and Measures ‘Software Measures can be understood as a process of quantifying and symbolzng various attributes and aspects of sofware, Software Metis provide measures for various aspects of software process and software product. ‘Software measures are fundamental requirement of software engineering, They not only help to contra the software development process but also id to keep quality of utimale product excellent ‘According to Tom DeMarco, a (Software Engineer), “You cannot control what you cannot measure.” By his saying, itis very clear how important ‘software measures are, Let us see some software metres: ‘Size Motes - LOC (Lines of Code), mostly caleulated in thousands of delivered source code ines, denoted as KLOC. Function Point Count is measure of the functionality provided by the sofware. Function Point count defines the size of functional aspect of software Complexity Metrics - McCabe's Cyclomatic complexity quantifies the upper bound ofthe number of independent paths in @ program, \which is perceived as complexity ofthe program or its modules. Il is represented in terms of graph theory concepts by using control flow graph, ‘Quality Metrics - Defects, thelr ypes and causes, consequence, intensity of severly and thelr implications define the quality of product. ‘The number of defects found in development process and number of defects reported by the client after the product is installed or delivered at client-and, define quality af product Process Metrics -In various phases of SDLC, the methods and tools used, the company standards and the performance of development are software process metrics. Resource Metrics -Efort, time and various resources used, represents metrics for resource measurement Software Design Basics Software design is a process to transform user requirements into some sutable form, which helps the programmer in sofware coding and implementation, For assessing user requirements, an SRS (Sofware Requitement Specification) document is cteated whereas for coding and implementation, there isa need of more specific and detailed requirements in sofware terms. The output of this process can directly be used ino implementation in programming languages. ‘Software design i the fist step in SDLC (Software Design Life Cycle), which moves the concentration from problem domain to solution domsin. It ‘ees to specify hw to full the requirements mentioned in SRS. ‘Software Design Levels Software design yields thea loves of results: Architectural Design -The architectural design isthe highest abstract version of the system. Itidentifes the software as a system with ‘many component interacting with each othe. At this level, the designers get the idea of proposed solution domain High-level Design: The high-level design breaks the ‘single entiy-muttiple component concept of architectural design into less-abstracted view of sub-systems and modules and depicts their interaction with each other. High-Jevel design focuses on how the system along with all of ts components can be implemented in forms of modules.lt recognizes modular structure of each sub-system and their elation and interaction among each other. Detailed Design- Detailed design deals with the implementation part of what is seen as a system and its sub-systems in the previous two designs. It is more detaled towards modules and their implementations. It defines logical structure of each module and their interfaces to ‘communicate wth other modules. Modularization Modularzation is a technique lo cvide a software system into multiple discrete and independent modules, which are expected to be capable of ‘artying out tasks) indopendortly. These modules may work as basic constructs for tho entice software. Designers tend to dosign modulos such ‘tal they can be executed andlor compiled separately and independently, Modular design unintentionally folows the rules of ‘divide and conquer’ problem-solving strategy this is because there are many other benefits attached with the modular design of a sofware ‘Advantage of modularization: hitps:lwwwztutrialspoint comisofwa ‘Smaller components are easier to maintain Program can be divided based on functional aspects Desired level of abstraction can be brought in the program _engineeringisofware_engineering_quick_guide.him 16143 3/12/22, 6:25 AM ‘+ Components with high cohesion can be re-used again, ‘© Concurrent execution can be made possible «Desired from security aspect Engineering - Quick Guies Concurrency Back in time, all sofware are meant to be executed sequential. By sequential execution we mean that the coded instruction will be executed one after another implying only one portion of program being activated at any given time. Say, a software has multiple modules then only ane of all the ‘modules can be found active at any time of execution. In software design, concurrency is implemented by spliting the sofware into multiple independent units of execution, Ike modules and executing ‘hem in parallel. In other words, concurrency provides capabilly tothe sofware to execute more than one part of code in parallelto each other Itis necessary fo the programmers and designers to recognize these modules, which can be made parallel ocution Example “The spell check feature in word processor is a module of sofware, which runs alongside the word processor its Coupling and Cohesion When a software program is madularzed, is tasks are divided into several modules based on some characteristics. As we know, modules are set ‘of instuctons put together In order to achiove some tasks. They are though, considered as single entity but may refer to each other to work together. There are measures by which the qualty of @ design of modules and their interaction amang them can be measured. These measures are called coupling and cohesion. Cohesion Cohesion is a measure that defines the degr program design. of inlra-dependabiity within elements of a module. The greater the cohesion, the betlor is the ‘There are seven types of cohesion, namely ~ © Cosincidental cohesion - tis unplanned and random cohesion, which might be the result of breaking the program info smaller modules {or the sake of modularization, Because it is unplanned, it may serve confusion to the programmers and is generally nl-accepted ‘Logical cohesion - When logically categorized elements are put together into a module, itis called logical cohesion, ‘= emporal Cohesion -When elements of module are organized such that they are processed ata similar point in time, its called temporal cohesion, ‘+ Procedural cohesion - When elements of module are grouped together, which ae executed sequentially in order to perform a task, tis called procedural cohesion. ‘+ Communicational cohesion - When elements of module are grouped together, which are executed sequentially and work on same data (information, itis called communicational cohesion ‘© Sequential cohesion - When elements of module are grouped because the output of one element serves as input to another and so on, it Is called sequential cohesion, ‘+ Functional cohesion - itis considered tobe the highest degree of cohesion, and itis highly expected. Elements of module in functional Cohesion are grouped because they all contribute toa single wel-defined function, It can also be reused, Coupling Coupling is a measure that defines the level of inter-dependabilty among modules of a program. It tells at what level the modules interfere and interact with each other. The lowar the coupling, the bellar the pragram. “There are fve levels of coupling, namely ‘© Content coupling - When a module can directly access or modify o refer to the content of another module ts called content level coupling ‘© Common coupling-When multiple modules have read and write access to some global data itis called common or global coupling, ‘+ Control coupling- Two modules are called contro-coupled i one of them decides the function of the other module or changes its flow of execution ‘© Stamp coupling- When multiple modules share common data structure and work on diferent part of it, itis called stamp coupling. ‘+ Data coupling- Data coupling is when two modules interact with each other by means of passing data (as parameter). I a module passes data structure as parameter, then the receiving module should use alts components, dally, no coupling is considered tobe the best De: In Verification “The output of software design process is design documentation, pseudo codes, detailed logic diagrams, process diagrams, and detailed description of all functional or non-functional requirements “The next phase, which i the implementation of software, depends on all outputs mentioned above, hitps:lwwwztutrialspoint comisofwa _engineeringisofware_engineering_quick_guide.him 7183 3/12/22, 6:25 AM Sots Itis then becomes necessary to verify the output before proceeding to the next phase. The early any mistake is detected, the better itis or it might not be detected unti testing of the product. Ifthe outputs of design phase are in formal notation form, then their associated fools for verification ‘should be used otherwise a thorough design review can be used for verification and validation, Engineering - Quick Guies By structured verication approach, reviewers can detect defects important for good software design, accuracy and qually, 3t might be caused by overlooking some conditions. A good design review is Software Analysis & Design Tools Sofware analysis and design includes all activites, which help the transformation of requirement specification into implementation. Requirement ‘specications specity all functional and non-functional expectations for the software. These requirement specifications come in the shape of human readable and understandable documents, to which @ computer has nothing todo. ‘Software analysis and design isthe intormeciate stage, which helps human-readable requirements tobe transformed into actual code. Let us see few analysis and design tools used by sofware designers: Data Flow Diagram Data flow diagram is graphical representation of flow of data in an information system. Its capable of depicting incoming data flow, outgoing data flow and stored data. The DFD does not mention anything about how data flows through the system. ‘There isa prominent diference between DFD and Flowchart The flowchart depicts flow of contol program modules. DFDs depict low of data in ‘ne system at various levels, OFD doas not contain any contol or branch elements ‘Types of DFD Data Flow Diagrams are either Logical or Physical ‘© Logical DFD- This type of DFD concentrates on the system process, and flow of data inthe system.For example in a Banking software system, how data is moved between diferent ents. + Physical DFD- This type of DF shows how the dataflow is actually implemented in the system. Itis more specific and close to the implementation. DFD Components FD can represent Source, destination, storage and flow of da sing the following set of components - ere am Entities - Eniies are source and destination of information data. Ents are represented by a rectangles with their respective names. ‘© Process Activites and action taken on the data are represented by Circle or Round-edged rectangles. + Data Storage There are two variants of data storage-i can either be represented as a rectangle with absence of bath smaller sides or {8 an open-sided rectangle with only one side missing, ‘+ Data Flow - Movement of data is shown by pointed arrows. Data movement is shown ftom the base of arrow as its source towards head of, the arrow as destination Levels of DFO + Level 0- Highest abstraction level DFD is known as Level 0 DFO, which depicts the ene information system as one diagram concealing all the underlying details, Level 0 DFDs are also known as context level DFDS. OMe re eR cal reroute ‘+ Lovet 1 - The Level 0 DFD is broken dawn into more specific, Level DFD. Level 1 DFD depicts basic modules inthe system and flow of data among various modules. Level 1 DFD also mentions basic processes and sources of information, tps lwwiztutorialspoint. com/sofws _engineeringisofware_engineering_quick_guide.him 18143 3/12/22, 6:25 AM Software Engineering - Quick Guide ly TS ues ‘+ Level 2 At this level, DFD shows how data ows inside the modiles mentioned in Level 1. Higher level DEDS can be transformed into more spectic lower level OFDs with deeper level of understanding unless the desirad level of specication is achieves. Structure Charts Structure chart is a chart derived rom Data Flow Diagram. Itreprasents the system in more detall than DFO. It breaks down the entire system into lowest functional modules, describes functions and subfunctions of each module ofthe eyster to a greater detail than DFO. ‘Structure chart represents hierarchical structure of modules. At each layer a specifi taskis performed. Here are the symbols used in construction of structure charts ~ ‘+ Module It represents process or subroutine or task. A control module branches to more than one sub-module, Library Modules are Usable and invokable from any module, fe ‘Sub-Wodule brary Module + Condition - Its eepcesented by small diamond atthe base of module. I depicts that contol module can select any of subroutine based on ‘some condition, ‘+ Jump An arrow is shown pointing inside the module to depict thatthe control wil jump in the middle of the sub-module ‘© Loop- A curved arrow represents loop in the module, All sub-modules covered by laop repeat execution of madule tps lwwiztutorialspoint. com/sofws _engineeringisofware_engineering_quick_guide.him 19143 3/12/22, 6:25 AM Engineering - Quick Guide + Data flow--A directed artow with empty circle atthe end represents data low. Labels ! j Labels + Controlflow- A directed arrow with filed circle at the end represents contol ove Labels 1 ! Labels HIPO (Hierarchical Input Process Output) diagram is a combination of two organized method to analyze the system and provide the means of ‘documentation, HIPO model was developed by IBM in year 1970, HIPO diagram represents the hierarchy of modules inthe sofware systom. Analyst uses HIPO diagram in order to abla high-ovel iow of system functions. decomposes functlons inte sub-unetions Ina hierarchical manner. kt deplts the functions performed by eystem, HIPO diagrams are good for documentation purpose. Their graphical representation makes it easier for designers and managers to get the Pictorial idea of the system structure. In contrast to IPO (Input Process Output) diagram, which depicts the flow of contol and data in a module, HIPO does not provide any information ‘about dataflow or contra flow. Input Process: Output take aunenteaton creatine ‘rom userseren User Seroon User Sorgen > creck vay of eedertle CallAppoprate Moule Example Both parts of HIPO diagram, Hierarchical presentation and IPO Chart are used for structure design of sofware program as well as documentation ofthe same, Structured English tps lwwiztutorialspoint. com/sofws _engineeringisofware_engineering_quick_guide.him 20143 3/12/22, 6:25 AM ‘Software Engineering - Quick Guide Most programmers are unaware of the large picture of sofware so they only rely on what their managers tell them to do. Its the responsibilty of higher software management to provide accurate information tothe programmers la develop accurate yet fast code. (other forms of methods, which use graphs or alagrams, may are sometimes interpreted afferenty by ctferent people. Hence, analysts and designers ofthe software como up with fools such as Structured English. Its nothing but the description of what is required te code and how to code it. Structured English helps the programmer to wie eror-ee code. Other form of methods, which use graphs or diagrams, may are sometimes interpreted diferenly by diferent people. Here, both Structured English and Pseudo-Code tries to mitigate that understanding gap. Structured English i the it uses plain English words in structured programming paradigm. It isnot the ultimate code but a kind of description what Is required o code and how to code It. The following are some tokens of stuctured programming 0-AHILE-UNTIL ‘Analyst uses the same variable and data name, which are stored in Data Dictionary, making t much simpler to write and understand the code. Example We take the same example of Customer Authentication in the online shopping environment. This procedure to authenticate customer can be writen in Structured English as: Cal procedure USFR_PASSHORD_AUTHENTICATE() PRINT error message Call procedure NEw_CUSTONER_REQUEST() 901 The code written in Structured English is more like day-o-day spoken English. It can not be implemented direcy as a code of software. Structured English isindopendont of programming language. Pseudo-Code Pseudo code is written more close to programming language. It may be considered as augmented programming language, full of comments and descriptions Pseudo code avoids variable declaration but they are writen using some actual programming language's constructs, tke C, Fortran, Pascal tc. Pseudo code contains mors programming details than Structured English. provides @ metnod to perform the task, as if computer is executing the code, Example Program to print Fivonacei up to n numbers. void function Fibonacet Get value of nj Set value of a to 1; Set value of b to 1; for (1-0; 1< nj its) ‘ Af a greater than b ‘ Increase b by a3 Print b; else if b greater than a ‘ sncrease a by b: print a; Decision Tables ‘A Decision table ropresents conditions and the respective actions to be taken to addross them, ina structured tabular format It is powerful tol to debug and prevent error. It helps group similar information into @ single table and then by combining lables it delivers easy ‘and convenient decision-making hitps:lwwiztutorialspoint com/software_engineering!sofware_engineering_quick_guide.him ries 3/12/22, 6:25 AM Sots Creating Decision Table Engineering - Quick Guies ‘To create the decision table, the developer mus follow basic four steps: ‘Identity al possible conditions to be addressed ‘Determine actions for allidentiied condtions + Create Maximum possible rules ‘Define action for each rule Decision Tables shouldbe verlfed by end-users and can lately be simplified by eliminating duplicate rules and actions. Example Let us take a simple example of day-to-day problem with our Internet connectivity. We begin by identi¥ing all problems that can arise while stating ‘he internet and their respective possible solutions. ‘We lst ll possible problems under column conditions and the prospective actions under column Actions. CConditions/Aetions Rules ‘Shows Connected NNNNYYYY Conditions| Ping is Working NNYYNNYY Opens Website YNYNYNYN ‘Check network cable x ‘Check internet router x x xX Xx ‘Actions Restart Web Browser x Contact Service provider x xX X XX xX Do ne action ‘Table: Devision Table ~ In-house Intemet Troubleshooting Entity-Relationship Model Entiy-Relationship model isa type of database model based on the notion of real word entities and relationship among them. We can map real World scenario onto ER database model. ER Model creates a set of entities with ther atributes, a set of constrains and relation among them. ER Model is best used fr the conceptual design of database. ER Model can be represented 26 follows coo coo Cn + Entity - An entty in ER Model is @ real world being, which has some properties called attributes. Every attibute is defined by its corresponding set of values, called domain. For example, Consider a schoo! database. Hé ‘a student ig an ently, Student has various aibutes Ike name, i, age and class etc. ‘+ Relationship - The logical association among enties s called relationship. Relationships are mapped with entitles in various ways “Mapping cardinales define the numberof associations between two ents. Mapping carinaltes: © onetoone one to many © many to one © many to many Data Dictionary Dala dictionary isthe centralized colection of information about data, I lores meaning and origin of data, is relationship with other data, data format for usage etc. Data dictonary has rgorous definitions of all names in order to facltate user and software designers, Data dictionary is often referenced as meta-data (data about data) repository, tis created along with DFO (Data Flow Diagram) madel of software program and is expected to be updated whenever DFD is changed or updated. Requirement of Data Dictionary “The data s referenced via data citionary wrile designing and implomenting software. Data dictionary removes any chancos of ambiguity. It helps keoping work of programmers and designers synchronized while using same object reference everywner in the program. Data dictonary provides a way of documentation forthe complete database system in one place. Validation of DFD is caried out using data dlctionary. hitps:lwwwztutrialspoint comisofwa _engineeringisofware_engineering_quick_guide.him aia 3/12/22, 6:25 AM Contents Engineering - Quick Guies Data dictionary should contain information about te fllowing Data Flow Data Structure Data Elements + Data Stores Data Processing Data Flow is described by means of DFDs as studied earlier and represented in algebraic form as described, = Composed of 0 Repetition 0 Optional + And uw or Example ‘Adress = House No + (Street / Area) + City + State ‘Course ID = Course Number + Course Name + Course Level + Course Grades Data Elements Data elements consist of Name and descriptions of Data and Control tems, intemal or Extomal data stores at. with the fllowing details: Primary Name + Secondary Name (Alias) © Use-case (How and where to use) ‘© Content Descriation (Notation etc.) + Supplementary Information (preset values, constraints etc.) Data Store It stores the information from where the data enters into the system and exists out of the system. The Data Store may include ~ + Files Internal to software. ‘© External to software but onthe same machine. ‘+ External fo software and system, located on diferent machine. + Tables «Naming convention ‘+ Indexing propery Data Processing “There are two types of Data Processing Logical: As user sees it ‘+ Physical: As software sees it Software Design Strategies ‘Software design is @ process to conceptualize the sofware requirements into sofware implementation. Software design takes the user requirements as challanges and tiesto find optimum solution. While the software is being conceptualized, a plan is chalked out to find the best possible design for implementing te intonded soluton. “There are multiple variants of software design. Let us study them brety: Structured Design Structured design is a conceptualization of problem into several welLorganized elements of solution It is basically concerned with the solution design. Benefit of structured design i, it gives better understanding of how the problem is being solvec. Structured design also makes it simpler {or designer to concentrate on the problem more accurately. ‘Structured design is mostly based on ‘divide and conquer’ sirategy where a problem is broken into several smal problems and each small problem is individually solved until the whole problem is solved ‘The emal paces of problem are solved by means of solution modules. Structured design emphasis that these medules be well organized in order to achieve precise solution hitps wz tutrialspoint comisofwa _engineeringisofware_engineering_quick_guide.him 23103 3/12/22, 6:25 AM Software Engineering - Quick Guide ‘These modules are arranged in hisrarchy. They communicate with each other. A good structured design always follows some rules for ‘communication amang mutiple modules, namely Cohesion - grouping ofall functionally related elements, Coupling - communication betwoen diferent modules. ‘A good structured design has high cohesion ane low coupling arrangements Function Oriented Design In function-orented design, the system is comprised of many smaller sub-systems known as functions. These functions are capable of performing Signfcant task inthe system. The system is considered as top view af all unctons. Function orlented design inherts some properties of structured design where divide and conguer methodology Is used. ‘This design mechanism divides the whole system into smaller functions, which provides means of abstraction by concealing the information and their operation. These functional modules can share information among themselves. by means of Information passing and using information availabe global. ‘Another characteristic of functions is that when a program cals a function, the function changes the stale ofthe program, which sometimes is not ‘acceptable by other modules. Function oriented design works well where the system state does not matter and programfunctions work on input rather than on a state Design Process ‘© The whole system is seen as how data flows in the system by means of data flow diagram, ‘+ FD depictshow functions changes data and state of entire system. ‘© The entire system is logically broken down into smaller units known as functions onthe basis of their operation inthe system, © Each function is then described at lage. Object Oriented Design ‘Object oriented design works around the entites and thelr characteristics instead of functions lwolved In the software system. This design Strategies focuses on entities and is characterises, The whole concept of software solution revolves around the engaged ents, Let us see the important concepts of Object Oriented Design: Objects -All entities involve inthe solution design are known as objects, For example, person, banks, company and customers are treated as objects, Every entity has some attributes associated to It and has some methods fo perform on the attributes, + Classes «A class is a generalized description of an object. An objet is an instance of a class. Class defines all the attributes, which an ‘object can have and methods, which defines the functionalty of the objec Inthe solution design, abutes are stored as varables and functionals are defied by means of methods or procedures. ‘© Encapsulation -In OOD, the attributes (data variables) and methods (operation on the data) are bundled together i called encapsulation Encapsuiation not only bundles important information of an object together, but also restricts access of the data and methods from the ‘outside world. This is called information hiding ‘© Inheritance - 000 allows siilarciasses o stack up in hierarchical manner where the lower or sub-classes can import, implement and = Use allowed variables and methods from thelr immediate super classes. This property of OOD is knowns inheritance. This makes iteasier to define specific class and fo create generalized classes from specic ones. ‘© Polymorphism -OOD languages provide a mechanism where methods performing similar tasks but vary in arguments, can be assigned ssame name. Ths fs called polymorphism, which allows a single interface performing tasks fr diferent types. Depending upon how the function is invoked, respective portion of the code gets executed Design Process ‘Software design process can be perceived as series of welldefined steps. Though it vatles according to design approach (function oriented or ‘object oriented, yt It may have the flowing steps involved ‘+ Assolution design is created from requirement or previous used system andlor system sequence diagram. ‘Objects are identied and grouped ino classes on behalf of similarity in attribute characters, ‘© Class hierarchy and relation among them is defined ‘© Application framework is defined. ‘Software Design Approaches Here are two generic approaches for sofware designing ‘op Down Design We know that a system is composed of more than one sub-systems and it contains @ number of components. Further, hese sub-systems and ‘components may have their on set of sub-system and components and creates hierarchical strctue in the system. hitps:lwwwztutrialspoint comisofwa _engineeringisofware_engineering_quick_guide.him aia 3/12/22, 6:25 AM ‘Software Engineering - Quick Guide ‘Top-down design takes the whole software system as one entity and then decomposes it to achieve more than one sub-system or component based on some characteristics. Each sub-system or component is than treated as a system and decomposed further. This process keeps on running unil the lowest level of system inthe top-down hierarchy is achieved. “Top-down design starts with a generalized model of system and keeps on defining the more specific pat of it. When all components are composed the whole system comes into existence, “Top-down design is mare suitable when the software solution needs tobe designed from seratch and specific details are unknown, Bottom-up Design “The bottom up design model starts with most specific and basic components. It proceeds with composing higher level of components by using basic or lower level components. It keeps creating higher level components untl the desired system is not evolved as one single component. With ‘each higher level, the amount of abstraction Is increased Bottom-up strategy is more sultable when a system needs to be created from some existing system, where the basic primitives can be used in the newer system, Both, top-down and bottom-up approaches are nol practical individually Instead, a good combination of both is used. Software User Interface Design User interface isthe front-end application view to which user ineracts in order to use the software. User can manipulate and control the software ‘a5 wall as hardware by means of user interface. Today, user interface Is found at almost every placa where digital technology exists, right trom ‘computers, mobile phones, cas, musle players, aiplanes, ships ete User interface is part of software and is dasigned such a way that itis expected to provide the user insight of the software. Ul provides fundamental platform fr human-computer interaction, Ut can be graphical, lext-based, audo-video based, depending upon the underlying hardwar ‘software or a combination of both, land software combination. Ul can be hardware or ‘The software becomes more popula ts user interface Is: © Attractive + Simple to use ‘© Responsive in short ime Clear to understand + Consistent on al interfacing screens ul is broadly alivded into two categories: Command Lin Interface ‘© Graphical User interface Command Line Interface (CL) CLI has beon a great tool of interaction with computers until the video display mortors came into existence. CLI is fist chalee of many technical users and programmers. CL! is minimum interface a software can provide to is users CL provides a command prompt, the place where the user types the command and feeds tothe system, The user needs to remember the syntax ‘of command and its use. Earlier CLI were nol programmed to handle the user errors effectively ‘A command is text-based reference to set of instructions, which are expacted fo be executed by the system. There are methods lke macros, ‘Scripts that make It easy forthe user to operate. CL uses loss amount of computer resource as compared to GUL CLIElements hitps:lwwiztutorialspoint com/software_engineering!sofware_engineering_quick_guide.him 25143 3/12/22, 6:25 AM Sots Engineering - Quick Guige Command Parameters Command Prompt ‘A text-based command line interface can have the following elements + Command Prompt - Is text-based notifier that is most systom, ‘shows the context in which the user is working. It is gonerated by the software ‘© Cursor tis @ small horizontal ine ora vertical bar of the eight of in found in blinking state. I moves as the user writes or deletes something. to represent poston of character while typing. Cursor fs mostly © Command -A cammandis an executable instruction. I may have one or more parameters. Output on command execution is shown ining ‘on the screen, When output is produced, command prompt is displayed on the next ir Graphical User Interface ‘Graphical User Interface provides the user graphical means to interact with the system. GUI can be combination of both hardware and software. Using GUI, user interprets the software. “Tpleally, GUI is more resource consuming than that of CLL With advancing technology, the programmers and designers create complex GUI designs that work with more efclency, accuracy and speed. GUI Elements {GUI provides a set of components to interact with software or hardwa Every graphical component provides @ way to work withthe system. A GUI system has folowing elements such as: © Window - An area where contents of application are displayed. Contents in a window can be displayed in the form af cons or lists if he window represents fie structure. It is easier fora user to navigate in the filo system in an exploring window. Windows can be minimized, resized or maximized to the size of screen. They can be moved anywhere on the screen. A window may contain another window of the ‘same application, called child window. ‘Tabs Ifan application alows executing multiple inslances of sel, they appear on the screen as separate windows. Tabbed Document Interface has come up to open muliple documents in the same window. This interface algo helps in viewing preference panel in appication. All modem wob-browsors use this feature, + Menu - Menu is an array of standard commands, grouped together and placed al a visible place (usually top) inside the application window. The menu can be programmed to appear or hide on mouse clicks ‘+ eon - An icon is smal picture representing an associated application. When these icons are clicked or double clicked, the application window is opened. con displays application and programs installa on a system in the form of small pictures. Cursor - Interacting devices such as mouse, touch pad, digital pen are represented in GUI as cursors. On screen cursor follows the Instructions from hardware in almost real-time, Cursors are also named pointers in GUI systems, They ara used o select menus, windows and othor application featur, hitps:lwwwztutorialspoint comisofwa _engineeringisofware_engineering_quick_guide.him 26103 3/12/22, 6:25 AM Sots Application specific GUI components Engineering - Quick Guies 'A.GUL of an application contains one of more ofthe sted GUI elements ‘+ Application Window - Mast application windows uses the constucts supplied by operating systems but many use their own customer created windows to contain the contents of application. ‘Dialogue Box- tt isa child window that contains message forthe user and request for some action to be taken. For Example: Application {gonerate a dialogue to get confirmation from user to delete a fle Ss = >) eo ‘+ Text-Box-- Provides an area for usar to typa and enter text-based data, ‘+ Buttons - Thy imitate real fe buttons and are used to submit inputs tothe sofware, ‘Tine options: @)Digtal™ C)Analog [D Display the ime with seconds Flash the time separators Use a 24-hour lock Show AMP ‘Date options: Show the day of the week (Show date ‘+ Radio-button - Displays available options for selection. Only one can be selected among all ofered. + Check-box - Functions similar to lst-box. When an option is selected, the box is marked as checked. Muliple options represented by chock boxes can be selected + Listthox - Provides st of available items for selection. More than one item can be selected Fe dey ee) Noncey Calendat Tuesday q Wedreay Thur Usesor ondet Fay D Saturday Sire 5 maa a Time format ‘Other impressive GUI components aro + Sliders + Combo-box © Data-grid + Drop-down list User Interface Design Activities ‘There are a number of activities performed for designing user interface. The process of GUI design and implementation is alke SOL. Any model ‘can be used for GU! implementation amang Waterfall erative or Spiral Modal ‘A model used for GUI design and development should full these GUI speci steps, hitps:iwwiztutorialspoint com/sofware_engineering!sofware_engineering_quick_guide him ries 3/12/22, 6:25 AM Engineering - Quick Guide GUI Requirement Gathering - The designers may lke to have list ofall functonal and nonfunctional requirements of GUI. This can be taken from user and their existing software solution User Analysis - The designer studies who is going o use the sofware GUI. The target audience matters as the design details change according tothe knowledge and competency level ofthe user. fuser i technical sawvy, advanced and complex GUI can be incorporated. Fora novice user, more information is included on howe of sofware. ‘Task Analysis - Designers have to analyze what task isto be done by the software solution. Here in GUI, it does not matter how it will be done. Tasks can be represented in hierarchical manner taking ane mar task and dividing it further ino smallr sub-tasks. Tasks provide {goals for GUI presentation. Flow of information among sub-tasks determines the flow of GUI contents in the softwar GUI Design & implementation - Designers after having information about requirements, tasks and user envionment, design the GUI and Implements into code and embed the GUI with working or dummy software inthe background. Itis then sel-tested by the developers. Testing - GU! testing can be done in various ways. Organization can have in-house inspection, direct invalvement of users and release of beta version are few of them. Testing may include usabilty, compatbilty, user acceptance et GUI Implementation Tools ‘There are several tools available using which the designers can create entire GUI on a mouse click. Some fools can be embedded into the software environment ((DE}, GUI implementation tools provide powerful array of GUI controls, For sofware customization, designers can change the code accordingly, ‘There ae diferent segments of GUI tools according to their diferent use and platform. Example Mobile GUI, Computer GUI, Touch-Sereen GUI etc, Here I It of few tls which come handy to buld GUL FLUID ‘Appinventor (Android) LucidChart Wavemaker Visual Studio User Interface Golden rules “The following rules re mentioned to be the golden rules for GUI design, described by Shneiderman and Ptaisant in their book (Designing the User Interface). hitps:lwwwztutrialspoint comisofwa Strive for consistency - Consistent sequences of actions should be required in similar sitvatons. Igentical terminology should be used in prompts, menus, and help soreens. Consistent commands should be employed throughout Enable frequent users to use short-cuts - The user's desire to reduce the numberof Interactions increases withthe frequency of use, ‘Abbreviations, function keys, hidden commands, and macro facies are very helpful to an expert user. Offer informative feedback - For every operator action, there should be some system feedback. For frequent and minor actions, the response must be modest, while for infrequent and major actions, the response must be more substantial Design dialog to yield closure - Sequences of actions should be organized inlo groups with a beginning, middle, and end. The Informative feedback at the completion ofa group of actions gives the operators the satisfaction of accomplishment, a sense of reli, the Signal to drop contingency plans and options from thelr minds, and ths indicates thatthe way ahead is clear to prepare for the next group of actions Offer simple error handling - As much as possible, design the system so the user will not make a serious error. Ian error is made, the system should be abe to detect it and offer simple, comprehensible mechanisms for hanling the error. _engineeringisofware_engineering_quick_guide.him 28143 3/12/22, 6:25 AM ‘Software Engineering - Quick Guide + Permit easy reversal of actions - Ths feature relieves anxiety, since the user knows that erors can be undone. Easy reversal of actions ‘encourages explration of untamilar options. The units of reversibly may be a single action, a data erty, ora complete group of actions. ‘+ Support internal locus of control - Experienced operators strongly desire the sense that they are in charge of the system and thatthe system responds to their actons. Design the system to make users the iniators of actions rather than the responders. ‘© Reduce short-term memory load - The limitation of human information processing in shor“erm memory requires the cisplays to be Kept simple, muliple page displays be consolidated, window-motion frequency be reduced, and sufcient training time be alloted for codes, mnemonics, and sequences af actions. Software Design Complexity ‘The torm complexity stands for stale of events ar things, which have multiple interconnected links and highly complicated structures. In software programming, as the design of software is realzed, the number of elements and their inlerconnections gradually emerge to be huge, which becomes too dificult to understand at once. Software design comploxty is dtfcul to assess without using complaxly meics and measures. Let us see three important software complexity Halstead's Complexity Measures In 1077, Mr Maurice Howard Halstead introduced metrics to measure software complexiy. Halstead’s metrics depends upon the actual implementation of program and its measures, which are computed directly from the operators and operands from source code, in stalc manner. It allows o evaluate losing lime, vocabulary, size, ifculy, errors, and efforts for CIC++lJava source code, ‘According fo Halstead, “A computer program is an implementation of an algorithm considered fo be a collection of tokens which can be classified as ether operators or operands”. Halstead metres think a program as sequence of operators and ther associated operands. He defines various incicators to check complexity of module Parameter Meaning nt Number of unique operators n2 Number of unique operands Nt Number of total occurrence of operators Na. [Number of total occurrence of operands When we select source fle to view is complexity details Metric Viewer, the following results seen in Metric Report Metric Meaning Mathematical Representation n Vocabulary nt #n2 N Size NI+N2 v Volume Length * Log2 Vocabulary D Diticuty (0112) * (Ntin2) E Efforts Dificult * Volume 8 Errors \olume / 3000 T ‘esting time ‘Time = Efforts /S, where $=18 seconds, Cyclomatic Complexity Measures Every program encompasses statements fo execute in order to perform some task and otter decision-making statements that decide, what statements need tobe executed. These decision-making constructs change the flow of the program. It we compare two programs of same size, the one with mare decision-making statements will bo more complex as the control of program jumps frequent. MeCabe, in 1876, proposed Cyclomatic Comploxty Measure to quanti comploxy of a given software. Iti graph driven model tha is basod on ‘docision-making constructs of program such a (else, do-whil,repeatuntl, ewitch-case and goto statomonts Process to make flow contral graph: ‘© Break program in smaller blocks, delimited by decision-making constructs, ‘Create nodes representing each ofthese nodes. + Connect nodes as follows: ‘© tfeontrol can branch from block ito block | Draw an are ‘+ From exitnode to entry node Draw an are. ‘To calculate Cyclomatic complexity of @ program module, we use the formula = hitps:lwwiztutorialspoint com/sofware_engineering!sofware_engineering_quick_guide.him 20143 3/12/22, 6:25 AM Engineering - Quick Guige VG) = 2-982 winere ‘e 4s total number of edges nis total nunbes of nodes Code Flow-Chart ‘The Cyclomatic complexity of the above module Is ew ‘cyclomatic Complexity ae 842 ‘According to P. Jorgensen, Cyclomatic Complxiy of a modulo should not excoed 10, Function Point Itis widely used to measure the size of sofware, Function Peint cancentrates on functionally provided by the system, Features and functionality of the system are used to measure the software complexty. Function point counts on five parameters, named as External Input, External Output, Logical Internal Files, Extemal Interface Files, and Extemal Inquiry. Te consider the complexity of software each parameter is further categorized as simple, average or complex Software Program ek oot Enema Pog Let us soe parameters of function point External Input Every unique input tothe system, fom outside, is considered as external input. Uniqueness of input is measured, as no two inputs should have ‘same formals. These inputs can ether be data or contol parameters. © Simple - it input count is low and affects less itor les ‘© Compiex- ifinput count is high and affects more internal les ‘= Average - in-between simple and complex External Output {Al output typos provided by the systom aro countod inthis category. Output is considered unique if thor output formal andlor processing aro unique, Simple -if output countis ow + Complex- if output count i high Average -in between simple and complex. hitps:lwwwztutrialspoint comisofwa _engineeringisofware_engineering_quick_guide.him 30143 3/12/22, 6:25 AM Logical internal Files, Engineering - Quick Guies Every sofware system maintain intemal les In order to maintain its functional information and to function propery. These fles hold logical data of ‘he system. This logical data may contain both functional data and contal data. + Simple -i{ number of record types are low + Complex if number of record types are high «Average -in betwoon simple and complex. External Interface Files ‘Software system may need to share ils fies with some extemal sofware or it may need to pass the file for processing or as parameter to some function. All these fles are counted as external interface ile. + Simple - if rumber of record types in shared fle are low Complex. ifnumber of record types in shared fle are high + Average -in between simple and complex. External Inquiry ‘An inquiry is @ combination of input and output, where user sends come data to inquire about as input and the system responds to the user with ‘the output of inquiry processed, The complexity of a query is more than External Input and External Output. Query i ead to be unique if its input and output are unique in tems of format and data ‘Simple - i query needs iow processing and yields small amount of output data + Compiex- ifquery needs high process and yields large amount of output data + Average -in between simple and complex. Each of these parameters in the system is given weightage according to their class and complexity. The table below mentions the weightage given to.eacn parameter Parameter ‘Simple Average Complex Inputs 3 4 6 Outputs 4 5 7 Enquiry 3 4 6 Files 7 10 18 Interfaces 5 7 10 ‘The table above yields raw Function Points. These function points are adjusted according to the environment complexily. System is described using fourteen diferent characteristics: «Data communications + Distibuted processing + Performance objectives Operation configuration load © Transaction rate Online data entry, «End user efficiency + Online update + Complex processing logic © Re-usabilty ‘Installation ease ‘© Operational ease + Multiple sites * Desire ofacitate changes ‘Those charactristies factors are then rated from 0 fo 8, as mentoned below No influence Incidental = Moderate = Average + Significant Essential {Alatings are then summed up as N. The value of N ranges from 0 to 70 (14 types of characteristics x § types of ratings). I ls used to calculate Complexity Adjustment Factors (CAF), using the following formulae: hitps:lwwwztutrialspoint comisofwa _engineeringisofware_engineering_quick_guide.him 3114s 3/12/22, 6:25 AM ‘Software Engineering - Quick Guide CAF = 0,65 + 0,019 ‘Then, Delivered Function Points (FP)= CAF x Raw FP ‘This FP can then be used in various metrics, such as: Cost = $/FP Quality = Errors / FP Productivity = FP J person-month Software Implementation In this chapter, we wil study about programming metheds, documentation and challenges in sofware implementation. Structured Programming Im the process of coding, the Ines of code Keep multiplying, thus, size of the software increases. Gradually, becomes next fo impossible to remember the flow of program. If one forgets how software and its underlying programs, fills, procedures are constructed it then becomes very dificult to share, debug and madly the program. The solution to this is stuctured programming. I encourages the developer to use subroutines ‘and loops instead of using simple jumps inthe code, thereby bringing carly in the code and improving its efficiency Structured programming also helps programmer to reduce coding time and organize cade properly. Structured programming slates how the program shall be coded, Stuctured programming uses three main concepts: Top-down analysis - A sofware is always made to perform some rational work. This rational work is known as problem in the sofware parlance. Thus it's very important that we understand how fo solve the problem. Under top-down analysis, the problem is broken down into small pioces where each one has some significance. Each problem is individually solved and steps are clearly slated about how to solve the problem, ‘+ Modular Programming - While programming, the code is broken down into smalor group of instructions. Thas groups are known as modules, subprograms or subroutines. Modular programming based on the understanding of top-down analysis. t discourages jumps using ‘goto’ statements in the program, which often makes the program flow non-raceable. Jumps are prohibited and modular format is ‘encouraged in structured programming. + Structured Coding - In reference with top-down analysis, structured coding eub-sivdes the modules inte further smaller units of code in the order of their execution. Stuctured programming uses contol structure, which controls the flow ofthe program, whereas structured coding uses control stucture to organize its instructions in definable pattors. Functional Programming Functional programming is style of programming language, which uses the concepts of mathematical functons. A function in mathematics should ‘ahvays produce the same result on receiving the same argument. n procedural languages, the flow af the program runs through procedures, i. the conta of program is transfered fo the called procedure, While contol low is transferring from one procedure to another, the program changes its state, In procedural programming, it Is possible for a procedure to produce diferent results when is called wih the same argument, as the program itself can be in diferent stato while caling i. This is a property as well as a drawback of procedural programming, in which tho sequence or timing ‘ofthe procedure execution becomes important Functional programming provides means of computation as mathematical functions, which produces results irespective of program state, This makes it possibe fo pred the behavior of the program. Functional programming uses he following concepts: ‘+ First class and High-order funetions - These functions have capably to accept another function as argument or they return other functions as results, ‘+ Pure functions - These functions do not include destuctive updates, thats, they do net affect any UO or memory and if they are notin use, they can easily be removed without hampering the est ofthe program. + Recursion - Recursion is a programming technique where a function cals tslf and repeats the program code init unless some pro- dofinad conciion matches. Recursion isthe way of creating loops in functional programming ‘+ Strict evaluation - It's a method of evaluating the exoression passed to a function as an argument. Functional programming has ‘wo types of evaluation methods, stict (eager) or non-strct (lazy). Strict evaluation always evaluates the expression before invoking the function. Non-strit evaluation does not evaluate the expression unless its needed, ‘+ Ascaleulus - Most functional programming languages use calculus as ther type systems. expressions are executed by evaluating them as they occur Commen Lisp, Scala, Haskell, Extang and F# are some examples of funetional programming languages, hitps:lwwiztutorialspoint com/software_engineering!sofware_engineering_quick_guide.him 32143 3/12/22, 6:25 AM ‘Software Engineering - Quick Guide Programming style Programming style is sat of coding rules fallowed by all the programmers to wrte the code, When muliple programmers work on the same software project, they frequently need to work with Impossible, all developers do not follow some standars programming syle to code the program. ‘the program code writen by some other developer. This becomes tedious or at mes ‘An appropriate programming style includes using function and variable names relevant to the intended task, using well-placed indentation, ‘commenting code forthe convenience of reader and overall presentation of code. This makes the program code readable and understandable by all, which in turn makes debugging and error solving easier. Also, proper coding syle helps ease the documentation and updation, Coding Guideli Practice of coding syle varies with organizations, operating systems and language of coding itself a ‘The folowing coding elements may be dofined under coding guidelines of an organization ‘+ Naming conventions - This section defines how to name functions, variables, constants and global variables. ‘+ Indenting - This is the space let at the beginning of Ine, usually 2-8 whitespace or single tab, + Whitespace - Its generally omitted atthe end of line. + Operators - Defines the rules of writing mathematical, assignment and logical operators. Far example, assignment operator ‘= should have space before and after it, asin "x= 2" + Control Structures - The rules of writing ithen-slse, case-switen, while-untl and for control fow statements solely and in nested fashion. ‘+ Line fength and wrapping - Defines how many characters should be tere in one lin, mosty a fine is 80 characters long. Wrapping defines how a line should be wrapped, fis to long. ‘+ Functions - This defines how functions should be declared and invoked, with and without parameters + Variable This mentions how variables of ifferent data types are deciared and defined «Comments - This is one ofthe important coding components, as the comments included in the code describe what the code actually does. ‘and all ether associated descriptions. This section also helps creating help documantatons for other developers. Software Documentation ‘Software documentation is an Important part of software process. A well wrtten document provides a great tool and means of information repository necessary to know about sofware process. Sofware documentation also provides information about how to use the praduct ‘A well-maintained documentation should involve the folowing documents: ‘© Requirement documentation - This documentation works as key tool for software dasigner, developer and the test team fo carry out their respective tasks. This document contains al the functional, nonfunctional and behavioral description of the intended software. ‘Source of this decument can be previously stored data about the software, already running software atthe client's end, client’ interview, {questionnaires and research. Generally I is stored In the form of spreadsheet or word processing document with the high-end software management team. ‘This documentation works as foundation for the software to be developed and is majorly used in verification and validation phases. Most test-cases are bul directly from requirement documentation ‘+ Software Design documentation - These documentations contain all the necessary information, which are needed to buld the softwar IR eontaine: (a) High-level software architecture, (b) Software design details, (c) Dataflow diagrams, (@) Database design ‘These documents work as repository for developers Io implement the software. Though these documents do not give any datas on how to code the program. they give all necessary information that roquired for coding and implementation. © Technical locumentation - These documentations are maintained by the developers and actual coders. These documents, as @ whole, represent information about the code. While witing the code, the programmers also mention objective ofthe code, who wrote, where will {tbe required, what it does and how it does, what other resources the code uses, etc 1 technical documentation increases the understanding between various pragrammers working on the same code. It enhances re-use Ccapabilty ofthe cade, I makes debugging easy and traceable. ‘There are various automated tools available and some comes withthe programming language itself. For example java comes JavaDoc toolta generate technical documentation of code. User documentation - This documentation is different fam all the above explained. All previous documentations are maintained to rovide information about the sofware and its development process, But user documentation explains how the software product should Work and how itshould be used ta get the desired resus ‘These documentations may include, software instalation procedures, how-to guides, user-guides, uninstallation method and special referonces to get more information tke licanse updation et. ‘Software Implementation Challenges “There are some challenges faced by the development team while implementing the software. Some of them are mentioned below: + Code-reuse - Programming interfaces of present-day languages are very sophisticated and are equipped huge library functions. Stil to bring the cost down of end product, the organzation management prefers to reuse the code, which was created earlier for some other hitps:lwwiztutorialspoint com/software_engineering!sofware_engineering_quick_guide.him 33143 3/12/22, 6:25 AM ‘Software Engineering - Quick Guide software. There are huge issues faced by programmers for compatilty checks and deciding how much code to re-use. + Version Management - Every time a new software is Issued to the customer, developers have to maintain version and configuration related documentation. This documertation needs tobe highly accurate ana available on time. + Target-Host - The software program, which Is being developed in the organization, needs to be designed for host machines at the customers end. But at times, tis impossible to design a sofware that works onthe target machines. Software Testing Overview ‘Software Testing is evaluation of the sofware against requirements gathered from users and system specifications. Testing is conducted at the phase level in software development lifecycle or at module level in program code, Software testing comprises of Validation and Verficaton ‘Software Validation Validation Is process of examining whether or not the software satisfies the user requirements. I fs carted out at the end of the SDLC. If the ‘software matches requirements for which it was made, tis validated. ‘Validation ensures the product under development is as per the user requirements, ‘+ Validation answers the question - “Are we developing the product which attempts al that user needs from ths sofware 7". ‘© Validation emphasizes on user requirements. ‘Software Verification Verification is the process of confirming i the software is mesting the business requirements, and is developed adhering to the proper specications and methodologies. ‘+ Verification ensures the product being developed is according to design specifications. ‘+ Verification answers the question- “Are we developing this product by firmly following all design specications 2° ‘+ Verifications concentrates onthe design and system speciation. ‘Targa of the tot + Errors -These are actual coding mistakes made by developers. In adation, there is a difference In output of software and desired output, 's considered as an error. © Fault- When error exists fault occurs. A fault, also known as a bug, fsa result of an error which can cause system to fall + Failure - failure is said tobe the inability ofthe system to perform the desired tack. Failure occurs when fault existe in the eystem, Manual Vs Automated Testing “Testing can elther be done manually or using an automated testing toot ‘Manual - This testing is performed without taking help of aulomated testing tools. The software tester prepares test cases for diferent ‘sections and levels ofthe code, executes the tests and repors the result othe manager. Manual testing is time and resource consuming. The tester needs to confirm whether or not right to testing involves manual testing, cases are used. Major parton of + Automated This testing is testing procedure done with aid of automated testing tools. The tations with manual testing can be ‘overcome using automated test tools. ‘A tost needs to check if'a webpage can be opened in Internet Explorer. This can be easly done with manual testing. Bul to check ifthe web-server ‘can take the load of 1 millon users, itis quite Impossible o lest manually. “There are software and hardware tools which helps tester In conducting load testing, stress testing, regression testing Testing Approaches ‘Tests can be conducted based on two approaches ~ Functionality testing ‘Implementation testing When functionally is being tested without taking the actual implementation in cancem it is known as black-box testing. The other side is known as \white-box testing where not only functonaly is tested but te way ifs implemented is also analyzed, Exhaustive losis are the bost-desired method fora perfect testing. Every single possible value in the range ofthe input and output values is tested. Itis not possible to test each and every value in real word scenario ithe range of values is large. Black-box testing Its cared out to test functionality of the program. Its also called ‘Behavioral’ testing. The tester In ths case, has a eet of Input values and respective desired results. On providing input, if the output matches withthe desied resus, the program Is tested ‘ok, and problematic otherwise. hitps:lwwiztutorialspoint com/software_engineering!sofware_engineering_quick_guide.him aia

You might also like