What Is Sftware Engineering? Sftware Engineering Sftware engineering is the study and an applicatin f engineering t the, develpment, and maintenance f sftware. The applicatin f a systematic, disciplined, and quantifiable apprach t the develpment, peratin, and maintenance f sftware; that is, the applicatin f engineering t sftware. Sftware engineering is an engineering discipline which is cncerned with all aspects f sftware prductin. Sftware engineers shuld adpt a systematic and rganised apprach t their wrk and use apprpriate tls and techniques depending n the prblem t be slved, the develpment cnstraints and the resurces available. What is a sftware prcess? A set f activities whse gal is the develpment r evlutin f sftware Generic activities in all sftware prcesses are: Specificatin - what the system shuld d and its develpment cnstraints Develpment - prductin f the sftware system Validatin - checking that the sftware is what the custmer wants Evlutin - changing the sftware in respnse t changing demands Why Sftware Engineering? The alternative is ad-hc r disrdered apprach Engineering means: Predictability and quantifiable results Applicatin f theries, methdlgies, framewrks, and tls Result is high-quality sftware created in cst-effective manner Sftware Design Prcess Design ac tivities Architec tural Abstract Interface Cmpnent Data structure Algrithm System architec ture Sftware Interface Cmpnent Data structure Algrithm Design prduc ts 1
Sftware Engineering Layers TOOLS METHODS PROCESS Prcess Layer Fundatin fr Sftware Engineering is the Prcess Layer Framewrk and rder f activities Hw, Design, Cnstructin, and Testing are perfrmed? Methds Layer Prven techniques t perfrm certain activities E.g.: methds fr requirements analysis, and mdeling, and testing, etc. Tls Layer Prvides autmatin supprt Aids in the systematic applicatin f sftware engineering Sftware-Creatin Activities Generic set f sftware lifecycle activities: Design Develpment Validatin Deplyment Evlutin Sftware Develpment Lifecycle (SDLC) Describes a prcess fr planning, creating, testing, and deplying an infrmatin system. Defines: Tasks inside the Sftware Engineering activities Order and detail f these tasks and activities Flw f activities (ex: iterative, linear, etc.) Type and detail f artifacts Sftware Prcess Mdels Traditinal (classic) mdels 2
Waterfall (linear) Iterative and incremental mdels Prttyping Spiral Agile Unified Mdel Specialized mdels (fr particular appraches) Cmpnent-based develpment Frmal methds Aspect-Oriented develpment Linear Mdel: Design Develpment Validatin Deplyment Evlutin Systematic and sequential apprach t the sftware lifecycle Even with feedback lps changes are difficult t implement Custmers have t clearly define all requirements at the start Custmers will wait until the very end t see the first sftware wrkable versin Iterative Mdel: Iteratin #1 Design Develpment Validatin Deplyment Evlutin Iteratin #2 Design Develpment Validatin Deplyment Created in respnse t Waterfall mdel The essence f evlutinary mdels such as Agile and RUP What d iterative and incremental mean? Hw d they differ? Incremental Delivery Steps f incremental delivery are assigned pririty Increments are defined each cntaining prtin f the requirements 3
Each increment then analyzed in detail Increment then ges thrugh, develpment, testing, deplyment, and (pssibly) evlutin Increments are time-bxed (fixed predefined maximum executin time) If time is nt enugh, requirements are shifted t later increments If requirements are cmpleted ahead f time, requirements frm future increments can be withdrawn and implemented in current increment Finished increments are integrated int the verall system fr custmers t see Iterative Develpment Incremental delivery is a scheduling methd t deliver requirements Iterative develpment is a methd t refine the wrk dne Refinement can be dne n a specific increment Refinement can als be dne n a full prcess mdel (ex: Waterfall) Iterative develpment des nt mandate nr is it attached t incremental delivery (althugh frequently used tgether) Iteratins and increments are essential parts f Agile methdlgies (ex: Scrum with its Sprint). Unified Prcess is als built arund iterative/incremental delivery. Agile mdel? Chunk f Design Iteratin #1 Develpment Validatin Deplyment Chunk f Design Iteratin #2 Develpment Validatin Deplyment Based n incremental/iterative delivery Prmise f Agile: Create reliable sftware quickly, eliminate waste and verhead 4
N emphasis n any specific activity in any given iteratin Fcus is n quick delivery f reliable sftware with waste eliminated RUP (als iterative/incremental) des emphasize specific activity in each phase (discussed next) Which Mdel t Use? Decided by varius factrs, including prject type and rganizatin maturity Typically, the prject manager with the lead sftware engineer decide n the prcess mdel Alert: A Sftware Prcess Spans Entire Lifecycle Sftware prfessinals ften make cmmn mistakes: They d nt cnsider maintenance (evlutin) as part f the sftware prcess They cnsider Deplyment but neglect peratins This is wrng! Maintenance is part f the sftware lifecycle (until the system is retired) Keep in mind: pre-deplyment requests (i.e. changes) als need analysis,, develpment, testing, and deplyment Often as part f a change management prcess (ex: ITIL) rather than a prject charter Sftware prfessinals ften make cmmn mistakes: Sftware Engineering Methds Practices with prven techniques t perfrm certain activities in an rganized and systematic apprach Tls Layer Methds Layer Analysis Methds Hw-t Mdeling Ntatins Prcess Layer Analysis Methds Order Fcus Artifacts Similarly, there are methds fr, testing, etc. Sme f the mst knwn Sftware Engineering methds: 5
Structured Analysis and Design Object-Oriented Analysis and Design Frmal Methds Sftware Engineering Tls Tls assist sftware prcesses by autmating actins Examples Requirement Management: Enterprise Architect (Sparx), IBM Ratinal (IBM) Develpment: Visual Studi (Micrsft), Eclipse (Open Surce) Testing: Team Fundatin Server (Micrsft), HP Quality Center (HP) Sftware Cnfiguratin: Team Fundatin Server (Micrsft) Prject Management: Enterprise Prject Management (Micrsft) Prcess Management and Mdeling: Team Fundatin Server The Rle f Sftware Engineer Sftware Engineer as a rle is less frmally defined than the discipline Sftware Engineer is replacing the title Sftware Develper Seems t indicate mre knwledge/respnsibilities. S mre sphisticated! Hwever, Sftware Engineering is nt nly abut develpment In general, anyne wh efficiently applies the engineering discipline t the analysis,, develpment, testing, and peratin is a qualified Sftware Engineer Sftware Engineering and Prject Management Prject Management is an umbrella activity Sftware Engineering is applied thrughut the sftware lifecycle 6