Presentation is loading. Please wait.

Presentation is loading. Please wait.

9/7/2015Software Construction1 SOFTWARE CONSTRUCTION LECTURE 1 Engr. Huma Ayub

Similar presentations


Presentation on theme: "9/7/2015Software Construction1 SOFTWARE CONSTRUCTION LECTURE 1 Engr. Huma Ayub"— Presentation transcript:

1 9/7/2015Software Construction1 SOFTWARE CONSTRUCTION LECTURE 1 Engr. Huma Ayub huma.ayub@uettaxila.edu.pk

2 Course outline Module 1: Introduction to software construction Requirement engineering: structural and behavioral modeling using state machines 1. Introduction to requirements modeling 2. Behavioral modeling 3. Communicating state machines Module 2: Languages, grammars and analyzers 1. Introduction to languages and compilers 2. Lexical analysis (formal languages, regular expressions and accepting automata) 3. Syntax analysis Module 3: Concurrency, implementation design and performance issues 1. Concurrency 2.Implementation design and performance issues 9/7/2015Software Construction2

3 Books (Reference Material ) Code Complete - A Practical Handbook of Software Construction (2nd Edition) [Steve McConnell] (2004) Object-Oriented Software Construction, by Bertrand Meyer, Second Edition, Published by, Prentice Hall in 1997 Formal Methods in computing by M. Ferenczi, and Andras Pataricza, Sep 2004 Software Engineering by Ian Sommerville, 8th edition, Addison & Wesley. 2006 Software engineering a practitioner’s approach by Roger S. Pressman 9/7/2015Software Construction3

4 9/7/2015Software Construction4 Grading Criteria 20% Mid Term 20% Quiz and Assignments 40% Final Exam 20% Lab Work

5 5 Software Processes A Software Process is A set of activities (e.g. requirements, analysis, design, coding, testing) combined and sequenced in a particular fashion to produce software Recent trend: Agile Software Development Customer needs evolve with time Satisfying customers at delivery time (rather than at project initiation) is more important than conforming to initial customer requirements

6 6 Software Development Phases Requirements What needs to be done Analysis How it should be done Design Create a software structure (architecture) around which code will be built Coding Fill in the software structure with code Testing Check that the code does what it is supposed to (functionality, performance, reliability, …) Project Management Devise a plan, manage resources, costs, time, …

7 7 Software Phases Related to this Course Design Create a software structure (architecture) around which code will be built Coding Fill in the software structure with code

8 Software Construction8 Introduction Definition of Software Construction: Detailed creation of working, meaningful software through a combination of coding, verification, unit testing, integration testing, and debugging Software construction closely tied to Software design Software testing Design Construction Testing 9/7/2015

9 Software Construction9 Introduction - 2 More on Construction Significant detailed design occurs during construction Low-level (e.g. unit and module integration) testing occurs during construction Construction produces high volume of configuration items Thus construction linked to configuration management Construction is tool intensive Quality (or lack thereof) is very evident in the construction products Construction highly related to Computer Science due to Use of algorithms Detailed coding practices 9/7/2015

10 Software Construction10 Introduction - 3 Software Construction Fundamentals The fundamentals of software construction include: Minimizing complexity Anticipating change Constructing for verification Standards in construction The following slides discuss each of these fundamentals 9/7/2015

11 Software Construction11 Introduction - 4 Minimizing Complexity Humans are severely limited in our ability to hold complex information in our working memories As a result, minimizing complexity is one the of strongest drivers in software construction Need to reduce complexity throughout the lifecycle As functionality increases, so does complexity Accomplished through use of standards Examples: J2EE for complex, distributed Java applications UML for modeling all aspects of complex systems High-order programming languages such as C++ and Java Source code formatting rules to aid readability 9/7/2015

12 Software Construction12 Introduction - 5 Anticipating Change Software changes over time Anticipation / hope of change affect how software is constructed This can effect Use of control structures Handling of errors Source code organization Code documentation Coding standards 9/7/2015

13 Software Construction13 Introduction - 6 Constructing for Verification Construct software that allows bugs to be easily found and fixed Examples: Enforce coding standards Helps support code reviews Unit testing Organizing code to support automated testing Restricted use of complex or hard-to-understand language structures 9/7/2015

14 Software Construction14 Introduction - 7 Standards in Construction Standards which directly affect construction issues include: Programming languages E.g. standards for languages like Java and C++ Communication methods E.g. standards for document formats and contents Platforms E.g. programmer interface standards for operating system calls, J2EE Tools E.g. diagrammatic standards for notations like the Unified Modeling Language 9/7/2015

15 Software Construction15 References [IE04] IEEE Computer Society, Guide to the Software Engineering Body of Knowledge (SWEBOK), IEEE Computer Society Press, Los Alamitos, CA 20001, June 2004 link : 9/7/2015

16 Software Construction16 A. Construction Planning What is Construction Planning? Laying out the work plan (i.e. schedule) to design, implement, debug, and unit test the software Construction planning major concerns: Coders are typically not planners Schedules will be difficult to maintain unless a good architecture design is in place Many organizations to not collect project data on which to plan future projects Many managers consider planning to be a waste of time and therefore don’t encourage it Project plans may be limited to the construction plans Many organizations and projects do not use systematic cost estimating methods such as models 9/7/2015

17 Software Construction17 A. Construction Planning - 2 Improving Software Economics Consider reducing development costs by planning to: Reduce the size and/or complexity Improve the development process Use more highly skilled people and build better teams Use better tools Reduce quality thresholds Some actions include Use an object-oriented approach Use COTS components Use an iterative approach Provide training to development team Automate tedious tasks with tools 9/7/2015

18 Software Construction18 A. Construction Planning - 3 Construction Prerequisites As with building construction, much of the success or failure of the project already determined before construction begins Upstream activities such as project planning, requirements, architecture, and design are crucial to success Typical high-risk areas Project planning Requirements Architecture Preparation is a way to reduce these risks 9/7/2015

19 Software Construction19 A. Construction Planning - 4 Problem Definition Prerequisite The problem being solved via the application must be well defined Common names for the document containing the problem statement: Product Vision Vision Statement Product Definition Defines the problem without reference to potential solutions Helps avoid solving the wrong problem! 9/7/2015

20 Software Construction 20 A. Construction Planning - 5 Requirements Prerequisite Requirements describe in detail what a system is supposed to do, therefore are invaluable for construction Explicit requirements: Help ensure the user drives system functionality Rather than the programmer Reduce the number of construction debates Help minimize changes after development begins Specifying requirements adequately (sufficiently) is a key to project success 9/7/2015

21 Software Construction21 A. Construction Planning - 6 Architecture Prerequisite Quality of the architecture determines the conceptual integrity of the system A proper architecture: Gives structure to maintain conceptual integrity Provides guidance to programmers Partitions work Architecture-level problems are much more costly to fix than are coding errors Good architecture can make construction easy Bad architecture makes construction difficult 9/7/2015

22 Software Construction22 A. Construction Planning - 7 Regarding Upstream Prerequisites Time budgeted for requirements and architecture work 10 to 20 percent of manpower 20 to 30 percent of schedule If requirements are unstable Do not ignore, spend time to fix The analyst should fix if a formal project Can be fixed by the programmer for informal projects Use same heuristics for problems with the architecture 9/7/2015

23 Software Construction23 A. Construction Planning - 8 Choose an Approach Many software development approaches have been tried over the years Some examples (not mutually exclusive): Functional Object-Oriented Iterative Waterfall Agile Data-centric The construction team must follow some approach Chosen approach must be appropriate for the task at hand 9/7/2015

24 Software Construction24 A. Construction Planning - 9 Choose a Programming Language Programming language choices affect Productivity Code quality Programmers more productive using a familiar language High-level languages provided higher quality and better productivity Some languages better at expressing programming concepts than others The ways in which a programmers express themselves are affected by the chosen language 9/7/2015

25 Software Construction25 A. Construction Planning - 10 Choose Construction Practices Questions to answer regarding practices: How detailed will the design be? What are the coding conventions for names, comments, layout, etc.? How will the architecture be enforced? Is the project’s use of technology ahead of or behind the power curve, and is this appropriate given the circumstances? What is the integration procedure, how often is it done, and who participates? Will developers program individually, in pairs, or some combination of this? Where and when will builds occur? 9/7/2015

26 Software Construction26 A. Construction Planning - 11 Choose Tools Modern programming tools Are essential to maintain programmer productivity Reduce tedious and redundant tasks Must be appropriate for the task at hand Tools preparation checklist: Are all product licenses current? Are all products at current, supported revision level? Have all programmers received proper training on the tools? Does the project have a configuration management tool? Does the project have a tool to track change requests? Do project team members have sufficient workstations? Does the project have sufficient test environments? Does the project have sufficient build environments? 9/7/2015

27 Software Construction27 A. Construction Planning - 12 Construct the Team For small development efforts Self managed Everyone is a peer For mid-size development efforts Single team For large development efforts Multiple teams Role# / Team* Lead1 Detailed designer1 to 4 Coder5 to 10 Integrator1 to 2 Unit testerSame as coder System tester1 “Buildmeister”1 Configuration manager1 * Individuals will play multiple roles Table 1: Team Composition 9/7/2015

28 Software Construction28 A. References [IE04] IEEE Computer Society, Guide to the Software Engineering Body of Knowledge (SWEBOK), IEEE Computer Society Press, Los Alamitos, CA 20001, June 2004 [RS04] IBM Rational Software, The Rational Unified Process v2003.06.13, 2004 [RT03] [SM04] S. McConnell, Code Complete: A Practical Handbook of Software Construction, Second Edition, Microsoft Press, 2004. [WR01] Walker Royce, Software Project Management, A Unified Framework, Addison-Wesley, Boston, MA, 2001 9/7/2015


Download ppt "9/7/2015Software Construction1 SOFTWARE CONSTRUCTION LECTURE 1 Engr. Huma Ayub"

Similar presentations


Ads by Google